Il calcolo affine lambda può risolvere ogni problema in P?


10

Negli Argomenti avanzati nei tipi e nei linguaggi di programmazione, nel capitolo sui sistemi di tipo sottostrutturale viene menzionato che un calcolo lambda affine "accuratamente elaborato" con un combinatore di ricorsione per elenchi può solo digitare termini che hanno un tempo di esecuzione polinomiale (non presentare la prova a causa della complessità). Questo sarebbe molto interessante se potessimo anche risolvere tutti i problemi in P. Potrei provare a trovare una soluzione a un problema P-completo usando il calcolo presentato da Non sono sicuro che ciò proverebbe effettivamente qualcosa. Non mi sembra che possa preformare tutte le riduzioni necessarie per utilizzare una soluzione a un problema P-completo (anche se sembra probabile).

Se un calcolo affine lambda non è noto per essere in grado di risolvere esattamente i problemi in P, esiste qualche calcolo noto che può risolvere esattamente i problemi in P?


1
Scusa la mia ignoranza, ma qual è un esempio di un problema complete e, cosa ancora più importante, quale nozione di riduzione stai usando? P
Andrej Bauer,

Ne ho trovati alcuni su Wikipedia: en.wikipedia.org/wiki/P-complete#P-complete_problems . Di interesse è il problema del valore del circuito e horn-SAT. Apparentemente anche la programmazione lineare è . Queste diapositive descrivono bene il problema relativo al valore del circuito cs.cornell.edu/courses/CS6820/2012sp/Handouts/cvp.pdf . Sembra che vengano utilizzate riduzioni L o N C , le riduzioni L sono più deboli delle riduzioni N C. Sarei soddisfatto con entrambi; Non sono sicuro di quali siano esattamente le conseguenze dell'utilizzo di L vs N C. PLNCLNCLNC
Jake,

6
Esistono linguaggi lineari completi per P. È interessante notare che sono generalmente completi per problemi, ma non per algoritmi. Cioè, è possibile scrivere un programma poly-time per ogni problema in P, ma non tutti gli algoritmi polytime sono espressibili.
Neel Krishnaswami,

Tale affermazione sarebbe approssimativamente equivalente a "sono generalmente completi per P ma non per FP"? Inoltre, se potessi fornire alcuni esempi, questa sarebbe una risposta straordinaria.
Jake,

3
Neel Krishnaswami, puoi fornire un riferimento? Sembra interessante.
Mateus de Oliveira Oliveira,

Risposte:


12

Modifica: la mia ipotesi nel primo paragrafo sotto è sbagliata! Ugo Dal Lago mi ha fatto notare un articolo successivo di Martin Hofmann (apparso in POPL 2002), di cui non ero a conoscenza, che mostra (come corollario di risultati più generali) che il sistema del libro ATTPL è in effetti completo per ( nonostante non sia in grado di calcolare ogni funzione in F P ). Quindi, con mia sorpresa, la risposta alla domanda principale è sì.PFP


Per quanto riguarda il sistema si fa riferimento (dal libro ATTPL), sono abbastanza sicuro che non può decidere tutte le lingue in . Certamente non può calcolare ogni funzione in F P : come menzionato nelle note di quel capitolo, quel sistema è tratto dal documento LICS 1999 di Martin Hofmann ("Tipi lineari e calcolo del tempo polinomiale senza dimensioni"), in cui è mostrato che le funzioni rappresentabili sono polytime e non aumentano le dimensioniPFP, che esclude molte funzioni polytime. Sembra anche dare una seria limitazione alle dimensioni del nastro delle macchine Turing che è possibile simulare in quella lingua. Nel documento, Hofmann mostra che è possibile codificare il calcolo dello spazio lineare; la mia ipotesi è che non sarai in grado di fare molto di più, cioè la classe corrispondente a quel sistema è all'incirca i problemi risolvibili simultaneamente nello spazio temporale e lineare.

Per quanto riguarda la seconda domanda, ci sono diversi -calculi che può risolvere esattamente i problemi in P . Alcuni di questi sono menzionati nelle note del capitolo ATTPL a cui ti riferisci (Sez. 1.6): Calcolo λ a livelli di Leivant (vedi il suo articolo POPL 1993, o l'articolo con Jean-Yves Marion "Lambda Calculus Characterizes of Poly-Time ", Fundamenta Informaticae 19 (1/2): 167-184, 1993), che è legato alla caratterizzazione di F P di Bellantoni e Cook ; e i calcoli λ derivati ​​dalla logica lineare leggera di Girard ( Informazione e calcolo , 143: 175–204, 1998) o dalla logica lineare morbida di Lafont ( Teoretical Computer ScienceλPλFPλ318 (1-2): 163-180, 2004). I sistemi di tipo che derivano da questi ultimi due sistemi logici e che garantiscono la terminazione polifunzionale (pur godendo della completezza) possono essere trovati in:

Patrick Baillot, Kazushige Terui. Tipi di luce per il calcolo del tempo polinomiale nel calcolo lambda. Informazioni e calcolo 207 (1): 41-62, 2009.

Marco Gaboardi, Simona Ronchi Della Rocca. Dalle logiche leggere ai compiti di tipo: un caso di studio. Logic Journal of IGPL 17 (5): 499-530, 2009.

Troverai molti altri riferimenti in quei due articoli.

Per concludere, lasciatemi espandere l'osservazione di Neel Krishnaswami. La situazione è un po 'sottile. Tutti i suddetti calcoli possono essere visti come restrizioni di calcoli più generali, in cui è possibile calcolare molto più delle semplici funzioni polytime, ad esempio il sistema F. In altre parole, si definisce una proprietà Φ dei programmi del sistema F P : stringabool tale che:λΦP:cordabool

solidità: implica che la lingua decisa da P sia in P ;Φ(P)PP

completezza: per ogni esiste un programma F di sistema P che decide L in modo tale che Φ ( P ) .LPPLΦ(P)

L'interesse è che la proprietà espressa da è puramente sintattica e, in particolare, decidibile. Pertanto, la completezza può valere solo in senso estensivo: se L è la tua lingua preferita in P e se P è il tuo algoritmo preferito per decidere L espressa nel sistema F, può darsi che Φ ( P ) non regge. Tutto quello che sai è che esiste qualche altro programma di sistema F P ′ che decide L e tale che Φ ( P ) vale. Sfortunatamente, può succedere che P ΦLPPLΦ(P)P'LΦ(P')Pè molto di più di quanto il tuo escogitato . In effetti, la completezza è dimostrata codificando le macchine di Turing con clock polinomiale come termini di sistema F soddisfacenti Φ . Pertanto, l'unico modo garantito per risolvere L usando il tuo algoritmo preferito è implementare quell'algoritmo su una macchina Turing e poi tradurlo nel sistema F usando la codifica fornita nella prova di completezza (la tua codifica potrebbe non funzionare!). Non esattamente la soluzione più elegante in termini di programmazione ... Naturalmente, in molti casi il programma "naturale" P soddisfa Φ . Tuttavia, in molti altri casi non lo è: nel documento LICS 1999 sopra menzionato, Hofmann fornisce un esempio di inserzione.PΦLPΦ

Esistono sistemi di tipo intenzionalmente completi , che sono in grado di digitare esattamente i programmi polytime del linguaggio più ampio (sistema F nel mio esempio sopra). Certo, sono indecidibili in generale. Vedere

Ugo Dal Lago, Marco Gaboardi. Tipi dipendenti lineari e completezza relativa. Metodi logici in Informatica 8 (4), 2011.


1
Non capisco cosa stai cercando di dire nella seconda metà. Sulla base della tua descrizione, esiste una trasformazione sintattica di macchine Turing con clock polifunzionale per programmi F che risolvono lo stesso problema. Per quanto posso vedere, questo è il migliore che si possa sperare quando si traduce da un modello di calcolo ad un altro.
Emil Jeřábek,

3
@EmilJeřábek: sto cercando di dire che è abbastanza restrittivo e che rifiuta molti programmi F "in tempo" naturali. Se ci fosse una cosa come un programmatore di sistema F e si erano uno, e se ti ho chiesto di scrivere un programma per moltiplicare gli interi unari (di tipo N un t : = X . ( X X ) X X ), probabilmente scriveresti λ m N a t . λ n N a t . Λ X . λ s X ΦNat:=X.(XX)XX. Quindi, potresti essere deluso nello scoprire che il tuo termine è rifiutato e, invece, devi programmare la moltiplicazione ripetendo l'aggiunta. (Continua)λmNat.λnNat.ΛX.λsXX.mX(nXs)
Damiano Mazza,

3
(L'esempio sopra è reale: in tutti i sistemi di tipo derivati ​​a logica lineare per polytime, il solito termine per moltiplicazione non è tipizzabile). Si può essere ancora più delusi se ti ho detto che non si può programma, ad esempio, insertion sort in quanto tale (che è certamente polytime), ma è necessario annotare la macchina di Turing attuazione e lo codifica che nel sistema di F. e direi avreste ragione di essere deluso: cosa programmatore in quello di alto livello linguaggio di programmazione sarebbe felice con un tipo di controllo che dice "non posso Type-controllare la nested loop, si prega di codice di questo in assemblea"? :-)for
Damiano Mazza,

Penso che sia ok Sono principalmente interessato alla ricerca di funzioni (trovare funzioni che massimizzano una determinata proprietà), quindi non devo essere il programmatore, lo fa il computer. Stasera dovrò prendere in considerazione questi riferimenti. Grazie!
Jake,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.