Musteranpassung höherer Ordnung ist ein unentscheidbares Problem. Das heißt es gibt keinen Algorithmus, der eine Gleichung gegeben a => b
, wo a
und b
sind offen Begriffe auf dem einfach Lambda - Kalkül eingegeben hat , findet eine Substitution , S
so daß aS => bS
, wo =>
steht für „die gleiche Bn Normalform“. Der Mensch kann dieses Problem jedoch effizient lösen. Zum Beispiel mit dem folgenden Problem:
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))))))
Jeder Mensch mit ausreichendem Wissen über die Lambda-Rechnung wird bemerken können, dass F
die "doppelte" Funktion für Kirchenzahlen schnell mit der Lösung kommt, die
F = (λ a b c . (a b (a b c)))
Meine Frage ist: Wenn dieses Problem unentscheidbar ist, wie kann es der Mensch schnell und mühelos lösen?
computability
MaiaVictor
quelle
quelle
Antworten:
Menschen können einige Fälle dieses Problems effizient lösen , aber es gibt keinen Grund zu der Annahme, dass Menschen alle Fälle effizient lösen können . Das Anzeigen einer Instanz, die ein Mensch effizient lösen kann, bedeutet nicht, dass der Mensch alle Instanzen effizient lösen kann.
Unentscheidbar bedeutet "Es gibt keinen Algorithmus, der alle Instanzen lösen kann und der immer endet". Es könnte immer noch einen Algorithmus geben, der einige Fälle auch für ein unentscheidbares Problem lösen kann .
Es gibt also keinen Widerspruch.
quelle
F = (λ a b c . (a b (a b c)))
und halten Sie an". Dies ist ein Computeralgorithmus, der das Problem in einigen Fällen (insbesondere in genau einem Fall) löst. Ja, das ist in Ordnung - so eine neue Frage zu stellen, scheint das Richtige zu sein. Wie üblich, teilen Sie uns bitte mit, welche Nachforschungen Sie in der Frage angestellt haben (bevor Sie fragen, sollten Sie einige Nachforschungen anstellen).Wie einer der Kommentare festhält, sollte man sich darüber im Klaren sein, dass es in der Praxis einige ziemlich gute Algorithmen zum Lösen von Mustern höherer Ordnung gibt (wie eine schnelle Google-Suche zeigen wird).
Ich kenne keine, die dieses spezielle Problem lösen, aber dieses "Verdopplungs" -Problem kommt dem Bereich der Programmsynthese näher . Ich glaube, dass es Programmsynthesesysteme gibt, die diese Art von Problem lösen können.
Es ist einfach, Beispiele zu erstellen, die diese Systemdrosseln verursachen, und es scheint, dass Menschen bei solchen Problemen besonders gut sind. Die Schaffung von Algorithmen, die den Menschen bei der Lösung derartiger Probleme näher kommen, ist das Ziel der automatischen Beweisführung und der künstlichen Intelligenz (für ehrgeizigere / unrealistischere Versuche).
quelle
Menschen versuchen immer, das Problem mit ihrem eigenen Wissen zu lösen, also entwickeln Menschen einen Algorithmus, um das Problem mit einigen Problemfällen zu lösen. So entwickeln Menschen einen Algorithmus, aber es gibt keine Gewissheit, dass der bestimmte Algorithmus jedes einzelne Problem lösen kann. Kein Algorithmus kann also jedes Problem lösen, aber es gibt immer noch ein Problem, das vom Menschen gelöst werden kann, obwohl es keinen perfekten Algorithmus dafür gibt, wie wir sagen können, dass wir wissen, wie man ein Problem löst, aber keinen Algorithmus haben .
quelle