Nozioni di calcolo efficiente


11

Un algoritmo della macchina di Turing a tempo polinomiale è considerato efficiente se il suo tempo di esecuzione, nel peggiore dei casi, è limitato da una funzione polinomiale nella dimensione di input. Sono a conoscenza della forte tesi di Church-Turing:

Qualsiasi modello di calcolo ragionevole può essere simulato in modo efficiente su macchine Turing

Tuttavia, non sono a conoscenza della solida teoria per l'analisi della complessità computazionale degli algoritmi di -calculus.λ

Abbiamo una nozione di efficienza computazionale per ogni modello noto di calcolo? Esistono modelli utili solo per le domande di calcolabilità ma inutili per le domande di complessità computazionale?

Risposte:


9

Per quanto ne so, i principali modelli di calcolabilità sono λ-calcolo, macchine di Turing e funzioni ricorsive . Non sono a conoscenza della situazione relativa alla complessità delle funzioni ricorsive, possono o meno essere inutili per la complessità.

Può essere vista come una fortunata coincidenza che le macchine di Turing, che non sono così probabilmente macchine molto inefficienti, sono anche un ottimo modello di complessità. Ciò che ha reso le cose naturali è che ci sono molte trasformazioni che coinvolgono TM che sono polinomiali. (Macchina universale, la simulazione di un macchina -taped con una macchina 1-registrato, da un alfabeto arbitrario un uno binario, simulando una PRAM , ...) e che i polinomi sono una classe di funzioni stabile nelle operazioni aritmetiche e composizione - che li rende un buon candidato per la teoria della complessità.n

Il puro calcolo λ era di per sé inutile per la complessità. Tuttavia, un sistema di tipo semplice è entrato in gioco e ha permesso garanzie di risoluzione per alcuni termini λ in un modo molto semplice. Quindi alcuni altri sistemi (sistemi T , F , ..) hanno permesso una grande espressività mantenendo la terminazione.

L'efficienza o la complessità essendo un perfezionamento della terminazione e i tipi strettamente correlati alla logica, in seguito sono arrivate logiche lineari leggere che caratterizzano diverse classi di complessità. ( Elementare , P e alcune varianti per PSPACE e altri). La ricerca in questo dominio è molto attiva e non si limita a queste classi di complessità e non è nemmeno limitata al calcolo λ.

tl; dr: λ-calcolo era utile per la calcolabilità, la terminazione e la teoria della complessità.

Tuttavia, per dare credito quando il credito è dovuto, le macchine di Turing sono un modo buono e unanime per definire ciò che è complessità, ma questo vale solo per limiti ampi come "polinomiali", non per limiti stretti per i quali i modelli simili a PRAM sono più adatti.


Perché allora facciamo la maggior parte delle nostre analisi di runtime usando modelli simili alla RAM?
Raffaello

O(1)O(log|memory|)nlog27

@Raphael: stavi reagendo alla mia ultima frase, giusto?
jmad

Sì, l'ho fatto (per il bene del lettore inesperto).
Raffaello

1

β

(λX.term)vterm[X: =v]
1

β

@Gilles: Dato che non sappiamo quale sia il costo reale (modello unitario) dell'implementazione della riduzione ottimale, la tua osservazione non è realmente pertinente. Per ora, questi studi forniscono solo un affinamento del problema indicato in questa risposta.
Stéphane Gimenez,

1

Sull'inclusione del calcolo λ nel modello di complessità standard, ecco il riassunto di alcune (molto) nuove ricerche sull'argomento. Fornisce una risposta a questa domanda per qualche forma ristretta di riduzione β. Fondamentalmente, la complessità nel modello di costo standard è simile al conteggio delle fasi di riduzione del β quando è limitata alla riduzione del capitale (che include strategie di chiamata per nome e di chiamata per valore).

Sull'invarianza del modello di costo unitario per la riduzione della testa di Beniamino Accattoli e Ugo Dal Lago. (WST2012, collegamento al procedimento )

Il calcolo λ è un modello computazionale ampiamente accettato di programmi funzionali di ordine superiore, ma non esiste alcun modello di costo diretto e universalmente accettato. Di conseguenza, la difficoltà computazionale di ridurre i termini λ alla loro forma normale viene in genere studiata ragionando su algoritmi di implementazione concreti. Qui, mostriamo che quando la riduzione della testa è la dinamica sottostante, il modello di costo unitario è effettivamente invariante. Ciò migliora i risultati noti, che riguardano solo una riduzione debole (chiamata per valore o chiamata per nome). L'invarianza è dimostrata mediante un calcolo lineare di sostituzioni esplicite, che consente di scomporre piacevolmente qualsiasi fase di riduzione della testa nel calcolo λ in fasi di sostituzione più elementari, rendendo così più facile ragionare la combinatoria della riduzione della testa.


λ
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.