REGULAR_TMが決定できないことを証明


7

私は次の定理の証明を研究しています:

言語を考える

REGULARTM={M|Mはチューリングマシンで、は通常のAccept(M)}

REGULARTMは決定できません。


Sipserで与えられた証明は、を決定するマシンがすでにある場合、停止問題を決定するマシンを作成できることを示しています。RREGULARTMS

AcceptTM={M,w|M is a turing machine and wAccept(M)}

証明を理解できません。ここに私がそれを理解する方法があります:

場合(任意のチューリングマシン)および(任意の文字列)が機械に供給される、我々は、機械構成列かかる機械入力として、しかし最初のランに。最初のケースでは、場合、単にxを受け入れます。つまりつまり正規言語-この場合インチ それ以外の場合、2番目のケースでは、は拒否し、は入力が形式であるかどうかをチェックし、そうである場合は受け入れます-つまりMwSM2xMww Accept(M)M2Accept(M2)=MwM2x0n1nAccept(M2)は通常の言語ではありません。インサイド私たちが実行した場合、これらのケースの両方のためにの適切な結果を返す直接返すことができます。SRM2S

3番目のケースで混乱しているのは、が停止しない場合です。次に正規言語であり、かつ、したがって、返されACCEPT、その直接的として返すことができない。しかし、ソリューションの説明は、がこの場合でもACCEPTを返すように聞こえます(以下の疑似コード)。だから私は何が間違っているのですか?おそらく私が見逃している非常に基本的な考えがあるでしょう。ここでは、マシンのための擬似コードだ、との内側に、あなたが見ることができるように、機械がありますことMwAccept(M2)={}RSwAccept(M)SSSM2Sが作成します。

machine S(M, w):
    // Construct an instance of machine M2 which uses M and w
    machine M2(x):
        r := M(w)  // Might hang here
        if r == ACCEPT:
            return ACCEPT
        else:
            if x is of form 0^n.1^n:
                return ACCEPT
            else:
                return REJECT

    // Run R on M2 (always returns, never hangs)
    r1 = R(M2)
    if r1 == ACCEPT:
        return ACCEPT
    else:
        return REJECT

2
おそらく、より良いアプローチは、ライスの定理を調べて理解することです。これは、チューリングマシンの言語の重要な特性が決定できない理由を示しています。
jmite 2015年

OK、jmite、やります。
slnsoumik

1
@jmite、ライスの定理の証明は、これに対してあなたが与えるものと本質的に同じです。確かに、それが得られると、これ(および多くの類似した質問)は簡単になります。
フォンブランド、2016年

私は、以下の便利を見つけたここで:Rは、M2は、それがすべての可能な入力(シグマ考慮しなければならない正規言語受け入れるかどうかを決定するためにシグマ*(シグマ=アルファベットセット)は、定期的な言語であるので含む)は、0 ^ N1 ^ nと、その他の非正規言語。したがって、Mがwを受け入れる場合、M2は0 ^ n1 ^ n種類の入力だけでなくSigmaも受け入れます。ただし、Mがwを受け入れない場合、M2は0 ^ n1 ^ n文字列のみを受け入れます。それが役に立てば幸い。
Ali Shakiba 2016年

回答:


4

ライスの定理を調べてください。その証明はかなり短くて甘いです。TM言語の重要なプロパティ(つまり、すべてのTM言語が共有するわけではないプロパティ)は、受け入れ可能な言語がプロパティを持っている場合、TMを見ても判断できないという意味で、決定不可能であると述べています。

通常であるという性質(または文脈自由言語、または空の言語、またはすべての文字列の言語、または...)は自明ではないため、特定のTMがその性質を持つ言語を受け入れるかどうかは、ライス定理。


0

あなたの疑似コードは間違っています、以下は正しいものです:

machine S(M, w):
    // Construct an instance of machine M2 which uses M and w
    machine M2(x):
        if x is of form 0^n.1^n:
            return ACCEPT
        else:
            r := M(w) // If LOOP, M2 accept 0^n.1^n
            if r == ACCEPT: 
                return ACCEPT // M2 accept Sigma* (Only this case make M2 accept regular language if only if M(w) accept)
            else if r == REJECT: 
                return REJECT // M2 accept 0^n.1^n

    // Run R on M2 (always returns, never hangs)
    r1 = R(M2)
    if r1 == ACCEPT:
        return ACCEPT
    else:
        return REJECT

@David Richerby詳細は次のとおりです。

  1. フォンブランドは正しい
    彼はライスのテオレムを使用しました、それはTM言語の重要な特性は決定不可能であると言います。それは問題ありませんが、... Sipserの本では、この例はマッピングの還元性を示すためのものです。
    したがって、この問題を解決するには、ライスの定理の代わりにリダクションを使用する必要があります。

  2. 提案された回答の何が問題になっていますか?
    間違った点は
    、M2でM(w)LOOPを実行すると、R(M2)がACCEPTを返すことです。どうして?この場合、L(M2)は通常の言語である{}ですが、M(w)LOOPの場合、R(M2)はACCEPTを返してはなりません。
    想像してみてください:
    R(M2)がACCEPTを返すと、どうなりますか?
    M2がR(M2)を受け入れるようにする2つの可能性があります。
    (1)M(w)はACCEPTを返します。
    (2)M(w)ループ。
    明らかに、「2つの可能性」は削減の定義を満たしていません。
    Reductionの定義は?

    ここに画像の説明を入力してください <=>は、「場合にのみ」に注意してください。

  3. それを修正するために私の答えは何をしますか?
    重要なことは、M2がR(M2)を受け入れるようにする1つの可能性、つまりM(w)がACCEPTを返すことだけです!それは削減の定義を満たしています。

  4. この問題の別の解決策:

    machine S(M, w):
        // Construct an instance of machine M2 which uses M and w
        machine M2(x):
            r := M(w)
            if r == ACCEPT:
                if x is of form 0^n.1^n:
                    return ACCEPT
                else:
                    return REJECT
            else if r == REJECT:
                return REJECT
    
        // Run R on M2 (always returns, never hangs)
        r1 = ComplementOfR(M2) // use Complement Of R
        if r1 == ACCEPT:
            return REJECT
        else:
            return ACCEPT
    

    このソリューションでは、R
    の代わりにComplementOfRを使用します。これの利点は次のとおり
    です。M2では、Mを最初にwで実行できます。
    ComplementOfRを使用できる理由
    Rが決定可能である場合、ComplementOfRも決定可能です。したがって、ComplementOfRを使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.