390 likes | 613 Views
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
E N D
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 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
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
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)|.
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 rs • Kui p on k-astme polünoom, siis p = O(nk) • Kui f = O(g) ja h = O(r), siis (fh) = O(gr) …
(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
Keerukusklassid • Lineaarne keerukus Nt. naiivne otsingualgoritm • Logaritmiline keerukus Nt. binaarse otsingu algoritm
Nimekiri Sammude arv 10 4 100 7 1000 10 1000000 20 1000000000 30 1018 60
Ruutkeerukus Nt. sorteerimise naiivne algoritm • Polünomiaalne keerukus Nt. korrutamine • Eksponentsiaalne keerukus Nt. tegurdamine
Ü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
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
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
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.
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).
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.
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
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)) .
Ü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.
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
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.
Krüptograafia kasutab seda, et P ei ole NP. Teoreem. Kui PNP, 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.
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
Klass coNP • Ülesanne kuulub klassi coNP, kui tema täiend kuulub klassi NP • P NP, P coNP • NP coNP
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.
Näide. Vaatleme kaht hulka: K = { xx(x) on määratud }ja { xWx on lõplik } Esimene hulk on taanduv teisele. Kontrollimaks, kas yK: • 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
Def. Hulk A on üks-ühele taanduv hulgale B (A1B), kui leidub selline bijektiivne rekursiivne funktsioon f, et x [xAf(x)B]. • Kasutame ka mõistet 1-taanduvus. Def. Hulk A on mitu-ühele taanduv hulgale B (AmB), kui leidub selline rekursiivne funktsioon f, et x [xAf(x)B]. • Kasutame ka mõistet m-taanduvus.
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.
Teoreem 1. (a) 1 ja m on refleksiivsed ja transitiivsed, (b)A 1 B => A mB, (c)A 1 B => A1 B, (d)A mB => AmB, (e) [A mB & B on rekursiivne] => A on rekursiivne, (f) [A mB & B on rekursiivselt loenduv] => A on rekursiivselt loenduv.
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. AmB, 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.
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.
Paljudel juhtudel kehtivad mja 1 samaaegselt. Seepärast nimetatakse neid koos ka tugevateks taanduvusteks. Def. Hulk A on täielik1suhtes (A on 1-täielik), kui • A on rekursiivselt loenduv ja • B [B on rekursiivselt loenduv => B 1A]. Def. Hulk A on täielikmsuhtes (A on m-täielik), kui • A on rekursiivselt loenduv ja • B [B on rekursiivselt loenduv => B mA].
Olgu K0= {‹x,y› xWy} Teoreem 3. K0 on 1-täielik. Teoreem 4. K on 1-täielik. Järeldus. K1K0. • Tegelikult langeb üks-ühele ekvivalentsi mõiste kokku rekursiivse isomorfismiga. Teoreem 5. AB A1B. Järeldus. KK0. Teoreem 6. A on m-täielik A on 1-täielik.
Iga A ja B korral, A1B => AmB. 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 BN mingi B jaoks. Teoreem 7. (1)A1AN. (2) ANm A (ja seega Am AN). (3) A on silinder B [Bm A => B1A]. (4) Am B ANm BN. Järeldus. A on silinder AN 1A A AN.
15. Produktiivsed ja kreatiivsed hulgad. Def. Hulka A nimetatakse produktiivseks, kui leidub selline osaline rekursiivne funktsioon , et x (WxA => (x) on määratud ja (x)AWx). 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.
Teoreem 1. • Kui A on produktiivne, siis A ei ole rekursiivselt loenduv. • Kui A on produktiivne ja AmB, siis B on produktiivne. Järeldus. • Kui A on kreatiivne, siis A ei ole rekursiivne. • Kui A on kreatiivne ja AmB, siis B on produktiivne. • Kui A on m-täielik, siis A on kreatiivne.
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.
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.
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.