Documente Academic
Documente Profesional
Documente Cultură
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.
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.
6/13/13
Teoria complexitii
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.
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.
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.
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!
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.
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.
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:
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
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.
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).
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.
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.
Figura 7 ilustreaz relaia dintre aceste probleme. O problem din stare este peste tot una universal. O problem din
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:
. 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.
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.
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''.
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.
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