Search the courses, subjects, tracks, games and features, or jump straight to a page.
Learn it your way
A short class with Sarah and her students. The other ways are under More.
Sign up free to listen. Transcripts are free to read.
Let's start by understanding what a computable function is. A function is computable if there exists a program that can calculate its output for every input in its domain.
Does that mean any function we can think of is computable?
Not quite! While many functions are computable, there are also functions that are uncomputable. This means no program can yield their output for every possible input.
Can you give an example of what an uncomputable function might look like?
Absolutely! We will explore examples later, but first, let’s focus on defining these terms clearly.
The existence of uncomputable functions can be shown using Cantor’s diagonalization argument. Essentially, we can prove there are more potential functions than there are valid computational programs.
So, if we have a countable number of programs, how can we have uncountably many functions?
Exactly! This is the crux of the argument. While we can list programs in a countable manner, the set of all functions isn't countable because it forms a greater cardinality.
What does cardinality mean in this context?
‘Cardinality’ refers to the size, or number of elements, in a set. Understanding this helps us realize that there are functions we cannot compute with any program.
Uncomputable functions highlight the limitations of computation. They show us that while computers are incredibly powerful, there are still tasks that they cannot perform.
That sounds quite surprising! Are there real-world examples of these limitations?
Indeed, many problems in mathematics, like the halting problem, are uncomputable. That means no algorithm can determine whether any arbitrary program will halt.
So, does this mean we can’t rely entirely on algorithms in theory and practice?
Correct! It emphasizes that algorithms can't solve every conceivable problem, urging us to explore alternative solutions and ideas.
A function that can be calculated by a program for every input.
A function that cannot be resolved by any program.
A way of measuring the size of a set, indicating if it's countable or uncountable.
A method showing that there are more real numbers than rational numbers, illustrating uncountability.
The function that determines the nth digit of π is computable, as a program can be written for it. However, the function that decides whether a given program will halt is uncomputable.
A simple counting function is computable, but the function that produces a sequence only known to have a specific pattern is uncomputable.
Computable, yes indeed; functions run, they take the lead. Uncomputable, can't be tamed; no program found, none is claimed.
Imagine a computer that could calculate anything. One day, it meets an uncomputable function that eludes its grasp forever, reminding us not all problems can be solved.
For computable, remember C for Calculate. For uncomputable, U for Unreachable solutions.
C.U. Functions: C for Computable, U for Uncomputable. Together they show the limits of computation!
Term
What is an uncomputable function?
Click to flip
Term
What illustrates the limitations of computing?
Click to flip
A function for which there exists a program that can compute its value for every possible input.
A function for which no program can compute its value for every possible input.
The measure of the 'number of elements' in a set, which describes its size.
A proof technique used to demonstrate the existence of uncountable sets, showing that some infinities are larger than others.
A well-known example of an uncomputable function that determines whether a given program will halt or run indefinitely.
This section explores the existence and significance of uncomputable functions, highlighting the limitations of computation in computer science.
The section elaborates on uncomputable functions by defining computable functions, discussing Cantor’s diagonalization argument, and demonstrating that there are more functions than valid programs, providing a non-constructive proof of the existence of uncomputable functions.
In this section, we define computable and uncomputable functions, where a function is computable if there exists a program that can compute its values for every input. Conversely, an uncomputable function does not allow for such a program, regardless of computational resources. The proof of the existence of uncomputable functions revolves around the cardinality of sets, particularly using Cantor's diagonalization argument. We establish that the set of all possible functions mapping positive integers to a finite set is uncountable, exceeding the count of valid programs, thus proving the existence of uncomputable functions. This addresses a fundamental notion in computer science: there are computational tasks that cannot be solved, emphasizing the limitations of algorithms and computation.