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.
Today, we're diving into computable functions. Can someone explain what a computable function is?
Isn’t it a function for which we can write a program that gives output for every input?
Exactly! A computable function is one for which there exists a program in a programming language that computes the value for every input.
What happens if we can't find a program for some function?
Good question! That leads us to uncomputable functions. If no program can compute the output for all inputs, we call that function uncomputable.
So, how do we prove that uncomputable functions actually exist?
We'll use a non-constructive proof. It’s a bit tricky but remember, it's about showing that existence rather than providing an example.
So we won’t have to actually find an uncomputable function?
Correct! We just need to show that at least one must exist.
To summarize, we can determine that if a function can be computed by a program, it’s computable. If not, it’s uncomputable, and we’re now equipped to explore the proof of the existence of uncomputable functions.
Now, let's discuss countability. Can anyone tell me what we mean by the countability of programs?
I believe it means we can list them out, even if there are infinitely many?
Exactly! The set of all valid programs is indeed countable. This means we can enumerate every possible program.
Then how does that prove anything about uncomputable functions?
Great follow-up! The key point is that the total number of functions from the set of positive integers to {0…9} is uncountable.
That sounds crucial! So, we’ll show there are more functions than programs.
Precisely! If there are more functions than programs, then there must be some functions that can't be computed.
And that’s how we conclude that uncomputable functions exist!
Spot on! Remember this relationship; it forms the basis of our non-constructive proof.
Let's move on to Cantor’s diagonalization argument. Who can summarize this?
It shows that not all infinities are equal, right? Some infinities are larger than others.
Correct! In our case, it helps demonstrate that functions can outnumber programs.
So how do we apply that to our proof about uncomputable functions?
We create a mapping from the uncountable set of real numbers to our set of functions, showing there’s no way to cover all functions with our programs.
Could you give us an example of this mapping?
Sure! Each real number can represent a unique function by mapping each digit to a specific output value in {0…9}.
That really illustrates how some functions can't be computed since we can't match them to any program!
Well done! So far, we've built a comprehensive understanding of why uncomputable functions exist.
As we conclude, what are the implications of knowing that uncomputable functions exist?
It’s a reminder that computers have limitations and not everything can be computed!
And that helps us understand the boundaries of problem-solving in computer science.
Exactly. This realization emphasizes the critical thinking necessary in theoretical computer science.
So, knowing this, how should we approach programming problems?
Always gauge the feasibility of a solution. Not all problems have computable solutions!
Thanks, I feel much clearer about this topic now!
Excellent! Remember these concepts as they are fundamental to our understanding of computational theory.
In the realm of math, some things can't be computed, uncovering limits, by proof, alluded.
Imagine a world where some equations can't be solved no matter how clever the wizard. This wizard represents our attempts to compute uncomputable functions; no spell can provide a solution!
C.U.N.C.: Computable, Uncomputable, Non-constructive, Countable - the key concepts of this section.
U.C.P: Uncomputable Functions, Countability, Programs - remember the relationship!
Term
What is a computable function?
Click to flip
Term
What is a non-constructive proof?
Click to flip
Term
What does uncountable mean?
Click to flip
Term
Example of an uncomputable function?
Click to flip
A function for which there exists a program that can compute its value for every input.
A function for which no program can compute its value for every input.
A proof that demonstrates the existence of an object without providing an explicit example.
A set is countable if its elements can be enumerated or listed in a sequence.
A set that cannot be counted or listed in a sequence; there are more elements than can be matched with the set of natural numbers.
A mathematical proof demonstrating that some infinities are larger than others.
This section introduces uncomputable functions and explains the concept of non-constructive proofs used to demonstrate their existence.
In this section, we explore uncomputable functions, differentiating them from computable functions. We explain how the cardinality of the set of all valid programs is countable, while the set of functions mapping positive integers to integers {0,…,9} is not, demonstrating the existence of uncomputable functions through a non-constructive proof.
In this section, we define computable and uncomputable functions. A computable function is one for which a computer program exists that can produce output for every possible input. If no such program exists for a function, it is labeled uncomputable. We verify this existence of uncomputable functions using a non-constructive proof, a method that proves the existence of an element without providing an explicit example.
The proof hinges on the knowledge that the set of all valid programs (denoted as set P) is countable, while the set of all possible functions from positive integers to integers {0,…,9} (denoted as set F) is uncountable. By leveraging Cantor’s diagonalization argument, we argue that more functions exist than potential programs, hence leading us to conclude that uncomputable functions indeed exist. The implications of this theorem are significant, as they illustrate the limitations of computational power despite the infinite potential of computer programming.