L (complessità)

Da Wikipedia, l'enciclopedia libera.

Nella teoria della complessità computazionale, L è la classe di complessità che contiene i problemi di decisione che possono essere risolti da una macchina di Turing deterministica usando una quantità logaritmica di memoria. Intuitivamente, uno spazio logaritmico è sufficiente a contenere un numero costante di puntatori nell'input, e un numero logaritmico di valori booleani.

Una generalizzazione di L è NL, la classe dei linguaggi decidibili in spazio logaritmico da una macchina di Turing non deterministica. Banalmente si può dire che L \subseteq \mbox{NL}. Inoltre, un decisore che usa spazio O(\log n) non può impiegare un tempo superiore a 2^{O(\log n)}=n^{O(1)}, poiché questo è il numero totale di possibili configurazioni; quindi, L\subseteq P, dove P è la classe di problemi risolvibili in tempo polinomiale da una macchina di Turing deterministica.

Ogni problema in L è completo nella riduzione in spazio logaritmico; dato che ciò risulta inutile, sono state definite riduzioni più deboli che permettono l'identificazione di problemi completi in L in modo più forte, ma non c'è una definizione universalmente accettata di problema L-completo.

Problemi aperti importanti sono le questioni L = P? e L = NL?

La classe collegata di problemi costruttivi è FL. Si usa spesso FL per definire la riduzione in spazio logaritmico.

Nell'ottobre 2004, Omer Reingold in un articolo ha dimostrato che il problema di stabilire se c'è un percorso tra due vertici in un grafo non direzionato appartiene alla classe L, dimostrando che L = SL, poiché tale problema è SL-completo.

Come conseguenza di ciò, si ha una caratterizzazione logica semplice di L: contiene esattamente quei linguaggi esprimibili in logica del primo ordine con l'aggiunta di un operatore commutativo di chiusura transitiva (in termini di teoria dei grafi, ciò trasforma ogni componente connesso in una cricca).


Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]