
Title:
2006 The Halting Problem

Description:

So can a computer solve any problem that meets these 3 requirements?

It seems, in a way, like a computer should be able to do that, doesn't it?

I mean, the input is fit for a computer; the output is fit for a computer.

We have even been very, very nitpicky with finite strings, constant number of symbols,

and we want an objectively correct and definitive answer.

No grading student's essays, no predicting the future,

no looking at pictures and telling us if they're beautiful.

I'm now going to show you a problem that meets these 3 criteria.

I will also be able to show you that no computer can ever solve it.

And this is actually a problem where it would be

very useful to have a computer being able to solve it.

So I guess you've all been in this situation here where on your computer,

you're working, and you've just started a certain type of calculation or task on the computer.

The computer tells you yes, I'm 10% done, and after a while this moves to 20%,

after a while it moves to 30%, and, of course, pending on what system you're working on,

your mouse turns into this hourglass here, and now the progress bar gets stuck.

And it stays there. You go have lunch, you come back, and it stays there.

So the question is, at some point in timeI mean, you want this task to get done

but maybe in the next minute the computer will go on.

Maybe it's just thinking, it's just working, but it could also be that your program has crashed.

If your computer stays that way for quite a time, well, you probably would assume

that it has crashed, but you never know for sure.

So what if we had an algorithm for that?

What if we had an algorithm that took as input a computer program, P.

It could be written in any language, basically.

So Python, C++, Java, or whatnot. And, of course, we also wanted input for that program.

And the input, of course, in accordance with rule number 1,

will be a finite string using a constant number of symbols.

And actually, the program, of course, will be as well.

So it may be, for example, the source code of a program.

We want this algorithm to tell us if we run the program on the input,

does the computer ever finish, or does it go into an infinite loop?

Very simple question. And, of course, this problem totally conforms with all 3 requirements here.

So as I just said, the input is a finite string, constant number of symbols, perfect.

Output, it's a decision problem so the output will either be yes or no.

And, of course, the output is also objectively correct, because

we're talking about deterministic machines here, so you can easily check

if the program, indeed, will go into an infinite loop,

if the computer tells you where the problem is.

And this problem is known as the famous, and it's really famous, halting problem.