Dopasowywanie wzorca wysokiego rzędu jest nierozstrzygalnym problemem. Oznacza to, że nie ma algorytmu, który, biorąc pod uwagę równanie a => b
, gdzie a
i b
są otwartymi terminami na prostym typie rachunku lambda, znalazłby podstawienie S
takie, że aS => bS
gdzie =>
skrót oznacza „ma tę samą postać normalną Bn”. Jednak ludzie mogą skutecznie rozwiązać ten problem. Na przykład biorąc pod uwagę następujący 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))))))
Każdy człowiek z wystarczającą wiedzą na temat rachunku lambda będzie w stanie zauważyć, F
że funkcja „podwójna” dla liczb kościelnych szybko pojawia się wraz z rozwiązaniem, które
F = (λ a b c . (a b (a b c)))
Moje pytanie brzmi: jeśli ten problem jest nierozstrzygalny, jak ludzie mogą go szybko i bez wysiłku rozwiązać?
computability
MaiaVictor
źródło
źródło
Odpowiedzi:
Ludzie mogą skutecznie rozwiązać niektóre przypadki tego problemu, ale nie ma powodu, aby sądzić, że ludzie mogą skutecznie rozwiązać wszystkie przypadki . Pokazanie jednego wystąpienia, że człowiek może rozwiązać skutecznie, nie oznacza, że ludzie mogą rozwiązać wszystkie przypadki skutecznie.
Nierozstrzygalna oznacza „nie ma algorytmu, który mógłby rozwiązać wszystkie instancje i który zawsze się kończy”. Nadal może istnieć algorytm, który może rozwiązać niektóre przypadki , nawet w przypadku nierozstrzygalnego problemu.
Więc nie ma sprzeczności.
źródło
F = (λ a b c . (a b (a b c)))
i zatrzymaj”. Jest to algorytm komputerowy, który rozwiązuje problem w niektórych przypadkach (w szczególności dla dokładnie 1 sprawy). Tak, to w porządku - zadawanie takich pytań wydaje się słuszne. Jak zwykle, powiedz nam, jakie badania przeprowadziłeś w pytaniu (powinieneś zrobić kilka pytań).Jak zauważa jedna z komentarzy, należy mieć świadomość, że istnieją w praktyce pewne całkiem dobre algorytmy rozwiązywania dopasowywania wzorca wyższego rzędu (jak ujawni szybkie wyszukiwanie w Google ).
Nie znam żadnego, który rozwiązałby ten konkretny problem, ale ten problem „podwajania” jest bliższy dziedzinie syntezy programów . Wierzę, że istnieją systemy syntezy programów, które mogą rozwiązać ten problem.
Łatwo jest tworzyć przykłady, które powodują, że system dławi się i wydaje się, że ludzie są szczególnie dobrzy w tego rodzaju problemach. Tworzenie algorytmów, które są bliżej ludzi w ich zdolności do rozwiązywania tego rodzaju problemów, jest zadaniem automatycznego dowodzenia twierdzeń i sztucznej inteligencji (dla bardziej ambitnych / nierealistycznych prób).
źródło
Ludzie zawsze próbują rozwiązać problem z własną wiedzą, więc ludzie opracowują algorytm, aby rozwiązać problem z niektórymi przypadkami problemu. Tak więc ludzie opracowują algorytm, ale nie ma pewności, że dany algorytm może rozwiązać każdy problem. Więc żaden algorytm nie może rozwiązać każdego problemu, ale wciąż istnieje problem, który może rozwiązać człowiek, nawet jeśli nie ma idealnego algorytmu do tego, jak możemy powiedzieć, że wiemy, jak rozwiązać problem, ale nie mamy algorytmu .
źródło