當前位置:
首頁 > 知識 > 史上最牛詩歌:一個停機問題不可判定的證明

史上最牛詩歌:一個停機問題不可判定的證明

SCOOPING THE LOOP SNOOPER

A proof that the Halting Problem is undecidable

Geoffrey K. Pullum

(School of Philosophy, Psychology and Language Sciences, University of Edinburgh)

No general procedure for bug checks succeeds.

Now, I won』t just assert that, I』ll show where it leads:

I will prove that although you might work till you drop,

you cannot tell if computation will stop.

For imagine we have a procedure called P

that for specified input permits you to see

whether specified source code, with all of its faults,

defines a routine that eventually halts.

You feed in your program, with suitable data,

and P gets to work, and a little while later

(in finite compute time) correctly infers

whether infinite looping behavior occurs.

If there will be no looping, then P prints out `Good.』

That means work on this input will halt, as it should.

But if it detects an unstoppable loop,

then P reports `Bad!』 — which means you』re in the soup.

Well, the truth is that P cannot possibly be,

because if you wrote it and gave it to me,

I could use it to set up a logical bind

that would shatter your reason and scramble your mind.

Here』s the trick that I』ll use — and it』s simple to do.

I』ll define a procedure, which I will call Q,

that will use P『s predictions of halting success

to stir up a terrible logical mess.

For a specified program, say A, one supplies,

the first step of this program called Q I devise

is to find out from P what』s the right thing to say

of the looping behavior of A run on A.

If P『s answer is `Bad!』, Q will suddenly stop.

But otherwise, Q will go back to the top,

and start off again, looping endlessly back,

till the universe dies and turns frozen and black.

And this program called Q wouldn』t stay on the shelf;

I would ask it to forecast its run on itself.

When it reads its own source code, just what will it do?

What』s the looping behavior of Q run on Q?

If P warns of infinite loops, Q will quit;

yet P is supposed to speak truly of it!

And if Q『s going to quit, then P should say `Good』

— which makes Q start to loop! (P denied that it would.)

No matter how P might perform, Q will scoop it:

Q uses P『s output to make P look stupid.

Whatever P says, it cannot predict Q:

P is right when it』s wrong, and is false when it』s true!

I』ve created a paradox, neat as can be —

and simply by using your putative P.

When you posited P you stepped into a snare;

Your assumption has led you right into my lair.

So where can this argument possibly go?

I don』t have to tell you; I』m sure you must know.

By reductio, there cannot possibly be

a procedure that acts like the mythical P.

You can never find general mechanical means

for predicting the acts of computing machines.

It』s something that cannot be done. So we users

must find our own bugs. Our computers are losers!

來自:

http://www.lel.ed.ac.uk/~gpullum/loopsnoop.html

http://www.matrix67.com/blog/archives/1497

------這裡是數學思維的聚集地------

「超級數學建模」(微信號supermodeling),每天學一點小知識,輕鬆了解各種思維,做個好玩的理性派。50萬數學精英都在關注!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 超級數學建模 的精彩文章:

趣題:把比薩分成若干等份使得至少有一份不含邊
1小時快速入門Python爬蟲,掌握核心基礎

TAG:超級數學建模 |