なぜ特定の「決定できない」問題を人間が解決できるのですか?


44

高次のパターンマッチングは、決定できない問題です。手段式所与、というアルゴリズムが存在しないことa => baおよびb単に型付きラムダ計算上のオープンな用語であるが、置換認めるSようにaS => bS、ここで=>「同じBnの正規形を有している」を意味します。しかし、人間はその問題を効率的に解決できます。たとえば、次の問題があるとします。

a = (λt . t 
    (F (λ f x . (f (f (f x))))) 
    (F (λ f x . (f (f x)))))
b = (λ t . t
    (λ f x . (f (f (f (f (f (f x)))))))
    (λ f x . (f (f (f (f x))))))

ラムダ計算に関する十分な知識を持つ人間Fは、教会番号の「二重」関数であることに気付くことができます。

 F = (λ a b c . (a b (a b c)))

私の質問は、その問題が決定できない場合、人間はどうすれば迅速かつ楽に解決できるでしょうか?


24
「人間はその問題を効率的に解決できる」-引用が必要。その証拠は何ですか?効率的に解決できる例を1つ示しても、問題のすべてのインスタンスで効率的に解決できるわけではありません。Xが真であるXの1つの例を示すことによって、「Xが真であるすべてのX」を証明することはできません。
DW

33
問題が決定不能であるということは、問題のすべてのインスタンスに対して「はい」または「いいえ」と正しく答えるアルゴリズムがないことを意味します。問題のいくつかの(または多くの)インスタンスを解決するアルゴリズムを見つけることができることを意味するものではありません。[はい。この発言の作成中にDWが回答したように。]
リックデッカー

23
この問題を解決します?私もこの問題を理解していません。
MikeTheLiar

2
私が理解した方法はこれです:その解決策はアドホックです。問題の各インスタンスには1つがあります-ほとんどの場合、例ほど簡単に動機付けられていませんが、アルゴリズムは正当性に基づいてのみ判断できるため、「インスタンスXを取得した場合、出力Y」と常に言うことができます-しかし、このようなすべての解決策をこのようにハードコーディングしても、有限の手順は生成されません(これが唯一の合理的な種類であり、したがって通常の意味です)。別の言い方をすれば、問題を決定可能にするために、アルゴリズムの戦略を選択する前にどのインスタンスが与えられているかを確認することはできません。
ヴァンダーモンド

また、これは、上記のようにすべてのソリューションを列挙するだけでよいため、一般的に無限数のインスタンスの問題のみが考慮または呼び出される理由です。
ヴァンダーモンド

回答:


78

人間はその問題のいくつかのインスタンスを効率的に解決できますが、人間がすべてのインスタンスを効率的に解決できると信じる理由はありません。人間が効率的に解決できる1つのインスタンスを表示しても、人間がすべてのインスタンスを効率的に解決できるわけではありません。

決定不能とは、「すべてのインスタンスを解決でき、常に終了するアルゴリズムがない」ことを意味します。決定できない問題に対しても、いくつかのインスタンスを解決できるアルゴリズムがまだ存在する可能性があります

したがって、矛盾はありません。


23
@srvm、うん、それはそれを意味します。たとえば、コンピューターアルゴリズムの愚かな例は次のとおりです。「入力が質問で与えられた例とまったく同じ場合、出力F = (λ a b c . (a b (a b c)))して停止します」。これは、いくつかの場合(特に、正確に1つの場合)の問題を解決するコンピューターアルゴリズムです。はい、それは大丈夫です-そのような新しい質問をすることは正しいことのように思えます。いつものように、質問で行った研究を教えてください(質問する前にいくつかの研究を行う必要があります)。
DW

10
どこ本当にハード問題がありさえNP完全問題でほとんどの場合は簡単に解決できることを主張。これは私の経験と一致します。通常、ソリューションの(少なくとも一部)を明らかにする問題の機能があります。ハードなものは慎重に、成功と失敗の間でバランスされているが、それらの多くはありません。
ロスミリカン

3
@srvmについて考えてみると、このような難しい問題を特別な場合に解決することが、オプティマイザーがしなければならないことです。
コートアンモン

2
@srvm:ほぼ毎日コンピューターに解決させる決定できない問題の優れた例は、停止する問題です。停止の問題は決定できないことはわかっていますが、不要な無限ループを検出しようとするリンター、静的アナライザー、およびコンパイラーの作成は今でも行われています。その方法は、「経験則」によるものです。つまり、アルゴリズムではなく人間の経験から、特定の種類のコードが無限ループに入ることがわかります。そのため、コンピュータに既知のケースを探すように依頼します。このようなプログラムがすべてのバグをキャッチすることはありません。しかし、何もないよりはましです。
スリーブマン


3

コメントの1つとして、実際に高次パターンマッチングを解決するためのかなり良いアルゴリズムがあることを知っておく必要があります(簡単なGoogle検索で明らかになります)。

私はこの特定の問題を解決するものは知りませんが、この「倍増」問題はプログラム合成の分野により近いと感じています。私は、この種の問題に取り組むことができるプログラム合成システムがあると信じています。

しかし、これらのシステムを窒息させるサンプルを作成するのは簡単で、人間はこの種の問題に特に優れているようです。この種の問題を解決する能力において人間により近いアルゴリズムを作成することは、自動定理証明人工知能の範囲です(より野心的/非現実的な試みのため)。


1

人間は常に自分の知識で問題を解決しようとするため、問題のいくつかのインスタンスで問題を解決するためのアルゴリズムを開発するため、人間はアルゴリズムを開発しますが、特定のアルゴリズムがすべての問題を解決できるという保証はありません。したがって、すべての問題を解決できるアルゴリズムはありませんが、問題を解決する方法を知っていると言えますが、アルゴリズムを持っていないというような完璧なアルゴリズムはありませんが、人間が解決できる問題はまだあります。


8
これは既存の答えの単なる言い換えではありませんか?私はあなたの答えのほとんどを批判しているので、以下は不誠実に聞こえるかもしれませんが、そうではありません。あなたがサイトに貢献したいのは本当に素晴らしいことです。2500の未回答の質問のいくつかに答えていただけると助かり ます。あなたが言いたいことをすべて答える答えがすでにある質問ではありません。ありがとう!
デビッドリチャービー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.