विकर्ण की तुलना में रुकने की समस्या की अनिच्छा का एक अधिक सहज प्रमाण है?


30

मैं तिरछेपन के आधार पर हॉल्टिंग प्रॉब्लम (पापादिमित्रिउ की पाठ्यपुस्तक में उदाहरण के लिए दी गई) की अयोग्यता का प्रमाण समझता हूं।

जबकि प्रमाण आश्वस्त करता है (मैं इसके प्रत्येक चरण को समझता हूं), यह मेरे लिए इस अर्थ में सहज नहीं है कि मैं यह नहीं देखता कि कोई इसे कैसे प्राप्त करेगा, अकेले समस्या से शुरू होता है।

पुस्तक में, सबूत इस प्रकार है: "मान लीजिए हल करती है एक इनपुट पर हॉल्टिंग समस्या , यह है कि, निर्णय लेता है कि ट्यूरिंग मशीन के लिए इनपुट हाल्ट एक ट्यूरिंग मशीन का निर्माण। कि एक ट्यूरिंग मशीन लेता इनपुट के रूप में , चलाता है और आउटपुट को उलट देता है। " यह तब दिखाता है कि एक संतोषजनक आउटपुट नहीं दे सकता है।MHM;xMxDMMH(M;M)D(D)

यह विशेष रूप से मनमाना निर्माण है , विशेष रूप से को खुद को खिलाने का विचार , और फिर को खुद के लिए, कि मैं एक अंतर्ज्ञान के लिए चाहूंगा। पहली बार उन निर्माणों और चरणों को परिभाषित करने के लिए लोगों ने क्या नेतृत्व किया?DMD

क्या किसी के पास इस बात का स्पष्टीकरण है कि कोई व्यक्ति विकर्ण तर्क (या किसी अन्य प्रमाण) में अपना रास्ता कैसे बनाएगा, अगर उन्हें यह पता नहीं है कि किस प्रकार का तर्क शुरू करना है?

परिशिष्ट के पहले दौर में दिए गए उत्तर:

तो पहले उत्तर में बताया गया है कि रुकने की समस्या की अनिर्वायता साबित करना कैंटर और रसेल के पिछले काम और विकर्ण समस्या के विकास पर आधारित था, और यह कि "खरोंच से शुरू" का मतलब सिर्फ इस तर्क को फिर से खोज लेना होगा।

काफी उचित। हालांकि, भले ही हम विकर्ण तर्क को एक अच्छी तरह से समझे गए तर्क के रूप में स्वीकार करते हैं, फिर भी मुझे लगता है कि इसमें से एक "अंतर्ज्ञान अंतर" है जो कि हॉल्टिंग की समस्या है। कैंटर के वास्तविक संख्या बेशुमार होने का प्रमाण मुझे वास्तव में काफी सहज लगता है; रसेल के विरोधाभास और भी अधिक।

जो मैं अभी भी नहीं देख पा रहा हूं, वह है जो किसी को के "स्व-अनुप्रयोग" आधार पर को परिभाषित करने के लिए प्रेरित करेगा और फिर को स्वयं लागू करता है। यह विकर्णीकरण से कम प्रतीत होता है (इस अर्थ में कि कैंटर के तर्क में ऐसा कुछ नहीं था), हालांकि यह स्पष्ट रूप से विकर्णीकरण के साथ अच्छी तरह से काम करता है जब आप उन्हें परिभाषित करते हैं।D(M)MM;MD

पुनश्च

@babou ने संक्षेप में बताया कि मुझे खुद से बेहतर क्या परेशान कर रहा था: "सबूत के कई संस्करणों के साथ समस्या यह है कि निर्माण एक जादू की टोपी से खींचे गए लगते हैं।"


3
इस संभावना पर विचार करें कि बेशुमार सेट के अस्तित्व के किसी भी प्रमाण को कुछ हद तक प्रतिवाद करना होगा, भले ही हमें इस तथ्य की आदत हो कि वे सही हैं । इस संभावना पर भी विचार करें कि यह प्रश्न (यदि ठीक से रीफ़्रेश किया गया है) math.stackexchange.com का है
एंड्रे सूजा लेमोस


1
आगे के विचार के बाद, मुझे यह पूछना होगा कि आपको क्या लगता है कि यह रसेल के विरोधाभास से कितना अलग है। यदि हम संकेतन का उपयोग _ करने के लिए करते हैं, तो रसेल का विरोधाभास भी वैसा ही दिखता हैS(X)XS (i.e. think of sets as being functions whose values are true or false). Then Russell's paradox is to define D(M) = not M(M), and then consider D(D).

1
Diagonalization is a standard technique. Sure there was a time when it wasn't known but it's been standard for a lot of time now, so your argument is simply due to your ignorance (I don't want to be rude, is a fact: you didn't know all the other proofs that use such a technique and hence find it odd the first time you see it. When you've seen it 50 times you'll probably be able to understand how it can be applied in a new situation).
Bakuriu

1
Maybe you would read my exchange of comments with Luke Mathieson (following his answer). His answer explains historically why Turing used self-application (one thing you ask for in your question). That seems to be pretty-much how mathematicians perceived the issues at the time. My own answer tries to give a very simple proof that does not use it (or at least shows it is not essential) which is another thing you ask for, quite different. Possibly, I might make it even simpler than in my answer. Why teachers still use Turing's proof is a sociological and pedagogical (?!) issue. cc @HendrikJan
babou

जवाबों:


18

In your edit, you write:

What I still don't see is what would motivate someone to define D(M) based on M's "self-application" M;M, and then again apply D to itself. That seems to be less related to diagonalization (in the sense that Cantor's argument did not have something like it), although it obviously works well with diagonalization once you define them.

A common "popular" summarization of Turing's proof goes something like this:

"If we had a machine MH that could decide whether another Turing machine halts or not, we could use this to construct another machine D that, given a Turing machine M, would halt if and only if M did not halt. But then we could pass D as input to itself, and thus obtain a paradox: this machine would halt if and only if it did not halt!"

Now, it's easy to see that the summarization above glosses over an important detail — the halting of the Turing machine M also depends on its input, which we have not specified! But this issue can be fixed easily enough: we just need to have D pick some suitable input xM for each input machine M, before passing them both to MH.

What's a suitable choice for xM, given that we ultimately want to derive a contradiction? Well, a natural choice is suggested directly by the "handwavy" proof above, where we ultimately obtain the contradiction by running the machine D on itself.

Thus, for the behavior of D to really be paradoxical in this case, i.e. when invoked as D(D), what we want is for the halting of D(M) to depend on the behavior of M when invoked as M(M). This way, we'll obtain the contradiction we want by setting M=D.

Mind you, this is not the only choice; we could also have derived the same contradiction by, say, constructing a machine D such that D(M) halts if and only if M(D) (rather than M(M)) does not halt. But, whereas it's clear that the machine D can easily duplicate its input before passing it to MH, it's not quite so immediately obvious how to construct a machine D that would invoke MH with its own code as the input. Thus, using this D instead of D would needlessly complicate the proof, and make it less intuitive.


1
Wow, you really grokked my question! That is exactly the type of story I was looking for! Still reading everything, but this looks like it would be the accepted answer. Thanks!
user118967

18

It may be simply that it's mistaken to think that someone would reason their way to this argument without making a similar argument at some point prior, in a "simpler" context.

Remember that Turing knew Cantor's diagonalisation proof of the uncountability of the reals. Moreover his work is part of a history of mathematics which includes Russell's paradox (which uses a diagonalisation argument) and Gödel's first incompleteness theorem (which uses a diagonalisation argument). In fact, Gödel's result is deeply related to the proof of undecidability of the Halting Problem (and hence the negative answer to Hilbert's Entscheidungsproblem).

So my contention is that your question is in a sense badly founded and that you can't reach the Halting Problem without going past the rest (or something remarkably similar) first. While we show these things to students without going through the history, if you were a working mathematician it seems unlikely that you go from nothing to Turing Machines without anything in between - the whole point of them was to formalise computation, a problem many people had been working on for decades at that point.

Cantor didn't even use diagonalisation in his first proof of the uncountability of the reals, if we take publication dates as an approximation of when he thought of the idea (not always a reliable thing), it took him about 17 years from already knowing that the reals were uncountable, to working out the diagonalisation argument.

In reference to the "self-application" in the proof that you mention, this is also an integral part of Russell's paradox (which entirely depends upon self-reference), and Gödel's first incompleteness theorem is like the high-powered version of Russell's paradox. The proof of the undecidability of the Halting Problem is so heavily informed by Gödel's work that it's hard to imagine getting there without it, hence the idea of "self-application" is already part of the background knowledge you need to get to the Halting Problem. Similarly, Gödel's work is a reworking of Russell's paradox, so you don't get there without the other (note that Russell was not the first to observe a paradox like this, so prototypes of the diagonalisation argument has been around in formal logic since about 600BCE). Both Turing and Gödel's work (the bits we're talking about here that is) can be viewed as increasingly powerful demonstrations of the problems with self-reference, and how it is embedding in mathematics. So once again, it's very difficult to suggest that these ideas at the level Turing was dealing with them came a priori, they were the culmination of millennia's work in parts of philosophy, mathematics and logic.

This self-reference is also part of Cantor's argument, it just isn't presented in such an unnatural language as Turing's more fundamentally logical work. Cantor's diagonalisation can be rephrased as a selection of elements from the power set of a set (essentially part of Cantor's Theorem). If we consider the set of (positive) reals as subsets of the naturals (note we don't really need the digits to be ordered for this to work, it just makes a simpler presentation) and claim there is a surjection from the naturals to the reals, then we can produce an element of the power set (i.e. a real) that is not in the image of the surjection (and hence derive a contradiction) by take this element to be the set of naturals who are not in their own image under the surjection. Once we phrase it this way, it's much easier to see that Russell's paradox is really the naïve set theory version of the same idea.


2
Yes, it seems the whole point of Turing was to recreate circularity (from which comes diagonalization) using machines, for the sake of introducing some abstract idea of time, with which to talk about finiteness in a new way.
André Souza Lemos

Maybe you can enlighten me, as I am not familiar with some of these proofs. I can understand that these proofs can be cunducted using self referencing. I can even believe (though it might need a proof) that there is always some self reference to be found in whatever structure is constructed for the purpose. But I do not see the need to use it explicitly to conduct the proof to its conclusion. You can rephrase Cantor's argument that way, but you do not have to. And I do not see why you have to do it for the halting problem. I may have missed a step, but which?
babou

To make my previous remark clearer, the original question is: "Is there a more intuitive proof of the halting problem's undecidability ...". I am omitting the end, since my feeling is that the OP complains mainly about the lack of intuition. I believe that there is indeed a more intuitive proof, not using self-reference. You may think that using that proof is pedagogically unwise (as not related to Russell's and Gödel's work), but if it answer the question asked, what is the point of rejecting it. You seem to be denying the question rather than answering it.
babou

@babou I think the problem here is that we're answering different questions. The OP was not well phrased in that regard I guess. The repeated question in the body of the OP seem to me to be "how did someone ever think of the diagonalisation argument to prove ..." (paraphrased of course), and that "the constructions seem to be pulled from a magic hat".
Luke Mathieson

@babou, also to elaborate a little, with a proper keyboard, I don't think one way or another is necessarily pedagogically useful (it would depend heavily on context). In fact, for most modern CS courses, it's probably better to do it without the diagonalisation argument, most CS students just aren't mathematically inclined enough any more to know the background that would make it easier to understand, but I was definitely answering the question that ended the original body text: ...
Luke Mathieson

9

Self application is not a necessary ingredient of the proof

In a nutshell

If there is a Turing machine H that solves the halting problem, then from that machine we can build another Turing machine L with a halting behavior (halting characteristic function) that cannot be the halting behavior of any Turing machine.

The paradox built on the self applied function D (called L in this answer - sorry about notation inconsistencies) is not a necessary ingredient of the proof, but a device usable with the construction of one specific contradiction, hiding what seems to be the "real purpose" of the construction. That is probably why it is not intuitive.

It seems more direct to show that there is only a denumerable number of halting behaviors (no more than Turing machines), that can be defined as characteristic halting functions associated with each Turing machine. One can define constructively a characteristic halting function not in the list, and build from it, and from a machine H that solves the halting problem, a machine L that has that new characteristic halting function. But since, by construction, it is not the characteristic halting function of a Turing machine, L cannot be one. Since L is built from H using Turing machine building techniques, H cannot be a Turing machine.

The self-application of L to itself, used in many proofs, is a way to show the contradiction. But it works only when the impossible characteristic halting function is built from the diagonal of the list of Turing permitted characteristic halting functions, by flipping this diagonal (exchanging 0 and 1). But there are infinitely many other ways of building a new characteristic halting function. Then non-Turing-ness can no longer be evidenced with a liar paradox (at least not simply). The self-application construction is not intuitive because it is not essential, but it looks slick when pulled out of the magic hat.

Basically, L is not a Turing machine because it is designed from the start to have a halting behavior that is not that of a Turing machine, and that can be shown more directly, hence more intuitively.

Note: It may be that, for any constructive choice of the impossible characteristic halting function, there is a computable reordering of the Turing machine enumeration such that it becomes the diagonal ( I do not know). But, imho, this does not change the fact that self-application is an indirect proof technique that is hiding a more intuitive and interesting fact.

Detailed analysis of the proofs

I am not going to be historical (but thanks to those who are, I enjoy it), but I am only trying to work the intuitive side.

I think that the presentation given @vzn, which I did encounter a long time ago (I had forgotten), is actually rather intuitive, and even explains the name diagonalization. I am repeating it in details only because I feel @vzn did not emphasize enough its simplicity.

My purpose is to have an intuitive way to retrieve the proof, knowing that of Cantor. The problem with many versions of the proof is that the constructions seem to be pulled from a magic hat.

The proof that I give is not exactly the same as in the question, but it is correct, as far as I can see. If I did not make a mistake, it is intuitive enough since I could retrieve it after more years than I care to count, working on very different issues.

The case of the subsets of N (Cantor)

The proof of Cantor assumes (it is only an hypothesis) that there is an enumeration of the subsets of the integers, so that all such subset Sj can be described by its characteristic function Cj(i) which is 1 if iSj and is 0 otherwise.

This may be seen as a table T, such that T[i,j]=Cj(i)

Then, considering the diagonal, we build a characteristic function D such that D(i)=T[i,i]¯, i.e. it is identical to the diagonal of the table with every bit flipped to the other value.

There is nothing special about the diagonal, except that it is an easy way to get a characteristic function D that is different from all others, and that is all we need.

Hence, the subset characterized by D cannot be in the enumeration. Since that would be true of any enumeration, there cannot be an enumeration that enumerates all the subsets of N.

This is admittedly, according to the initial question, fairly intuitive. Can we make the proof of the halting problem as intuitive?

The case of the halting problem (Turing)

We assume we have an enumeration of Turing machines (which we know is possible). The halting behavior of a Turing machine Mj can be described by its characteristic halting function Hj(i) which is 1 if Mj halts on input i and is 0 otherwise.

This may be seen as a table T, such that T[i,j]=Hj(i)

Then, considering the diagonal, we build a characteristic halting function D such that D(i)=T[i,i]¯, i.e. it is identical to the diagonal of the table with every bit flipped to the other value.

There is nothing special about the diagonal, except that it is an easy way to get a characteristic halting function D that is different from all others, and that is all we need (see note at the bottom).

Hence, the halting behavior characterized by D cannot be that of a Turing machine in the enumeration. Since we enumerated them all, we conclude that there is no Turing machine with that behavior.

No halting oracle so far, and no computability hypothesis: We know nothing of the computability of T and of the functions Hj.

Now suppose we have a Turing machine H that can solve the halting problem, such that H(i,j) always halts with Hj(i) as result.

We want to prove that, given H, we can build a machine L that has the characteristic halting function D. The machine L is nearly identical to H, so that L(i) mimics H(i,i), except that whenever H(i,i) is about to terminate with value 1, L(i) goes into an infinite loop and does not terminate.

It is quite clear that we can build such a machine L if H exists. Hence this machine should be in our initial enumeration of all machines (which we know is possible). But it cannot be since its halting behavior D corresponds to none of the machines enumerated. Machine L cannot exist, which implies that H cannot exist.

I deliberately mimicked the first proof and went into tiny details

My feeling is that the steps come naturally in this way, especially when one considers Cantor's proof as reasonably intuitive.

One first enumerates the litigious constructs. Then one takes and modifies the diagonal as a convenient way of touching all of them to get an unaccounted for behaviour, then gets a contradiction by exhibiting an object that has the unaccounted for behaviour ... if some hypothesis were to be true: existence of the enumeration for Cantor, and existence of a computable halting oracle for Turing.

Note: To define the function D, we could replace the flipped diagonal by any other characteristic halting function, different from all the ones listed in T, that is computable (from the ones listed in T, for example) provided a halting oracle is available. Then the machine L would have to be constructed accordingly, to have D as characteristic halting function, and L(i) would make use of the machine H, but not mimic so directly H(i,i). The choice of the diagonal makes it much simpler.

Comparison with the "other" proof

The function L defined here is apparently the analog of the function D in the proof described in the question.

We only build it in such a way that it has a characteristic halting function that corresponds to no Turing machine, and get directly a contradiction from that. This gives us the freedom of not using the diagonal (for what it is worth).

The idea of the "usual" proof seems to try to kill what I see as a dead fish. It says: let's assume that L is one of the machines that were listed (i.e., all of them). Then it has an index jL in that enumeration: L=MjL. Then if L(jL) halts, we have T[jL,jL]=H(jL,jL)=1, so that L(jL) will loop by construction. Conversely, if L(jL) does not halt, then T[jL,jL]=H(jL,jL)=0 so that L(jL) will halt by construction. Thus we have a contradiction. But the contradiction results from the way the characteristic halting function of L was constructed, and it seems a lot simpler just to say that L cannot be a Turing machine because it is constructed to have a characteristic halting function that is not that of a Turing machine.

A side-point is that this usual proof would be a lot more painful if we did not choose the diagonal, while the direct approach used above has no problem with it. Whether that can be useful, I do not know.


Very nice, thank you! It seems that somehow you managed to go around the self-applying constructions that I found troublesome. Now I wonder why people found them necessary in the first place.
user118967

@user118967 I tried to underscore that using the diagonal is not really important. All you want is to define a characteristic halting function that is different from all those listed in the table, and that is computable from those listed, provided we have a halting oracle. There are infinitely many such characteristic halting functions. Now that seems not so visible in the usual proof, and it may be that some constructs of that proof seem arbitrary simply because they are, like chosing the diagonal in the proof above. It is only simple, not essential.
बबौ

@user118967 I added and introduction that summarizes the analysis of the various proofs. It complement the comparison between proofs (with and without self application) that is given in the end. I do not know whether I did away with diagonalization as asked :) (I think it would be unfair to say so) but I do hint on how to do away with the obvious diagonal. And the proof does not use self-application, which seems an unnecessary, but slick looking, trick hiding what may seem a more important issue, the halting behavior.
बबौ

@user118967 To answer your first comment, and after reading the most upvoted answer, it seem that the main motivation is the link with the work of Russell and Gödel. Now I have no idea whether it is really essential for that purpose, and the self-applying constructions variant can certainly be studied for the purpose, but I don't see the point of imposing it on everyone. Furthermore, the more direct proof seems more intuitive, and does give the tool to further analyse the self-applying version. Why then?
babou

हां, मैं उस पर आपसे सहमत हूं।
user118967

8

There is also a proof of this fact that uses a different paradox, Berry's paradox, which I heard from Ran Raz.

Suppose that the halting problem were computable. Let B(n) be the smallest natural number that cannot be computed by a C program of length n. That is, if S(n) is the set of natural numbers computed by C programs of length n, then B(n) is the smallest natural number not in S(n).

Consider the following program:

  1. Go over all C programs of length at most n.

  2. For each such program, check if it halts; if it does, add it to a list L.

  3. Output the first natural number not in L.

This is a program for computing B(n). How large is this program? Encoding n takes O(logn) characters, and the rest of the program doesn't depend on n, so in total the length is O(logn), say at most Clogn. Choose N so that ClogNN. Then our program, whose length is at most N, computes B(N), contradicting the definition of B(N).

The same idea can be used to prove Gödel's incompleteness theorems, as shown by Kritchman and Raz.


शायद यह कागज में मैं उद्धृत करता हूं, या ली और विटैनी द्वारा क्लासिक मोनोग्राफ कोलमोगोरोव कॉम्प्लेक्सिटी में।
युवल फिल्मस

By the way, do you think that this method provides an attack on the NP vs CoNP problem?
Mohammad Al-Turkistany

नहीं। इस तरह की समस्याएँ इस समय हमारे सामने हैं।
युवल फिल्मस

"and the rest of the program doesn't depend on n" Why?
SK19

पैरामीटर nकेवल एक बार कार्यक्रम में दिखाई देता है। कार्यक्रम का निष्पादन निर्भर करता हैn, परंतु n स्वयं अपने स्रोत कोड में केवल एक बार दिखाई देता है।
युवल फिल्मस

6

यहां एक और सामान्य विचार शामिल है जिसे "रिकर्सन प्रमेय" कहा जाता है जो अधिक सहज हो सकता है: ट्यूरिंग मशीनें अपने स्वयं के विवरण का उपयोग कर सकती हैं (और इस प्रकार खुद को चला सकती हैं)। अधिक सटीक रूप से, एक प्रमेय है:

किसी भी ट्यूरिंग मशीन के लिए T, एक ट्यूरिंग मशीन है Rजो गणना करती है R(x) = T(R;x)

यदि हमारे पास एक ट्यूरिंग मशीन थी जो रुकने की समस्या को हल कर सकती थी, तो ऊपर वर्णित विचार का उपयोग करके, हम आसानी से "झूठे" ट्यूरिंग मशीनों की एक किस्म का निर्माण कर सकते हैं: जैसे कि अजगर की तरह संकेतन।

def liar():
    if halts(liar):
        return not liar()
        # or we could do an infinite loop
    else:
        return True

अधिक जटिल तर्क अनिवार्य रूप से केवल पुनरावृत्ति प्रमेय के लिए अपील के बिना ऐसा करने की कोशिश कर रहा है। यही है, यह "आत्म-संदर्भित" कार्यों के निर्माण के लिए एक नुस्खा दोहरा रहा है। जैसे ट्यूरिंग मशीन दी गई है T, यहाँ एक Rसंतोषजनक निर्माण के लिए एक ऐसा नुस्खा है

R(x) = T(R; x)

सबसे पहले, परिभाषित करें

S(M; x) = T(M(M; -); x)

जहां M(M; -)मेरा वास्तव में मतलब है कि हम गणना करते हैं ( Mइनपुट के विवरण का उपयोग करते हैं ) और एक ट्यूरिंग मशीन के विवरण में प्लग करते हैं, जो इनपुट पर y, मूल्यांकन करता है M(M; y)

अब, हम देखते हैं कि यदि हम Sअपने आप में प्लग करते हैं

S(S; x) = T(S(S; -); x)

हम चाहते हैं कि हम नकल प्राप्त करें। इसलिए अगर हम सेट करते हैं

R = S(S; -)

तो हमारे पास हैं

R(x) = T(R; x)

जैसी इच्छा।


पहला अनुच्छेद आपके द्वारा उद्धृत प्रमेय से मेल नहीं खाता है, जिसे मैं smn प्रमेय के नाम से जानता हूं।
राफेल

@Raphael: It's called the recursion theorem in my textbook. :( My brief attempt at google failed to turn up any alternative names.

No worries; maybe I understand you wrong, or there are different names for the same thing. That said, your sentence "Turing machines can use their own description" is not supported by the theorem you quote. In fact, I think it's wrong: if the function a TM computes depended on its index, what would all the infinitely many TMs that compute the same function look like?
Raphael

क्षमा करें, अनुसरण नहीं। नहीं करना चाहिएटीएक सार्वभौमिक टीएम हो? इसके अलावा दूसरे मामले में liarवापसी क्यों होती है True? क्या यह "झूठा 'पड़ाव" सवाल का जवाब देना चाहिए? यदि हां, तो not liar()पहले मामले में वापस आना क्यों ठीक है? क्या यह नहीं होना चाहिए False(या अनंत लूप)?
user118967

@user: Nope: you're got the quantifiers wrong. The theorem is "for every T, there exists a R such that R(x)=T(R;x)". You are thinking about "There exists a T such that for every R, R(x)=T(R;x).

5

ट्यूरिंग प्रमाण काफी हद तक कैंटरों के प्रमाण के समान है कि वास्तविक की कार्डिनैलिटी ("बेशुमार") तर्कसंगतता ("काउंटेबल") की कार्डिनैलिटी से बड़ी है क्योंकि उन्हें 1-1 पत्राचार में नहीं डाला जा सकता है लेकिन इस पर ध्यान नहीं दिया गया है / जोर दिया गया है बहुत सारे संदर्भ (क्या कोई किसी को जानता है?)। (iirc) एक सीएस प्रोफेसर ने एक बार कक्षा में इस साल पहले दिखाया था (यह निश्चित नहीं था कि वह खुद कहां मिला है)। Cantors सबूत में एक क्षैतिज आयाम के साथ एक ग्रिड कल्पना कर सकते हैं n वें नंबर के अंकों और ऊर्ध्वाधर आयाम n वें सेट की संख्या।

ट्यूरिंग हॉल्टिंग प्रूफ निर्माण काफी समान है सिवाय इसके कि टेबल की सामग्री 1/0 के बजाय Halt / Nonhalt हैं, और क्षैतिज अक्ष n th इनपुट है, और ऊर्ध्वाधर अक्ष n th कंप्यूटर प्रोग्राम है। दूसरे शब्दों में, कंप्यूटर प्रोग्राम और इनपुट्स का संयोजन गणना योग्य है, लेकिन एक अनंत मशीन सिम्युलेटर निर्माण के आधार पर अनंत तालिका / सरणी बेशुमार है जो कि हॉल्टिंग मशीन को मानने वाले नॉनहेटिंग केस को "फ्लिप" कर सकती है (इसलिए redioio ad absurdam ) ।

कुछ प्रमाण जो ट्यूरिंग के कैंटरों को आंशिक रूप से ध्यान में रखते थे, यह है कि उनका वही हाल्ट प्रूफिंग अंकों के साथ गणना योग्य अंकों के साथ वास्तविक संख्याओं की गणना के बारे में है।


परिशिष्ट, वास्तव में अनिर्णय को देखने के लिए एक बहुत ही "सहज" तरीका है, लेकिन इसे समझने के लिए बहुत अधिक गणित की आवश्यकता होती है (यानी एक विशेषज्ञ की अंतर्ज्ञान से बहुत अलग है)। गणितज्ञ हॉल्टिंग की समस्या पर विचार करते हैं और लॉडवे तय बिंदु प्रमेय के माध्यम से गॉड्स समान प्रमाण देते हैं, लेकिन यह एक उन्नत तथ्य है जो "अभी तक" को कम करने के लिए बहुत सुलभ नहीं है। देख हॉल्टिंग समस्या, uncomputable सेट, आम गणित की समस्या? सैद्धांतिक कंप्यूटर विज्ञान और रेफरी के लिए भी जुड़ा हुआ पद
vzn

3

इस बिंदु पर यह एमिल पोस्ट द्वारा काम को ध्यान देने योग्य है, जो ( न्यायोचित) संगणना के मूल परिणामों के सह-खोजकर्ता होने का श्रेय दिया जाता है, हालांकि दुख की बात यह है कि Entscheidungsproblem के समाधान के सह-खोजकर्ता के रूप में बहुत देर से प्रकाशित किया गया था । उन्होंने निश्चित रूप से तथाकथित चर्च-ट्यूरिंग थीसिस के विस्तार में भाग लिया ।

पोस्ट बहुत दार्शनिक विचारों से प्रेरित था, अर्थात् गणना करने के लिए मानव क्षमता की सैद्धांतिक सीमाएं, या यहां तक ​​कि एक सुसंगत तरीके से सटीक उत्तर प्राप्त करना । उन्होंने एक प्रणाली तैयार की, जिसे अब पोस्ट कैनोनिकल सिस्टम कहा जाता है , जिसके विवरण महत्वहीन हैं, जिसका उन्होंने दावा किया कि किसी भी समस्या को हल करने के लिए इसका इस्तेमाल किया जा सकता है, जो प्रतीकों के हेरफेर से इतनी आसानी से हल किया जा सकता है । दिलचस्प रूप से, उन्होंने स्पष्ट रूप से मानसिक रूप से "स्मृति" का हिस्सा होने के लिए मानसिक रूप से विचार किया, इसलिए यह संभावना है कि उन्होंने कम से कम गणना के अपने मॉडल को संपूर्णता में मानव विचार का एक मॉडल माना।

एन्टशेइदुंगस्पर्मेलम कहने के लिए गणना के ऐसे साधनों का उपयोग करने की संभावना पर विचार करता है, प्रिंसिपिया मैथमेटिका की प्रणाली में व्यक्त किसी भी प्रस्ताव की प्रमेयता का निर्धारण करता है । लेकिन पीएम एक ऐसी प्रणाली थी जिसे स्पष्ट रूप से सभी गणितीय तर्क का प्रतिनिधित्व करने में सक्षम बनाया गया था, और, विस्तार से (कम से कम उस समय, जब तर्कवाद अभी भी प्रचलन में था) मानव तर्क के सभी!

इसलिए यह बहुत ही चौंकाने वाली बात है कि इस तरह की प्रणाली का ध्यान पोस्ट कैनोनिकल सिस्टमों की ओर मोड़ने के लिए, बस इंसानी दिमाग के रूप में, फ्रेज, रसेल के कामों के माध्यम से और सदी के अंत के तर्कवादियों ने तर्क संकाय पर अपना ध्यान आकर्षित किया था। मानव मन का ही।

तो यह इस बिंदु पर स्पष्ट है, कि स्व-संदर्भ, या खुद का वर्णन करने की प्रणालियों की क्षमता, 1930 के दशक के शुरुआती दिनों में एक स्वाभाविक विषय था। वास्तव में, डेविड हिल्बर्ट गणितीय तर्क को "बूटस्ट्रैप" की उम्मीद कर रहे थे, मानव गणित के सभी का एक औपचारिक विवरण प्रदान करके, जो तब गणितीय रूप से खुद को सुसंगत साबित किया जा सकता था!

एक बार अपने बारे में औपचारिक प्रणाली का उपयोग करने का कदम प्राप्त हो जाने के बाद, यह एक आशा है और सामान्य स्व-रेफरेंशियल विरोधाभास (जो एक बहुत पुराना इतिहास है ) से दूर छोड़ दें ।

चूंकि प्रिंसिपिया के सभी बयानों को कुछ आध्यात्मिक अर्थों में "सच" माना जाता है, और प्रिंसिपिया व्यक्त कर सकते हैं

कार्यक्रम pरिटर्न trueइनपुट पर परिणामn

यदि उस प्रणाली में सभी प्रमेयों को तय करने के लिए एक कार्यक्रम मौजूद है, तो झूठे के विरोधाभास को सीधे व्यक्त करना काफी सरल है:

यह कार्यक्रम हमेशा झूठ होता है।

द्वारा व्यक्त किया जा सकता है

कार्यक्रम pहमेशा प्रिंसिपल गणितज्ञ के कहे के विपरीत pलौटेगा।

कठिनाई कार्यक्रम का निर्माण कर रही है p। लेकिन इस बिंदु पर, अधिक सामान्य वाक्य पर विचार करना स्वाभाविक है

कार्यक्रम pहमेशा पीएम के कहे अनुसार qलौटेगा।

कुछ मनमानी के लिए q। लेकिन p(q)किसी भी दिए को बनाना आसान है q! बस गणना करें कि पीएम क्या भविष्यवाणी करता है यह आउटपुट करेगा, और विपरीत उत्तर लौटाएगा। हम सिर्फ बदल नहीं सकते qद्वारा pके बाद से, इस बिंदु हालांकि पर pले जाता है qइनपुट के रूप में है, और qनहीं है (यह कोई इनपुट लेता है)। चलो हमारे वाक्य ताकि बदलने चलो p करता इनपुट ले:

कार्यक्रम pपीएम के कहे अनुसार q(r)वापस लौटेगा।

आर्ग! लेकिन अब pइनपुट के 2 टुकड़े लगते हैं : qऔर r, जबकि qकेवल 1 लेता है। लेकिन प्रतीक्षा करें: हम pदोनों जगहों पर वैसे भी चाहते हैं, इसलिए जानकारी का rएक नया टुकड़ा नहीं है , लेकिन डेटा का एक ही टुकड़ा फिर से, अर्थात् q! यह आलोचनात्मक अवलोकन है।

तो हम अंत में मिलता है

कार्यक्रम pपीएम के कहे अनुसार q(q)वापस लौटेगा।

आइए इस मूर्खतापूर्ण "पीएम कहते हैं" व्यापार के बारे में भूल जाओ, और हम प्राप्त करते हैं

कार्यक्रम p(q)वापस वही लौटाएगा जो q(q)वापस आएगा।

यह एक वैध कार्यक्रम है बशर्ते हमारे पास एक कार्यक्रम है जो हमेशा हमें बताता है कि क्या q(q)रिटर्न देता है । लेकिन अब है कि हम अपने कार्यक्रम है p(q), हम जगह ले सकता qसे pऔर हमारे झूठा विरोधाभास मिलता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.