Czy rachunek afiniczny lambda może rozwiązać każdy problem w P?

10

W Zaawansowanych tematach w typach i językach programowania w rozdziale o podstrukturalnych systemach typów wspomniano, że „starannie spreparowany” rachunek afiniczny lambda z kombinatorem rekurencyjnym dla list może wpisywać tylko terminy, które mają wielomianowy czas działania (nie przedstawić dowód ze względu na złożoność). Byłoby to bardzo interesujące, gdybyśmy mogli rozwiązać każdy problem w P. Mogłabym spróbować znaleźć rozwiązanie problemu P-zupełnego za pomocą rachunku przedstawionego przez Nie jestem pewien, czy to by cokolwiek udowodniło. Wydaje mi się, że nie oznacza to, że może wykonać wszystkie redukcje konieczne do zastosowania rozwiązania problemu P-zupełnego (choć na pewno wydaje się prawdopodobne).

Jeśli afiniczny rachunek lambda nie jest w stanie rozwiązać dokładnie problemów w P, to czy jest jakiś znany rachunek, który może rozwiązać dokładnie problemy w P?

Jake
źródło
1
Przepraszam za moją ignorancję, ale jaki jest przykład problemu pełnego , a co ważniejsze, jakiego pojęcia redukcji używasz? P
Andrej Bauer,
Znalazłem trochę na wikipedii: en.wikipedia.org/wiki/P-complete#P-complete_problems . Interesujący jest problem z wartością obwodu i róg-SAT. Programowanie liniowe jest również najwyraźniej ukończone. Slajdy te dobrze opisują problem z wartością obwodu cs.cornell.edu/courses/CS6820/2012sp/Handouts/cvp.pdf . Wydaje się, że stosowane są albo redukcje L albo N C , przy czym redukcje L są słabsze niż redukcje N C. Byłbym z nich zadowolony; Nie jestem pewien, jakie są konsekwencje używania L vs N C są dokładnie. PLNCLNCLNC
Jake,
6
Istnieją języki liniowe, które są kompletne dla P. Co ciekawe, ogólnie są one kompletne dla problemów, ale nie dla algorytmów. Oznacza to, że możesz napisać program czasowy dla każdego problemu w P, ale nie każdy algorytm czasu policyjnego jest wyrażalny.
Neel Krishnaswami
Czy to stwierdzenie byłoby w przybliżeniu równoznaczne z „ogólnie są one kompletne dla P, ale nie dla FP”? Również gdybyś mógł podać kilka przykładów, byłaby to niesamowita odpowiedź.
Jake,
3
Neel Krishnaswami, czy możesz podać referencje? Brzmi interesująco.
Mateus de Oliveira Oliveira

Odpowiedzi:

12

Edycja: moje przypuszczenie w pierwszym akapicie poniżej jest błędne! Ugo Dal Lago zwrócił mi uwagę na późniejszy artykuł Martina Hofmanna (ukazany w POPL 2002), którego nie byłem świadomy, pokazując (jako następstwo bardziej ogólnych wyników), że system z książki ATTPL jest w rzeczywistości kompletny dla ( pomimo niemożności obliczenia każdej funkcji w F P ). Ku mojemu zdziwieniu odpowiedź na główne pytanie brzmi: tak.PFP


Dotyczącą systemu masz na myśli (z książki ATTPL), jestem pewien, że nie może zdecydować każdy język w . Z pewnością nie jest w stanie obliczyć każdej funkcji w F P : jak wspomniano w uwagach do tego rozdziału, system ten został zaczerpnięty z artykułu LICS 1999 Martina Hofmanna („Typy liniowe i obliczanie wielomianu nie zwiększającego wielkości”), w którym pokazano że reprezentowalne funkcje to czas działania i nie zwiększają rozmiaruPFP, co wyklucza wiele funkcji polytime. Wydaje się również, że stanowi poważne ograniczenie rozmiaru taśmy maszyn Turinga, które można symulować w tym języku. W artykule Hofmann pokazuje, że można zakodować obliczenia przestrzeni liniowej; zgaduję, że nie będziesz w stanie zrobić dużo więcej, tj . klasa odpowiadająca temu systemowi to z grubsza problemy, które można rozwiązać jednocześnie w polityce czasowej i przestrzeni liniowej.

Jeśli chodzi o drugie pytanie, istnieje kilka -calculi, które mogą rozwiązać problemy w dokładnie P . Niektóre z nich są wymienione w uwagach do rozdziału ATTPL, do którego się odwołujesz (rozdz. 1.6): Wielopoziomowy λ- rachunek Leivanta (patrz jego praca POPL 1993 lub praca z Jean-Yves Marion "Lambda Calculus Characterizations of Poly-Time ” Fundamenta Informaticae 19 (1/2): 167-184, 1993), co jest związane z Bellantoni and Cook charakterystyki F P ; oraz λ- calculi pochodzące z lekkiej logiki liniowej Girarda ( Information and Computation , 143: 175–204, 1998) lub z miękkiej logiki liniowej Lafonta ( Theoretical Computer Science)λPλFPλ318 (1-2): 163-180, 2004). Systemy typów wynikające z tych dwóch ostatnich systemów logicznych i zapewniające zakończenie czasu policyjnego (wciąż ciesząc się kompletnością) można znaleźć w:

Patrick Baillot, Kazushige Terui. Rodzaje światła do obliczania czasu wielomianowego w rachunku lambda. Informacje i obliczenia 207 (1): 41–62, 2009.

Marco Gaboardi, Simona Ronchi Della Rocca. Od lekkiej logiki po przypisania typów: studium przypadku. Logic Journal of IGPL 17 (5): 499-530, 2009.

W tych dwóch artykułach znajdziesz wiele innych odniesień.

Podsumowując, pozwól mi rozwinąć uwagę Neela Krishnaswamiego. Sytuacja jest nieco subtelna. Wszystkie powyższe kalkulatory mogą być postrzegane jako ograniczenia bardziej ogólnych rachunków, w których można obliczyć znacznie więcej niż tylko funkcje polytime, np. System F. Innymi słowy, definiuje się właściwość Φ programów F programów P : stringbool taki, że:λΦP:stringbool

solidność: oznacza, że ​​język wybrany przez P jest w P ;Φ(P)PP

kompletność: dla każdego istnieje system F program P decydujący L taki, że Φ ( P ) .LPPLΦ(P)

Interesujące jest to, że właściwość wyrażona przez jest czysto składniowa, a w szczególności rozstrzygalna. Dlatego kompletność może zachowywać się wyłącznie w sensie ekstensywnym: jeśli L jest twoim ulubionym językiem w P, a jeśli P jest twoim ulubionym algorytmem decydującym o L wyrażonym w systemie F, może być tak, że Φ ( P ) nie zachowuje. Wszystko co wiem to, że istnieje jakiś inny program System F P ' decydując L i takie, że Φ ( P ' ) posiada. Niestety może się zdarzyć, że P ΦLPPLΦ(P)PLΦ(P)Pjest znacznie więcej niż wymyślony . Rzeczywiście, kompletność została potwierdzona przez kodowanie wielomianowo taktowanych maszyn Turinga jako spełniające warunki systemu F Φ . Dlatego jedynym gwarantowanym sposobem rozwiązania L przy użyciu twojego ulubionego algorytmu jest implementacja tego algorytmu na maszynie Turinga, a następnie przetłumaczenie go w systemie F przy użyciu kodowania podanego w dowodzie kompletności (twoje własne kodowanie może nie działać!). Niezupełnie najbardziej eleganckie rozwiązanie w zakresie programowania ... Oczywiście w wielu przypadkach „naturalny” program P spełnia Φ . Jednak w wielu innych przypadkach tak nie jest: we wspomnianym powyżej dokumencie LICS 1999 Hofmann podaje rodzaj wstawiania jako przykład.PΦLPΦ

Istnieją celowo kompletne systemy typów, które potrafią dokładnie wpisywać programy czasu polytime w szerszym języku (system F w moim przykładzie powyżej). Oczywiście są one ogólnie nierozstrzygalne. Widzieć

Ugo Dal Lago, Marco Gaboardi. Liniowe typy zależne i względna kompletność. Metody logiczne w informatyce 8 (4), 2011.

Damiano Mazza
źródło
1
Nie rozumiem, co próbujesz powiedzieć w drugiej połowie. Na podstawie twojego opisu istnieje syntaktyczna transformacja maszyn Turinga z wielomiesięcznym czasem do programów F rozwiązujących ten sam problem. O ile widzę, jest to najlepsze, na co można liczyć, tłumacząc z jednego modelu obliczeniowego na inny.
Emil Jeřábek
3
ΦNat:=X.(XX)XXλmNat.λnNat.ΛX.λsXX.mX(nXs)
3
for
Myślę, że to jest w porządku. Interesuje mnie głównie wyszukiwanie funkcji (znajdowanie funkcji, które maksymalizują określoną właściwość), więc nie muszę być programistą, robi to komputer. Dzisiaj będę musiał kiedyś przejrzeć te odniesienia. Dzięki!
Jake