Z czysto abstrakcyjnego punktu widzenia rozumowania matematycznego / obliczeniowego (jak) można nawet odkryć lub wyjaśnić problemy takie jak 3-SAT, suma częściowa, podróżny sprzedawca itp.,? Czy bylibyśmy w stanie w jakikolwiek sensowny sposób uzasadnić je tylko z funkcjonalnego punktu widzenia? Czy to w ogóle możliwe?
Zastanawiam się nad tym pytaniem wyłącznie z punktu widzenia samego siebie w ramach uczenia się modelu obliczeniowego rachunku lambda. Rozumiem, że jest to „nieintuicyjne” i dlatego Godel faworyzował model Turinga. Chciałbym jednak wiedzieć, jakie są znane teoretyczne ograniczenia tego funkcjonalnego stylu obliczeń i na ile stanowiłoby to przeszkodę w analizie problemów klasy NP?
Odpowiedzi:
Możesz spojrzeć na semantykę kosztów dla języków funkcjonalnych . Są to różne miary złożoności obliczeniowej dla języków funkcjonalnych, które nie przechodzą przez żadną maszynę Turinga, maszynę RAM itp. Dobrym miejscem do rozpoczęcia wyszukiwania jest ten post Lambda Ultimate , który ma kilka dobrych referencji.
Sekcja 7.4 praktycznych podstaw języka programowania Boba Harpera wyjaśnia semantykę kosztów.
Artykuł na temat względnej przydatności kul ognistych Accattoli i Coena pokazuje, że rachunek ma co najwyżej liniowy wybuch w stosunku do modelu maszyny RAM.λ
Podsumowując, na tej innej planecie sytuacja byłaby prawie taka sama w odniesieniu do NP, ale byłoby mniej przepełnień bufora i nie byłoby tak dużo śmieci wokół.
źródło
Na prośbę dr Andreja i doktora zmieniam swój komentarz w odpowiedź, przepraszając za autoreklamę.
Niedawno napisałem papieru , w którym patrzę na jak udowodnić twierdzenie Stoły Levin ( -completeness z SAT) za pomocą języka funkcjonalnych (wariant X-rachunku) zamiast maszyn Turinga. Podsumowanie:N P.
źródło