1 / 39

13. Algoritmide keerukus

13. Algoritmide keerukus. Lahenduvad Ülesanded Mittelahenduvad. Lahenduvad ülesanded: Kui palju on vaja ressursse Aeg Mälumaht Mittelahenduvad ülesanded ei saa hakkama isegi siis, kui on võimalik kasutada piiramatult ressursse. Algoritmi keerukus

roman
Download Presentation

13. Algoritmide keerukus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 13. Algoritmide keerukus Lahenduvad Ülesanded Mittelahenduvad

  2. Lahenduvad ülesanded: • Kui palju on vaja ressursse • Aeg • Mälumaht • Mittelahenduvad ülesanded ei saa hakkama isegi siis, kui on võimalik kasutada piiramatult ressursse

  3. Algoritmi keerukus on funktsioon f, mis seab sisendi mahule n vastavusse • algoritmi sammude arvu (ajaline keerukus) või • kasutatava mälumahu (mahuline keerukus). • tähtis pole mitte sisendi väärtus, vaid sisendi pikkus

  4. Olgu M Turingi masin ja x mingi sisend. • Turingi masina M arvutusajaksT(M(x)) sisendilx nimetatakse masina M poolt sooritatud arvutussammudearvu kuni masina peatumiseni • Mahuks loetakse kasutatud lindipesade arvu

  5. Asümptootilised hinnangud Olgu f ja g naturaalarvulised funktsioonid.Funktsiooni f asümptootiline(ülemine) hinnang f(n) = O(g(n)) parajasti siis, kui leiduvad konstandid c > 0 ja N > 0, nii et iga n > Nkorral |f(n)|  c|g(n)|.

  6. Keerukushinnangute omadusi: • kkf = O(f) • Kui f = O(g) ja h = O(g), siis (f+h) = O(g) • Kui f = O(g) ja g = O(h), siis f = O(h) • nr = O(ns), kui 1 rs • Kui p on k-astme polünoom, siis p = O(nk) • Kui f = O(g) ja h = O(r), siis (fh) = O(gr) …

  7. (ajaline) keerukus halvimal juhul - W(n) maksimaalneoperatsioonide arv, mida tuleb täita sisendi mahu n korral • (ajaline) keerukus parimal juhul - B(n) minimaalneoperatsioonide arv, mida tuleb täita sisendi mahu n korral • keskmine (ajaline) keerukus - A(n) keskmineoperatsioonide arv, mida tuleb täita sisendi mahu n korral

  8. Keerukusklassid • Lineaarne keerukus Nt. naiivne otsingualgoritm • Logaritmiline keerukus Nt. binaarse otsingu algoritm

  9. Nimekiri Sammude arv 10 4 100 7 1000 10 1000000 20 1000000000 30 1018 60

  10. Ruutkeerukus Nt. sorteerimise naiivne algoritm • Polünomiaalne keerukus Nt. korrutamine • Eksponentsiaalne keerukus Nt. tegurdamine

  11. Ülempiir: efektiivne algoritm • Alampiir: tõestus, et parema ajaga algoritmi ei leidu • Kinnised probleemid: ülem- ja alampiir kattuvad • Nt. binaarne otsing ja sorteerimine • Sageli ei kattu

  12. Sisendi 10 20 50 100 pikkus n21/10000 1/2500 1/4001/100 sekundit sekundit sekundit sekundit n51/10 3,2 5,2 2,8 sekundit sekundit sekundit   tundi 2n1/100 1 35,7 üle 400 triljoni sekundit sekund aastat sajandi nn2,8 3,3 triljonit70-kohaline 185-kohaline tundi aastat arvsajandeid arvsajandeid

  13. Tabel kehtib juhul, kui arvuti kiirus on miljon käsku sekundis. • Kiiruse lisamine suurt midagi ei muuda: kui kiirus suureneks 1000 korda, siis peaksime suurendama sisendi pikkust 100-lt vaid 102-le, et jälle saavutada sama hinnang. • Suur Pauk oli ~15 miljardit aastat tagasi

  14. Sageli ei huvitagi meid täpne keerukus, vaid see, kas leidub ‘mõistlik’ algoritm ülesande lahendamiseks. • Tavapäraselt peetakse ‘mõistliku’ all silmas polünomiaalse ajaga töötavat algoritmi. Võrdle ka: • 2n ja n100, • n100 ja 1,001n.

  15. Klass P • selliste (otsustus)ülesannete klass, mis on lahendatavad polünomiaalse ajaga ühe lindiga deterministliku TM-ga (või võrdväärse arvutusmudeliga). • Otsustusülesanne: vastuseks antakse kas jah või ei. Peame otsustama, kas sisend rahuldab mingit omadust (kas omadus on lahenduv).

  16. Arvutusmudelid on polünomiaalselt seotud. Teoreem. Olgu t(n) > n. Iga mitme lindiga Turingi masinal ajalise keerukusega O(t(n)) töötava programmi jaoks leidub ekvivalentse funktsionaalsusega programmühe lindiga Turingi masinal, nii et tema ajaline keerukus on O(t2(n)). • Klassi P ülesanded on reaalselt arvutil lahendatavad.

  17. Klass NP • Selliste otsustusülesannete klass, mis on lahendatavad polünomiaalse ajaga mittedeterministliku Turingi masinaga. • Tegelikult saab klassi NP defineerida ka mittedeterministliku Turingi masinamõistet kasutamata. • Ülesanded, mis on polünomiaalse ajaga verifitseeritavad deterministliku Turingi masinaga

  18. Teoreem. Olgu t(n) > n . Iga ühe lindiga mittedeterministlikul Turingi masinal ajalisekeerukusega O(t(n)) töötava programmi jaoks leidub ekvivalentsefunktsionaalsusega programm ühe lindiga deterministlikul Turingi masinal,nii et tema ajaline keerukus on 2O(t(n)) .

  19. Ülesanne B on NP-täielik, kui • B NP • iga NP ülesanne A on polünomiaalselt taanduv B-le Polünomiaalselt taanduv – taanduvusfunktsioon kuulub klassi P. Teoreem. Kui B on NP-täielik ja B P siis P = NP. Teoreem. Kui B on NP-täielik ja B on polünomiaalselt taanduv C-ks, siis on ka CNP-täielik. 

  20. Väga paljud tavaelust pärit huvitavad ülesanded kuuluvad klassi NP • Rändkaupmehe ülesanne • Hamiltoni tee leidmine • Boole’i funktsiooni kehtestatavus • Tunniplaaniülesanne • Sobitamisülesanded

  21. P versus NP • pole suudetud näidata, et nad on kindlasti mittekäsitletavad. • Parimad alampiirid, mida on suudetud tõestada, on lineaarsed või ruutkeerukusega • pole suudetud välja mõelda ühtki mitte-eksponentsiaalset algoritmi. • Me ei tea, kus nad tegelikult asuvad. 

  22. Krüptograafia kasutab seda, et P ei ole NP. Teoreem. Kui PNP, siis leidub probleem L (NP\P)\NPC. (NPC – NP-täielike ülesannete klass) Teoreem.Iga NP-klassi otsinguülesande jaoks leiduvad polünoom Pr ja algoritm Ar, mis leiab lahendused alati, kui need eksisteerivad, ning iga sisendi x ja iga lahendusalgoritmi A korral time(Ar (x))  O(time (A(x)) + Pr(x)) kus time(A(x)) on algoritmi A tööaeg sisendil x.

  23. Klass PSPACE • Selliste otsustusülesannete klass, mille lahendamiseks on vaja polünomiaalse mälumahuga deterministlikku Turingi masinat. • PSPACE = NPSPACE • P  NP  PSPACE • PSPACE  EXPTIME  EXPSPACE

  24. Klass coNP • Ülesanne kuulub klassi coNP, kui tema täiend kuulub klassi NP • P NP, P  coNP • NP  coNP

  25. 14. Taanduvus. • Iga probleemi saab esitada kui probleemi täisarvude jaoks. • Probleem on lahenduv, kui vastav täisarvude hulk on rekursiivne. • Probleem on taanduv teisele, kui meetod teise lahendamiseks annab ka meetodi esimese lahendamiseks.

  26. Näide. Vaatleme kaht hulka: K = { xx(x) on määratud }ja { xWx on lõplik } Esimene hulk on taanduv teisele. Kontrollimaks, kas yK: • leiame y abil sellise z, mille korral z(w) =1, kui Py sisendil y ei ole määratud vähema arvu kui w sammuga määramata muidu • vaatame, kas Wzon lõplik

  27. Def. Hulk A on üks-ühele taanduv hulgale B (A1B), kui leidub selline bijektiivne rekursiivne funktsioon f, et x [xAf(x)B]. • Kasutame ka mõistet 1-taanduvus. Def. Hulk A on mitu-ühele taanduv hulgale B (AmB), kui leidub selline rekursiivne funktsioon f, et x [xAf(x)B]. • Kasutame ka mõistet m-taanduvus.

  28. Mõlemas definitsioonis võib tingimuse ümber sõnastada järgmistel viisidel: • A = f-1(B) • f(A) B & f(A)B • CA= CBf, kus CA ja CB on A ja B karakteristlikud funktsioonid.

  29. Teoreem 1. (a) 1 ja m on refleksiivsed ja transitiivsed, (b)A 1 B => A mB, (c)A 1 B => A1 B, (d)A mB => AmB, (e) [A mB & B on rekursiivne] => A on rekursiivne, (f) [A mB & B on rekursiivselt loenduv] => A on rekursiivselt loenduv.

  30. Järeldus. [A 1 B & B on rekursiivne] => A on rekursiivne, [A 1 B & B on rekursiivselt loenduv] => A on rekursiivselt loenduv. Def. A 1B, kui A 1 B ja B 1 A. AmB, kui A mB ja B mA. • Need on ekvivalentsiseosed ja vastavaid ekvivalentsiklasse nimetatakse 1-järkudeks ja m-järkudeks. • Iga järk, mis sisaldab rekursiivset hulka, koosneb ainult rekursiivsetest hulkadest, ja iga järk, mis sisaldab rekursiivselt loenduvat hulka, koosneb ainult rekursiivselt loenduvatest hulkadest.

  31. A join B= {y|[y = 2x & x A] või [y = 2x + 1 & x B]} Teoreem 2. (a) Leidub kaks mitterekursiivset hulka, mis pole m mõttes (ja seega ka 1 mõttes) võrreldavad. (b) m-taanduvuse järjestus on ülemine poolvõre, s.t. iga kaks järku omavad unikaalset vähimat ülemist tõket. Kahe rekursiivselt loenduva järgu vähim ülemine tõke on rekursiivselt loenduv. Järeldus. Tingimuse A mB kehtimisest ei järeldu alati A m B kehtimine.

  32. Paljudel juhtudel kehtivad mja 1 samaaegselt. Seepärast nimetatakse neid koos ka tugevateks taanduvusteks. Def. Hulk A on täielik1suhtes (A on 1-täielik), kui • A on rekursiivselt loenduv ja • B [B on rekursiivselt loenduv => B 1A]. Def. Hulk A on täielikmsuhtes (A on m-täielik), kui • A on rekursiivselt loenduv ja • B [B on rekursiivselt loenduv => B mA].

  33. Olgu K0= {‹x,y› xWy} Teoreem 3. K0 on 1-täielik. Teoreem 4. K on 1-täielik. Järeldus. K1K0. • Tegelikult langeb üks-ühele ekvivalentsi mõiste kokku rekursiivse isomorfismiga. Teoreem 5. AB A1B. Järeldus. KK0. Teoreem 6. A on m-täielik A on 1-täielik.

  34. Iga A ja B korral, A1B => AmB. Seega võib iga m-järku vaadelda kui kogumit ühest või rohkemast 1-järgust. M-järgu struktuuri saab 1-järkude kaudu ka täpsemalt iseloomustada. Def. Hulka A nimetatakse silindriks, kui A BN mingi B jaoks. Teoreem 7. (1)A1AN. (2) ANm A (ja seega Am AN). (3) A on silinder B [Bm A => B1A]. (4) Am B ANm BN. Järeldus. A on silinder AN 1A A  AN.

  35. 15. Produktiivsed ja kreatiivsed hulgad. Def. Hulka A nimetatakse produktiivseks, kui leidub selline osaline rekursiivne funktsioon , et x (WxA => (x) on määratud ja (x)AWx). Funktsiooni  nimetatakse produktiivseks osaliseks funktsiooniks hulga A jaoks. Def. Hulka A nimetatakse kreatiivseks, kui • A on rekursiivselt loenduv ja • A on produktiivne. Näiteks hulk K on kreatiivne ja tema täiend produktiivne.

  36. Teoreem 1. • Kui A on produktiivne, siis A ei ole rekursiivselt loenduv. • Kui A on produktiivne ja AmB, siis B on produktiivne. Järeldus. • Kui A on kreatiivne, siis A ei ole rekursiivne. • Kui A on kreatiivne ja AmB, siis B on produktiivne. • Kui A on m-täielik, siis A on kreatiivne.

  37. Kui A on produktiivne, siis on olemas efektiivne protseduur, mis A iga rekursiivselt loenduva alamhulga korral annab tulemuseks suurema A rekursiivselt loenduva alamhulga. Teoreem 2. Kui A on produktiivne, siis leidub sel lõpmatu rekursiivselt loenduv alamhulk. Järeldus. Kui A on produktiivne, leidub sel lõpmatu rekursiivne alamhulk. • Me võime produktiivse hulga jaoks alati leida ka totaalse produktiivse funktsiooni. Teoreem 3. Kui A on produktiivne, siis leidub selline totaalne rekursiivne funktsioon f, mis on hulga A produktiivseks funktsiooniks.

  38. Näide. • Korrektsed avaldised - teatav lõpmatu klass lõplikke sümbolijadasid, kus sümbolid kuuluvad teatavasse lõplikku tähestikku. • Saame efektiivselt kontrollida, millised avaldised on korrektsed. • Esmalt kodeeritakse korrektsed avaldised täisarvudeks. Kodeeringu kaudu võib seostada rekursiivselt invariantseid omadusi otse korrektsete avaldiste hulkadega. • Mingi loogilise süsteemi vaatlemisel on sageli teatav hulk avaldisi, mis eriti huvi pakuvad.

  39. Selliste korrektsete avaldiste hulka nimetatakse sageli teooriaks. • Kui teooriat (korrektsete avaldiste hulka) on võimalik efektiivselt üles lugeda, siis nimetatakse teooriat aksiomatiseeritavaks. • Gödeli “mittetäielikkus” : iga formaalse süsteemi, millel on teatav minimaalne keerukus ja mille jaoks “tõesuse” mõiste on teataval loomulikul viisil defineeritud, tõeste korrektsete avaldiste hulk on produktiivne. Seega ei moodusta sellise avaldiste hulk aksiomatiseeritavat teooriat. • Näiteks aritmeetika ei ole aksiomatiseeritav.

More Related