Algoritmuselmélet jegyzet

Embed Size (px)

Citation preview

Algoritmuselmletelads jegyzetTartalomjegyzkBevezets.....................................................................................................................................5Errl a jegyzetrl....................................................................................................................5A tantrgyrl...........................................................................................................................5Ajnlott irodalom...................................................................................................................5A jegyzet ksztshez felhasznlt anyagok...........................................................................5Figyelmeztets........................................................................................................................5A ksztk elrhetsgei.........................................................................................................51. elads.....................................................................................................................................6A trgyrl rviden...................................................................................................................6Tmk................................................................................................................................6Algoritmusok..........................................................................................................................6A problmamegolds menete.............................................................................................6Algoritmus.........................................................................................................................6Hatkonysg......................................................................................................................6Futsi id...........................................................................................................................6Lpsszm illusztrci....................................................................................................6Id becslse........................................................................................................................6Nagysgrendek.......................................................................................................................7Szuperforrs keresse.............................................................................................................8G szomszdossgi mtrixa.................................................................................................82. elads.....................................................................................................................................9Elgazs s korltozs............................................................................................................9Rekurzv eljrs...............................................................................................................11Dinamikus programozs..................................................................................................11Htizsk problma................................................................................................................121. algoritmus....................................................................................................................122. algoritmus (dinamikus programozs)..........................................................................12Grfok megadsa..................................................................................................................13Szomszdossgi mtrix....................................................................................................13Slyozott szomszdossgi mtrix....................................................................................13llists megads...............................................................................................................14Pldk..............................................................................................................................143. elads...................................................................................................................................14Szlessgi bejrs.................................................................................................................14Lersa..............................................................................................................................14Lpsszm........................................................................................................................15Alkalmazsa (pldk)......................................................................................................15Legrvidebb (legkisebb sly) t keresse..........................................................................16Bellman-Ford algoritmus.................................................................................................17Brmely kt pont kzti legrvidebb t megkeresse.......................................................17Floyd algoritmus..............................................................................................................17Tranzitv lezrt keresse..................................................................................................184. elads...................................................................................................................................19Legrvidebb t keresse.......................................................................................................19Dijkstra-algoritmus..........................................................................................................19Adatszerkezetek (adatstruktrk).........................................................................................20Binris fa..........................................................................................................................20Kupac...............................................................................................................................20- 1 -Algoritmuselmletelads jegyzet5. elads...................................................................................................................................22Adatszerkezetek (adatstruktrk).........................................................................................22Kupac...............................................................................................................................22Keressi algoritmusok..........................................................................................................23Plda................................................................................................................................23Keress rendezett listkban..............................................................................................23Rendez algoritmusok..........................................................................................................24Beszrsos rendezs........................................................................................................24sszefsls.....................................................................................................................25sszefslses rendezs..................................................................................................256. elads...................................................................................................................................25Rendezsek...........................................................................................................................25Kupacos rendezs............................................................................................................25Bubork rendezs.............................................................................................................26Gyors rendezs (quicksort)..............................................................................................26Kulcs-manipulcis rendezs..........................................................................................27Lexikografikus rendezs..................................................................................................27Radix rendezs.................................................................................................................28Adatszerkezet.......................................................................................................................28Binris fa..........................................................................................................................28Binris keresfa....................................................................................................................29Lers...............................................................................................................................29Keresfa tulajdonsg.......................................................................................................29Keress.............................................................................................................................29Beszrs...........................................................................................................................297. elads...................................................................................................................................30Binris keresfa (folytats)...................................................................................................30Mveletek........................................................................................................................30Legkisebb elem keresse.................................................................................................30Legnagyobb elem keresse..............................................................................................30Elem trlse.....................................................................................................................30Tbb elem keresse..........................................................................................................31Piros-fekete fk.....................................................................................................................31Lers...............................................................................................................................31Mveletek........................................................................................................................32Gyakorlati megvalstsa.................................................................................................338. elads...................................................................................................................................332-3 fa.....................................................................................................................................33Lersa..............................................................................................................................33Mveletek........................................................................................................................33B-fa.......................................................................................................................................34Lersa..............................................................................................................................34Mveletek........................................................................................................................34Kls trak...........................................................................................................................36Hash.................................................................................................................................36Vdrs hash.....................................................................................................................36Nyitott cmzs hash........................................................................................................379. elads...................................................................................................................................37Kls trak (folytats)..........................................................................................................37Nyitott cmzs hash (folytats)......................................................................................37- 2 -Algoritmuselmletelads jegyzetHash fggvnyek..................................................................................................................39Elvrsok.........................................................................................................................39Megoldsok......................................................................................................................39Keress lpsszma.........................................................................................................40Nem egyenletes eloszls.......................................................................................................40Lineris keress...............................................................................................................40Grfok...................................................................................................................................41Mlysgi bejrs..............................................................................................................4110. elads.................................................................................................................................42Mlysgi bejrs (folytats).................................................................................................42Mlysgi feszterd........................................................................................................42Irnytott krmentes grfok..................................................................................................42Topologikus rendezs......................................................................................................43Legrvidebb t keresse..................................................................................................44Leghosszabb t keresse..................................................................................................44Grfok ers sszefggsge.................................................................................................45Ersen sszefggsg eldntse......................................................................................4511. elads.................................................................................................................................46Piros-kk algoritmus.............................................................................................................46Kk szably......................................................................................................................46Piros szably....................................................................................................................46Algoritmus.......................................................................................................................46Ttel.................................................................................................................................46Alkalmazs: (JARNIK-)PRIM algoritmus......................................................................48Borvka-algoritmus.........................................................................................................48Kruskal-algoritmus..........................................................................................................4812. elads.................................................................................................................................49Minimlis fesztfa...............................................................................................................49Bonyolultsg.........................................................................................................................50Plda................................................................................................................................50Dntsi problmk...............................................................................................................51Plda................................................................................................................................51Karp-redukci (polinomilis visszavezets).........................................................................52NP-teljessg bizonytsnak vza....................................................................................5313. elads.................................................................................................................................54Nhny NP-teljes problma..................................................................................................54Fggetlen pontok maximlis szma (MAXFTL)............................................................54Maximlis klikk mrete (MAXKLIKK)..........................................................................54Hamilton-kr (H).............................................................................................................55Hamilton-t (HT)..........................................................................................................55Adott vgpont Hamilton-t (H-s-t-T).........................................................................553 dimenzis hzastsi problma (3DH)..........................................................................55Pontos feds hrmasokkal (X3C)....................................................................................55Rszhalmazsszeg (RH)..................................................................................................55Partci (PARTCI).......................................................................................................55Htizsk (HTIZSK)....................................................................................................56Rszgrf izomorfija (RSZGRFIZO).........................................................................56Grf izomorfija (GRFIZO)..........................................................................................56Nyelvek............................................................................................................................5614. elads.................................................................................................................................56- 3 -Algoritmuselmletelads jegyzetLineris programozs...........................................................................................................56Algoritmusok...................................................................................................................56Egsz rtk programozs....................................................................................................57Ttel.................................................................................................................................57Pldk..............................................................................................................................57Tancsok nehz problmk esetre..................................................................................57Kzelt algoritmusok.....................................................................................................58Plda................................................................................................................................58Utaz gynk.......................................................................................................................58Dntsi vltozat...............................................................................................................58Ttel.................................................................................................................................58Bizonyts........................................................................................................................58Ttel.................................................................................................................................592. problma utazgynkre.............................................................................................59Euklideszi utazgynk.......................................................................................................592-kzelt algoritmus.......................................................................................................59Ldapakols..........................................................................................................................59Kzelt algoritmusok.....................................................................................................60- 4 -Algoritmuselmletelads jegyzetBevezetsErrl a jegyzetrlEz a jegyzet a 2009. tavaszi flv eladsainak anyagt tartalmazza.A mindenkori legfrissebb vltozat elrhet a BME-VIK Hallgati Tudsbzisa ltal hi-vatalosnak kikiltott jegyzetoldalon (jelenleg ez https://wiki.sch.bme.hu/bin/view/Info-alap/AlgEl ), ms oldalakra val feltltshez viszont az alkotk tudta s beleegyezse szksges.A tantrgyrlA tantrgy hivatalos adatlapjnak elrhetsge:http://cs.bme.hu/algelAjnlott irodalomTanknyv: Rnyai Lajos, Ivanyos Gbor, Szab Rka: Algoritmusok Feladatgyjtemny: A trgy honlapjrl letlthet.Szmos feladat s megoldsuknak javaslata a http://www.cs.bme.hu/~drotos/al-gel2009tavasz/ weboldalon is tallhat, Drtos Mrton gyakorlatvezet oldaln, illetve a mr emltett jegyzetoldalon is, hasznlati tmutatval egytt.A jegyzet ksztshez felhasznlt anyagokA jegyzet tlnyomrszt Dr. Friedl Katalin eladsainak anyagbl kszlt, helyenknt kibvtve az ott elhangzott magyarzatokat. Azokon a helyeken, ahol egy ttel, defin-ci vagy kplet helyessgben nem voltunk biztosak, az ajnlott irodalom rszt kpe-z tanknyvet hasznltuk az esetleges hibk javtshoz.FigyelmeztetsA jegyzet tartalmazhat hibkat a tbbszri ellenrzs ellenre is, nem jelenthet hivat-kozsi alapot szmonkrsekkel kapcsolatos reklamcikor. Elolvassa nem helyettes-ti az eladsokon s gyakorlatokon val rszvtelt, vagy az ajnlott irodalom alapos t-tanulmnyozst.A ksztk elrhetsgeiA tallt hibk javtsval, vagy brmely, a jegyzettel kapcsolatos gyben a ksztk el-rhetk e-mailben a kvetkez cmeken:Elekes Csaba: [email protected] Dvid: [email protected] Dvid[Hallgati Tudsbzis]Elekes Csabainfojegyzet.sch.bme.hu- 5 -Algoritmuselmletelads jegyzet1. eladsA trgyrl rvidenTmk algoritmusok adatszerkezetek nehz problmkAlgoritmusokA problmamegolds meneteVals problmk absztrakt modell algoritmus programAlgoritmusAz algoritmus egy hatkony eljrs egy feladat vagy problma megoldsra, melynek helyessge bizonythat.HatkonysgA hatkonysgot a futsi id s a memriaigny hatrozza meg.Futsi idA tnyleges id s a lpsszm sszege a bemenet hossznak fggvnyben.Lpsszm illusztrciA szmtgp 1010 lpsperc sebessg.A programnnagysg bemenetekref (n)darab mveletet hajt vgre. A tblzat a fu-tsi idt tartalmazza.Bemenet h. f (n)=nf (n)=n2f (n)=2nf (n)=n!n=101091081073,6104n=2021094108104>2vn=4041091,6107~2 percn=10010810621001010=(210)101010 10301010=102031013v(!)n=106104100n=109101108s(3v)Id becslseEgy program azn=20nagysg bemenetere a vlaszt 6 msodperc alatt szmolja ki. Meny-nyi id alatt szmolja ki azn=400nagysg bemenetre a vlaszt, ha rendre f (n) = n, n2, log n , 2n?- 6 -Algoritmuselmletelads jegyzetf (n) = n-400= 20 6s20= 620s=2 percf (n) = n2-4002=(2020)2= 202

6 s202=6202= 40 percf (n)=log( n)-log 400=log202=2log20 6s=2(6 s)=12sf (n) = 2n-2400=220

6 s2380=62380=6(210)38>6100038=610114s== 6107_~2v 1080_univerzumban lev rszecskk szma1027Nagysgrendekf, g : -Ord (nagy ord)f (n)=O( g( n)) , hac>0, n0>0, f ( n)cg (n) , n>n0Omegaf (n)=D( g (n)) , hac>0, n0>0, f ( n)cg (n) , n>n0Thetaf (n)=O( g (n)) , haf (n)=O( g( n))sf (n)=D( g (n)) , azaz c1,c2>0, n0>0, c1g(n)f (n)c2g (n) , n>n0Pldaf (n)=3 n2100n+6f (n)=?O(n2) 3n2100n+6c n2 ha n>n0han>100 ,f (n)>0 , teht az abszolt rtk elhagyhat.3n2100n+6cn2hac=3mr biztos, hogy teljeslTeht c=3n0=100 j lesz, vagyis a kifejezs valbanO( n2)f (n)=?O(n3)igen, mertf (n)=O(n2)s3n23n3, c=3, n0=100f (n)=?O(n)3n2100n+6cn (n100)3n2(100+c) n+60 Nem teljesl minden n>n0-ra,hiszen a parabola fell nyitott, valahol mindenkpp tlpi az x tengelytf (n)=?D( n2)3n2100n+6c n2 2 n2c=2, n0=100 j lesz, teht valbanO(n2) -esf (n)=?D( n) Ez is teljesl.- 7 -Algoritmuselmletelads jegyzetf (n)=O( n2) Igaz, a legnagyobb nagysgrend tag hatrozza meg.loga n=O(log2n)Ezrt ezentl mindig kettes alap logaritmust hasznlunk.Szuperforrs keresseLegyenG=(V , E)huroklmentes irnytott grfforrs:sV : egy cscsbl se megy bele lszuperforrs:sV : forrs s cscsba megy belle lA feladat teht az, hogy talljuk meg a szuperforrst, ha ltezik, vagy nem ltezsnek bizonytsa.MegjegyzsEgy grfban legfeljebb egy szuperforrs lehet.G szomszdossgi mtrixa(i , j ) :i -blj -be vezet lek szmalps: A| i , j =?, vagyis van-e i-bl j-be l.a) pontra ellenrizzk, hogy szuperforrs-eEgy pont ellenrzse2n2lps (az tl kihagy-hat) cscsran(2n2)=2n22n=O(n2)b) (i , j )E jnem j(i , j )Einem jVagyis minden lpsben egy cscsot ki tudunk zrni.Az algoritmus:i=1, j=u V =1, 2,3, ... , nAmgi jhaA| i , j 0 j ;haA| i , j =0 i++;Ha van szuperforrs, akkor az csakilehet ellenrizzk, hogy valban az-e.Lpsszm: n1_keress+2n2_ellenrzs=3n3=O(n). algoritmus hasznl legalbb2n2lpst (1 pont ellenrzse).JelljeT ( n)a legjobb algoritmus lpsszmt.T ( n)2n2T ( n)3n3jobb als becsls: brmely algoritmusn2lps utn 2 jelltet hagy:i -t sj -t. - 8 -0000i 0000jji000000001 1 1 1 1 1 1Algoritmuselmletelads jegyzet-reannyi lps kell, amit mg nem tudtunk. Mindre maximum n22 krds vonatkozott. Ha a szuperforrs az, amelyikre a kevesebb krds vonatkozott, 2n2n22 lps kell mg.T ( n)n2+2n2n22=2,5n32. eladsElgazs s korltozsPldaG=(V , E)Egyszer s irnytatlan grffeladat: maximlis fggetlen ponthalmaz meghatrozsa (fggetlen pontok kztt nem megy l).1. algoritmus: ponthalmazt kiprblunk 2n lehetsg2. algoritmus:MF(G) : REKURZV algoritmus, meghatrozza a legnagyobb fggetlen ponthalmazt aGgrfban.Az algoritmus inputja, aGgrf ktfle lehet: minden pont foka0 egszFeladat: Kivlasztani a trgyak egyI =1... mrszhalmazt gy, hogy j I sjb; j I vj maximlisPldam=3slyok:2, 2, 3 ,b=4 ; rtkek:4, 4,7 .Moh pakols:I =3; v=7Gondolkods:I =1, 2v=81. algoritmusI-t kiprblunk, a lehetsgek szma2n.2. algoritmus (dinamikus programozs)Tblzat:1 2 ... a b1 0 0 ... 0 v1... v1234...imT | i , a : 1, 2,... ,i trgyak kzl max. rtk; slykorlt: aKell:T | m , bT | 1, a =0,has1>av1, has1aA tblzat inicializlsa: az els sor kitltse. Ha az els slynl kisebb a slykorlt, nem tehet-jk bele, az rtk 0, ha nagyobb vagy egyenl, beletesszk a htizskba, az rtk pedigv1.i>1: T | i , a=T | i1, a , si>amax (T | i1, a_i.nincs, vi+T|i 1, asi_benne van-sly cskken rtk n)T | i , amez kitltse: azi.slyt akkor tesszk bele, ha n az rtk, klnben az elz rtk marad (lemsoljuk a fltte lev mezt). A kplet azrt j, mert azt tudjuk, hogy az elz sorban az asi sly elem a lehet legnagyobb sszrtk slyokat - 12 -Algoritmuselmletelads jegyzettartalmazta, a kitlts ott optimlis volt. Ha ehhez hozzadjuk vi-t, s nagyobb rtket kapunk, mint si nlkl, akkor ezzel nveltk a htizsk rtkt (a lehet legnagyobb mrtkben), kitlts tovbbra is optimlis.A fenti kplet alapjn fentrl lefel, balrl jobbra sorban kitltjk a tblzat cellit. Lpsszm: Egy elem kitltseO(1)-konstans lps, az egsz tblzat kitltse pe-digmbO(1)=O(mb) .Bemenetek: s1 ,., sn, v1,.vn , bhossza:log( s1+1)+...+log( sn+1)+log (v1+1)+...+log (vn+1)+log (+1)O( mb) log (b+1) -ben exponencilis (bemenetek hossza > m) nem polinomi-lis nem szeretjk, de kicsi b-nl gyors az algoritmus.Megolds1 2 3 41 0 4 4 42 0 4 4 83 0 4 7 8Grfok megadsaG=(V , E) ; V =1... nSzomszdossgi mtrixA(i , j ) : Az i-bl j-be men lek szma. (egyszer grfban 0 vagy 1).Irnytatlan grfban a ftlra szimmetrikus.Slyozott szomszdossgi mtrixSlyozott grf:c: Eslyfggvny.Egyszer grf: A| i , j =c(ij )ha (i , j )E0, ha(i , j )E, vagy A| i , j =c(ij ), ha(i , j )E0hai= j*vagy , ha(i , j )EA gyakorlatban a*rtke egy j nagy szm, nagyobb, mint az elfordul legnagyobb lsly.- 13 -innjA(i,j)Algoritmuselmletelads jegyzetllists megadsi-bl kimen lek lncolt listbantvolsg: l msik vge + slyMreteszomszdossgi mtrix: n2 bitszmllista:O( n+e)vagy irnytatlan esetbenO( n+2e) , de mivel n+2e2n+2e=2( n+e)O(n+e)Pldkmtrix llista(i , j )?E1 lps i fokszma db. lps(i listjn vgig)1 db. i-bl kimen l n lpsi sorn megy vgig1G leinek szma O(n2)lpsG-n vgigO(n+e)egsz struktrnizollt pont keress O(n2) n3. eladsSzlessgi bejrsLersaG=(V , E)angol neve: Breadth First Search = BFSkiindulpontja:vV .bejrva| v=igazListaL=( v) FIFO listaamg L nem resx=L| 1(L els eleme);L -bl trljk.( x , y)E -re habejrva| yhamis, akkorbejrva | y -t igazz tesszk.y-t L vgre rakjuk.Ha nem cscsot jrhatunk be, vlaszthatunk egy tetszleges nem bejrt cscsot s onnan folytathatjuk.- 14 -......1.........nAlgoritmuselmletelads jegyzetAz algoritmus tulajdonkppen bejrja avcscsot, ezutn sorra az sszes bejratlan szomszdjt, s kzben fel is jegyzi ket azLlistban. Havszomszdait mr mind bejrtuk, akkor ugyanezt ismteljkvelszr, majd msodszor, ... bejrt szomszdjai-ra.ha irnytott: irnytott t:ha j helyrl kezdjk, bejrja, ha nem, nem hatkony.(termszetesen fordtott sorrendben is megprblhatjuk bejrni ugyanezt gr-fot, s ekkor a feszterd izollt pontok halmaza lesz)A bejrs sorn keletkezik a szlessgi feszterd.Lpsszmllists megads cscs egyszer kerl a listba, minden let egyszer nznk meg (irnytott esetben), teht a lpsszmO( n+e) , aholn=V ,e=E . Irnytatlan esetben minden let ktszer nznk meg, ekkor a lpsszmO( n+2e)=O(n+e)Mtrixosx-bl kiindul lek megnzsenO(n2)Alkalmazsa (pldk)1. G irnytatlan grf sszefgg-e?tetszlegesvV -bl ha a bejrs sorn cscsot elrnk, akkor sszefgg,el-lenkez esetben nem.O( n+e)llists megadsnl2. G irnytatlan, pros grf sszefgg komponensei?BFS szlessgi feszterd fi az sszefgg komponensek.O( n+e)3.Girnytatlan grf pros grf-e?BFS, kiindulunkAcscshalmazbl, bejrjuk az sszes szomszdosBcscsot, s gy tovbb BFS mentn. Az algoritmus egy hangynyit mdostani kell, ugyanis a nem bejrt cscsokat is vizsglni kell.Ha ellentmondsba kerlnk, vagyis egy mr bejrt cscsba ismt eljutunk, de most a msik halmazba kerlne, mint az elbb, ak-kor a grf nem pros.- 15 -lehet123456Algoritmuselmletelads jegyzet4.Girnytatlan pros grfban maximlis prosts keresse(a maximlis prosts a legnagyobb szmossg fggetlen lhalmaz)Algoritmus (magyar mdszer) Keresnk egy egyszer, knnyen megtallhat p-rostst (akr res prostst). Szlessgi feszterdt indtunk az sszesA -beli prostatlan cscsbl. IttA -blB -be csak a pros-tatlan leken haladhatunk. Az gy elrtB -beli cscsokbl a prostsbelileken visszamegynkA -ba A prostatlan leken ismt elmegynkB -be...Ezt addig folytatjuk, mg tallunk olyanB -beli pontot tallunk, amibl nem tudunk prostott len tovbbmenni. Ekkor az tban tbb a prostatlan, mint a prostott l, ezeket felcserlve kapjuk meg a javtutat.Az algoritmus addig fut, mg van olyanB -beli pont, ahol elakadunk. Ha nem B -ben akadunk el, hanemA -ban, akkor nincs tbb javtt.Lpsszm:bejrs:O(n+e)prosts: n2 cscsO( n( n+e))HaGsszefgg, akkoren1O(n+e)=O(e) , s gy a prosts lpsszma O( ne) .Az algoritmuson lehet mg javtani, lehetO(.ne)is.Tetszleges nem pros grfra is O(.ne)algoritmus a maximlis prosts meg-tallshoz.Maximlis sly prosts is ltezik,O( ne+n2log n)lpsszmmal.5.Ggrfvcscsbl minimum hny len t rjk el a tbbit?BFS elrt cscsnl letroljuk, hogy hnyadik lpsben rtk el (a bejrson be-ll).Legrvidebb (legkisebb sly) t keressePldaG=(V , E) ,c: E- slyfggvnyt slya (hossza): lslyok sszegen-111 kr a hromszgn-82 kr a hromszgn-5Konklzi- 16 -vv3 5 2 1-10 BABA-beli prostatlan cscsokProstatlan lekProstsbeli lekProstatlan lekAlgoritmuselmletelads jegyzetNincs legkisebb sly t! Ennek oka a negatv sly l, pontosabban a negatv sly kr.Ha nincs negatv sly kr, elg utakat keresni, clunk a legrvidebb (legkisebb sly) t keresse.A minimlis lszm t nem felttlenl a legjobb a moh algoritmus se j.Bellman-Ford algoritmusEz az algoritmus egy rgztett cscsbl az sszes tbbi-be meghatrozza a legkisebb sly/legrvidebb utat.Megjegyzs: a legrvidebb t ezentl a legkisebb sly utat jelenti.v=(1... n) , a rgztett cscs az 1.T | a ,i : 1-bl i-be men max. a darab lt tartalmaz utak kzl a legrvidebb hossza.T | 1,i =c(1, i )(1,i )l slyac(i , j )=0, i =jc(i , j ) ,(i , j )E,(i , j )E j=1, ... , n j iT | a ,i =minT | a1, i , T | a1, j +c| j , i Teht mindenT | a , i mez kitltsnl megvizsgljuk, hogy melyiknek kisebb a s-lya: az eggyel rvidebb, mr meghatrozott sly tnak ( T | a1, i ), vagy pedig vala-melyikahossz tnak, ami kt rszbl tevdik ssze: egya1hossz, 1. sj.cscs kztti tbl s aj.si.cscs kztti lbl. 1-bl i-be men legkisebb sly t slya:T | n1, i Lpsszmn(n1)_atblzat mezinek szma( n1)_min. keress=O( n3)MegjegyzsekA tblzatban csak az elz s az aktulis sort kell trolni (elg csak2nhely)A legrvidebb t megtallshoz elg elrakni azt a j-t, amire a minimumot kapjuk (utols eltti pontja az tnak)Brmely kt pont kzti legrvidebb t megkeresseEzt megtehetjk gy, hogy minden pontra meghvjuk a Bellman-Ford algoritmust. Ek-kort =nO( n3)=O(n4) . Azonban a feladatot ennl hatkonyabban is meg tudjuk ol-dani, a Floyd algoritmus alkalmazsval.Floyd algoritmusF[i,j] = C[i,j];(i , j V )for (k = 1 to n) {for (i = 1 to n) {- 17 -ann-1iT[a,i])11cscsoklekAlgoritmuselmletelads jegyzetfor(j = 1 to n) {F[i,j] = min(F[i,j], F[i,k] + F[k,j]);}}};A vgnF |i , j az i-bl j-be men legrvidebb t hossza lesz.Az algoritmus gy mkdik, hogy minden lpsben ( kitercija) jra kitlti a tbl-zatot gy. EkkorF |i , j egy olyanijt hossza, aminek bels pontjai az1...kcscsok kzl kerlnek ki.Lemmak-ra:F |i , j az i-bl j-be men legrvidebb olyan t hossza, amelynek bels pontjai1... k .Ebbl az lltsk=n -re teljesl (minden pont lehet bels).Bizonytsteljes indukcival:k=1 -re:ltalnos k-ra:legjobb1... kbels pont lsorozat.- van ilyen sly t is (nincs negatv kr)nem lesz vgtelen ciklus.LpsszmO( n3)MegjegyzsEz a kt algoritmus hasznlhat llistban is, ekkor azonban a lpsszmok a fentiektl eltrek.Tranzitv lezrt keresseG(V , E)tranzitv lezrtjaG' (V , E' )E ' :(i , j )E'haG -ben van i-bl j-be irnytott t.A tranzitv lezrt keressre egy mdostott Floyd-algoritmust hasznlunk, a Warshall-algoritmust. - 18 -F[i,1]i j1F[i,j]F[1,j]i jkF[i,j]1...(k-1)1...(k-1)1...(k-1)Algoritmuselmletelads jegyzetKezdetbenW|i , j = igaz, ha(i , j )E , ellenkez esetben pedig hamis.Itt a ciklusok belsejben aW| i , j =W| i , j || (W| i , k &&W| k , j )kplet ll.Az algoritmus lpsszmaO( n3) .4. eladsLegrvidebb t keresseDijkstra-algoritmusAlgoritmus lersaG( v , e) c: E-cminden lre nemnegatv:e -rec(e)0 .sa kezdpont;s -bl a tbbibe viv legrvidebb t megtallsra szolgl.Dtmb,cscsra trolja az aktulis legrvidebb utat.KezdetbenD( v)=c( s , v) ( s , v)l slyaKSZhalmaz;KezdetbenKSZ=s ,amgKSZVLegyenxaDtmb legkisebb eleme, ami mg nincs benne aKSZtmbben.KSZ=KSZxD| w :=min( D| w , D| x+c( x , w)) , wKSZPldas a b c d KSZ=sD 0 4 3 KSZ=s , d 0 4 6 8 3 KSZ=s , d , a0 4 5 8 3 KSZ=s , d , a ,b0 4 5 8 3 KSZ=s , d , a ,b , c=VlltsAz algoritmus vgnD| xazs -blx -be vezet legrvidebb t hossza, mindenx -re (azaz az algoritmus j).Bizonytsd ( x)legyen azs -blx -be vezet legrvidebb t hossza.Tegyk fel, hogyx , hogyd ( x)D| x .Legyenxaz elsnek kzbekerl ilyen cscs.Vegynks -blx -be egy legrvidebb utat. Amikor elszr elhagyja aKSZ -t, yKSZ , zKSZ .Ekkor D| x>d ( x)_indirekt feltevsc0d ( y)+c( y , z) =xaz1.rosszD| y+c( y , z ) algoritmusD| zD| x>D| z. - 19 -d534cb as1234Algoritmuselmletelads jegyzetEkkor az algoritmus nem vlaszthatjax -et aKSZ -be (mert mindenkppen a kiseb-bet vlasztja), ezzel valban igazoltuk lltsunkat.LpsszmO(n)_kezdeti rtk+(n1)( n1_min. szm.+konstans_frissts( n1))=O(n2).Adatszerkezetek (adatstruktrk)adattpus, mveletek valamint a megvalstsukPldaLista: azonos tpus adatok;mveletek: els, elz, kvetkez, utolsmegvalsts: a hasznlat szempontjbl lnyegtelen, hogy tmbbel, vagy(ktirny) lncolt listval tesszk-e.Binris faMinden cscsnak maximum kt szomszdja lehet a kvetkez szinten (a bal s a jobb fia) s a gykr kivtelvel egy szomszdja van az elz szinten, a szlje. Amelyik cscsnak nincs fia, azt levlnek nevezzk.Teljes binris fa0,1 ,., l 1.szinten minden cscs megvan, azl . szinten az utols (jobb szls) cscsok kzl hinyozhatnak.MegvalstsaLehet mutatkkal (pointerekkel), vagy tmbbel:A| i bal fiaA| 2i , jobb fiaA| 2i +1 , apja pedig Ai2.KupacMveletekbeszrmintr: minimlis elemet visszaadja, s trli.kupacpts: adott elemeket kupacba rendezi.FeltevsCsupa klnbz elemet trolunk teljes binris fban, melyben az elemek a cscsok.KupactulajdonsgMindenxcscsra kisebb azx -beli elem, mint a fiaiban lev elem. min. elem a gykrben.A szintek szma:l . Azi . szinten(il ) 2i cscs tallhat.lszint teljes binris fban1+2+22+.+2l 1+1n1+2+22+.+2l2ln2l +11- 20 -1..l-1l3128141015Algoritmuselmletelads jegyzetl = log n ha egy kupacbanndb elemet trolunk, akkor ennekO(log n)szintje van.BeszrAz j elem ltrehozsa (ha mg van hely a legals sorban, akkor oda szrjuk be, az els res helyre, ha nincs, akkor az j sor bal szlre.).Ha az apja nagyobb, mint az j elem, akkor kicserljk vele. Addig ismteljk ezt a mveletet, mg az j elem az aktulis helyn kisebb lesz az apjnl, vagy a gykrbe jut.Lpsszm:O( logn) , aholna cscsok szma.MintrA legkisebb elem trlse.Trljk a gykeret. ezutn a gykrbe betesszk a legutols elemet. A gykeret cse-rljk a kisebbik fival, s ha ezutn is srl a kupactulajdonsg, akkor addig cserlget-jk a kisebbik fival, amg helyre nem ll.Lpsszm:O( logn)KupacptsA legegyszerbb mdszer a megvalstsra a sorozatosBESZR . EzO( nlog n)(van olyan eset, hogy cnlog n ).Egy ennl lnyegesen gyorsabb algoritmust szoktunk alkalmazni:Alulrl fel, jobbrl balra haladva a rszft kupacc tesszk, gy, mint aMINTR -ben (a szlt kicserljk a kisebbik fival). Szintenknt flfele haladunk, amikor elrjk a gy-keret, az algoritmus vget r.Lpsszm2 sszehasonlts s legfeljebb 1 csere.Cserk szma:i.szinten2i cscs tallhat, mindenre maximuml icsere fordul el (a szlbeli elemet le kell vinni a legaljra, ezl idarab szint).sszesen teht:i=0l 12i(l i )=1+1+.+1_l+2+2+.+2_l1+4+4+.+4_l2+.+2l 1= (1+2+4+.+2( l1)_geometriai sor , q=2)+(1+2+4+.+2( l2))+.+(1+2)+1= (2l1)+(2l 11)+.+( 41)+(21)= 2l+11(l +1)=2l +1l 22l +1=22l2nO(n)FogyasztTovbbi mvelet aFOGYASZT ( x , a) , mely a kupacban azxhelyen lv elemeta -ra cserli(ax) , s utna helyrelltja a kupactulajdonsgot. (a mveletet bvebben az 5. elads anyaga tartalmazza).- 21 -Algoritmuselmletelads jegyzet5. eladsAdatszerkezetek (adatstruktrk)KupacFogyasztEgyxelemet cskkent, utna visszalltja a kupactulajdonsgokat. Problmt okoz-hat, haxkisebb, mint az apja, ekkor megcserljk az apjval, s ezt folytatjuk, amg a kupactulajdonsg helyre nem ll. A lpsszmszintszm, az algoritmusO( log n) .Max-kupacAz eddig trgyalt kupacok binris min-kupacok voltak. Azonban lteznek egyb ku-pacfajtk is, mint a max-kupac, ahol az apa > fia relci rvnyesl az elemek kztt (aMINTRmvelet helyett pedigMAXTRvan).D-kupacA d-kupac egy teljes fa, ahol minden cscsnakddarab fia van azl 1.szintig, kiv-ve az utols nem levl cscsot.Kupactulajdonsg: apa < fiaSzintszm: O(logdn)BESZR : O( logdn)MINTR : O( dlogd n)KUPACPTS :O( n)FOGYASZT : O( logdn)Plda:d =.n , logd n=2BESZR: O(1) ,MINTR: O(.n)( drtke aszerint vlasztand, hogy melyik mveletet csinljuk gyakran)Dijkstra-algoritmusD| rtkeket kupacban tartjuk (binris, minimum kupac).A kupacon vgrehajtjuk aKUPACPTSmveletet.xelemet kivlasztjuk, vgrehajtjuk aMINTRmveletet.D| wfrisstse:FOGYASZTwKSZs( x , w)E .Lpsszm (ha G llistval adott):O(n)_kezd. rtKUPACPTS+(n1)O(log n)_MINTR+x (( x -bl kimen lek szma)O(log n)_FOGYASZT)= O( n)+O( nlog n)+O( e_lszmlog n)=O((n+e)log n)Lpsszm (d-kupaccal):O( n)+( n1)O( dlogd n)+eO(logd n)=O(( nd +e)logd n)dlegyen en (az irnytott grf tlagos fokszma) ndO(elogd n)- 22 -Algoritmuselmletelads jegyzetHa pldulen.n d .n logd n2O( e)lesz az algoritmus, teht sok l esetn j.Megjegyzs:olyan algoritmus, amelyregrfra a lpsszmO( e+nlog n) , de ehhez ms adatszerkezet kell.Keressi algoritmusokPldaa1,a2,.an elemek adottak, valamint abelem.KrdsVan-e olyani , hogy b=ai?MegoldsA f lekrdezsnk ab=?ai lesz, s hai=1 -tli=n -ig ai-re vgrehajtjuk a lekr-dezst, akkorO( n)lpsben megoldjuk a feladatot.Keress rendezett listkbanRendezett listaa1a2.anKrds:bszerepel-e a listban?Lps: b?ai, ebbl megtudjuk, hogy b kisebb-e, vagy nagyobb-e a-nl, vagy azt, hogy egyenl-e vele.Lineris keressfor i = 1 to nb?a[i];Az algoritmus akkor r vget, ha b=ai, vagy ha b>ai (mert ekkor b nincs a listn).A lpsszm ezrtO( n) .Binris (felezses) keressb?an2ha egyenl, akkor megvan a keresett a,ha kisebb, akkor a1.an2 kztt folytatjuk a keresst (ugyangy)ha nagyobb, akkor an2+1.an kztt folytatjuk.O( log n)lpsben vgrehajthat a keress, mert minden lpsben felezzk a halmaz mrett, melyben vizsgldunk A lpsszm log n+1(A+1a megmaradt egy darab elem sszehasonltsab -vel).- 23 -Algoritmuselmletelads jegyzetTtelA binris keress az adott felttelekkel optimlis.BizonytsTetszleges algoritmusraA ttelt gy bizonytjuk be, hogy megmutatjuk, tetszleges ms algoritmusra van olyan eset, ami-kor a keress tovbb tart, mint a binris keress leghosszabb esete.Barchobzzunk, vagyis az ellenfl kitall egybszmot, s mi a lehet legkevesebb krdsbl r szeretnnk jnni, hogy mi ab . Egy krds: b?ai (a krdjel mvelet eredmnye a relcik kzl az egyik).Ellenfelnk trkkos, s azt szeretn, hogy a jtk minl tovbb tartson. Ezrt nem tall ki elre egybszmot, hanem mindig gy vlaszol, hogy a lehetsges aj-k kzl abmindig a nagyobb halmazban legyen. gy brmilyen algoritmussal egy krdsben leg-feljebb felre cskkenthetjk a megmarad lehetsgek szmt, vagyisnelem esetn legalbblog nkrdsre van szksgnk, hogy csak egy elem maradjon. Teht a bin-ris keress optimlis.MegjegyzsEz a keress tmbkben j, lncolt listkhoz lineris keresst kell alkalmaznunk.Interpolcis keressAkkor, ha tudjuk, hogy hol van ab akrl keresnk.Rendez algoritmusoka1.an klnbz nvekv sort akarunk kszteni belle.Beszrsos rendezs Minden k=1,2 ,., n1 -re: ha az elskelem mr rendezett, ak+1 -ediket beszrjuk kzjk a helyre.Ak+1.elem helynek keresse:Lineris keressselAz sszehasonltsok szma:1+2+.+n1=n(n1)2Binris keressselAz sszehasonltsok szma: k =1n1log k+1(n1)k=1n1log k= =n1+log(n1)!n+n(log n1,442)=n(log n0,442)=O( nlog n)Mozgatsok szma- 24 -a1aianb < aib > aiAlgoritmuselmletelads jegyzet1+2+.+n1=n(n1)2Trolk sszehasonltsaTmbben trolva az adatokat az sszehasonltsokatO( nlog n)lpsben tudjuk elv-gezni, a mozgatsokat pedigO( n2)lpsben.Lncolt lists trols esetn az sszehasonltsokatO( n2)lpsben tudjuk elvgezni, mg a mozgatsokatO( n)lpsben.sszefslsLersb0b1.br 1c0c1.cs1csupa klnbz -d0d1.ds+r 1d0=min(b0,c0)i=0 ,j =0 ,ha bicj akkor di + j=bj, s i++ha bi>cj akkor di + j=cj s j++Az algoritmus vget r, hai=rsj =s .sszehasonltsok szmas+r 1darab sszehasonltst vgznk.sszefslses rendezsLersA kt tartomny: a1.an2, an2+1.an Ezeket kln-kln rendezzk, majd a kettt sszefsljk.sszehasonltsok szmaSzintenkntndarab sszehasonltst vgznk el,log nszint tallhat O( nlog n) .Mozgatsok szmaSzintenkntn , sszesenO( nlog n)darab.LpsszmAz algoritmus lpsszma tehtO( nlog n) .6. eladsRendezsekKupacos rendezsKUPACPTS , MINTR, MINTR, ._nO( n)+nO(log n)=O(nlog n)- 25 -Algoritmuselmletelads jegyzetBubork rendezsj =n1 ,.,1i=1, ., jHa ai+1ai akkor ai+1aisszehasonltsok szma(n1)+(n2)+.+1=n(n1)2=O(n2)A cserk szma az sszehasonltsok szmalltsA buborkrendezs rendez.Bizonytsj =n1vgn a legnagyobb elem lesz az an ehhez tbbet nem nylunkj =n2vgn a legnagyobb elem lesz az an1 szintn a helyre kerlt.j =1vgn azn1.legnagyobb elem az a2 lesz, teht a1 csak a legkisebb elem lehet.Gyors rendezs (quicksort)LersaVlasztunk egy s=ai vletlen elemet. Ezutns -tl jobbra s balra rendezzk az ele-meket. ( O( n)sszehasonlts)Az algoritmus elnye, hogy nem kell sszefslni a vgn a kt tartomnyt.PldaMindig a legkisebb elemet vlasztjuk:n1sszehasonltsAz sszehasonltsok szma: n1+n2+.+1=n(n1)2=O(n2)PldaMindig a kzps elemet vlasztjuk:n1sszehasonlts fele akkora lista.1.n1.n2n2+1.nszintenknt n sszehasonltslog nszint vann log nTtelA gyorsrendezsnl az sszehasonltsok tlagos szma:O( nlog n)B . Ha biztosan gyors futs kell, akkor nem ez az optimlis algoritmus, de ha sokszor hasznljuk, akkor j.Ttel- 26 -s>sAlgoritmuselmletelads jegyzeta1.an csupa klnbz elemek. Brmely algoritmus egy lpsben kt elemet tud sszehasonltani, kimenetk teht ktfle lehet (ai?aj

> ) s minden lehetsges be-menetet rendez legfeljebb k sszehasonltssalklog(n! )n!=(ne )n.2nnkicsi -log(n! )=D(nlog n)log( n!)=O(nlog n)log( n!)=O(n log n)(vagyis az als becsls is(nlog n) )BizonytsAz alaptlet ugyanaz, mint a binris keressnl. Bebizonytjuk, hogy minden algorit-musnl van olyan eset, amilog( n! )ideig fut.Kezdetbenn!lehetsges sorrend van.Minden sszehasonlts kt rszre vgja a mg lehetsges sorrendeket.A vgn egyetlen lehetsg marad.Mivel minden lpsben megmaradhat a lehetsgeknek a fele, ezrt kell, hogy legyen legalbblog( n! )lps.Kulcs-manipulcis rendezsLda rendezs (bin sort)A:alaphalmaz= lehetsges elemek(kulcsok) halmazaAlgoritmus:xA -hoz ltrehoz egyB| xldt (lista)i=1.nai-t aB| ai lista vgre rakjaa listk tartalmt sorban kirjaLpsszmO(A)_lista ltrehozsa+ O(n)_bepakoljuk+ O( n+A)_elem s lda kiolvassa=O(n+A)HaAcn , vagyis minden elem legfeljebb c-szer fordulhat elO( n)Szksges, hogy az alaphalmaz rtelmes mret legyen.MegjegyzsLdaelrendezsnl az egyforma elemek sorrendje nem vltozik.PldkAA1A2.Ak (azaz k koordintjuk van)Pl. dtum: v, hnap, napSzavak: Ai=abcEzekre a ldarendezs O( n+A)=O( n+A1A2.Ak)Lexikografikus rendezsLers- 27 -Algoritmuselmletelads jegyzetAn rendezs = lexikografikus rendezs: ( s1,., sk)(t1,., tk), ha van olyan j : si=tii j , s sjt j (az els olyan szmt, amiben klnbznek)Ez a rendezs lass, az utolst sokszor hasznljuk.Radix rendezsLersLdarendezst hajtunk vgre a k. koordinta szerint az sszes elemen, majd ak1.koordinta szerint, s gy tovbb, egszen az els koordintig.Pldaa1: CCAB, a2: DCBA, a3: ABAC, a4: ACAC.A rendezs menete:kiind. 1. 2. 3. 4.CCAB DCBA CCAB ABAC ABACDCBA CCAB ABAC CCAB ACACABAC ABAC ACAC ACAC CCABACAC ACAC DCBA DCBA DCBATtelA radix rendezs rendez.BizonytsElg megmutatni, hogy ha ( s1,., sk)(t1,., tk), akkor az algoritmus vgn azsmegelzit -t. j : sjt j, si=ti , ha i j.Radix: k.koord.,.,( j +1). koord.,nem tudjuk a sorrendjket.j.koord.,-selbb lesz, mintt .j 1. , .1.koord- nem vltozik a sorrend, mert a ldarendezs az egyforma elemek sorrendjt nem vltoztatja. Ezzel az lltst bebizonytottuk.LpsszmO( n+Ak)+O(n+Ak1)+.+O( n+A1)=O( kn+A1+A2+.+Ak_A ldarendezsben szorzat,itt sszeg).Pldul:Aicni=1, .k -O(kn)Aici=1, .k k=log n -O(nlog n)AdatszerkezetBinris fa(nem felttlen teljes)Bejrspreorder cscs, bal rszfa, jobb rszfainorder bal rszfa, cscs, jobb rszfaposztorder bal rszfa, jobb rszfa, cscs- 28 -szmok rendezsekor az n szm jegyeinek szma log nAlgoritmuselmletelads jegyzetMegjegyzsEzt gy egyszer megjegyezni, hogy a pre-, in- s poszt- eltagok a gykr kiolvass-ra vonatkoznak.Pldapreorder:5, 2_ ,10, 8, 7, 9 , 12 _inorder: 2_ , 5_, 7 ,8 , 9, 10, 12_posztorder: 2_ , 7 ,9 , 8, 12, 10_,5Binris keresfaLersKERES ,BESZR ,TRL ,MIN ,MAX ,TLIGbinris faAz elemeket cscsokban troljuk (elem cscs klcsnsen egyrtelmen megf.)(feltevs: csupa klnbz elem van)Keresfa tulajdonsgbal rszfa elemei < cscs eleme < jobb rszfa elemei teljesl minden cscsra.Plda7x10KeressKERES ( x):gykr ? x= megtalltuk< keresst a gykrjobbrszfjban folytatjuk> keresst a gykrbalrszfjban folytatjukHa nem tudunk lpni, a keresett elem nincs a fban.LpsszmO(l ) , ahol l a szintszm.BeszrsBESZR( x) :KERES ( x)- ha tall, akkor nem rakjuk be- ha nem tall, ahova lpni akart (de nem tudott), ott kell ltrehozni egy j cscsot x r-tkkel.LpsszmO(l )Elgondolkodtat krdsMilyen sorrendtl lesz cikcakkos a fa?- 29 -10129785210x7Algoritmuselmletelads jegyzet7. eladsBinris keresfa (folytats)MveletekLegkisebb elem keresseMIN( )- visszaadja a legkisebb elemet.A gykrtl minden lpsben balra kell menni, s ahol elakadunk, ott van a legkisebb. Fontos, hogy ez nem felttlenl levl lesz (lsd bra).LpsszmO(l ) , ahol l a szintek szmt jelli.Legnagyobb elem keresseMAX ()- visszaadja a legnagyobb trolt elemet.A gykrtl minden lpsben jobbra kell menni, s ahol elakadunk, ott tallhat a kere-sett elem.LpsszmSzintnO(l ) .lltsBinris keresfa inorder bejrsa a trolt elemeket nvekv sorrendben adja vissza.BizonytsF1v F2 vgig a megfelel helyn van a gykr (v) Minden cscs a megfelel helyn lesz, mert mindegyik pont any-nyiadik helyen van, ahnyadik a sorban.Elem trlseTRL( x)- x-et trli a fbl. - keress KERES ( x) - trls - a fa jrarendezseKERES ( x) : ha nem tall, akkor az algoritmus ksz.Ha x levl, akkor trljk a cscsot, s nem szksges rendezni.Ha x-nek egy fia van, akkor megszntetjk x-et, s a fihoz tartoz rszft betoljuk a helyre.Ha x-nek kt fia van, akkor vegyk a jobb oldali rszfjnak a minimlis elemt (jell-jk y-nal), s azt tegyk x helyre. y-nak biztosan csak egy fia volt, ezrt trlse egyszer. Legyen ez a cscs y. y-nak biztosan csak egy fia van, teht trlse egyszer.LpsszmO(l )ennl a mveletnl is.- 30 -10758vF1F2Algoritmuselmletelads jegyzetTbb elem keresseTLIG( x , y)- azon a cscsokat adja vissza, melyekre igaz, hogyxay .Elszr keressk meg x helyt. Ehhez legfeljebbl =log nlps szksges.KERES ( x)cscsbl az inorder bejrst kvetve megynk y-ig.Ez a mvelet gyors, ha a binris keresfa minden cscsbl ltezik egy mutat az inor-der bejrs szerinti kvetkez elemre (inorder fonl).LpsszmHa ltezik inorder fonl, akkor aTLIGlpsszmaO(l +t ) , ahol t a megfelel ele-mek szma.TtelHa egy kezdetben res binris fba n elemet beszrunk, akkor az tlagos sszlps-szmO( nlog n)(klnbz sorrendekre nzve).A fa tlagos magassgaO( log n) .ClA cl a fa konkrt meghatrozsa, vagyis ne tlagos rtkekrl beszljnk kiegyens-lyozs.AVL-fa (lersa a tanknyvben)piros-fekete faPiros-fekete fkLers binris keresfa minden cscsnak 0 vagy 2 gyermeke van csak bels cscsban trolunk elemeket minden cscs PIROS vagy FEKETE a gykr FEKETE a levelek FEKETK PIROS cscsnak nincs PIROS gyermeke mindenvcscsra igaz, hogy mindenv -bl levlhez viv ton ugyanannyi FEKETE cscs van.fm(v) : fekete magassg, v nem szmt bele!m( v) : a leghosszabb t, amellyel v-bl levlig rnk.lltsm( v) fm( v)m( v)2 minden v cscsra.Bizonytsm( v) fm( v) :fm -be csak a feketket szmoljuk. Egy ton kt piros nem jhet egy-ms utn, teht az ton a cscsoknak legalbb a fele fekete kell, hogy legyen.llts- 31 -Algoritmuselmletelads jegyzetAvgyker fban trolt elemek szma 2fm( v)1.Bizonytsm( v)szerinti indukcim( v)=0(Hav levl fm(v)=0, 2fm(v)1=201=0(levlben nem trolunk)m( v)>0van kt fia,xsy .m( x)m( y)m( v)1 alkalmazhat az indukcis feltevs, a trolt elemek szma avgyker fban 1_v+2fm( x)1+2fm( y )1_fiai=2fm( x)+2fm( y)122fm( v)11=2fm( v)1fm( x)fm(v)fm( x)fm(v)1fm( y) fm( v)1Hanelemet trolunk, mit tudunk mondani a fa magassgrl?lltsHanelemet trolunk, akkor a gykr magassga2log(n+1) .Bizonytsv- gykrn2fm( v)12m( v)21log( n+1)m( v)2m( v)2log( n+1)KvetkezmnyKERES ,MIN ,MAX :O( log n)Itt majd az eljrs a levelekben akadhat el (binris keresfa nem tudsz lpni, piros-fe-kete fa lehetsges lpni, de levl van).MveletekAz albbi mveletek kis mrtkben vltoznak, mert el lehet a ft rontani velk (pl. kt piros kerlne egyms al, vagy a fekete magassg elromlik).BESZR( )sTRL() . A helyrellts eszkze a forgats.ForgatsForgats jobbra:Fontos: keresfbl keresft csinlBeszrsRakjuk be az j elemet az eredeti keresfba. Az j bels cscs legyen piros: z cscs.Ha z gykr az els elem, knny beszrni.- 32 -xF3F4zyF2F1xF3F4zyF2F1elemek < s1s1

s2s1elemek < s2s2elemekAlgoritmuselmletelads jegyzetHa z nem gykr, akkor ltezik apja: x.Ha x fekete, akkor kszen vagyunk.Ha x piros, akkor biztosan van apja, pedig biztosan fekete (t cscs). x-nek van testv-re is, y (hiszen minden elemnek kt fia van).Baj akkor van, ha t apja piros. Ekkor, ha y fekete,FORGATS -t vgznk, s gy z t s x kz kerl.TtelBESZR( )lpsszmaO( log n) , s legfeljebb kt forgatst hasznl.TRL( )lpsszmaO( log n) , s legfeljebb hrom forgatst hasznl.Gyakorlati megvalstsa - keresfa - levelek: a gyakorlatban egy darab cscs helyettesti az sszes levelet, mert azokban nem trolunk elemeket, s gy nem foglal flsleges erforrsokat (gy mr nem fa, de ez nem baj a hasznlat szempontjbl).KERES ,MIN ,MAX ,TLIG ,BESZR ,TRL- ugyanaz, mint a keresfnl, csak ms adatszerkezettel.8. elads2-3 faLersaGykeres, szintezett fa. A levelek egy szinten vannak.A nem leveleknek (bels cscsoknak) kett vagy hrom fia van (ha az elemek szma nagyobb, mint egy).Elemeket csak a levelekben trolunk.Bels cscsAz brn az lthat, mikor a cscsnak hrom fia van. A kt gyerek cscs annyiban klnbzik ettl, hogy nem s1 s s2, hanem csaksrtk hat-rozza meg, a kt fi kzl az egyik azs -nl kisebb elemeket,a msik meg az s -t s annl nagyobbakat tartalmazza.lltsAznelemet trol 2-3 fa magassgaO(log n) .BizonytsAk.szinten lev cscsok szma 2k, s 3k log3nklog nMveletekKERES : az tjelzk szerint lp a kvetkez szintreO(log n)Az elemek a levelekben nvekv sorrendben vannak.- 33 -Algoritmuselmletelads jegyzetMIN : balra megynk,O(log n) .MAX : jobbra megynkO(log n) .TLIG(a , b) :KERES (a) , ha a levelek sorba vannak lncolva, akkor ezen a lncon vgigmegynk.O((log n)+t ) , aholta tallatok szma.BESZR :KERES j levelet kell berakni. Kt gyerekes cscsnl egyszeren beil-lesztjk, s hrom gyereke lesz, hrom gyerekes cscsnl cscsvgst kell alkalmaz-nunk, vagyis egy szinttel feljebb szrunk be egy j cscsot. Ha ez a mvelet felmegy a gykrig, akkor j gykeret kell ksztennk, s n a fa magassga. A mvelet O(log n)lpsszm.TRL :KERES . Ha a megtallt levl hrom gyerekes csaldban van, akkor trljk a levelet, s frisstjk az tjelzket a gykr fel vezet ton.Ha a csald kt gyerekes, akkor trljk a levelet, majd igazsgosan elosztjuk a gyere-keket. Ha van hrom gyerekes szomszdos testvr, akkor vele, ha a szomszdos test-vrnek is csak kt gyereke van, akkor egy szinttel feljebb trlnk, s sszevonjuk a 2 csaldot egy darab 3 gyerekesre. Vgezetl tlltjuk az tjelzket. Ez az algoritmus is O(log n)lpses.B-faBm faLersaGykeres, szintezett fa. A leveleket egy szinten troljuk, s csak a levelekben trolunk rtkeket. Minden bels cscsnak legfeljebbmfia van, s minden bels cscsnak, ami nem gykr legalbb m+12 fia van. A gykrnek legalbb kt fia van, ha egy-nl tbb elemet trolunk.m=3esetn megegyezik a 2-3 fval.Bels cscsMveletekKERES ,MIN ,MAX : mint a 2-3 fnl,O(l )lpsben vgrehajthat mveletek, aholla szintek szma.- 34 -s1 sksk< s1< s2 sks1Algoritmuselmletelads jegyzetBESZR : m -nl kevesebb gyerek mell ltre tudjuk hozni az j gyereket.mgyerek mell val beszrsnl cscsvgst kell alkalmaznunk. Az egyiknek m12 , a msiknak m12 db fia van.TRL : A 2-3 fa algoritmusa megfelel.lltsnelemet trol Bm fa magassga O(log nlog m).Bizonytsk.szinten lev cscsok szma mk2(m+12 )k1 mkn2(m+12 )k1mknklog nlog mn2(m+12 )k1n2m+12 k1 log n2logm+12 +1klog n2log nlogm+12 log m2 m4log m2klog n2logm+12 +1log nlog m2+1=2log nlog m +1 nm3log nlog mTeht log nlog mk3log nlog mMegjegyzsA kls traknak lass a beolvassa, ezrt nmi optimalizci szksges: a levelekben nem egyetlen elemet trolunk, hanem annyit, amennyi a fizikai lapra rfr (a fizikai lap a beolvass egysge).mmegvlasztsa: egy bels cscs = egy fizikai lap.- 35 -Algoritmuselmletelads jegyzetSzintszm: a lapbeolvassok szma.Nem felttlenl csak a levelekben trolunk elemeket, hanem a bels cscsokban is.Kls trakHash(olyan, mint a ldarendezs)KERES ,BESZR ,TRLA lehetsges elemek szma nagy.Elemhalmaz:K= kulcsok halmazaA tnylegesen hasznlt elemek kulcsainak szma lnyegesen kisebb (nagy luxus min-den kulcsnak egy lda, mert a nagy rszk res).xKh : hash fggvnyPldaK :emberek,x :az v napjai,h:szletsnap.Problma: mr 23 ember kztt -nl nagyobb valsznsggel van kett, akinek ugyanarra a napra esik a szletsnapja. A vrhat egybees prok szma tven ember kztt hrom, 200 ember kztt 54 ez elg magas, teht a fggvny nem tl j a cl-ra.K :marslakk,x=669(ilyen hossz egy v a Marson).Mr 31 marslak kztt van -nl nagyobb valsznsggel azonos szletsnap, teht az tkzseket nem tudjuk elkerlni az x halmaz nvelsvel meg kell oldani kezel-sket.Vdrs hashh: -X =0,1,2,., M1selem helye:h(s)index lista.KERES (s): h(s)listban linerisan keres.BESZR( s) : h(s)listba berakTRL( s): h(s)listbl trlO( n)lps.Hahkzel egyenletesen szrja szt az elemeket, a listk vrhat hossza nM.- 36 -hxM-10vdrkatalgusAlgoritmuselmletelads jegyzetMegjegyzsKls tron szoksos hasznlni (vdrkatalgus lehetsg szerint a memriban), a lis-tk elemei lapok, egy lapon tbb rekordot is trolunk.HaLlap kell az sszes elem trolshoz, akkor az tlagos lapelrs-szm LM+1, vagyis tlagosan ennyi lapot kell megvizsglnunk ahhoz, hogy megtalljuk a keresett elemet. A +1 lps a vdrkatalgus elrse. Pldul haM1,2 L , az tlagos lapelrs kettnl kisebb.Nyitott cmzs hash(memriban)Egy tmbben troljuk az elemeket ( T ).shelye:T | h( s) .Ugrsok: h0( s)=0, h1( s) , h2( s) ,.hM1( s) a0, 1,.M1egy permutcija.Prbasorozath( s)+h0( s)=h( s)h( s)+h1( s)h( s)+h2( s).h( s)+hM1( s)(mod M)minden helyet kiprbl.9. eladsKls trak (folytats)Nyitott cmzs hash (folytats)KERES : addig megy a prbasorozaton vgig, amg nem tall egy reset (ahol soha nem volt senki), vagy megtallja a keresett elemet.BESZR : a prbasorozat els szabad helyre berakja (ahol most pp nincs senki)TRL :KERES , ha tallt, trli s bellt trlt bitet (azrt, hogy a keress ne ll-jon meg rajta, de be lehessen szrni).Lineris prblshi( s)=i(mod M)Ha kt prbasorozat tallkozik, onnan egytt mennek tovbb elsdleges csomso-ds- 37 -xbalra lpegets h(s)Algoritmuselmletelads jegyzetKvadratikus prbls(lvletlen prba)Ugrs a kezdponthoz kpest:h2j1_ptlan.( s)=j2(mod M)h2j_ps.(s)=j2(mod M) (1j m2)kzttkusza lesz...egy foglalt blokkon (csomn) bell klnbznek a prbasorozatok, de hah( s)=h(t ) , akkor a prbasorozatok is azonosak lesznek msodlagos csomsods Helytelen pldaHaM=8 , h0=0, h1=1, h2=7,h3=22=4 , h4=4=4(8), h5=91 (teht h3=h4; h1=h5, ami nem j).h6=7(=h2) , h7=160(8)=h0 ez nem permutci, teht nem j.Helyes pldaM=7 , h0=0; h1=1; h2=16(7);h3=22=4 ; h4=43(7);h5=32=92(7); h6=25(7)Ez j, mert a0,., 6elemek egy permutcija.lltsHaM=4k+3s prm, akkor j(0, k1.kn1permutcija a 0,., n1-nek)Bizonyts1)h2j1=h2i1i2= j2( M)M( j2i2)=( ji )( j +i )j ,iM2M( j i )_csak, haj =ivagy M( j+i )_j +i M(nem lehet )Kvetkeztets: a pratlan indexek (ngyzetszmok) klnbzek.2)A(1) -szereseik is (a pros indexek is).3)Lehet-e pros s pratlan index egyenl?h2j1=h2i j2i2( M)-van-e ilyen isj ?Feltehetjk, hogyi , j0- 38 -xh(s)x x3.1. 2.4.1*-1*Algoritmuselmletelads jegyzetj , irelatv prmekM-hez, ezrt ltezik olyant it 1( M)i2t21(M)j2t2i2t2=1( M)( j2t2)2k+1(1)2k+11(mod M)( jt )2( 2k+1)=( jt)4k+2=( jt )M11(M)Ez ellentmond az Euler-Fermat ttelnek ( jt )M11( M)( M prm!)Ellentmondsra jutottunk, teht a mdszer j.(az egsz mdszer azon mlik, hogy nincs olyanx :x2=1( mod M) a1nem ngyzetszm)Kvadratikus prbls (folytats) msodlagos csomsods( h(s)=h(t ) prbasorozathoz)Ketts hashhi( s) fggjns -tlTipikusan: h' ( s)msodik hashfggvnyhi( s)=ih' ( s) (mod M) felttel:( h' ( s) , M )=1Hash fggvnyekElvrsokA f elvrsaink a hash fggvnyekkel szemben, hogy legyenek gyorsan szmolhatak s kevs tkzs merljn fel (kenje szt az elemeket vletlenszeren)MegoldsokOsztmdszerh( s)=s(mod M)Ebbl kvetkezik, hogy nem j, haMkett hatvnya, mert ilyenkor csak az utols bi-tek levgsa trtnik.Szorzmdszerh( s)=strtrszMals egszrszh(s)0,.M1 M=2keredetileg irracionlis szm, gyakorlatban: =A2t, aholApratlan egsz.As2t - 39 -tkh(s)k(ez a nhny bit lesz a vgeredmny)Algoritmuselmletelads jegyzetHash lpsszmaLehet lineris:O( n+M)tlagos lehet:O( logn) .Plda (tlagos lpsszmok)1. Ha nM=23 (teltettsg)sikeres sikertelenlineris 2 3kvadr. 1,8 ~3kettsh. 1,5 ~32. Ha nM=45sikeres sikertelenlineris 3 13kvadr. 2,2 4,8ketts h. 2,9 5Keress lpsszmaLineris keress rendezett listbann+12 = sikeres sikertelen1+2+.+nnn(n+1)2+nn+1n2+1_n2mindkettBinris keressSikertelen:log nSikeres: KeresfaO( logn)Ehhez kpest a hash-els konstans lehet (j esetben). Hirtelen lineris is lehet. Akkor j a hash, ha elhzdhat a keress, de ltalban, tlagban gyors kell.Nem egyenletes eloszlsLineris keressZipf-eloszlsA szavak eloszlsa egy termszetes szvegben.Azi.leggyakoribb valsznsge: ci.Sikeres keress: nlog n (tlagos).- 40 -Algoritmuselmletelads jegyzet80-20 eloszlsAz esetek 80%-t megoldjuk az id 20%-a alatt. A tbbi 20%-ot nem az id 80%-a alatt oldjuk meg, hanem a maradk 20% 80%-t oldjuk meg az id 20%-ban, s gy tovbb, rekurzvan.Azi.legnagyobb valsznsg: ci( 1)( konstans)Sikeres keress:0, 12n(tl. )GrfokMlysgi bejrs(Depth First Search DFS)btor felfedezAddig megynk elre, amg van felfedezetlen t, ha elrtnk a vgre, visszalpnk az elz cscshoz, s msik irnyban prblkozunk jra mb( v)algoritmus, a grfvcscsbl indul mlysgi bejrsbejrva| v:=igaz ;w: ( v , w)E:Habejrva| v :=hamis , akkor mb( w) ;Lpsszmllists megadssalO( n+e)az algoritmus lpsszma, minden cscsot s let egy-szer jrunk be.Mlysgi szmJelzse:msz | vCscs jellemzje, voltakppen azt jelli, hogy hnyadiknak rnk bele a cscsba. Ak-kor kap rtket, amikorbejarva| v=igazlesz.Befejezsi szmJellse:bsz | vCscs jellemzje, azt jelli, hogy hnyadiknak fejezzk be az adott cscsot. Akkor kap rtket, amikor azmb( v)algoritmusban avcscsnak mr csak bejrt szomszdai van-nak.PldaJrjuk be a grfot!A bekarikzott cscstl indulunk. a jells a kvetkez: ( 2msz, 3bsz)Ha mg nem voltunk mindenhol, folytassuk az algorit-must! (lsd: bal als sarok).- 41 -(5,4)(4,2) (2,3)(3,1)(7,6)(1,5)(6,7)Algoritmuselmletelads jegyzet10. eladsMlysgi bejrs (folytats)Mlysgi feszterdElemei azon lek, amelyek bejrsban pontba vittek (falek).lek osztlyozsaA G irnytott grf lei egy bejrs szerint ngyflk le-hetnek. Mr a bejrs kzben meg tudjuk mondani az lek tpust.Egy( x , y)Efal, ha mg nincsmsz | y -nak rtke.elrel, hamsz | xmsz | yvisszal, hamsz | x>msz | y , s nincsbsz | y -nak rtkekeresztl, hamsz | x>msz | y , sbsz | y -nak van rtke.Problma csak azzal van, hogy a mlysgi szm nem elgsges a vissza- s a kereszt-lek megklnbztetshez. Ebben a megklnbztetsben van segtsgnkre a befeje-zsi szm, a visszaleknl mg nincsbsz | y -nak rtke, mg a keresztleknl van.Ezt a ngy tpust rgtn oda is rhatjuk az lekhez, ha gy gondoljuk, hogy hasznunkra lehet a ksbbiekben (s szmos esetben gy is van).Irnytatlan grf esetn kevesebb ltpus van, csak a fal s a visszal marad meg.Irnytott krmentes grfokGirnytott grf, nincs irnytott kr benne, azazG dag(directed acyclic graph) grf.TtelGpontosan akkor dag , ha egy mlysgi bejrsban nincs visszal.(Vagy mskppenG dag egy mlysgi bejrsban nincs visszal)Bizonyts A megfelel falek plusz a visszal egy irnytott krt alkot.A dag-ban nincs irnytott kr, kvetkezskppen a mlysgi bejrsbannem ltezhet visszal. Indirekt mdon bizonytunk. Tegyk fel, hogy van irnytott krG -ben. Vegyk en-nek a krnek azt a pontjt, aminek legkisebb a mlysgi szma ( x ).Ha a kr tbbi pontja azxgyker rszfban van, syazx -et a krben megelz pont, akkor az( y , x)visszal. Ez egy ellentmonds, hiszen nincs a grfban visszal. TehtGvalbandag- 42 -falelrelvisszalkeresztlAlgoritmuselmletelads jegyzetA msik lehetsg az az, hogy van a krnek a rszfn kvl is pontja. Ez azt jelenti, hogy van egy olyan l, mely kls, nem rszfabeli ponthoz vezet. Ez az l nem lehet fal, mert akkor nnek a rszfnak lenne az le. Nem lehet elrel sem, ugyanezen okbl. Feltettk, hogy visszal nincs. Kizrsos alapon csakis keresztl lehet. Ez a keresztl csak gy keletkezhetett, hogy a bejrs sorn mr korbban rintettk, s ezrt nem rsze a fnak. Viszont ezrt a kezdpontjnak mlysgi szma kisebb, mint azx -. Ez ellentmonds. TehtG -ben nincs irnytott kr, vagyisdag .Minden lehetsgnl ellentmondsra jutottunk, teht a ttelt mindkt irnybl bebizo-nytottuk.KvetkezmnyHa aGegy mlysgi bejrsban nincs visszal, akkor semelyik mlysgi bejrs-ban nem lesz.BizonytsHa nincs visszal, akkor a grfdag nincs visszal benne.MegjegyzsA keresztlekre ez nem igaz. Plduluirnytott t (lsd az brn, minden l fal benne). Visszafele menve minden l keresztl lenne.KvetkezmnyAzt, hogy egy grfdag -e, knnyen el tudjuk dnteni algoritmikusan. llists megads esetn megadsnlO( n+e)lpsben eldnthet. A felhasznlt algorit-musDFS .Gdag nem ltezik visszal.Topologikus rendezsDefinciAGcscsainak egy olyan v1,v2,., vn sorrendje, amelyre igaz, hogy ha (vi , vj)E, akkori j .SzemlltetsTtelG -nek akkor s csak akkor van topologikus rendezse, hadag .BizonytsOdafele ( ):(vi , vj)E nem lehet benne kr.Visszafele( ):Hadag , akkor van benne nyel, azaz olyan pont, amibl nem megy ki l.dag -ban nincs kr, ezrt tetszleges pontbl egy kimen l mentn elindulva nem juthatunk vissza, te-ht egyszer vge lesz az tnak ez a pont a nyel. - 43 -v1vnvivjAlgoritmuselmletelads jegyzetLegyen vn nyel. vn-et elhagyjuk a grfbl,dag marad, gy van nyel:vn1 Ezt is elhagyjuk, s gy tovbb. Ez egy j topologikus sorrend lesz. Az lltst ezzel bebizo-nytottuk visszafel is.LpsszmAnnak eldntse, hogy van-e topologikus elrendezs, s ha van, akkor ennek megadsa O( n+e)lpsbl lehetsges.Msik megoldsDFS . Topologikus rendezs: abszszerinti cskken sorrend. Ez j, mert kisebbbsz-bl nagyobba csak a visszal vinne, de ilyen nincs, hiszendaggrfrl beszlnk. Ez az algoritmusO( n+e) -s.Legrvidebb t keressedag bans -bl a tbbi pontba viv legrvidebb utak megtallhatkO( n+e)lps-ben llists megadsnl.AlgoritmusDFS topologikus rendezs ezzelO( n+e)lpst hasznltunk el.A topologikus elrendezsben v1 , v2,., vn, (vi , vj)Ei j (csak jobbra mennek lek).Legyen s=v1, kezdetbensminden vj szomszdjra d (s , vj)=c(s , vj), az sszes tb-bi cscsra d (s , vj)=.d (s , s)=0i=1,., n1Ha (vi , vj)E akkor d (s , vj)=mind ( s , vj) , d ( s , vi)+c(vi , vj).Vgld (s , v)=ka keresett rtkekLpsek: vi kimen fokszmasszesenO( n+e) .Leghosszabb t keressedag bans -bl a tbbibe viv leghosszabb utakO( n+e)megtallhatak, az elz al-goritmusbanminhelyett maxkell.Megjegyzsltalnossgban egy grfban a leghosszabb t keresse nem ismert, polinom idej al-goritmus.PERTEgy sszetett munknl, mely tbb rszfeladatbl ll, s kzttk lehetnek olyanfle megktsek, mint hogy a hznak elbb kell alapot csinlni, mint tett, (matematikai nyelven lervaAelbb kell, hogy bekvetkezzen, mintB ) s hogy mennyivel elbb (letkzeli pldaknt: meg kell szradnia a betonnak).Ebbl kapunk egy slyozott grfot. Van egy kezdpont, mikor nekifogunk a feladat-- 44 -Algoritmuselmletelads jegyzethoz, s van egy vgpont, mikor befejezzk.Ilyenkor a kezd s a vgpont kztt a leghosszabb tra van szksgnk, mert az lesz egyenl a legrvidebb vgzsi idvel. Teht a leghosszabb t keressnek van gyakor-lati haszna!A grf (ha jl csinltuk)daglesz, s a keresett rtk a leghosszabb t forrs s nyel kztt). Ezt az utat szoks nevezni kritikus tnak, leit pedig kritikus tevkenys-geknek (termszetesen lehet tbb kritikus t is a megfelel grfban).A szban forg grfotPERTdiagrammnak szoktk nevezni, mely a Program Evalu-ation and Review Technique kifejezs rvidtse.PERT mdszerd (s , vj)=max d ( s , vi)+c( vi, vj)( vi ,vj)EO( n+e) , ha fordtott llista van (bemen lekbl)Ez alkalmazhat minimumra is,.ekkormaxhelyettminkell.Grfok ers sszefggsgeErsen sszefgg aGgrf, ha brmely kt pontja kztt van irnytott t.Ersen sszefggsg eldntse1. algoritmuscsinlunk mindenvpontblDFSbejrst.Ersen sszefgg a grf akkor s csak akkor lesz, ha mindegyik mlysgi feszterd fa. (hav -nl ft kapunk, akkor minden cscs elrhet irnytott tonv -bl)nO( n+e)=O( n2+ne)2. algoritmusTetszlegesvpontblDFSbejrs, ha nem jut vgig, akkor mr most befejezzk az algoritmust.Ezutn jra avpontbl kezdnk egyDFSbejrst, csak nem aG -n, hanem a meg-fordtottjn.Gersen sszefgg, ha mindkt mlysgi feszterd fa.Helyessg bizonytsaAz els bejrsnl ft kapunk v -bl minden pont elrhet irnytott tonG -ben.A msodik bejrsnl ft kapunk v -bl minden pontbl elrhet irnytott tonGfordtottjban, tehtvminden pontbl elrhet irnytott tonG -ben.Ebbl az kvetkezik, hogy van egy olyan pontunk, amelybl minden ms pontot el tu-dunk rni, s t is minden ms pontbl, teht ha van egyas egybcscsunk, akkor a -bl elmegynkv -be, s onnanb -be, s viszont.Ersen sszefgg komponensek nem ersen sszefgg grfban- 45 -Algoritmuselmletelads jegyzetKt komponens kztt legfeljebb csak egy irnyban mehetnek az lek, klnben egy komponenst alkotnnak. Teht a komponensek grfja (ahol a cscsok a komponenseket jelkpezik)daglesz.Ersen sszefgg komponensek megtallsaG -benDFS , majdGfordtottjban isDFSbejrs, minden ft a mg bejratlan pontok kzl a legnagyobb befejezsi szmval kezdnk (az elz bejrsbl maradt bsz ).lltsAz ersen sszefgg komponensek a msodik bejrs fi O( n+e)BizonytsNem bizonytjuk, nem lesz szmon krve.Minimlis kltsg fesztfaG=(V , E)irnytatlan egyszer, sszefgg grf, slyozott,c: E-ClFEfesztfa, melynek minimlis a slya.11. eladsPiros-kk algoritmusKk szablyX V , X , X V ,X -bl nem megy kk lV X -be, akkor egy legkisebb sly szntelen let kkre szneznk.Piros szablyHa egyCkrben mg nincs piros l, akkor egy legnagyobb sly szntelen lt piros-ra sznezzk.AlgoritmusKezdetbenGminden le szntelen.Kk s piros szablyt alkalmazzuk tetszleges sorrendre, s tetszleges ponthalmazra, krre.Vge: ha egyik sem hasznlhat.TtelAz algoritmus vgn a kk lek egy minimlis sly fesztft alkotnak.Bizonyts:S : szntelen lekK : kk lekP : piros lekKezdetbenE=S ,K=P=- 46 -Algoritmuselmletelads jegyzetE=SKPfelbontsTAKAROS SZNEZS , ha van olyan Fmin fesztfaG -ben, hogyFKsFP=.Lemma1Az algoritmus minden lpse utn takaros a sznezs.Bizonyts: indukcivalKezdetben E = S takaros.Vegynk egy takaros sznezst: E=SKPtakaros,Fmin. fesztfa,FK ,FP=.Kk szablyt hasznlunk azX Vhalmazra,gElet sznezzk (kkre).HagF , akkorFtovbbra is j, a sznezs takaros.HagF , a fban t vangvgpontjai kztt, ennek van olyan le, amiXs V Xkztt megy. Legyeng 'ilyenF ' =F g ' gis fesztfa.g 'szne: nem piros, mertg ' F , s piros l nem lehetne a fban; nem kk a kk sza-bly miatt,g 'kilpX -blg ' S c( g ' )c( g) c( F)c( F ' ) , de c( F)minimlisc( F)=c( F ' ) F 'minimlis fesztfa, ami mutatja, hogy az j sznezs is takaros.Piros szably:F 'minimlis fesztfa, ami mutatja, hogy az j sznezs is takaros. A piros szablyt alkalmazzuk aCponthalmazra (krre). Aglet sznezzk (pirosra).HagF , akkorFtovbbra is j, a sznezs takaros.HagF , akkor van olyang ' C , hogyF gg ' is fesztfa:F 'g 'szne: nem piros (piros szably miatt), nem kk, mertg ' F , teht szntelen (g ' S )c( g ' )c( g)(mindig a legnagyobb sly let sznezzk pirosra) c( F ' )c( F) , dec( F)minimlisc( F ' )=c( F) , teht az j sznezs is takaros.Lemma2Az algoritmus vgn azShalmaz res, azaz minden lKvagyP .A bizonyts alapja, hogy ha van szntelen l, akkor nincs vge, mert valamelyik sza-bly alkalmazhat.Legyen gS . A kk lek sosem alkotnak krt fesztft adnak.Agl vagy a kett kztt van, vagy kt komponens kztt. Ha egy kk fn bell van akkorgs nhny fabli l krt alkotnak. Ha kt kk ft kt ssze, akkor alkalmaz-zuk a piros szablyt,X -egyik kk fa pontjai, ezen a kk szably.A ttel bizonytsaA lemmk segtsgvel: Lemma2 miattS= , teht az lek kkek vagy pirosak. Lem-ma1 szerint ez a sznezs takaros, azaz van olyanFminimlis sly fesztfa, amire FK ,FP=FKMegjegyzs- 47 -x3x2x1kkkk kkAlgoritmuselmletelads jegyzetHa mr van V 1kk lnk, akkor abbahagyhatjuk, mert biztosan fesztfa.Alkalmazs: (JARNIK-)PRIM algoritmusVegynk egy s in V cscsot (kk) egypont kk faX =s -re kk szablyX := kk lek ltal elrt pontok ezekre kk szably...A ttelbl kvetkezik, hogy ez j.Hogyan vlasszunk let?U kk fa pontjai.KZEL| i =*, hai Uj , j U , c(i , j ) minimlis, ha i UA kk szably alkalmazsakor az(i , KZEL| i )lek kzl a minimlisat tesszk bele azUhalmazba(i U ) . Legyen ez a cscsk .AKZEL| tmb frisstse: vU ,ha c(k , v)c( v , KZEL| v)KZEL| v=k , KZEL| k=*Lpsszm: (n1)(n1)_minimumkeresse+(n1)O(n)_frissts=O(n2)Kupaccal: Az leket kupacban troljuk. A legkisebb slyt egyMINTR -rel vlaszt-juk ki azUsV U kztti lekbl( + a korbbi maradkokbl, amik az aktulisUsV U kztt mentek, de mr bekerltekU -ba). Vagyis nem akkor trlnk egy let, amikor bekerltU -ba, mert az macers lenne, hanem inkbb akkor vizsgljuk meg, hogy mrU -ban van-e, amikor a keznkbe kerl. Ha mrU -ban volt, akkor el-dobjuk, s jabbMINTR , Lpsszm llistval: O(e)_kupacpts+2e(O(log e))_BESZR, MINTR=o(elog e)=O(e log n)Ha sr a grf, nem binris kupacot hasznlunk, j paramterekkel mg kevesebb l-psben meg lehet valstani.Borvka-algoritmusPrhuzamos algoritmus.Kiindulunk az sszes cscsbl, kezdetben cscs egy kk fa, egy lpsben kk fbl kivezet legkisebb let kkre sznezzk( egyszerre tbb komponens egy na-gyobb olvad ssze).Problmt az okoz, ha tbb azonos sly l van, s kr alakulna ki. Ezt pldul a kom-ponensek szmozsval lehet megoldani, ha ilyenkor a legkisebb sorszm kompo-nenst vlasztjuk.Lpsszm:menetben legalbb felezdik a kk fk szma max.log nlps O(elog n)Kruskal-algoritmus1. Vegyk az leket nvekv sorrendben.Rendezs kupaccalO( elog e)=O(e log n)lps.2. Kkre sznezzk, ha lehet (nem hoz ltre kk krt)- 48 -U453ezt vlasztjukAlgoritmuselmletelads jegyzetHogyan lehet eldnteni, hogy keletkezik-e kr?Adatszerkezet:UNIHOLVANXalaphalmazA1 , A2,., AkX, A1A2.Ak=X , AiAj=, hai j (ldiszjunktak)Mveletek: UNI(i , j ) : Ai s Aj helyett AiAjHOLVAN ( x)=i , ha xAi ( xX )Kruskal-algoritmus: rendezs + lenknt 2 dbHOLVAN+n1dbUNI .UNI-HOLVAN megvalstsaTmbbel:T | x=i , ha xAiHOLVAN : O(1)UNI: O(n) , n=xKruskal:O( elog n)+e O(1)+( n1)O( n)=O( elog n_soklnl dominl+n2_kevs l)Fkkal: Ai gykeres faxelem cscsi gykr (nv, ezzel azonostom a halmazt)HOLVAN : cscsbl gykrbe megynklpsszm:O( mmagassg)UNI : a kisebbik ft beleptjk a nagyobbikba:AjAilpsszm: O(1), ha az elemszmot nyilvntartjuk.lltsHa kezdetben Ai egyelem magassguk mindigO( log n)Bizonyts: Amikor egy Ai beleolvad egy legalbb ugyanakkora halmazba, mindig 1-gyel tvolodik. Ilyenkor a halmaz mrete duplzdiklog nilyen lehet.Kruskal:O( elog n)+eO(log n)+(n1)O(1)=O(elog n)12. eladsMinimlis fesztfaKruskal algoritmus,UNIHOLVANadatszerkezet, fkkal: halmaz fa, ennek mlysge lnyeges.HOLVAN ( x)sornHOLVAN ( y) -ra is megkapjuk a vlaszt.UNI-HOLVAN sszevonssalHOLVAN ( x)futtatsakor elny, hogy y1, y2,., yk-ra vonatkozHOLVANgyors lesz.- 49 -AiAjgyky1xgykxy1Algoritmuselmletelads jegyzetTtelHa egyelem halmazokkal kezdnk,n1 UNIsmn1 HOLVANkrds l-psszmaO( mo(m)) , ahol n az elemek, m pedig az lek szma.(B)o( m) : Ackerman fggvny inverzeo( m)monoton no( m)- , ham-o( m)4, ham22222=2216=265536 (B)Ebbl a Kruskal lpsszma:O(elog n)_rendezs+O(2eo(2e))_HOLVAN=O(e log n)+O( eo(2e)) , s itt mr a msodik tag a kicsi, vagyis az algoritmus lpsszmt a rendezs hatrozza meg.Megjegyzsek Ha az lslyokat tudjuk lineris idben rendezni (pl. a slyok1snkztti eg-szek), akkor a lpsszmO( e)+O( eo(2e))=O(eo(2e)) Nyitott krds, hogy van-eO( e)lpsszm algoritmus ltalnos slyok esetn. Ismert: azt ellenrizni, hogy minimlis fesztfa-eO( e)lps (de megtallni mg nem tudjuk). Vletlen mintavtel hasznlatval elrhet, hogy a minimlis fesztfa tallsnak vr-hat lpsszmaO( e)legyen.BonyolultsgEgy algoritmusrl akkor mondjuk, hogy hatkony, ha polinom idej, vagyis a lpssz-ma a bemenet hossznak polinom-fggvnye.Plda n elem halmaz sszes rszhalmaznak felsorolsakor mr az eredmny is exponenci-lisan hossz (teht ha csak runk, s nem szmolunk, akkor is sokig tart) nem le-het r polinomilis algoritmust tallni. Bemenetn , keressk3n rtkt.a bemenet hossza:log( n+1)a kimenet:log(3n)nem polinom hossz n, m, cl3n( mod m)33.3_n n1szorzs, nem polinomlog n -ben ngyzetre emelsekmod m32mod m34mod m38mod m ezek kzl a megfelelket sszeszorozzuklog ndarab ilyen leszO( log n)szorzs, modulo oszts, ez log n -ben polinom.- 50 -Algoritmuselmletelads jegyzetDntsi problmkKimenetk: igen vagy nemPldaMegllsi problma: bemenet( Pprogram, Qbemenet)Eredmny:PaQbemenettel megll-e.Erre a dntsi problmra nincs algoritmus.DefinciP: polinom idben megoldhat dntsi problmkPldaGgrf sszefgg:P -ben vanDefinciNP: nemdeterminisztikus polinom idben megoldhat dntsi problmkHa azxbemenetre a vlaszIGEN , akkor van olyan polinom hosszy(bizonytk, tan), hogy az( x , y)pr egytt polinom idben leellenrzi, hogyybizonytja az IGEN t (vagyis rviden bizonythat).Ha azxbemenetre a vlaszNEM , akkor nincs ilyeny . (AzazANPha van olyan BP , amikorx -reA -nlIGENa vlasz, akkor van olyan polinom hosszy , hogy( x , y) -raB -nl isIGENa vlasz. Hax -reA -nlNEMa vlasz, akkor nincs ilyeny )PldaHGgrfban van Hamilton-kr.H NP , mertx=G -hezyHamilton-kr mentn a pontok felsorolsa j tan.yhossza =ypolinomilisx -ben (vagyisxcscs- s lhalmaz mretnek po-linom fggvnye).Ellenrzs:y -ban minden pont egyszer szerepel, egyms utni pontok, az els s az utols kztt van l. Ez j, hax -ben van Hamilton-kr, s nincs jy , hax -ben nincs Hamilton-kr ( yhordozza azt a pici informcit, aminek segtsgvel el tudjuk dnteni, hogyxlehet-e j).PldaSSZETETT :nszm sszetett.NP , mert 1