Sunteți pe pagina 1din 34

6/13/13

Teoria complexitii

Teoria complexitii
Mihai Budiu -- m i h a i b + @ c s . c m u . e d u
h t t p : / / w w w . c s . c m u . e d u / ~ m i h a i b /

16 noiembrie 1999 Subiect: teoria modern a complexitii: ce se poate i nu se poate calcula Cunotine necesare: cunotine elementare de logic, complexitatea algoritmilor Cuvinte cheie: limbaj, main Turing, complexitate, oracol

Cuprins
Introducere Teoria complexitii: o tiin despre limitele inferioare Modele de calcul i resurse Calculatoarele: procesoare de limbaje Operaii cu limbaje Decidabilitate Maina Turing Clase de complexitate robuste Simulri; maina Turing universal calculabilitate Teorema gurii; diagonalizarea Numrabilitate Problema opririi (the halting problem) Consecine ale teoremei opririi Semi-decidabilitate Oracole Ierarhia aritmetic Concluzii Alte surse de informaie Teoria clasic a complexitii Recapitulare Pietre de hotar Programul formalist al lui Hilbert Teorema lui Gdel i teorema lui Turing Teorema lui Cook i NP-completitudinea Teorema lui Solovay; relativizare Teorema lui Razborov-Rudich; demonstraii naturale Situaia actual
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 1/34

6/13/13

Teoria complexitii

Reduceri i completitudine Reduceri Clase de complexitate importante Spaiu constant Spaiu logaritmic Timp polinomial Spaiu polinomial Timp exponenial Spaiu exponenial Dincolo de spaiu exponenial Complexitatea nedeterminist; maini alternante Maini nedeterministe Clase complementare Maini alternante, ierarhia polinomial Concluzii Aleatorism i complexitate Aleatorism (randomness) i amplificare (boosting) Complexitate probabilistic; RP, ZPP i BPP Monte Carlo i Las Vegas BPP i RP Demonstraii interactive Demonstraii verificabile probabilistic; teorema PCP Complexitatea circuitelor Secvene pseudo-aleatoare Funcii neinversabile Criptografie Relaia dintre aleatorism i dificultate Teorema elasticului Logic i complexitate

Introducere
Dintre ramurile informaticii, teoria complexitii a fost ntotdeauna pentru mine cea mai fascinant, pentru c pune cele mai cuteztoare ntrebri i d cele mai cuprinztoare rspunsuri. La un moment dat intenionam s mi dedic chiar activitatea de cercetare acestui domeniu, dar paii mei s-au pstrat pe o crare mult mai practic. Am ncercat ns s fiu un amator informat n ceea ce privete acest fascinant domeniu. Articolul de fa va ncerca s v transmit cteva dintre motivele fascinaiei mele. Pentru c subiectul acesta este foarte generos, m vd din nou obligat n a face un articol cu mai multe episoade; mi cer scuze cititorilor care nu vor cumpra toate numerele revistei. Am mai publicat n PC Report despre subiecte nrudite: un articol amplu n 1997 discuta despre direcii noi de
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 2/34

6/13/13

Teoria complexitii

cercetare n algoritmi, iar cele dou numere din PC Report anterioare celui de fa au fost consacrate celei mai importante probleme nerezolvate din teoria complexitii, problema satisfiabilitii. Cititorii interesai pot gsi aceste texte n pagina mea de web. Din pcate ndeletnicirea mea este oarecum ingrat: n primul rnd este dificil s vorbeti despre ceva la care nu te pricepi cu adevrat; n al doilea rnd, substana nsi a acestui domeniu este foarte formal; nu i se poate da dreptate fr a folosi o doz substanial de matematic, ori acest gen de literatur nu este de loc pe potriva revistei PC Report. Ca atare voi recurge la o practic reprobabil: voi ncerca s v povestesc despre rezultatele cele mai remarcabile obinute n acest domeniu, dar fr a oferi ntotdeauna demonstraii matematice, i adesea chiar fr a exprima foarte precis noiunile despre care vorbesc. Voi consuma cu neruinare ``crema'' acestui domeniu, vnturnd n faa ochilor dumneavoastr cele mai spectaculoase rezultate, dar fr a v arta toat sudoarea care st n spatele lor. Dac asta v va trezi curiozitatea n a aprofunda domeniul, sau dac doar vei privi cu mai mult respect domeniul informaticii, nu ca pe o simpl meteugreal, dar ca pe o tiin n toat regula, m voi putea declara satisfcut. Cititorul cu nclinaii matematice poate ns s fie linitit: toate lucrurile despre care pomenesc sunt de fapt foarte precis formalizate, i suportate de demonstraii n toat legea. n plus, matematica folosit n teoria complexitii este relativ simpl: toate aceste lucruri ar trebui s fie accesibile unui elev de liceu care-i d (ceva mai mult) osteneal; cu certitudine, matematica studiat n facultate este mult mai complicat dect cea ntlnit n studiul teoriei complexitii. n mod interesant, asta nu nseamn c teoria complexitii este mai uoar; dimpotriv, mini briliante au cucerit cu mult trud rezultatele acesteia. Ceea ce e adevrat este c matematica folosit n teoria complexitii are mult mai puin structur, i c obiectele manipulate sunt mult mai simple. Cel mai adesea avem de-a face cu obiecte finite, i aproape ntotdeauna cu obiecte numrabile, discrete. Obiectul fundamental este irul de caractere formate din litere ale unui alfabet finit: o structur mult mai simpl dect cele ntlnite de pild n analiza matematic. Desigur, faptul c o problem are un enun simplu nu nseamn de loc c are i o soluie simpl; cea mai puternic mrturie este probabil Marea teorem a lui Fermat, al crei enun poate fi explicat i unui colar, dar a crei rezolvare a cerut trei sute de ani de eforturi ncordate. De fapt, vom vedea c n teoria complexitii exist o sum de probleme fundamentale nerezolvate; putem chiar spune c majoritatea problemelor fundamentale sunt nc nerezolvate. Dar informatica este o tiin exact extrem de tnr; mult mai tnr dect matematica sau fizica. Sunt convins c cele mai interesante rezultate vor aprea abia n viitor; ceea ce ne minuneaz n ziua de astzi este echivalentul uimirii pitagorenilor n faa triunghiului dreptunghic: doar umbra unei colosale frumusei matematice.

Teoria complexitii: o tiin despre limitele inferioare


Teoria complexitii (complexity theory) se ocup cu studiul lucrurilor care se pot calcula atunci cnd resursele pe care le avem la dispoziie sunt limitate. Resursele fundamentale n teoria tradiional erau: Timpul
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 3/34

6/13/13

Teoria complexitii

disponibil pentru execuia unui program; Spaiul sau cantitatea de memorie disponibil pentru a stoca date. dar dezvoltrile mai recente au artat c alte genuri de resurse au un impact foarte important asupra lucrurilor care se pot calcula, cum ar fi: Aleatorismul, sau cantitatea de bii aleatori pe care-i avem la dispoziie; Paralelismul, sau numrul de elemente de procesare care pot opera n paralel; Interaciunea, sau numrul de mesaje schimbate ntre dou entiti care calculeaz; Sfaturi de la un oracol: chiar dac nu tim s rezolvm o anumit problem, dac presupunem c cineva vine i ne d rspunsul, exist apoi n continuare probleme grele? Dintr-un anumit punct de vedere, teoria complexitii este exact opusul teoriei algoritmilor, care probabil partea cea mai dezvoltat a informaticii teoretice: dac teoria algoritmilor ia o problem i ofer o soluie a problemei n limitele unor resurse, teoria complexitii ncearc s arate cnd resursele sunt insuficiente pentru a rezolva o anumit problem. Teoria complexitii ofer astfel demonstraii c anumite lucruri nu pot fi fcute, pe cnd teoria algoritmilor arat cum lucrurile pot fi fcute. De exemplu, atunci cnd nvm un algoritm de sortare ca quicksort, demonstrm c problema sortrii a n numere se poate rezolva n timp proporional cu n log n. tim deci c sortarea se poate face n timp cel mult n log n, sau mai puin. Pe de alt parte, teoria complexitii ne arat c pentru a sorta n numere oarecare ne trebuie cel puin timp n log n, i c este imposibil s sortm mai repede, dac nu avem informaii suplimentare despre valorile de sortat. Combinnd aceste dou rezultate, deducem c problema sortrii are complexitatea exact n log n, pentru c: 1. Avem un algoritm de timp n log n; 2. Am demonstrat c nu se poate mai bine de att. Aceast stare de fapt este una extrem de fericit, i din pcate foarte rar: pentru majoritatea problemelor pe care le cunoatem, exist o distan mare ntre cea mai bun posibilitate de rezolvare pe care o cunoatem i limita inferioar cea mai ridicat pe care o putem demonstra. Situaia este ca n figura 1.

www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000

4/34

6/13/13

Teoria complexitii

Figura 1: Existena unui algoritm pentru a rezolva o problem ofer o limit superioar pentru complexitatea problemei: n regiunea albastr, din dreapta, putem rezolva problema. Teoria complexitii gsete limite inferioare: dac ne plasm n regiunea roie, cu certitudine problema este insolvabil. Foarte adesea, ntre cele dou regiuni exist o zon (haurat cu negru) despre care nu putem spune nimic. Din pcate, aceast zon este adesea foarte mare ca ntindere. Chiar pentru probleme aparent banale, complexitatea minim este adesea necunoscut. De exemplu, algoritmul cel mai bun cunoscut pentru a nmuli dou numere de n cifre are complexitatea n log log n, dar limita inferioar oferit de teoria complexitii este de n. Algoritmul nvat n coala primar pentru nmulire are complexitatea n2. Nimeni nu tie ct de jos poate fi mpins aceast limit, dar teoria complexitii ne garanteaz ca nu mai jos de n (de fapt n cazul de fa nu e nevoie de nici o teorie pentru a ne spune asta: n timp mai puin de n nu poi nici mcar s citeti toate cifrele numerelor de nmulit). Pentru foarte multe probleme importante, distana ntre limitele inferioar i superioar cunoscute este enorm: de exemplu pentru problema satisfiabilitii, creia i-am consacrat ultimele mele dou articole, limita superioar este o funcie exponenial (2n ) iar cea inferioar este una polinomial (nk), pentru un k constant, independent de problem. ntr-un anume sens, teoria complexitii are o sarcin mult mai grea dect cea a algoritmilor: teoria algoritmilor demonstreaz propoziii de genul: ``exist un algoritm de complexitate n log n care nmulete dou numere''. Acest lucru este de obicei fcut chiar construind acel algoritm. Pe de alt parte, teoria complexitii trebuie s demonstreze teoreme de genul ``Nu exist nici un algoritm care rezolv aceast problem n mai puin de n log n pai''. Ori aa ceva este nu se poate demonstra n mod direct: exist un numr infinit de algoritmi, deci nu putem pur i simplu s-i verificm pe toi.

Modele de calcul i resurse


Am tot menionat tot felul de limite (ex. n2), dar nu am spus ce nseamn acestea. Att teoria complexitii, ct i teoria algoritmilor, msoar complexitatea n acelai fel, i anume asimptotic. Asta nseamn c msurm numrul de operaii fcute ca o funcie de cantitatea de date care ne este oferit spre prelucrare, i c mpingem aceast cantitate spre infinit. Atunci complexitatea este exprimat ca o funcie pe mulimea numerelor naturale: pentru fiecare mrime de intrare, avem o complexitate. Dac putem avea mai multe date de intrare cu aceeai mrime (de exemplu, cnd sortm putem avea mai muli vectori de lungime n), atunci complexitatea pentru intrarea n este luat ca fiind maximumul dintre toate valorile: max(|i|=n) f(i), unde f este complexitatea i i sunt datele de intrare (simbolul | | reprezint mrimea datelor).
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 5/34

6/13/13

Teoria complexitii

Calculatoarele: procesoare de limbaje


Cum msurm datele de intrare i cum msurm resursele? ntrebarea este perfect legitim, i merit o clarificare. n primul rnd, toate datele pe care le vom prelucra sunt exprimate folosind literele unui alfabet . Nu conteaz prea tare care este alfabetul, atta vreme ct are cel puin dou semne diferite. Dac fixm un alfabet, putem vorbi de iruri de caractere (strings) din acel alfabet. Putem de asemenea vorbi de limbaje: un limbaj este o mulime de iruri. Definiia aceasta pare foarte simpl, dar este foarte util: de aici nainte putem enuna absolut toate procesrile fcute de un calculator n termeni de operaii pe limbaje. De exemplu, putem considera limbajul format din mulimea irurilor care ncep cu semnul + sau -, urmate de un ir de cifre, urmate eventual de o virgul, de alte cifre, i eventual nite cifre ntre paranteze. Acest limbaj poate descrie numerele raionale, inclusiv pe cele periodice, n notaia pe care am nvat-o n coala primar; de exemplu -312,413(3) este un ir din aceast mulime. Putem de asemenea caracteriza alte limbaje foarte interesante, ca: limbajul tuturor expresiilor aritmetice corecte, limbajul Pascal, format din toate irurile de caractere care sunt programe Pascal corecte, etc. Un calculator va primi deci la intrare un ir finit de caractere, i va produce la ieire un altul. Putem msura foarte precis lungimea unui ir de caractere prin numrul de caractere care-l compun. Aceasta este definiia ``mrimii'' datelor de intrare. Un algoritm se va atepta ca datele de intrare s fie dintr-un anumit limbaj; n acest caz, el va transforma fiecare cuvnt de la intrare ntr-un cuvnt dintr-un alt limbaj. De pild, un algoritm care sorteaz un ir de numere se ateapt ca la intrare datele s fie un ir de numere separate de spaii; pentru fiecare astfel de ir de numere, el va produce la ieire un alt ir de numere. Limbajul datelor de intrare este format din irurile de numere separate de spaii, limbajul de la ieire este acelai, dar toate numerele dintr-un ir la ieire vor fi sortate. Ce face algoritmul dac datele de intrare nu sunt un ir de numere, ci nite gunoaie? Putem spune c nu ne intereseaz comportarea algoritmului n astfel de cazuri. Vedei, aparent desfacem firul n patru: cine are nevoie de nite definiii att de amnunite, nct sunt aproape lipsite de sens? Matematicienii au nevoie: dup ce am clarificat exact noiunile cu care operm, avem foarte mult libertate n a le manipula n mod precis.

Operaii cu limbaje
Adesea vom specifica limbajele pornind de la limbaje mai simple, cu ajutorul unor operaii. De exemplu, putem construi limbaje intersectnd dou limbaje, sau lund reuniunea lor: doar avem de-a face cu mulimi de cuvinte. De exemplu, dac intersectm limbajul tuturor cuvintelor din limba romna -- s-l notm cu R, un limbaj format din toate cuvintele din DEX i derivatele lor -- cu limba latin vom obine un nou limbaj, care const din toate cuvintele motenite din latin. Alte operaii pe care le putem face sunt: complementarea unui limbaj (complementul unui limbaj L este cel format din toate cuvintele care nu sunt n L) sau concatenarea a dou limbaje (L1 concatenat cu L2 este un limbaj format din cuvinte pentru care prima parte e un cuvnt din L1 iar a doua din L2). De exemplu, limbajul propoziiilor romneti de dou cuvinte este un subset al limbajului R concatenat cu el nsui.

Decidabilitate
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 6/34

6/13/13

Teoria complexitii

Un loc aparte n studiul complexitii l au mainile care dau totdeauna un rspuns ``da'' sau ``nu''. Cu alte cuvinte, limbajul de ieire are doar dou elemente. Spunem despre astfel de maini c decid un limbaj: limbajul decis este format din cuvintele de la intrare pentru care maina rspunde ``da''. Toate problemele pentru care ateptm un rspuns ``da'' sau ``nu'' se numesc ca atare probleme de decizie; problema SAT, a satifiabilitii, creia i-am dedicat dou numere n PC Report, este un exemplu de problem de decizie. Problemele de decizie sunt o subclas foarte interesant a tuturor problemelor, pentru c adesea putem enuna orice problem ca o colecie de probleme de decizie. Aceast noiune a fost prezentat n czut problemei SAT ca ``autoreducere''. Ideea este ns destul de simpl. De exemplu, s considerm problema ``care sunt factorii primi ai numrului n?''. Putem reduce aceast problem la mai multe probleme de decizie, care ne dau exact aceeai informaie: ``este 2 un factor prim al lui n'', ``este 3 ...'', etc. Dac tim rspunsurile la toate aceste probleme de decizie, putem obine rspunsul i la problema iniial.

Maina Turing
Am clarificat cum arat datele; cum msurm ns resursele consumate? Consumate de fapt de cine? Avei perfect dreptate: ne trebuie un model precis de calcul. Cel mai folosit este un model propus n anii treizeci de marele matematician englez Alan Turing: maina Turing. Maina Turing este un calculator redus la esene, abstractizat. Maina Turing (figura 2) este compus din urmtoarele piese:

Figura 2: Maina Turing este un model de calcul abstract propus de matematicianul Alan Turing. Ea const dintr-o band infinit, pe care pot fi scrise simboluri, un cap de scriere-citire, care poate fi plimbat pe suprafaa benzii, i o unitate de control, care cuprinde un numr finit de reguli care indic mainii ce s fac la fiecare micare n funcie de litera curent de pe band i starea n care maina se afl. n pofida simplitii ei, maina Turing poate calcula orice poate fi calculat cu cele mai performante supercomputere. 1. O band infinit de hrtie cu ptrele; n fiecare ptrel se poate scrie exact un caracter din alfabetul nostru; banda este iniial plin cu ``spaii'', mai puin partea de la nceput, unde este scris irul cu datele de intrare; 2. Un cap de citire-scriere, care se poate mica deasupra benzii, la stnga sau la dreapta; 3. O unitate de control, care conine un numr finit de reguli. Unitatea de control este la fiecare moment
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 7/34

6/13/13

Teoria complexitii

dat ntr-o stare; strile posibile sunt fixate dinainte, i sunt n numr finit. Fiecare regul are forma urmtoare: Dac sunt n starea Q1; sub capul de citire este litera X; atunci: trec n starea Q2; scriu pe band litera Y; mut capul de citire/scriere n direcia D. i asta-i tot! Un algoritm de calcul este descris de o astfel de main, prin toate strile posibile, i toate aceste reguli, numite reguli de tranziie, care indic cum se trece de la o stare la alta. ``Ce e prostia asta?'' ai putea exclama, ``ce poi face cu maina asta handicapat?'' Ei bine, poi face...totul. Alegei limbajul dumneavoastr favorit, s zicem C; ei bine, se poate descrie o main Turing care s interpreteze (adic s execute) orice program C care i s-ar da scris pe band. Putem mima intrarea i ieirea unui calculator cernd ca datele de intrare s fie scrise de la nceput pe band, iar ca datele de ieire s apar pe band cnd maina termin de calculat1. Orice alte modele de calcul care au fost propuse de-a lungul timpului, au fost dovedite a fi mai puin expresive, sau tot att de expresive ct maina Turing. Nimeni nu a fost n stare, pn acum, s zic: ``eu cred c de fapt maina Turing e prea limitat; iat care zic eu c sunt operaiile elementare pe care le avem la dispoziie, din care ar trebui s exprimm orice algoritm'', i s ofere ceva care s fie construibil, i care s poat face lucruri pe care maina Turing nu le poate face. Din cauza asta logicianul Alonzo Church a emis ipoteza c maina Turing este modelul cel mai general de calcul care poate fi propus; acest enun, care nu este demonstrabil n sens matematic, se numete ``Teza lui Church''. Acesta este un postulat asupra cruia trebuie s cdem de acord nainte de a putea conversa orice lucru privitor la teoria complexitii. Dac avem un model de calcul, putem defini foarte precis ce nelegem prin complexitate: Timpul de calcul pentru un ir dat la intrare, este numrul de mutri fcut de maina Turing nainte de a intra n starea ``terminat''; Spaiul consumat pentru un ir de intrare, este numrul de csue de pe band pe care algoritmul le folosete n timpul execuiei sale.

Clase de complexitate robuste


Cnd spun c maina Turing este la fel de puternic ca orice alt model de calcul, nu nseamn c poate calcula la fel de repede ca orice alt model de calcul, ci c poate calcula aceleai lucruri. Putem s ne imaginm tot felul de modificri minore ale mainii Turing, care o vor face s poat rezolva
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 8/34

6/13/13

Teoria complexitii

anumite probleme mai repede. De exemplu, putem s ne imaginm c maina are dreptul s mute capul la orice csu dintr-o singur micare, fr s aib nevoie s mearg pas-cu-pas; atunci banda s-ar comporta mai asemntor cu o memorie RAM obinuit. Atunci cum de putem discuta despre complexitate, dac timpul de rezolvare depinde de modelul de execuie? Aici teoria complexitii se desparte de teoria algoritmilor; teoria algoritmilor folosete de regul modelul RAM pentru a evalua complexitatea unui algoritm. Teoria complexitii face nite diviziuni mai grosolane. i anume, exist nite clase de complexitate care sunt complet invariante la variatele definiii ale mainii Turing: c are dou capete de acces la band, c poate sri oriunde, complexitatea rmne aceeai. O astfel de clas de complexitate este clasa tuturor problemelor care se pot rezolva n timp polinomial, o alta este cea a tuturor problemelor care se pot rezolva n spaiu polinomial, etc. Aceste clase de complexitate sunt numite ``robuste'', pentru c definiia lor nu depinde de modelul de main. Acest lucru se poate demonstra artnd c o main de un anumit model poate simula pe cele diferite fr a cheltui prea multe resurse suplimentare. Teoria complexitii mai decreteaz i c toate problemele care se pot rezolva n timp polinomial sunt rezolvabile, iar toate cele care au nevoie de mai mult timp sunt intractabile. Aceast definiie este n general adevrat din punct de vedere practic, dar trebuie luat cu un grunte de sare: cteodat un algoritm n3 este inacceptabil, dac problema este prea mare, altdat unul de timp chiar exponenial este tolerabil, dac maina cu care-l rulm este foarte rapid. Din punct de vedere teoretic, separaia ns este perfect acceptabil, pentru c ntotdeauna ne gndim la probleme pentru care mrimea datelor de intrare tinde spre infinit. A vrea s mai fac o observaie foarte important: o problem este foarte strns legat de limbajul n care o exprimm. Iat un exemplu: s considerm problema nmulirii a dou numere. Dac limbajul n care lucrm exprim numerele n baza 2 (sau orice alt baz mai mare de 2), atunci se cunosc algoritmi de complexitate n log n pentru a face nmulirea. Pe de alt parte, dac insistm s scriem numerele n baza 1 (adic numrul 5 este reprezentat de cinci ``beioare'', ca la clasa I), atunci, n mod evident, complexitatea nmulirii a dou numere de lungime total n este n2: chiar rezultatul nmulirii lui n cu n este scris cu n2 beioare, deci nu are cum s ne ia mai puin timp, pentru c trebuie s scriem rezultatul! i mai spectaculoas este diferena pentru algoritmul care verific dac un numr este prim: dac limbajul de intrare exprim numerele n baza 2, cel mai bun algoritm cunoscut are complexitatea 2n , exponenial, dar dac scriem numerele n baza 1, complexitatea este n2. Acest lucru se ntmpl pentru c un numr scris n baza 1 este mult mai lung dect scris n baza 2 n este scris n baza 2 cu log n cifre). Deci, cnd enunai o problem pentru rezolvare cu calculatorul, trebuie s specificai i limbajul n care problema este descris; abia apoi putei discuta despre complexitatea rezolvrii.

Simulri; maina Turing universal


Oare cum au reuit matematicienii s demonstreze c maina Turing este att de puternic nct este echivalent cu orice alt model propus de calcul? De pild, un model extrem de faimos, care este folosit nc foarte ades n teoria limbajelor de programare, este modelul lambda-calculului. Acest model manipuleaz nite formule simple conform unor reguli de re-scriere. Ce sens are s spunem c maina Turing este la fel de puternic precum lambda-calculul?
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 9/34

6/13/13

Teoria complexitii

Rspunsul st n simulare: putem arta c, orice am face cu lambda-calculul, putem efectua i cu o main Turing. Exist deci o coresponden ntre fiecare transformare efectuat de regulile lambda-calculului i un set de transformri pe care maina Turing le poate face cu simbolurile de pe band. De fapt maina Turing este att de puternic nct putem construi o main Turing care s simuleze orice alt maina Turing posibil. Pentru a nelege cum este posibil aa ceva, trebuie s realizm dou lucruri: Descrierea oricrei maini Turing este finit, i poate fi fcut cu alfabetul nostru. Dac am o main Turing, pot enumera strile ei i regulile de tranziie sub forma unui ir de caractere; Maina universal primete dou intrri pe band: una este descrierea mainii de simulat, iar a doua este intrarea pentru care trebuie s simuleze maina. Maina universal apoi urmrete cu rbdare regulile de tranziie ale mainii simulate, folosind propria ei band n acest scop. Dac v gndii puin vei realiza c de fapt aceste lucruri nici mcar nu sunt prea surprinztoare: de fapt un interpretor de BASIC face acelai lucru: primete descrierea unei maini (programul BASIC) i apoi simuleaz execuia acestei maini pe nite date de intrare.

calculabilitate Teorema gurii; diagonalizarea


O ntrebare pe care un matematician i-o pune imediat este: are vreo importan cte resurse dm unei maini Turing? Nu cumva totul se poate calcula cu aceeai cantitate de resurse? Exist nite teoreme deosebit de interesante din acest punct de vedere. O teorem arat c dac dm unei maini mai mult timp (sau spaiu), atunci ea poate efectua lucruri pe care nici una din mainile care au mai puin timp nu le poate efectua. Aceast teorem se numete ``teorema gurii'' (gap theorem), pentru c arat c ntre feluritele clase de complexitate exist diferene: clasa limbajelor care se pot decide n timp n3 este diferit de clasa limbajelor care se pot decide n timp n4. Enunul teoremei este de fapt destul de nclcit, i se bazeaz pe nite detalii tehnice, pe care o s le trec sub tcere. Demonstraia este ns relativ simpl, i se bazeaz pe o tehnic ades folosit n teoria complexitii, numit diagonalizare. Aceast tehnic a fost folosit n demonstraia lui Cantor, pentru a arta c numerele reale nu sunt numrabile. Ideea de baz este urmtoarea: maina cu mai multe resurse i poate permite s fac orice face maina cu mai puine resurse, iar dup aceea s mai i prelucreze rezultatul. Cu alte cuvinte, putem construi o main cu resurse mai multe, care d un rezultat diferit de orice main mai simpl. Rezult ca maina cu mai multe resurse calculeaz o funcie diferit de toate celelalte!

Numrabilitate
Teorema gurii se bazeaz n mod explicit pe faptul c nu exist prea multe maini Turing! Din moment ce fiecare main Turing poate fi descris printr-un ir de caractere finit, nseamn c putem enumera toate
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 10/34

6/13/13

Teoria complexitii

mainile Turing. Exist astfel un numr numrabil de maini Turing (deci cu mult mai puine dect exist numere reale!). O consecin interesant a acestui fapt este c calculatoarele nu pot manipula numerele reale. Exist mai multe numere reale dect algoritmi posibili! Limbajele care opereaz cu numere reale, de fapt manipuleaz nite aproximri cu cteva zeci sau zecimale ale acestora. Nu putem face mai bine de att nici dac operm cu reprezentri simbolice ale numerelor reale (vom putea manipula unele numere reale, dar nu pe toate; vor exista ntotdeauna operaii cu numere reale care nu sunt calculabile). Exist i alte consecine interesante ale acestui fapt. De exemplu, pute privi mainile Turing ca pe nite aparate care calculeaz funcii de la numerele naturale (N) la N. Ei bine, exist astfel de funcii, adic puterea continuului (adic tot attea ct numere reale). Dar mainile Turing sunt doar n numr de , deci mult mai puine. Asta nseamn c exist o sumedenie de funcii N calculatoarele! N care nu se pot calcula cu

Ce dac, vei spune, poate toate funciile care ne intereseaz n practic se pot de fapt calcula. Vom vedea de fapt c exist funcii extrem de importante care nu sunt calculabile, orict de multe resurse am pune la btaie!

Problema opririi (the halting problem)


Ramura extrem a teoriei complexitii, care se ocup cu lucrurile care nu se pot calcula, nici dac avem o cantitate nelimitat de resurse, se numete teoria calculabilitii. Teoria calculabilitii are o sumedenie de rezultate foarte interesante, i implicaii foarte mari pentru teoria compilatoarelor (dar nu numai). Am vzut c putem descrie orice main Turing folosind un ir de caractere; putem apoi face prelucrri asupra acestui ir de caractere, pentru a calcula tot felul de proprieti ale mainii Turing codificate astfel. De fapt exact asta face i un compilator: primete un program ntr-un limbaj (adic descrierea unei maini Turing), i genereaz un alt program ``optimizat'', care face acelai lucru, dar mai eficient. Asta e foarte frumos: putem folosi chiar mainile Turing pentru a transforma i calcula lucruri despre maini Turing. Din pcate optimismul nostru trebuie temperat: sunt foarte multe lucruri pe care nu le putem calcula. De pild ne putem pune, poate cea mai natural, ntrebare: dac bag anumite date de intrare ntr-o maina Turing, dup ct timp mi d rezultatul? mi d rezultatul vreodat, sau intr ntr-o bucl infinit? La aceast ntrebare putem rspunde enunnd cea mai faimoas teorem din teoria calculabilitii, ``teorema opririi'': nu exist o main Turing, care primind la intrare descrierea unei alte maini Turing T i un ir de date de intrare x, s poat spune dac T se oprete vreodat cnd primete pe x la intrare. Figura 3 ilustreaz problema opririi.

www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000

11/34

6/13/13

Teoria complexitii

Figura 3: Problema opririi: o ipotetic main care ar putea rezolva problema opririi ar primi descrierile altei maini pe band sa intrrilor lor, i ar oferi un rspuns ``da'' sau ``nu'', dup cum maina evaluat termin vreodat execuia sau nu. Teorema asta a fost demonstrat de Alan Turing, n 1936, deci cu mult nainte s existe calculatoarele n sensul modern al cuvntului. Demonstraia teoremei opririi este extrem de simpl, i se face prin reducere la absurd. Demonstraia este extrem de nrudit cu celebrul paradox al mincinosului, cunoscut de grecii antici, care spune c fraza ``Eu mint'' nu poate fi nici adevrat, nici fals, pentru c n orice caz s-ar auto-contrazice. S presupunem c exist o main H, care rezolv problema opririi. Atunci vom construi o nou main, s-i spunem H1, care face urmtorul lucru: 1. Primete la intrare o main M i un ir x; 2. Simuleaz funcionarea lui H pe aceast intrare, pentru a vedea dac M se oprete atunci cnd primete pe x; 3. Dac H zice ``da, M se oprete'', atunci H1 intr ntr-o bucl infinit; 4. Dac H zice ``nu'', atunci H1 se oprete imediat.
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 12/34

6/13/13

Teoria complexitii

Din moment ce H1 este o main Turing, putem s o descriem i pe ea nsui folosind un ir de caractere. Ce se ntmpl ns dac pornim maina H1 avnd pe banda de la intrare chiar propria ei descriere, de dou ori, o dat pe post de M i o data pe post de x? Ei bine, dac H1 se oprete cu aceast intrare, atunci nseamn c H1 va executa pasul (3) de mai sus, deci intr ntr-o bucl infinit, contradicie! Dac H1 nu se oprete niciodat, atunciH1 va executa pasul (4), deci se va opri imediat, alt contradicie! Aceste comportri sunt aberante, deci presupunerea noastr c H1 exist trebuie s fie fals; dar H1 este construit folosind H i cteva piese banale, deci H nu exist! Acest rezultat este extrem de important pentru practic. Aceasta ne spune c nu vom putea niciodat s verificm automat corectitudinea oricrui algoritm, pentru c n general nu putem spune dac un algoritm se va termina vreodat.

Consecine ale teoremei opririi


De asemenea, rezult o serie ntreag de consecine foarte importante. Iat unele dintre ele, din perspectiva teoriei compilatoarelor: 1. Este imposibil s spunem dac dou programe sunt echivalente sau nu (adic dac produc aceleai rezultate cnd primesc aceleai date de intrare); 2. Este imposibil s spunem dac rezultatul unui program poate fi vreodat zero; 3. Este imposibil s spunem dac toate accesele unui program ntr-un vector de elemente sunt n interiorul vectorului, sau programul poate accesa memorie nealocat; 4. Este imposibil s spunem dac un program este cel mai mic program care implementeaz o anumit funcie. Atenie: nu vreau s spun c aceste lucruri sunt nedecidabile pentru orice program: e clar c dou programe Pascal identice sunt echivalente. Ceea ce aceast teorem spune, este c exist programe pentru care aceste lucruri nu pot fi determinate. Dac restrngem setul de programe pe care-l putem scrie, atunci putem desigur demonstra mai multe lucruri despre programele noastre. De exemplu, n limbajul Java, suntem asigurai de faptul c un program nu va accesa niciodat memorie nealocat, pentru c nainte de a verifica orice acces la memorie, maina virtual Java verific dac aceasta a fost alocat sau nu. Dar e vorba de limbaje diferite de intrare: programele scrise n Java sunt un subset al tuturor programelor.

Semi-decidabilitate
Dup cum am vzut, exist probleme pentru care nu putem niciodat calcula rspunsul. Putem ns identifica printre problemele indecidabile o submulime, a problemelor semi-decidabile, acele probleme pentru care putem calcula ``jumtate'' de rspuns: putem rspunde ntotdeauna corect cnd suntem ntrebai de o instan ``da'', dar cnd suntem ntrebai de o instan ``nu'' s-ar putea s dm rspunsul corect,
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 13/34

6/13/13

Teoria complexitii

sau s-ar putea s nu terminm niciodat de calculat. Problema opririi este de fapt o problema semi-decidabil: dac ni se d o main M i un ir x pentru care maina se oprete, vom fi capabili s descoperim acest lucru simulnd funcionarea mainii M cu intrarea x pn atinge starea final. Dac M ns nu se oprete cnd primete pe x, nici simularea nu se va termina niciodat.

Oracole
O ntrebare interesant este urmtoarea: sunt tot felul de probleme indecidabile; dar sunt cumva unele dintre ele mai grele dect altele? Poate s par ciudat c ntrebm astfel de lucruri despre probleme pe care oricum nu le putem rezolva, dar rspunsul este i mai surprinztor. Contextul matematic pentru a formula aceste ntrebri este numit al ``oracolelor''. Putem gsi o interpretare filozofic interesant pentru acest gen de construcii: s zicem c facem un pact cu diavolul, care ne va rspunde corect la anumite ntrebri nedecidabile. De pild, ne va da ntotdeauna rspunsul corect la ntrebri despre oprirea unei maini Turing. Vedei, rspunsul exist, orice main fie se oprete, fie nu se oprete, ceea ce nu exist este o metod de a calcula rspunsul. S zicem c Mefistofel ns ne poate da rspunsul, folosind puterile sale supranaturale. Vom vedea c noiunea de oracol este foarte util nu numai atunci cnd vrem rspunsuri la ntrebri nedecidabile, ci i atunci cnd vrem rspunsuri la ntrebri pentru care nu avem destule resurse. Mai multe despre asta n partea a doua a acestui articol, n numrul viitor al revistei. Matematic, un oracol este o a doua band pentru maina noastr, pe care sunt scrise dinainte rspunsurile (corecte!) la ntrebrile pe care maina le pune (vedei figura 4).

Figura 4: Maini cu Oracole: un oracol este o anumit funcie pe care maina nu o poate calcula, dar de care se poate folosi. Matematic modelm oracolul printr-o band infinit, pe care sunt dinainte scrise rspunsurile corecte la toate ntrebrile pe care maina le-ar putea pune. n general ne intereseaz s vedem ce ar putea face n mod suplimentar o maina Turing dac ar putea rspunde unor anumite ntrebri (dar nu oricrei ntrebri); atunci o echipm cu un oracol care tie toate rspunsurile la ntrebrile n chestiune.
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 14/34

6/13/13

Teoria complexitii

Ierarhia aritmetic
Dac avem un oracol, mai exist lucruri pe care nu le putem calcula? Exista alte ntrebri la care nu putem rspunde? Ei bine, da. Exist ntrebri care sunt n continuare ne-decidabile. De exemplu, ntrebarea ``este limbajul acceptat de maina M finit'' nu poate fi elucidat nici n prezena unui oracol pentru problema opririi. Dar dac presupunem c avem un oracol care ne rspunde i la aceast ntrebare? Mai exist i altceva care nu se poate calcula? Din nou, rspunsul este ``da'': de exemplu nu putem rspunde nici acum la ntrebarea ``este limbajul acceptat de maina M co-finit'' (adic irurile ne-acceptate sunt n numr finit). i aa mai departe: exist o ierarhie infinit maini de oracole din ce n ce mai puternice, care pot rspunde la aceste ntrebri, dar care sunt neputincioase n faa unor ntrebri mai complicate. Aceast ierarhie de probleme ne-decidabile se numete ierarhia aritmetic.

Concluzii
Voi ncheia aici prima parte a acestui articol. Subiectele prezentate aici pot fi caracterizate ca fcnd parte din pre-istoria teoriei complexitii: sunt fapte cunoscute ncepnd din anii 1920 pn prin deceniul ase al secolului nostru. n numrul urmtor din PC Report mi voi apleca atenia asupra evoluiilor recente din domeniu, care sunt extrem de spectaculoase, i voi privi cu mai mult atenie problemele care se pot ataca avnd resurse limitate. n textul de fa am studiat mai mult problemele care nu se pot rezolva, orict de multe resurse computaionale am avea la dispoziie, numite probleme indecidabile. Am vzut c foarte multe probleme practice sunt indecidabile; mai ales problemele care privesc programele nsele. Dar importana acestui articol const mai ales n faptul c arat cum se pot formaliza foarte precis noiunile de proces de calcul i funcie calculat de un program, n aa fel nct s le putem supune ochiului scruttor al matematicii.

Alte surse de informaie


Cititorilor care doresc s aprofundeze aceste subiecte le recomand urmtoarele cri: Automata and Computability, Dexter Kozen, Springer Verlag, 1996. Computational Complexity, C. H. Papadimitriou, Addison-Wesley, 1994. Introduction to Automata Theory, Languages and Computation, J. E. Hopcroft and J. D. Ullman, AddisonWesley, 1979.

Teoria clasic a complexitii


Acest text este partea a doua a unui foileton despre teoria complexitii, cea mai abstract ramur a informaticii. Dei ncerc ca fiecare articol din serie s fie de sine-stttor, o vedere de ansamblu poate fi
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 15/34

6/13/13

Teoria complexitii

obinut parcurgndu-le pe toate; textele anterioare sunt disponibile (pe lng revista PC Report) i din pagina mea de web. Am consacrat acestei teme dou texte n lunile octombrie i noiembrie, despre problema satisfiabilitii boolene, i numrul din decembrie al revistei, care introducea obiectele de baz cu care opereaz teoria complexitii, dup care discuta despre calculabilitate. Cu aceast ocazie vreau s fac i o corectur: teorema pe care am prezentat-o n numrul anterior ca ``teorema gurii'' este de fapt numit teorema ierarhiei; enunul teoremei gurii este altul, dar nu o s-l prezint aici.

Recapitulare
Voi reaminti cititorilor c teoria complexitii discut despre ceea ce se poate calcula i nu se poate calcula atunci cnd avem anumite resurse la dispoziie. Teoria calculabilitii discut cazul extrem al lucrurilor care nu se pot calcula deloc, chiar dac avem la dispoziie o cantitate infinit de resurse. n mod surprinztor, exist foarte multe lucruri care nu se pot calcula, aa cum am artat n articolul anterior. Pentru a putea discuta precis despre ce se poate calcula, teoria complexitii opereaz cu nite modele matematice ale mainilor de calcul, descrise sub forma unor automate simple, care comunic cu lumea exterioar folosind nite benzi pe care sunt scrise litere, i care au o unitate de control cu un numr finit de reguli, care indic automatului care este pasul urmtor de fcut n fiecare circumstan. Modelul cel mai ades folosit este cel al mainii Turing, numite n cinstea marelui matematician englez, Alan Turing. Turing a fost unul dintre pionierii acestei teorii; el este ns mai cunoscut prin activitatea lui din al doilea rzboi mondial, cnd a contribuit la spargerea cifrurilor mainii Enigma, care cripta comunicaiile Germaniei naziste. Munca lui Turing a permis aliailor s intercepteze informaii foarte importante despre micrile mainii de rzboi germane. Turing era un matematician de excepie, care studiase la Princeton cu Albert Einstein, i colaborase cu John von Neumann, printele american al calculatoarelor. Din nefericire soarta lui Turing a fost tragic: contribuiile sale militare din al doilea rzboi mondial au rmas confideniale pentru mult vreme; dup rzboi a fost condamnat pentru homosexualitate, i forat s urmeze un tratament hormonal, despre care autoritile timpului credeau c poate ``vindeca'' aceast ``boal''. Influena medicamentelor i umilirea ndurat ns au fost prea mult pentru Turing, care s-a sinucis nghiind cianura, n 1954, la doar 42 ani. n cinstea sa, cel mai important premiu care recunoate contribuiile n domeniul informaticii, decernat anual de prestigioasa asociaie ACM (Association for Computing Machinery), este numit premiul Turing. n mod interesant, dei maina Turing este un mecanism foarte ``primitiv'', nimeni nu a reuit s sugereze un model de calcul mai puternic. n msura n care funcionarea neuronilor din creierul uman este cea descris de neurofiziologi, creierul nsui poate fi simulat cu o main Turing (dar exist mult mai multe necunoscute dect certitudini n ceea ce privete funcionarea creierului). Dac acceptm aceast ipotez (numit i teza lui Church), putem privi rezultatele teoriei complexitii ca pe nite reguli universale, care privesc toate ``aparatele'' care proceseaz informaie n univers. S ne mai amintim c obiectele procesate de mainile Turing sunt limbaje, adic mulimi de cuvinte. O main Turing primete la intrare un cuvnt dintr-un anumit limbaj, i produce la ieire un cuvnt dintr-un alt limbaj, care este rspunsul ateptat. Dac rspunsurile sunt doar ``da'' sau ``nu'' (adic un singur bit), atunci spunem c maina Turing decide limbajul format din toate cuvintele pentru care rspunsul este ``da''.
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 16/34

6/13/13

Teoria complexitii

Pietre de hotar
Putem mpri istoria teoriei complexitii, de la origini pn n prezent, n cinci etape mari. Iat-le descrise pe scurt:

Programul formalist al lui Hilbert


Putem considera ca printe al teoriei complexitii pe marele matematician german David Hilbert (18621943). Hilbert a ncercat s fundamenteze matematica pe baze axiomatice; el a recunoscut faptul c ntre logic i matematic exist o relaie foarte strns; el a observat c demonstrarea oricrei probleme din matematic se poate reduce la verificarea satisfiabilitii unei formule din calculul predicativ2. Hilbert vedea ca ncununare a matematicii producerea unui algoritm care ar putea s rezolve problema satisfiabilitii, care ar putea fi atunci folosit pentru a demonstra n mod mecanic orice teorem.

Teorema lui Gdel i teorema lui Turing


Visele lui Hilbert au fost ns spulberate de matematicianul Kurt Gdel i faimoasa sa teorem de incompletitudine. Gdel a artat c un algoritm de decizie pentru satisfiabilitate nu exist, pentru orice sistem axiomatic care este suficient de cuprinztor pentru a descrie mulimea numerelor naturale i operaiile aritmetice pe ea. Dac operm cu structuri mai simple, ca algebra boolean, introdus n articolul nostru despre satisfiabilitate, problema este decidabil; dac ns structura matematic este suficient de bogat, (i mulimea numerelor naturale este n definitiv o structur foarte simpl, fr de care cu greu putem vorbi de matematic evoluat), exist propoziii adevrate care nu pot fi demonstrate matematic. Voi clarifica ntrun alt episod semnificaia acestui enun. O alt problem fundamental, propus de Hilbert, era de a verifica dac un sistem dat de axiome este consistent sau nu (cu alte cuvinte, dac axiomele nu se contrazic ntre ele). De exemplu, tim din liceu c axioma paralelelor a lui Euclid, din geometria plan, este independent de celelalte axiome ale geometriei, i c putem construi geometrii n care aceast axiom este adevrat, precum i geometrii perfect coerente n care axioma este fals. Hilbert i dorea posibilitatea de a verifica dac nu cumva un sistem ales de axiome se contrazice pe sine. A doua teorem de incompletitudine a lui Gdel a sfrmat i acest vis al lui Hilbert, demonstrnd c este imposibil de demonstrat consistena unui sistem de axiome raionnd doar n interiorul sistemului (cu alte cuvinte, nu putem demonstra consitena axiomelor pornind doar de la acele axiome); dac vrem s facem acest lucru, trebuie s raionm ntr-un sistem mai cuprinztor dect cel studiat. Avem astfel o reducere infinit, pentru c putem pune apoi chestiunea consistenei sistemului mai cuprinztor, etc.

Teorema lui Cook i NP-completitudinea


Cu timpul oamenii s-au obinuit cu ideea ca sunt lucruri care nu se pot calcula. Despre cele care se puteau calcula ns erau convini c sunt la-ndemn. Teoria complexitii ns a artat c fiecare problem are o complexitate inerent; anumite probleme se pot rezolva repede, altele mai greu. Exist probleme care au o complexitate exponenial: dac creti datele de intrare cu o constant, timpul de calcul se dubleaz. Astfel de probleme devin foarte repede intractabile: dac cretem problema de 100 de ori, complexitatea crete de 2100 ori, depind astfel vrsta estimat a universului! Chiar dac ncepeam s calculm la Big Bang, astzi tot n-am fi terminat!
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 17/34

6/13/13

Teoria complexitii

Teorema lui Cook, demonstrat n 1971, a turnat i mai mult gaz peste foc: exist foarte multe probleme care au soluii simple, i uor de verificat (adic putem verifica foarte eficient dac o pretins soluie este corect), dar pentru care nimeni nu tie cum s gseasc o soluie suficient de rapid! Din acel moment, problema central a teoriei complexitii s-a mutat n aceast zon: am renunat s mai rezolvm problemele inerent grele, putem oare mcar rezolva acest gen de probleme, ale cror soluii se pot verifica uor? Aceste probleme formeaz o clas numit NP, despre care vom vorbi mai mult n cuprinsul acestui articol. ntrebarea central a teoriei complexitii este dac P=NP. (P este clasa problemelor pe care le putem rezolva rapid.) S-au publicat mai multe demonstraii eronate ale ambelor aseriuni: P=NP i P NP. Deocamdat

rspunsul rmne un mister. Teoreticienii au atacat problema din tot felul de perspective, ncercnd s demonstreze c pentru problemele din NP sunt necesare strict mai multe resurse dect pentru cele din P; atunci am ti c cele dou clase sunt diferite. Desigur, doar existena unei diferene ntre cele dou clase nu este totul pentru practicieni, dac nu tim i ct de mare este aceast diferen. Tot ce tim este c NP este cuprins ntre P i EXP; P este clasa problemelor cu o complexitate polinomial, iar EXP cea a problemelor cu complexitate exponenial; ntre aceste dou clase exist o sumedenie de clase intermediare, de exemplu cea a problemelor cvasi-polinomiale, care sunt mai mari dect cele polinomiale, dar mai mici dect cele exponeniale (de exemplu funcia nlog n ). Chiar un rezultat care ar separa NP de EXP ar fi grozav, pentru c ne-ar da soluii pentru problemele din NP mai bune dect cunoatem la ora actual. Teoreticienii aveau practic dou scule fundamentale n repertoriu pentru a raiona despre complexitate: diagonalizarea i simularea, ambele prezentate pe scurt n prima parte a acestui articol, n numrul anterior al revistei. Simularea se folosete de faptul c o main Turing adesea se poate comporta ca o alt main Turing, ``simulndu-i'' execuia. Aceast tehnic se numete n viaa de zi cu zi ``interpretare'', i este exact ceea ce se ntmpl cu limbajele interpretate: BASIC, Lisp, etc: interpretorul de BASIC simuleaz execuia programelor scrise n BASIC. Diagonalizarea este o tehnic foarte ingenioas pentru a arta c un obiect nu este ntr-o mulime, pentru c este diferit de fiecare obiect din mulime printr-o anumit trstur. Teoreticienii au ncercat s demonstreze c P NP artnd c mainile din NP sunt diferite de toate mainile

din P. Dar aceste ncercri au fost brusc curmate de un rezultat ocant.

Teorema lui Solovay; relativizare


n 1977 logicianul Solovay a demonstrat o teorem foarte important, care a artat c orice metod bazat pe diagonalizare i simulare este sortit eecului. Este deci un fel de meta-teorem, care arat c o ntreag clas de metode de demonstraie sunt neputincioase n a diferenia P de NP. Acest rezultat a paralizat complet cercetarea din domeniu pentru civa ani. Voi ncerca s prezint aici esena argumentului. n episodul anterior am introdus noiunea de main Turing echipat cu un oracol. Un oracol este un mecanism (fictiv) care permite unei maini Turing s rezolve anumite probleme instantaneu. Putem vedea un oracol ca pe o subrutin, care se termin instantaneu, i care poate calcula rspunsul la o anumit ntrebare. De exemplu, un oracol pentru problema primalitii unui numr este un dispozitiv care ne spune instantaneu dac numrul este prim sau nu.
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 18/34

6/13/13

Teoria complexitii

n acelai fel, un oracol pentru clasa NP este un dispozitiv care rspunde instantaneu la orice ntrebare din clasa NP. Dac v deranjeaz aceast abstracie matematic, imaginai-v c este o subrutin orict de complicat, dar al crei timp de execuie nu se cronometreaz. Dei abstracte, oracolele sunt nite scule foarte utile pentru teorie, dup cum vom vedea din teorema lui Solovay. Mai introducem o notaie: dac o main Turing M are un oracol pentru problema X, atunci notm maina cu MX. Asta nseamn deci c M poate calcula ca orice main Turing obinuit, dar n plus poate rspunde imediat la orice ntrebare din X. Teorema lui Solovay arta c exist dou oracole A i B care au urmtoarele proprieti: PA = NPA , dar . Asta nseamn c exist oracole care fac mainile din NP mai puternice dect cele din P, i exist oracole care fac ambele tipuri de maini la fel de puternice. De ce este aceast teorem catastrofal? Pentru c s-a artat c orice argument bazat pe diagonalizare sau simulare rmne adevrat atunci cnd mainilor li se aplic oracole. Cu alte cuvinte, dac artm prin diagonalizare c o main X nu este ntr-o anumit clas C, atunci pentru orice oracol Q vom ti sc XQ nu este n clasa CQ. Acest fenomen se numete relativizare: teoremele care sunt demonstrate prin diagonalizare sau simulare sunt adevrate i atunci cnd mainile din teorem capt oracole, deci teoremele sunt adevrate relativ la orice oracol. Acum este clar de ce teorema a fost o veste foarte proast: nu avem nici o ans s artm cu aceste tehnici c P = NP, pentru c aplicnd oracolul B de mai sus, am arta automat c PB = NPB, ceea ce e nu poate fi adevrat, conform teoremei lui Solovay. La fel stau lucrurile i pentru propoziia opus: nu poate fi demonstrat prin aceste tehnici, pentru c oracolul A ar contrazice acest rezultat.

Teorema lui Razborov-Rudich; demonstraii naturale


Muli cercettori au fost foarte descurajai de acest rezultat, i au abandonat studiul teoriei complexitii cu totul. Toate sculele pe care le aveau la dispoziie erau inutile! ncetul cu ncetul ns comunitatea i-a ieit din apatie, i o nou tehnologie de demonstraie a fost dezvoltat. Ultima parte a acestui articol va discuta despre aceast tehnologie mai pe larg, dar o s o introduc aici pe scurt. Este clar c metoda care este folosit nu trebuie s sufere de relativizare, pentru c atunci conform teoremei lui Solovay ea este neputincioas n a diferenia P i NP. Cercettorii au nceput atunci s opereze cu un alt model computatonal, cel al circuitelor neuniforme. Acestea nu sunt altceva dect nite circuite combinaionale, precum cele folosite n construcia calculatoarelor, formate din pori logice ``sau'', ``i'', ``nu''. Circuitele acestea primesc datele la intrare, i genereaz rspunsul la ieire. Pentru fiecare mrime de date de intrare avem de-a face cu un alt circuit: pentru datele de intrare de mrime 2 vom avea un circuit cu dou intrri, pentru datele de mrime 3 vom avea un circuit cu 3 intrri, etc3. Cercetarea prea s fie pe calea cea bun; cercettorii vroiau s demonstreze c P NP artnd c

circuitele pentru probleme NP au nevoie de nite proprieti suplimentare pentru a putea calcula, comparat cu cele din clasa P; de exemplu sperau s arate c orice problem din P se poate rezolva cu circuite de o anumit ``adncime'', pe cnd pentru NPeste nevoie de mai mult de att.

www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000

19/34

6/13/13

Teoria complexitii

Rezultatele curgeau unul dup altul, aparent apropiindu-se de in. O lovitur de teatru ns a urmat n 1994: matematicianul rus Razborov i americanul Steven Rudich au demonstrat o a doua teorem de relativizare, care a avut un oc comparabil cu cel al teoremei lui Solovay. Aceast teorem este tehnic mai complicat dect cea a lui Solovay, dar voi ncerca s expun aici esena ei. Teorema Razborov-Rudich introduce noiunea de demonstraii ``naturale'' (natural proofs), care manipuleaz circuitele boolene ntr-un anumit fel. Apoi cei doi trec n revist toate rezultatele majore i arat c demonstraiile folosite sunt naturale, sau echivalente cu demonstraii naturale. Apoi cei doi demonstreaz un rezultat foarte interesant, pe care l voi parafraza simplificat: dac exist probleme n NP mai grele dect cele din P (adic P NP), atunci nu exista demonstraii naturale c P NP! Cu alte cuvinte, dac faptul pe care vrei s-l demonstrezi este adevrat, atunci nu poi s-l demonstrezi, cel puin nu n acest fel!

Situaia actual
Aceasta este situaia la ora actual n teoria complexitii. Cel puin pe frontul P=NP, activitatea este din nou nepenit: n lipsa unei tehnici noi de demonstraie, orice efort este sortit dinainte eecului! Desigur, aa cum arat teorema de incompletitudine a lui Gdel, n orice sistem axiomatic exist teoreme adevrate care nu pot fi demonstrate. Este posibil ca chiar teorema P NP s fie o astfel de teorem! Mai precis, este posibil ca acest enun s fie independent de teoria axiomatic a mulimilor Zermelo-Frankel. Atunci clar nu exist nici o demonstraie a acestui fapt (ori a opusului lui), i singurul lucru pe care-l putem face este s lum un astfel de enun ca pe o axiom! Muli cercettori ns cred c aceast problem nu este independent, i sper n continuare s gseasc un rspuns. Pe ce cale se va face aceasta, la ora actual este complet neclar.

Reduceri i completitudine
n restul acestui articol ne vom ocupa de a doua perioad din istoricul de mai sus; vom vedea o sum de rezultate obinute de teoreticieni, vom studia impactul a trei tipuri de resurse asupra calculului: spaiul, timpul i oracolele, i vom vedea o serie ntreag de probleme nerezolvate, unele de o mare importan practic. Vom introduce pentru nceput dou noiuni fundamentale n teoria complexitii: cea de reducere ntre probleme i cea de completitudine a unei probleme ntr-o clas de complexitate.

Reduceri
Am ntlnit noiunea de reducere i n textul meu anterior despre problema satisfiabilitii. De data asta vom studia ns un caz mai general. Noiunea de reducere este foarte ades folosit n matematic, unde spunem n mod frecvent c ``o problem transformat ntr-un anume fel se reduce la o alta''. n teoria complexitii reducerea este ns tot un proces de calcul, care transform instane ale unui probleme n instane ale alteia. Ca orice procesare fcut de automatele de care ne interesm, reducerile transform un limbaj ntr-altul.
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 20/34

6/13/13

Teoria complexitii

n teoria complexitii ne intereseaz foarte mult i ct de multe resurse consum procesul de reducere. n general vrem ca reducerea nsi s fie mai simpl dect problema iniial sau cea final; degeaba reducem o problem de complexitate polinomial la alta dac reducerea consum un timp exponenial! Dac problema A se reduce la problema B folosind o reducere de complexitate m, notm acest fapt cu . Folosirea semnului (mai mic sau egal) nu este ntmpltoare: n general o reducere induce o relaie de ordine pe mulimea problemelor, fiind reflexiv (o problem se reduce la sine nsi) i tranzitiv (dac i , atunci ). Dac dou probleme se reduc una la alta, spunem c sunt la fel de grele: i , atunci A e la fel de grea ca B (aceasta este proprietatea de

antisimetrie a relaiei). n general proprietatea de simetrie nu este adevrat: dac A se reduce la B, B nu se reduce neaprat la A; B poate s fie mai grea dect A. Odat ce avem o noiune de reducere, putem defini completitudinea unei probleme referitoare la o clas. Dac avem colecia de probleme X, i o problem , atunci spunem c A este complet n X, sau A este X-complet, vis-a-vis de o reducere cu complexitatea m, dac pentru orice problem . ,

Figura 5: n aceast figur mulimea de probleme A are un set de probleme C care sunt A-complete. Asta nseamn c rezolvarea oricrei probleme din A se reduce la o problem din C. Dac A include o subclas B, atunci dac B se intersecteaz cu C, atunci B=A, n
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 21/34

6/13/13

Teoria complexitii

sensul c ambele clase sunt la fel de grele. Singura posibilitate ca B sa fie diferit de A este ca B sa nu se intersecteze cu C. Aceste relaii stau la baza multor ncercri de a demonstra ca P = NP(sau opusul).

Clase de complexitate importante


Deocamdat punem deoparte noiunea de reducere, i discutm clasele de complexitate cele mai importante studiate. Pentru fiecare din aceste clase se cunosc probleme complete. Vom prezenta clasele n ordinea cresctoare a complexitii lor; cel mai adesea ns relaia real ntre clase consecutive este necunoscut.

Spaiu constant
Prima clas interesant de complexitate este cea a mainilor care folosesc o cantitate fix de spaiu pentru a-i face calculele, care cantitate este independent de mrimea datelor de intrare. Chiar cnd datele de intrare tind la infinit, maina folosete la fel de puin spaiu. Un fapt interesant despre aceast clas este c, de fapt, dac dai unei maini spaiu constant, nu are ce face cu el: exist o alt main care face acelai lucru fr nici un fel de spaiu suplimentar. Exist un nume special pentru mainile Turing care nu folosesc nici un fel de spaiu pe band (n afar de a citi irul de la intrare): ele se numesc automate finite. Toate limbajele care se pot decide n spaiu constant se numesc limbaje regulate. Aceste limbaje sunt extrem de importante n practic; exist o seam ntreag de medii de programare care manipuleaz limbaje regulate. Programe i interpretoare faimoase care manipuleaz limbaje regulate sunt Perl, Lex, grep, awk, sed, etc. Perl este de pild limbajul preferat pentru a scrie extensii pentru serverele de web de pe Internet. Limbajele regulate sunt att de utile pentru c se demonstreaz c ele pot fi acceptate n timp linear: cu alte cuvinte pentru orice limbaj regulat exist o main Turing care decide un cuvnt de lungime n n timp O(n). Acest timp este practic cel mai mic timp posibil, pentru c n mai puin de O(n) nu putem nici mcar citi toate literele de la intrare! Un exemplu de limbaj regulat ne-trivial: adunarea. Dac primim trei numere, a, b, c, scrise ntreesut pe band (adic o cifr de la a, una de la b, una de la c, atunci putem verifica folosind un automat finit dac c = a+b.

Spaiu logaritmic
O clas foarte interesant de complexitate este cea a limbajelor care pot fi acceptate folosind spaiu logaritmic n lungimea cuvntului de intrare. Pentru orice cuvnt de lungime n maina folosete nu mai mult de
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 22/34

6/13/13

Teoria complexitii

O(log n) celule de memorie pentru a procesa cuvntul. Clasa aceasta se noteaz cu L, de la Logaritm. Se arat c aceast clas este strict mai cuprinztoare dect cea a limbajelor regulate: exist limbaje ne-regulate n L. De ce folosim tocmai logaritmul? n spaiu logaritmic maina poate manipula un numr finit de contoare a cror valoare este cuprins ntre 1 i n (fiecare contor are log n cifre). Putem spune deci c clasa L este cea a mainilor care au nevoie doar s in minte cteva poziii din irul de intrare, i nimic mai mult. Ce putem face n spaiu logaritmic? O mulime de lucruri! De pild putem nmuli dou numere: folosim contoare pentru a parcurge numerele de nmulit, i pentru a face adunarea de la dreapta la stnga. O alt problem foarte important pe care o putem rezolva doar n spaiu logaritmic este de a calcula valoarea unei formule boolene, atunci cnd cunoatem valorile tuturor variabilelor care o compun.

Timp polinomial
Cea mai folosit clas de complexitate este cea a timpului polinomial, notat cu P. Putem defini foarte precis P matematic folosind urmtoarea notaie TIME(f(n))= clasa problemelor care se pot decide n timp f(n). Atunci .

Se arat imediat c orice se poate calcula n spaiu logaritmic, nu are niciodat nevoie de mai mult dect timp polinomial, sau altfel spus, . Practic toi algoritmii eficace nvai n coal sunt din clasa P; teoreticienii consider c dac o problem nu este n P, atunci nu poate fi rezolvat practic, pentru c resursele cerute sunt prea multe. De exemplu, programarea linear, algoritmul Gauss-Seidel de inversare a unei matrici, sau algoritmul care calculeaz ieirea unui circuit combinaional cnd intrarea este dat, sunt toi algoritmi de timp polinomial. De fapt ultima problem este chiar P-complet, vis-a-vis de reduceri n spaiu logaritmic. Deci orice alt problem din P se poate reduce la problema evalurii unui circuit boolean! Observai c evaluarea unui circuit boolean este mai dificil dect a unei formule boolene, dei orice formul boolean poate fi scris ca un circuit. Relaia exact dintre L i P nu este cunoscut; nu se tie dac L este strict inclus n P sau cele dou clase sunt de fapt egale. Dac cineva ar gsi o metod de a rezolva problema valorii unui circuit boolean folosind un algoritm din L, atunci am demonstra automat c L = P, datorit completitudinii problemei. Aceast ntrebare este foarte important pentru practic, pentru c algoritmii din L pot fi asimilai cu algoritmii care se pot executa foarte eficient pe o main masiv paralel. Chestiunea L = P se poate deci interpreta ca ntrebarea: ``poate orice algoritm din P fi executat foarte eficient n paralel?''.

Spaiu polinomial
n general este uor de vzut c dac o problem are nevoie de timp t atunci nu consum mai mult de spaiu t, pentru c n fiecare unitate de timp poate consuma cel mult o unitate nou de spaiu. Dac notm cu PSPACE clasa problemelor care consum spaiu polinomial n mrimea datelor de intrare, atunci avem deci imediat P PSPACE.
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 23/34

6/13/13

Teoria complexitii

Ce putem rezolva avnd la dispoziie spaiu polinomial? Ei bine, putem rezolva toate jocurile cu informaie perfect. Mai mult dect att, aceste probleme sunt PSPACE-complete vis-a-vis de reduceri n timp polinomial. Ce sunt jocurile cu informaie perfect? Sunt toate jocurile gen Go sau dame pe table de mrime n x n (aceasta este mrimea datelor de intrare). A spune ah, dar este destul de greu de generalizat ah-ul pentru table arbitrar de mari. Aa cum tim din teoria jocurilor (sau dac nu tim, v spun eu), orice joc de acest gen are o strategie perfect pentru fiecare juctor, care obine cel mai bun rezultat, independent de micrile celuilalt. Problema de a afla dac primul la mutare poate ctiga mereu este cea a jocurilor cu informaie perfect. n mod surprinztor (sau poate v-ai obinuit cu aceste ntrebri nerezolvate, i vi se pare natural ignorana noastr n acest domeniu), nimeni nu tie dac P= PSPACE. Ceea ce tim cu siguran este c L PSPACE este o incluziune strict. Interesant, anumite probleme practice foarte utile sunt de asemenea PSPACE-complete; de exemplu problemele de planificare care apar n inteligena artificial, cum ar fi programarea traseului unui robot. O alt problem important care este complet pentru PSPACE este problema pe care o ntlnesc cei care scriu compilatoare atunci cnd analizeaz un program cu pointeri pentru un limbaj ca C, care permite crearea de pointeri ctre funcii: determinarea la compilare a informaiei ``points-to'', care spune spre care obiecte un pointer poate arta, este i ea complet pentru PSPACE.

Timp exponenial
Dei nu am artat cum, acelai gen de demonstraie care arat c L PSPACE P poate fi folosit pentru a arta c EXP. EXP este definit ca fiind clasa tuturor problemelor care se rezolv n timp exponenial: . Nu avem habar dac incluziunea PSPACE EXP este strict sau nu.

Spaiu exponenial
Dac putem folosi timp exponenial, putem folosi i spaiu exponenial. Aceast clas monstruoas este puin ntlnit n practic, dei exist probleme practice care pot fi plasate aici.

Dincolo de spaiu exponenial


Exist i clase de complexitate mai mari dect acestea. Vom prezenta o astfel de clas n ultima parte a acestui text, ntr-un numr ulterior, cnd discutm despre complexitatea de decizie a feluritelor teorii logice.

Complexitatea nedeterminist; maini alternante


Modelul de main cu care am lucrat pn acum este destul de realist, n sensul c pare imediat construibil n
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 24/34

6/13/13

Teoria complexitii

practic. Singura ciudenie abstract au fost oracolele. Dar aa cum modelul ezoteric al oracolelor, dei ne-implementabil, a fost de o enorm importan metodologic, permiindu-ne s tragem nite concluzii foarte importante, teoreticienii au mai elaborat dou variaiuni la modelul mainilor Turing, care se dovedesc extrem de importante n practic. Modelele pe care le voi introduce acum pot fi simulate cu maini Turing obinuite, cu o pierdere oarecare de eficacitate. Dar prezena acestor maini ne permite s facem nite diviziuni mai fine n interiorul feluritelor clase de complexitate, i s punem nite ntrebri foarte importante.

Maini nedeterministe
V reamintii c definiia mainii Turing spunea exact ce trebuie s fac automatul n fiecare stare, n funcie de simbolul de pe band. Ei bine, acum vom permite o oarecare ambiguitate: maina noastr va avea posibilitatea s fac nu una, ci mai multe micari la un moment dat. Trebuie s redefinim conceptul de acceptare: nainte maina accepta dac secvena ei de stri parcurse se termina cu o stare anumit, numit ``acceptare''. Dar acum, cnd maina poate urma mai multe trasee, care este criteriul de acceptare? Vom spune c maina accept atunci exist cel puin o crare care duce la o acceptare. Figura 6 arat cum stau lucrurile cu astfel de maini.

Figura 6: O main determinist, de ndat ce are un ir pe banda de intrare, are o traiectorie fixat n spaiul strilor: putem spune oricnd n ce stare maina se va afla. Prin contrast, mainile nedeterministe se pot afla n stri cu mai muli succesori, n care pot alege traiectoria. O main determinist accept dac cel puin o traiectorie a ei accepta. Intuitiv putem s ne imaginm astfel de maini n dou feluri; alegei-l pe cel preferat: Putem s ne imaginm c maina atinge astfel de puncte de decizie cu posibiliti multiple de execuie, i atunci pur i simplu ghicete pe care crare s-o ia. Dac exist o secven de ghiciri bune, maina va accepta. Aceast perspectiv este adesea folosit, iar mainile de acest gen se numesc ``nedeterministe'', pentru c comportamentul lor nu mai poate fi descris dinainte precis. Un alt model de reprezentare folosete fire (threads) de execuie multiple: ne putem imagina c maina
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 25/34

6/13/13

Teoria complexitii

noastr poate executa n paralel un numr nelimitat de fire de execuie. Atunci cnd maina atinge un punct de alegere nedeterminist, creaz cte un fir de execuie separat pentru a explora fiecare posibilitate. Aceste fire se vor executa apoi perfect n paralel, iar primul care va gsi soluia va termina ntregul proces de calcul. Mainile nedeterministe le generalizeaz pe cele deterministe; par de asemenea mai puternice: e clar c orice problem care se poate executa n timp determinist T se poate executa i n timp nedeterminist T, pentru c orice maina determinist este un caz particular de main nedeterminist. Apar astfel clasele de complexitate prefixate cu litera N: NL, NP, NPSPACE, NEXP. De asemenea, o clas nedeterminist este mai slab dect clasa determinist superioar: avem ierarhia: . Despre majoritatea incluziunilor din acest lan nu tim dac sunt stricte. Un singur rezultat pozitiv lumineaz aceste incertitudini: n mod surprinztor n 1970 Savitch a demonstrat c PSPACE= NPSPACE, deci nedeterminismul nu ajut cu nimic puterea computaional pentru acest gen de probleme. n plus mai tim adesea c anumite incluziuni ntre clase distante sunt stricte: de exemplu avem teoreme de genul ``fie L P, fie P PSPACE'', sau, mai simplu spus, . Aa cum am mai menionat, clasa asupra creia s-au aplecat cei mai muli cercettori este NP. Articolele mele anterioare artau c problema satisfiabilitii boolene (``are un circuit boolean intrri pentru care ieire este 1'') este complet pentru NP vis-a-vis de reduceri polinomiale. O s menionez n final o problem complet pentru NEXP: jocul de poker generalizat n trei adversari (jocuri n mai multe persoane, cu aleatorism i informaie ascuns).

Clase complementare
O ntrebare natural este: dac putem generaliza maina Turing s aib astfel de stri n care poate face o alegere, nu putem crea i nite stri speciale n care orice alegere s trebuiasc s duc la o stare acceptoare? n modelul paralel, cu fire de execuie, cerem ca toate firele lansate n paralel s termine cu succes, i nu unul singur dintre ele. Vom distinge deci dou tipuri de stri: strile existeniale: cel puin o crare care iese din ele trebuie s duc la o acceptare (acestea sunt strile din mainile nedeterministe, introduse mai sus), i strile universale: toate crrile plecnd din acea stare trebuie s duc la o acceptare. ntr-adevr, aceste maini recunosc alte clase de limbaje. O maina care are doar stri universale recunoate anumite clase de limbaje interesante. Se poate arta c aceste limbaje sunt complementele limbajelor acceptate de mainile nedeterministe, de aceea numele lor se prefixeaz cu ``Co''. De exemplu, avem clasa limbajelor CoL, care pot fi acceptate de o main cu stri universale n spaiu logaritmic. Avem CoNP, limbajele care pot fi acceptate de mainile polinomiale cu stri universale. Din nou, mainile perfect deterministe sunt un caz particular de maini cu stri universale, n care n fiecare stare avem o singur decizie posibil. De aici rezult imediat o serie de incluziuni: ,
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 26/34

6/13/13

Teoria complexitii

, etc. Ca s fim mai concrei, s vedem o problem care este n CoNP. Problema este foarte interesant: dac am dou hri, sunt ele ne-izomorfe? Adic, oricum a asocia rile dintr-una cu rile din cealalt, nu voi obine niciodat aceeai relaie de vecintate (dac suntei familiari cu terminologia grafurilor, aceasta este de fapt problema non-izomorfismului grafurilor). Aceast problem este n CoNP, pentru c vreau s verific c orice permutare a unei hri este diferit de cealalt. Putem deci construi o main cu o stare universal, din care se exploreaz n paralel toate permutrile posibile. Vedei, problema cealalt, a izomorfismului grafurilor este n NP: ``sunt dou grafuri izomorfe?'' se poate rezolva n timp nedeterminist polinomial. Complementul acestei probleme este ns n CoNP. E interesant de observat c adesea o problem nu este la fel de grea ca problema complementar. De pild, e uor s demonstrezi c nu a plouat peste noapte: strzile sunt uscate. Dar dac strzile sunt ude, nu poi s tii dac nu cumva au splat strada. Un lucru i complementul lui nu sunt la fel de uor de demonstrat. De fapt aici nu am exprimat dect o credin: relaia dintre clasele de complexitate i complementele lor este cel mai adesea necunoscut; singurul rezultat concret este dat teorema Immerman-Szelepcsnyi, din 1988, care arta c NL= CoNL. ntrebarea NP= CoNP este o ntrebare cu consecine foarte importante pentru practic; dac aceste clase sunt egale (ceea ce lumea crede foarte puin probabil), atunci exist demonstraii scurte pentru nonizomorfismul grafurilor: poi scrie o dovad sumar c dou grafuri nu sunt identice.

Maini alternante, ierarhia polinomial


Putem generaliza i mai departe mainile Turing, permiindu-le s aib simultan stri existeniale i universale. n acest fel obinem noi clase de complexitate. Ceea ce caracterizeaz aceste maini nu este numrul de stri de fiecare fel, ci numrul de alternane de stri pe fiecare crare. De exemplu, dac avem o stare existenial, urmat apoi pe fiecare ramur de stri universale, i doar att, avem o alternan 2. Cu ct permitem mai multe alternane, cu att maina pare mai puternic. n mod interesant, putem modela aceste maini i folosind oracole. O main care face o alternan existenial urmat de una universal poate fi modelat de o main din NP care are un oracol din CoNP. Oracolul poate rspunde la orice ntrebare universal, iar maina ia doar o decizie existenial. Putem nota aceast main cu Se definesc astfel clasele . i ; punctul de pornire este .

Figura 7 ilustreaz relaia dintre aceste probleme. O problem din stare este peste tot una universal. O problem din

are un numr de k alternane, i prima

are tot k alternane, dar prima stare pe orice crare

este una existenial. Figura 7 ilustreaz aceast ierarhie de dificulti, numit ``ierarhia polinomial''. Din nou, nu se cunoate nimic despre stricteea incluziunilor. Se tie ns c dac pentru un k anume , atunci acest lucru este adevrat pentru oricare numr mai mare dect k: ierarhia se prbuete
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 27/34

6/13/13

Teoria complexitii

la nivelul k:

. Totalitatea tuturor acestor clase pentru k constant se noteaz cu PH

. Dac mergem mai departe, i i permitem i lui k s varieze odat cu dimensiunea problemei, atingem PSPACE. Pentru fiecare dintre aceste clase de complexitate exist probleme care sunt complete prin reduceri polinomiale. De exemplu, iat un limbaj complet pentru : limbajul format din descrierea tuturor circuitelor booleene care au numrul minim de pori care implementeaz o anumit funcionalitate.

Figura 7: Ierarhia polinomial PH. Aproape nici una dintre incluziunile din aceast figur nu sunt demonstrate a fi stricte. Lumea crede c ntr-adevr relaia este cea din figur. ER sunt limbajele regulate, L=spaiu logaritmic, P=timp polinomial. Celelalte clase sunt definite in text.

Concluzii
n acest text am vzut ca nu tot ce se poate calcula n mod necesar se poate calcula repede: exist clase de complexitate foarte ``grele''. Am mai vzut c modelele matematice abstracte ale mainilor cu oracole, mainilor nedeterministe i mainilor alternante sunt nite scule foarte puternice pentru a explora structura diferitelor probleme din punct de vedere al complexitii. Am mai vzut c exist clase de complexitate extrem de variate, i populate de probleme foarte interesante: am vzut de pild clasa problemelor care se pot paraleliza foarte eficient, L, clasa PSPACE a jocurilor, care este (probabil) mult mai grea dect clasa problemelor tractabile, i clase nedeterministe i alternante, care formeaz o ierarhie infinit de obiecte din ce n ce mai greu de calculat. n episodul urmtor vom ataca subiecte i mai stranii: vom vorbi despre complexitatea circuitelor ne-uniforme, i vom vedea cum se pot formaliza foarte precis noiunile de criptare, pseudo-aleatorism i calcul bazat pe ntmplare. Pe luna viitoare!

www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000

28/34

6/13/13

Teoria complexitii

Aleatorism i complexitate
Acest text este un al treilea episod consacrat teoriei complexittii. n oarecare msur el este independent de episoadele anterioare sau ulterioare, dar pentru cititorul doritor de o privire de ansamblu, celelalte pri sunt disponibile din pagina mea de web. Teoria complexitii este ramura cea mai abstract a informaticii teoretice, care studiaz ce se poate i nu se poate calcula, atunci cnd punem tot felul de constrngeri asupra resurselor de calcul pe care le avem la dispoziie. n primul text din aceast serie, am discutat despre teoria extrem a calculabilitii, care investigheaz lucruri care nu se pot calcula orict de multe lucruri am avea la dispoziie. n mod surprinztor, exist mult mai multe lucruri ne-calculabile dect calculabile; exist deci o infinitate de lucruri pe care nu le vom putea dovedi niciodat. Al doilea episod a investigat cum se schimb peisajul lucrurilor calculabile dac restrngem timpul pe care i-l punem la dispoziie unui calculator, respectiv spaiul de memorie pe care-l poate folosi. Am vzut c exist probleme deosebit de interesante pentru care este necesar o cantitate foarte mare de resurse, de exemplu jocurile ntre doi juctori. Am vzut ns c se pot calcula lucruri foarte interesante chiar dac avem 0 resurse de memorie, i foarte puin timp la dispoziie: acestea sunt limbajele regulate4, care au foarte multe aplicaii practice. Acest al treilea episod are drept personaj central un tip foarte surprinztor de resurs de calcul: aleatorismul. Toate clasele de complexitate prezentate n acest text sunt bazate n mod fundamental pe aleatorism.

Aleatorism (randomness) i amplificare (boosting)


Ce este aleatorismul n teoria complexitii, i cum l putem modela? Cum putem introduce n modelul simplu de calcul pe care l-am folosit, al mainii Turing, aleatorism? Despre ce e aleatorismul n viaa de zi cu zi, i cum poate fi el produs, sunt nc dezbateri aprinse ntre filozofi. Noi vom lua drept bun o surs foarte simpl de aleatorism: un ban cu dou fee (diferite). Vom presupune c banul este perfect echilibrat, i c odat aruncat, poate ateriza cu aceeai probabilitate, de 1/2, pe oricare dintre feele sale. Astfel, o fis ne ofer de fiecare dat cnd este aruncat un bit aleator: un ``0'' sau un ``1'', fiecare cu probabilitate 1/2. Presupunem de asemenea ca ntre aruncri independente ale banului nu exist nici o relaie (adic ele sunt independente): presupunem c faptul c banul a aterizat de zece ori la rnd cu faa ``1'' n sus nu face mai probabil apariia ulterioar a unei fee ``0''. Unii filozofi i ``bunul sim'' al foarte multor ini nu vor fi de acord cu aceste presupuneri, dar acesta este luxul matematicii: putem face orice presupuneri, atta vreme ct le enunm clar. Atunci cnd modelm matematic aleatorismul pentru o main Turing, ne imaginm c cineva a dat dinainte cu banul i a nscris pe o band infinit rezultatele aruncrilor. Aceast band este disponibil mainii Turing, care de fiecare dat cnd are nevoie de un bit aleator, citete un bit de pe aceast band. Aceast band, cu bii aleatori, nu poate fi dect citit, iar capul de citire nu se poate niciodat ntoarce napoi. Aa cum am zis, biii de pe band sunt uniform distribuii (adic 0 i 1 apar fiecare cu probabilitate 1/2) i independeni unul de altul.
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 29/34

6/13/13

Teoria complexitii

n general, atunci cnd introducem aleatorism n calcul, pierdem certitudinea. Putem pierde certitudinea n dou feluri diferite: n primul fel, s-ar putea ca rezultatele calculate de algoritm s fie eronate. n al doilea fel, s-ar putea ca rezultatele s fie sigur corecte, dar s nu fie clar ct de repede algoritmul termin execuia. Cum de putem tolera aa ceva? Ce ne facem cu calculatoarele, dac ntrebm ct fac 7*9 i din cnd n cnd primim rspunsul 62? Ce ncredere mai putem avea n algoritmi, atunci cnd ei nu sunt 100% fiabili? Acestea sunt ntrebri foarte legitime; avem ns la dispoziie o tehnic remarcabil de simpl prin care putem spori arbitrar certitudinea unui rezultat. Aceast tehnic se numete aplificare (boosting), i const n repetarea de mai multe ori a unui calcul incert5. Ideea este destul de simpl i uor de demonstrat matematic. Voi argumenta ins n cuvinte: s presupunem c facem un experiment care are ansa s ias prost cu o probabilitate mic, dar ne-nul (neaprat mai mic de 1/2). Atunci, dac repetm experimentul de 20 de ori, probabilitatea ca mai mult de 10 experimente s ias prost este foarte mic. Soluia este deci de a repeta experimentul, i de a considera rspunsul corect pe cel care apare majoritar. Probabilitatea de a grei n acest fel scade n mod exponenial cu numrul de repetiii. Scderea aceasta foarte rapid este esenial: este suficient s facem un numr relativ mic de repetiii pentru a reduce probabilitatea la o valoare infim. Un lucru foarte important este c adesea numrul de repetiii pe care trebuie s-l facem nu depinde de mrimea problemei pe care o rezolvm. V reamintesc c timpul de execuie al unui algoritm depinde practic ntotdeauna de mrimea datelor de intrare; dac ns probabilitatea de eec a unui algoritm aleator este independent de mrimea datelor de intrare (i cel mai adesea, este), atunci numrul de repetiii este constant , acelai, indiferent de ct de mare este problema! Din punct de vedere practic algoritmii aleatori sunt perfect tolerabili: putem reduce probabilitatea de eroare att de mic nct s fie mai probabil ca ntre timp calculatorul nsui s se strice, sau astfel nct s fie mai probabil c se va produce o calamitate de mari proporii, dup care rezultatele calculului vor mai interesa pe foarte puin lume.

Complexitate probabilistic; RP, ZPP i BPP


n ultimii douzeci de ani cercettorii din teoria complexitii i a algoritmilor au gsit aplicaii surprinztoare ale aleatorismului n rezolvarea de probleme. Aa cum avem clasa de complexitate a problemelor care se pot rezolva n timp polinomial, avem i clase de complexitate pentru probleme care se pot rezolva n timp polinomial dac folosim aruncarea cu banul ca resurs. Am vzut n episodul anterior al acestui foileton complex (adic ``foileton despre complexitate'') c despre foarte multe clase de complexitate nu se tie dac sunt identice sau doar incluse una ntr-alta. Astfel, nu se tie daca P=NP, sau dac P=PSPACE, etc. Din pcate la fel stau lucrurile i n ceea ce privete aleatorismul: nu e clar dac avnd aleatorism la-ndemn putem calcula rapid lucruri pe care altfel nu le putem face dect foarte greu. Vom discuta mai jos n text despre relaia dintre aleatorism i dificultatea problemelor. Pn atunci s notm c, la ora actual, exist o mulime de probleme la care singurele soluii eficiente cunoscute sunt probabilistice: nimeni nu cunoate soluii deterministe de timp polinomial, dar exist soluii probabiliste de timp polinomial. Mai mult de att: problemele de acest gen sunt extrem de importante n viaa de zi cu zi; una dintre cele mai importante probleme pe care nu tim s-o rezolvm dect n mod aleator este criptarea. Pn atunci s aruncm o privire asupra unor clase mari de probleme care se pot rezolva probabilistic. Ca i n cazul mainilor obinuite, deterministe, teoreticienii consider c problemele care se pot rezolva n timp polinomial n dimensiunea datelor de intrare sunt rezolvabile. De aceea lumea este interesata mai ales de clase
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 30/34

6/13/13

Teoria complexitii

de complexitate aleatoare pentru care timpul de gsire al soluiei este de asemenea polinomial. De aceea trebuie s v ateptai (dac ai uitat cumva cum se cheam aceast seciune) ca numele acestora s se termine toate cu litera P, de la ``polinomial''.

Monte Carlo i Las Vegas


Cum spuneam, exist dou clase de algoritmi aleatori, care pot grei rspunsul, sau care pot depi timpul de execuie. Ambele sunt numite dup localiti faimoase prin jocurile de noroc. Algoritmii care pot da rezultate greite ocazional se numesc Monte-Carlo. Algoritmii care sunt ntotdeauna coreci n rezultat, dar pot depi un timp rezonabil de execuie se numesc Las Vegas. Trebuie s atragem atenia c pentru cele dou clase de algoritmi de obicei se msoar lucruri diferite: pentru algoritmii Monte-Carlo masurm, ca de obicei, cel mai mare timp de execuie (worst case): cnd spunem c pentru date de intrare de mrime n un algoritm Monte-Carlo termin n timp O(f(n)), nseamn c, indiferent de cum dm cu banul, cel mai lung dintre timpii de execuie pentru feluritele date de intrare de aceast mrime este mai mic de f(n). Dimpotriv, pentru algoritmii Las Vegas msurm ceea ce se numete timp mediu de execuie pentru cazult cel mai ru (worst-case expected running time). Asta pentru c timpul de execuie este o variabil aleatoare; asta nseamn c dac dm cu banul ceva, timpul e unul, dac dam cu banul altceva, timpul e altul, chiar pentru aceleai date de intrare. Fiecare secven de aruncri cu banul are o anumit probabilitate: secvena 00000 apare cu probabilitatea 2-5, pentru c vrem s apar cinci zerouri consecutive, deci avem 1/2 * 1/2 * 1/2 * 1/2 * 1/2. Timpul mediu de execuie este valoarea medie a variabilei aleatoare ``timp de execuie'': . n aceast formul suma se face dupa toate irurile aleatoare posibile i; pi este probabilitatea ca irul i s apar, iar T(i, x) este timpul de execuie pentru date de intrare x cnd irul aleator a fost i6 Iat un exemplu foarte simplu de algoritm Las Vegas de sortare: primim un ir de numere de lungime n, l amestecm n mod aleator, dup care aplicm QuickSort. Rezultatul va fi ntotdeauna corect sortat, dar timpul de execuie variaz ntre n log n i n2. Din fericire, exist foarte puine iruri aleatoare pentru care timpul de rulare este n2, aa nct timpul mediu de execuie este n log n. Aparent n-am fcut mare brnz, pentru c tim deja c QuickSort n general sorteaz n timp n log n$. Dar acest lucru era valabil dac datele de intrare se presupuneau egal probabile n orice ordine. Ori, n anumite circumstane, s-ar putea ca datele de intrare s apar mereu ntr-o ordine defavorabil (de exemplu dac datele de intrare vin de la un echipament de monitorizare a reelei, s-ar putea ca fluctutiile diurne regulate s fac ca datele s aib mereu o form nefavorabil pentru un QuickSort simplu. Dar dac noi amestecm datele nainte de a le prelucra, n aa fel nct orice ir de intrare s devin egal probabil, am distrus neuniformitatea din datele de intrare, permind algoritmului s opereze n cazul su mediu!

BPP i RP
Dac ne restrngem atenia la probleme de decizie (adic la algoritmi care trebuie s dea mereu doar unul din rspunsurile ``da'' sau ``nu'')7, atunci putem distinge dou clase de complexitate printre algoritmii MonteCarlo. Prima clas de complexitate se numete RP, de la Randomized Polynomial time (timp aleator polinomial).
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 31/34

6/13/13

Teoria complexitii

Aceti algoritmi pot face erori doar pentru unul din rspunsuri; mai exact, dac rspunsul pentru nite date de intrare trebuie s fie ``nu'', algoritmul rspunde 100% corect; dac'a r'aspunsul trebuie s'a fie ``da'', algoritmul ar putea cu probabilitate <1/4 s dea din greeal rspunsul ``nu''. O problem extrem de important practic este n clasa RP: testarea primalitii unui numr. La ora actual se cunosc numai algoritmi care vor recunoate ntotdeauna corect un numr prim, dar care ar putea declara (eronat) c anumite numere compuse sunt de fapt prime, ns cu probabilitate mic (adic doar dac sunt ghinioniste n aruncarea cu banul). Acesta este n sine un fapt foarte important, pentru c toi algoritmii importani de criptografie cu cheie public se bazeaz n construirea cheii pe generarea de numere prime, care la rndul ei se bazeaz pe testarea primalitii. Asta nseamn de fapt c toat lumea care folosete RSA (o metod foarte rspndit de criptare; de exemplu att Netscape ct i Internet Explorer folosesc aceast metod pentru anumite comunicaii criptate prin Internet) are ansa s foloseasc o cheie care poate fi ``spart'' uor, pentru c nu e compus din produsul a dou numere prime! Din fericire, folosind tehnica amplificrii, lumea reduce probabilitatea acestui eveniment la o valoare suficient de mic pentru a face algoritmul foarte folositor n practic. A doua clas de complexitate de algoritmi Monte-Carlo poate grei cu probabilitate mic n oricare sens: dac rspunsul e ``da'', atunci ar putea zice ``nu'' cu probabilitate <1/4, sau invers. Aceast clas se numete BPP, de la Bounded-error Probabilistic Polynomial time. Amplificarea unui astfel de algoritm se face repetnd execuia sa, i lund drept corect rspunsul care apare cel mai des. Am vzut n numrul anterior al revistei c pentru fiecare clas de complexitate putem vorbi de complementul su. Astfel avem clasele CoRP: clasa limbajelor pentru care dac rspunsul este ``da'', atunci algoritmul l gsete ntotdeauna, iar dac rspunsul este ``nu'', algoritmul poate grei cu probabilitate <1/4 (am inversat n definiia lui RPpe ``da'' cu ``nu''). La fel se definete CoBPP, dar, din cauz c definiia lui BPP este simetric, CoBPP = BPP. Pe de alt parte, RP CoRP. Mai mult de att, intersecia RP CoRP = ZPP se numete Zero-error Probabilistic Polynomial time. Se poate uor arta c de fapt ZPP este chiar clasa algoritmilor Las Vegas cu timp mediu polinomial. Se cunosc anumite relaii ntre aceste clase de complexitate i cele clasice, dar, ca de obicei, nu se tie dac relaiile de incluziune sunt sau nu stricte: , i . Figura sumarizeaz starea cunotinelor noastre n acest moment.

Nota: revista PC Report i-a exprimat dezinteresul pentru articole pe teme att de teoretice, ca atare acest articol este neterminat.

Demonstraii interactive Demonstraii verificabile probabilistic; teorema PCP Complexitatea circuitelor


www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 32/34

6/13/13

Teoria complexitii

Secvene pseudo-aleatoare Funcii neinversabile Criptografie Relaia dintre aleatorism i dificultate Teorema elasticului Logic i complexitate

Note ... calculat1 Rezervm pentru fiecare maina Turing o stare special pentru a indica ``am terminat de calculat''. ... predicativ2 Atenie: problema SAT, a satisfiabilitii, pe care am discutat-o n dou numere din PC Report, se referea la calculul propoziional i nu la cel predicativ. Cele dou probleme sunt foarte nrudite; n calculul predicativ ns satisfiabilitatea este n general nedecidabil, pe cnd pentru calculul propoziional am oferit chiar noi un algoritm pentru decizia satisfiabilitii, chiar dac de timp exponenial. Vom clarifica ntr-un articol ulterior relaia dintre logic i complexitate. ... etc3 De ce se numesc aceste circuite ``neuniforme'' vom vedea ntr-un episod ulterior. ... regulate4 n primul text din serie artam c orice operaie de calcul poate fi vzut ca transformarea unui limbaj ntr-un altul: fiecare ir de caractere primit la intrare de o maina genereaz la ieire un altul, care este rspunsul mainii. Un limbaj era definit ca o mulime de iruri de caractere. ... incert5 Pentru algoritmii a cror durat de execuie depinde de aleatorism, putem executa mai multe copii ale algoritmului n paralel. ... 6 n realitate trebuie s fim puin mai riguroi, pentru c aceasta este (uneori) o sum infinit, deci trebuie s facem o trecere la limit i s discutm i condiii de convergen. ... ``nu'')7 Tehnica de a restrnge atenia la problemele de decizie este foarte adesea folosit n teoria complexitii; toate clasele mari de complexitate, de exemplu P, NP, etc. sunt definite doar pentru probleme de decizie. Am artat ns ntr-un articol anterior c acest gen de limitare nu este foarte drastic, pentru c putem extrapola adesea rezultatele problemelor de decizie i pentru probleme la care
www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000 33/34

6/13/13

Teoria complexitii

rspunsul nu e doar ``da'' sau ``nu'', cum ar fi, de pild, problemele de sortare. De aceea n general nu facem distincia explicit.

www.cs.cmu.edu/~mihaib/articole/complex/complex-html.html#SECTION03022000000000000000

34/34

S-ar putea să vă placă și