Complexitate și calculabilitate. Recapitulare

Σχετικά έγγραφα
Metode iterative pentru probleme neliniare - contractii

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.

Curs 1 Şiruri de numere reale

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

Curs 4 Serii de numere reale

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

Examen AG. Student:... Grupa:... ianuarie 2011

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

Criptosisteme cu cheie publică III

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

Integrala nedefinită (primitive)

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Curs 2 Şiruri de numere reale

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

Functii Breviar teoretic 8 ianuarie ianuarie 2011

Subiecte Clasa a VIII-a

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

Examen AG. Student:... Grupa: ianuarie 2016

Subiecte Clasa a VII-a

Metode de interpolare bazate pe diferenţe divizate

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă

riptografie şi Securitate

Orice izometrie f : (X, d 1 ) (Y, d 2 ) este un homeomorfism. (Y = f(x)).

Asupra unei inegalităţi date la barajul OBMJ 2006

CURS 11: ALGEBRĂ Spaţii liniare euclidiene. Produs scalar real. Spaţiu euclidian. Produs scalar complex. Spaţiu unitar. Noţiunea de normă.

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

1.3 Baza a unui spaţiu vectorial. Dimensiune

Lucrare. Varianta aprilie I 1 Definiţi noţiunile de număr prim şi număr ireductibil. Soluţie. Vezi Curs 6 Definiţiile 1 şi 2. sau p b.

a. 11 % b. 12 % c. 13 % d. 14 %

Laborator 11. Mulţimi Julia. Temă

MARCAREA REZISTOARELOR

Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15

Elemente de logicǎ matematicǎ

Sisteme diferenţiale liniare de ordinul 1

III. Reprezentarea informaţiei în sistemele de calcul

5.4. MULTIPLEXOARE A 0 A 1 A 2

Seminar 5 Analiza stabilității sistemelor liniare

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Funcţii Ciudate. Beniamin Bogoşel

Spatii liniare. Exemple Subspaţiu liniar Acoperire (înfăşurătoare) liniară. Mulţime infinită liniar independentă

2 Transformări liniare între spaţii finit dimensionale

Principiul incluziunii si excluziunii. Generarea şi ordonarea permutărilor. Principiul porumbeilor. Pri

f(x) = l 0. Atunci f are local semnul lui l, adică, U 0 V(x 0 ) astfel încât sgnf(x) = sgnl, x U 0 D\{x 0 }. < f(x) < l +

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

decembrie 2016 Grafuri. Noţiuni fundamentale. Grafuri euleriene şi grafuri hamilto

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1)

Esalonul Redus pe Linii (ERL). Subspatii.

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

Geometrie computationala 2. Preliminarii geometrice


Principiul Inductiei Matematice.

Curs 4. I.4 Grafuri. Grafuri orientate

Laborator 6. Integrarea ecuaţiilor diferenţiale

BARAJ DE JUNIORI,,Euclid Cipru, 28 mai 2012 (barajul 3)

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

O generalizare a unei probleme de algebră dată la Olimpiada de Matematică, faza judeţeană, 2013

6 n=1. cos 2n. 6 n=1. n=1. este CONV (fiind seria armonică pentru α = 6 > 1), rezultă

Toate subiectele sunt obligatorii. Timpul de lucru efectiv este de 3 ore. Se acordă din oficiu 10 puncte. SUBIECTUL I.

V O. = v I v stabilizator

z a + c 0 + c 1 (z a)

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

CAPITOLUL II. MAŞINI CU STĂRI FINITE

VII.2. PROBLEME REZOLVATE

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

SEMINARUL 3. Cap. II Serii de numere reale. asociat seriei. (3n 5)(3n 2) + 1. (3n 2)(3n+1) (3n 2) (3n + 1) = a

Grafuri planare Colorarea grafurilor. Curs 12. Grafuri planare. Colorarea grafurilor. Polinoame cromatice. 23 decembrie 2016.

Câmp de probabilitate II

Probleme pentru clasa a XI-a

CURS VII-IX. Capitolul IV: Funcţii derivabile. Derivate şi diferenţiale. 1 Derivata unei funcţii. Interpretarea geometrică.

Criterii de comutativitate a grupurilor

Să se arate că n este număr par. Dan Nedeianu

3 FUNCTII CONTINUE Noţiuni teoretice şi rezultate fundamentale Spaţiul euclidian R p. Pentru p N *, p 2 fixat, se defineşte R

GEOMETRIE PLANĂ TEOREME IMPORTANTE ARII. bh lh 2. abc. abc. formula înălţimii

Proiectarea Algoritmilor 2. Scheme de algoritmi Divide & Impera

* K. toate K. circuitului. portile. Considerând această sumă pentru toate rezistoarele 2. = sl I K I K. toate rez. Pentru o bobină: U * toate I K K 1

Valori limită privind SO2, NOx şi emisiile de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili

Vectori liberi Produs scalar Produs vectorial Produsul mixt. 1 Vectori liberi. 2 Produs scalar. 3 Produs vectorial. 4 Produsul mixt.

Seminariile Capitolul IX. Integrale curbilinii

Algoritmica grafurilor XI. Cuplaje in grafuri. Masuri de calitate. Numere Ramsey

Concurs MATE-INFO UBB, 1 aprilie 2017 Proba scrisă la MATEMATICĂ

Asist. Dr. Oana Captarencu. otto/pn.html.

T R A I A N ( ) Trigonometrie. \ kπ; k. este periodică (perioada principală T * =π ), impară, nemărginită.

Teme de implementare in Matlab pentru Laboratorul de Metode Numerice

Subiecte Clasa a VIII-a

Problema a II - a (10 puncte) Diferite circuite electrice

Ecuatii trigonometrice

Metode de sortare. Se dau n numere întregi, elemente ale unui vector a. Se cere să se aranjeze elementele vectorului a în ordine crescătoare.

Subiecte Clasa a V-a

Transcript:

Logică și structuri discrete Complexitate și calculabilitate. Recapitulare Marius Minea marius@cs.upt.ro http://www.cs.upt.ro/~marius/curs/lsd/ 8 ianuarie 2018

Revenim la traversarea grafurilor Traversarea prin cuprindere pornind din nodul v 0 vizitează nodurile după distanță crescătoare de la v 0 Fie N k = mulțimea nodurilor cu drum de lungime k de la v 0 N 0 = {v 0 } N 1 = N 0 vecini(n 0 ) N 2 = N 1 vecini(n 1 )... doar nodul inițial nodul inițial și vecinii lui nodurile cu drum 1 și vecinii lor Fie f (S) = S vecini(s). Atunci N k+1 = f (N k )

Punctul fix x e punct fix pentru o funcție f dacă f (x) = x Dacă aplicăm funcția repetat: pentru un punct fix, nu se mai produce o transformare În cazul nostru, f (S) = S vecini(s), avem S f (S) repetând: S f (S) f (f (S))... Mulțimea nodurilor e finită, deci la un moment dat, șirul nu mai poate crește: n. f n (N 0 ) = f n+1 (N 0 ) am vizitat toate nodurile accesibile din v 0 Putem aplica parcurgerea până la punct fix și fără să construim explicit un graf, pentru stările / configurațiile oricărui sistem (mutări în jocuri, valori calculate în programe, etc.)

Complexitate și calculabilitate Scriind programe, ne punem întrebarea fundamentală: Dată fiind o problemă, se poate scrie un program care o rezolvă? Se poate scrie un antivirus perfect? (detectează toți virușii, fără alerte false) Se poate scrie compilatorul care generează codul optim? Dacă problema e rezolvabilă, ne întrebăm și: Cât de complexă e soluția?

Complexitatea algoritmică Efortul de rezolvare depinde (de regulă) de dimensiunea intrării: Căutare într-o listă neordonată (de lungime n) proporțională cu n (lungimea listei) Căutare într-un arbore binar de căutare (cu n noduri) proporțională cu înălțimea arborelui log 2 n dacă arborele e echilibrat Sortarea unui vector de n elemente proporțională cu n log 2 n pentru mergesort (sau quicksort, cu selecția corespunzătoare a medianei) O problemă are complexitatea O(f (n)) (litera O mare, big-o ) în exemplele date: O(n), O(log n), O(n log n) dacă există c > 0 astfel încât soluția ia c f (n) pași pentru n suficient de mare (n n 0 dependent de problemă)

Clasele de complexitate P și NP P = clasa problemelor care pot fi rezolvate în timp polinomial (relativ la dimensiunea problemei) NP = clasa problemelor pentru care o soluție poate fi verificată în timp polinomial Exemplu: realizabilitatea formulelor boolene O formulă cu n propoziții are 2 n atribuiri timp exponențial încercând toate O atribuire dată se verifică în timp liniar (în dimensiunea formulei) parcurgem formula o dată și obținem valoarea realizabilitatea e în NP dar nu se cunoaște un algoritm polinomial (din câte știm nu e în P) În general, a verifica o soluție e (mult) mai simplu decât a o găsi.

Probleme NP-complete Probleme NP-complete: cele mai dificile probleme din clasa NP dacă s-ar rezolva în timp polinomial, orice altă problemă din NP s-ar rezolva în timp polinomial ar fi P = NP (se crede P NP) Realizabilitatea (SAT) e prima problemă demonstrată a fi NP-completă (Cook, 1971). Sunt multe altele (21 probleme clasice: Karp 1972). problema colorării grafurilor (câte culori astfel ca noduri adiacente să fie de culori diferite?) problema rucsacului (selecție de obiecte de valoare maximă, cu greutate totală limitată) sumset-sum : într-o mulțime de întregi există o submulțime de sumă dată? Cum demonstrăm că o problemă e NP-completă (grea)? reducem o problemă cunoscută din NP la problema studiată dacă s-ar putea rezolva în timp polinomial problema nouă, atunci ar lua timp polinomial problema cunoscută

P = NP? Una din cele mai fundamentale probleme în informatică Se crede că P NP, dar nu s-a putut (încă) demonstra Imagine: http://en.wikipedia.org/wiki/file:p_np_np-complete_np-hard.svg

Ce se poate și nu se poate calcula? Revenim la întrebarea Dată fiind o problemă, se poate scrie un program care o rezolvă? Teorema lui Cantor: Nu există bijecție de la X la P(X ) X < P(X ) Care e legătura?

Programe și probleme Un program (în cod sursă) e un șir de caractere. deși nu orice șir de caractere e un program valid Notând cu Progs mulțimea programelor și Σ alfabetul caracterelor Progs Σ O clasă de probleme (sunt multe altele): Fiind dată o mulțime (finită sau nu) de șiruri S = {s 1, s 2,..., s n,...}, și un șir w, aparține el mulțimii date, w S? Mulțimea S ar putea fi dată: explicit, printr-o expresie regulată, un automat, o gramatică,... Orice mulțime de șiruri definește (cel puțin) o problemă P(Σ ) Probs Teorema lui Cantor ne spune atunci: Progs Σ < P(Σ ) Probs Nu putem asocia deci fiecărei probleme un program!

Limitările logicii Am văzut că nu se poate calcula orice. Însă, teoretic, se poate demonstra (sau infirma) orice afimație matematică?

Demonstrație (sintactică) și consecință logică (semantică) În logica predicatelor, numărul interpretărilor e infinit nu putem construi un tabel de adevăr pentru o formulă E esențial deci să putem demonstra (deduce) o formulă. Deducția H ϕ a formulei ϕ din ipotezele H e pur sintactică: un șir de formule, fiecare o axiomă sau o ipoteză sau rezultând printr-o regulă de inferență (modus ponens) din formule anterioare Consecința semantică/implicația logică e o noțiune semantică, considerând interpretări și valori de adevăr: Ipotezele H implică ϕ (H = ϕ) dacă pentru orice interpretare I, I = H implică I = ϕ (ϕ e adev. în orice interpretare care satisface toate ipotezele din H)

Consistență și completitudine Calculul predicatelor de ordinul I este consistent și complet (la fel ca și logica propozițională): H ϕ dacă și numai dacă H = ϕ Dar: relația de implicație logică e doar semidecidabilă dacă o formulă e o tautologie, ea poate fi demonstrată dar dacă nu e, încercarea de a o demonstra (sau o refuta) poate continua la nesfârșit

Teoremele de incompletitudine ale lui Gödel Prima teoremă de incompletitudine: Orice sistem logic consistent care poate exprima aritmetica elementară e incomplet i.e., se pot scrie afirmații care nu pot fi nici demonstrate nici infirmate în acel sistem în particular, se poate scrie o afirmație adevărată dar care nu poate fi demonstrată în acel sistem Demonstrație: codificând formule și demonstrații ca numere construim un număr care exprimă că formula sa e nedemonstrabilă A doua teoremă de incompletitudine: Consistența unui sistem logic capabil să exprime aritmetica elementară nu poate fi demonstrată în cadrul acelui sistem. dar ar putea fi demonstrabilă în alt sistem logic (mai bogat)

Calculabilitate Ce se poate calcula, și cum putem defini această noțiune? Teza Church-Turing o afirmație despre noțiunea de calculabilitate: următoarele modele de calcul sunt echivalente: lambda-calculul mașina Turing funcțiile recursive

Lambda-calcul Definit de Alonzo Church (1932); poate fi privit ca fiind cel mai simplu limbaj de programare O expresie în lambda-calcul e fie: o variabilă x o funcție λx. e (funcție de variabilă x) în ML: fun x -> e o evaluare de functie e 1 e 2 (funcția e 1 aplicată argumentului e 2 ) la fel în ML: f x fără paranteze Toate noțiunile fundamentale (numere naturale, booleni, perechi, decizie, recursivitate, etc.) pot fi exprimate în lambda-calcul.

Un alt model de calcul: automatul 0 s 0 start s 1 1 1 Automatul de mai sus calculează paritatea unui șir de 0 și 1 (care la rândul său, poate reprezenta un număr în binar) are un număr par sau impar de 1? Comportamentul e determinat complet de stare și intrare Automatul știe doar starea în care se află: are memorie finită Dacă are n stări, am putea reprezenta starea ca o valoare pe log 2 n biți 0 Cum reprezentăm însă un calculator, care (conceptual) nu are limită de memorie?

Mașina Turing Mașina Turing e compusă din: o bandă cu un număr infinit de celule; fiecare conține un simbol (banda poate fi infinită la unul/ambele capete, e echivalent) un cap de citire/scriere, controlat de un automat cu stări finite banda...... cap citire/scriere automat Automatul și conținutul benzii determină comportarea. După 1) starea curentă și 2) simbolul aflat sub cap, mașina: 1) trece în starea următoare, 2) scrie un (alt) simbol sub cap 3) mută capul la stânga sau la dreapta Inițial, banda are un șir finit de simboluri, capul e pe cel din stânga; restul celulelor conțin un simbol special (numit vid sau blanc).

Exemplu: numără simboluri și scrie numărul în binar... b b b b a a a a a a b... câți a sunt pe bandă? x/x -/-,L a/a,r even odd b/b,l a/x,r a/x,r b/b,l L -/-,L L b/0,r R -/-,R b/1,r b/b,r H -/-: nu modifică orice alt simbol x/x obține fiecare bit din numărul de a : schimbă a cu x din doi în doi : scrie 0 sau 1 după paritate repetă până nu mai sunt a: Halt bbbbaaaaaab bbbbxaxaxab bbb0xaxaxab bbb0xxxaxxb bb10xxxaxxb bb10xxxxxxb b110xxxxxxb b110xxxxxxb Halt

Mașina Turing descriere formală Formal, mașina Turing se descrie printr-un tuplu cu 7 elemente: Q: mulțimea stărilor automatului finit (de control) Σ: mulțimea finită a simbolurilor de intrare (din șirul inițial) Γ: mulțimea simbolurilor de pe bandă; Σ Γ δ : Q Γ Q Γ {l, r} : funcția de tranziție: dă starea următoare, simbolul cu care e înlocuit cel curent, și mutarea la stânga sau dreapta (în unele versiuni, echivalente, capul poate și rămâne pe loc) q 0 Q: starea inițială a automatului de control b Γ \ Σ: simbolul vid (blanc): toate celulele cu excepția unui număr finit sunt inițial vide F Q: mulțimea stărilor finale, automatul se oprește (halt) Poate descrie orice calcul (implementabil prin program) Nu există algoritm care să decidă pentru orice automat și intrare dacă se oprește (halting problem) la fel pentru programe

Calculabilitate și problema terminării (halting problem) În formularea pentru programe: Nu există algoritm (program) care ia un program arbitrar P și un set de date D și determină dacă P(D) (rularea lui P cu datele D) s-ar termina (opri) sau ar rula la infinit. Presupunem că ar exista un astfel de program CheckHalt(P, D). Deci, CheckHalt(X, X) spune ce face prog. X cu textul său ca date Construim un program imposibil care face opusul a ceea ce face! Întâi, definim programul Test(X) având ca intrare un program X : dacă CheckHalt(X, X) decide "halt", atunci ciclează la infinit dacă CheckHalt(X, X) decide "ciclează", atunci stop Deci CheckHalt(X, X) spune ce face X(X) iar Test(X) face opusul Se oprește Test(Test)? Răspunsul e dat de CheckHalt(Test,Test). dar Test(Test) (cu X=Test) face opusul lui CheckHalt(Test,Test) contradicție, deci nu poate exista CheckHalt!

Recapitulare: noțiuni de programare Funcțiile sunt valori ( first-class values ) care pot fi manipulate la fel ca orice alte valori: pot fi transmise ca argumente, returnate ca rezultate) În C: putem transmite / returna / atribui pointeri la funcții ex. funcția de comparare la qsort

Tipuri ML verifică static (la compilare) corectitudinea tipurilor elimină multe erori încă de la compilare Inferența de tipuri: tipurile nu trebuie precizate explicit, ele sunt deduse de compilator (din operațiile folosite) Polimorfism: funcții care pot opera pe familii de mai multe tipuri (liste, arbori, etc. de tipuri arbitrare)

Definirea de tipuri Tipuri compuse: produs cartezian: tuple (perechi, triplete) similar structurilor în C (și în ML, câmpurile pot avea nume) reuniune disjunctă: tipurile cu variante type a tree = L of a T of a tree * a * a tree Potrivirea de tipare mecanism puternic pentru lucrul cu tipuri compuse compilatorul verifică tratarea tuturor cazurilor

Gestiunea memoriei Funcțiile pot returna orice valori compuse Nu e necesară alocarea dinamică explicită și nici eliberarea memoriei gestionată automat la rulare ( garbage collection ) C distinge între valori obișnuite care pot fi returnate (întregi, reali, structuri) și valori reprezentate prin adresa lor de memorie (tablouri, șiruri, funcții,...)

Stilul funcțional vs. imperativ Funcțiile calculează valori. Întreg programul e o expresie Secvențierea e necesară/utilă doar pentru scriere la ieșire ATENȚIE! expr1; expr2; expr3 ignoră rezultatele primelor două expresii are sens doar dacă acestea tipăresc valori (și la citire, valoarea trebuie transmisă funcției de prelucrare)

Abstracția ML are module care separă interfața de implementare Avem funcții pentru mulțimi, asocieri, etc. fără a fi expuse detaliile de reprezentare Importantă în toate paradigmele de programare Exemplu: în matematică, o mulțime poate fi dată prin enumerarea elementelor printr-o proprietate: : interval de valori: [a, b] : constrângeri: x 5 y x 3 : funcția caracteristică / de membru în mulțime Algoritmii în probleme care lucrează cu mulțimi pot fi scriși independent de reprezentare!