L (clasă de complexitate)
În teoria complexității, L (cunoscută și sub numele de LSPACE sau DLOGSPACE) este clasa de complexitate care conține problemele de decizie(d) care pot fi rezolvate de către o mașină Turing deterministă folosind o un spațiu de memorie(d) de dimensiuni logaritmice în raport cu intrarea.[1][2] Formal, mașina Turing are două benzi, dintre care una codifică intrarea și poate fi doar citită, în timp ce cealaltă bandă are dimensiune logaritmică, dar poate fi și citită și scrisă. Spațiul logaritmic este suficient pentru a ocupa un număr constant de pointeri(d) către intrare și un numărul logaritmic de flaguri booleene, și mulți algoritmi de bază utilizează memoria în acest fel.
Probleme complete și caracterizarea lor logică
[modificare | modificare sursă]Toate problemele netriviale din L sunt complete(d) în raport cu reducerile în spațiu logaritmic(d),[3] deci sunt necesare reduceri mai slabe pentru a identifica noțiunile semnificative de L-completitudine, cele mai frecvente fiind reduceri de ordinul întâi(d).
În 2004, un rezultat al lui Omer Reingold(d) arată că SL(d), problema dacă există o cale între două noduri într-un anumit graf neorientat, este în L, demonstrând că L = SL(d), deoarece USTCON este SL-completă.[4]
O consecință a acestui fapt este o caracterizare logică simplă a lui L: acesta conține exact acele limbaje exprimate în logica de ordinul întâi(d), cu un operator comutativ suplimentar de închidere tranzitivă(d) (în termeni de teoria grafurilor, acesta transformă fiecare componentă conexă într-o clică). Acest rezultat are aplicații în limbajele de interogare(d) a bazelor de date: complexitatea de date a unei interogări este definită ca fiind complexitatea de a răspunde la o interogare fixă având în vedere dimensiunea datelor ca variabilă de intrare. Pentru această măsură, interogări pe bazele de date relaționale(d) cu informații complete (fără noțiunea de nulluri(d)), exprimată de exemplu în algebra relațională(d) sunt în L.
Clase de complexitate asociate
[modificare | modificare sursă]L este o subclasă a lui NL, care este clasa limbajelor decidabile în spațiu logaritmic pe o mașină Turing nedeterministă. O problemă din NL poate fi transformată într-o problemă de accesibilitate(d) într-un graf orientat reprezentând stări și tranziții de stări ale unei mașini nedeterministe, și limitarea de spațiu logaritmic implică faptul că acest graf are un număr polinomial de noduri și muchii, din care rezultă că NL este conținută în clasa de complexitate P a problemelor rezolvabile în timp determinist polinomial.[5] Astfel L ⊆ NL ⊆ P. Includerea L în P poate fi demonstrată și mai direct: un decident ce folosește spațiu de dimensiune O(log n) nu poate necesita un timp mai mult de 2O(log n) = nO(1), pentru că acesta este numărul total de configurații posibile.
L se leagă și cu clasa NC în felul următor: NC1 ⊆ L ⊆ NL ⊆ NC2. În cuvinte, considerând un calculator paralel C cu un număr polinomial O(nk) de procesoare, cu k constant, orice problemă care poate fi rezolvată pe C în O(log n) timp este în L, și orice problemă din L poate fi rezolvată în timp O(log2 n) pe C.
Probleme deschise importante sunt dacă L = P, și dacă L = NL.[6]
Clasa asociată a problemelor de funcție(d) este FL(d). FL este adesea folosit pentru a defini reduceri logspace(d).
Proprietăți suplimentare
[modificare | modificare sursă]L este redusă pentru ea însăși, pentru că poate simula interogări în spațiu logaritmic (aproximativ vorbind, „apeluri de funcții care folosesc spațiu logaritmic”), reutilizând același spațiu pentru fiecare interogare.
Alte utilizări
[modificare | modificare sursă]Ideea principală a logspace este că se poate stoca un număr de magnitudine polinomială în logspace și utiliza pentru a reține pointeri la o poziție a intrării.
Clasa logspace este, prin urmare, utilă pentru modelarea calculului unde intrarea este prea mare pentru a încăpea în memoria RAM a unui calculator. Secvențele lungi de ADN și bazele de date sunt bune exemple de probleme unde numai o parte constantă a intrării va fi în memoria RAM la un moment dat și unde sunt pointeri care calculează următoarea parte a intrării de inspectat, folosind astfel doar un spațiu de memorie logaritmic.
Note
[modificare | modificare sursă]- ^ Sipser (1997), Definition 8.12, p. 295.
- ^ Garey & Johnson (1979), p. 177.
- ^ See Garey & Johnson (1979), Theorem 7.13 (claim 2), p. 179.
- ^ Reingold, Omer (). Undirected ST-connectivity in log-space. STOC'05: Proceedings of the 37th Annual ACM Symposium on Theory of Computing(d). ACM, New York. pp. 376–385. doi:10.1145/1060590.1060647. Format:ECCC. Mai multe valori specificate pentru
|ID=
și|id=
(ajutor); Mai multe valori specificate pentru|DOI=
și|doi=
(ajutor) - ^ Sipser (1997), Corollary 8.21, p. 299.
- ^ Sipser (1997), p. 297; Garey & Johnson (1979), p. 180.
Referințe
[modificare | modificare sursă]- Arora, Sanjeev; Barak, Boaz (). Computational complexity. A modern approach. Cambridge University Press. ISBN 978-0-521-42426-4.
- Papadimitriou, Christos (). Computational Complexity (ed. 1st). Addison Wesley. ISBN 0-201-53082-1. Parametru necunoscut
|la=
ignorat (ajutor) - Sipser, Michael (). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X. Parametru necunoscut
|la=
ignorat (ajutor) - Garey, M.R.; Johnson, D.S. (). Computers and Intractability(d). W.H. Freeman. ISBN 0-7167-1045-5. Parametru necunoscut
|la=
ignorat (ajutor)