Innhåll örläning oh 9 Priorikör rfr oh grflgorimr Kommr forä in på nä förläning Kpil.5- oh 7 i kurokn Priorikö Spifikion v priorikö Moll: Pinrn på n kumogning, mn kommr in i n vi iorning mn hnl uifrån n nnn orning. Orgniion: n mäng vr grunmäng är linjär orn v n prioriorning. vläningr oh orgningr gör n på lmn om hr hög priori. nr mängoprionr är in kull ränyn Pquu(vl, ): mpy () Pquu(vl, ) Inr (v:vl, p:pquu(vl, )) Pquu(vl, ) Impy (p:pquu(vl, )) ool Inp-fir(p:Pquu(vl, )) vl l-fir (p:pquu(vl, )) Pquu(vl, ) är rlionn för prioriorningn. Iln lå vå i morn ihop. Spifikion v priorikö Sk oh Kö är pilfll v Priorikö Priorikön kn lmn (vl) om år v vär oh n priori. öruär ik priori. Plr in lmn på rä pl från örjn. ynmik priori krävr n up-mo. In lik ffkiv implmnionr ränyn kn vrir på flr ä up hög/min priorivär i kön Om är n ol rlionn, v gällr för ll pr v värn lir priorikön n k. Si lmn om opp in hmnr lli för. Om är n omm rlionn, v in gällr för någr pr v värn, lir n kö. Si lmn om opp in hmnr lli i. Om är n rik prill orning, om >, kommr lik lmn hnl om n kö. Om är ik-rik, om hnl lik lmn om n k.
Konrukionr v Priorikö Tillämpningr Li, j orr Inr O(), l-fir O(n) Li, orr Inr O(n), l-fir O() Mäng, Lxikon llr Hp Mn hr vi in ö på än Oprivym om förlr jo mlln olik pror nkl ä orr någo. Sopp in ll i n priorikö oh plok u ign. Hjälpml vi rvrring v grf Jmfr på kommn förläningr k oh kö nvän vi rvrring v rä. rf il från in 7 i Jnlr L-., Wirg T., ypr oh lgorimr, Sunlirur, Mängorinr pifikion (vnlig inom mmikn) Moll: Vägkr m nklrik gor uri. Tillämpningr Signurigrmmn lkronik krr Nävrk (gor, flygrur, kommunikion) Nurl nävrk n grf = (V, ) år v V : n mäng v nor (vri) : n mäng v ågr (g) om inr mmn norn i V. o n åg = (u, v) är pr v nor. V = {,,,, } = {(,), (,),,), (,), (,), (,), (,)} Nvigringorinr pifikion Orik grfr n grf är n mäng nor. Till vrj no oir n grnnkpmäng v nor om kll grnnr. ll nor illhör mm yp ll orn pr v n goyklig no oh n v norn i grnnkpmäng ugör n åg. Spifikionn är för lgorimr Mr ffkiv nvigringoprionr. ågn är n mäng v vå nor. Norn är grnnr ill vrnr. rl = nl ågr ill grnnr (llr ig jälv)
Trminologi Trminologi Väg/ig (ph): Skvn v nor v, v,, v n å v i oh v i+ är grnnr. nkl väg (impl ph): Ing nor förkommr vå gångr i vägn. ykl (yl): nkl väg är n i non i kvnn är nmm om n för. v för/i non är n n om får finn vå gångr. n orik grf un yklr är rä. Smmnhängn (onn) grf Vrj no hr n väg ill vrj nnn no. lgrf (ugrf) n lmäng v norn oh knrn om formr n grf. Smmnhängn komponnr n mmnhängn ugrf onniviy (nårh) ik grfr Lå n = nl nor oh m = nl ågr. n kompl grf (ompl grph) får mn när ll nor är grnnr ill ll nr. I n kompl orik grf är m = n(n-)/ ör rä gällr m = n- Om grfn är mmnhängn å är m n- m=, n = m=, n =5 m=5, n = ågn är orn pr v nor. rl inl i Ingrl = nl ågr om går ill non Ugrl = nl ågr om rr i non oh går ill n nnn no. igrph oh Mr grfr irph = ir grph v rik grf kn vr mmnhängn kn h mmnhängn komponnr = ir yli rf v, n rik grf un yklr Vik grf n grf är ågrn hr vikr Muligrf Tillå m flr ågr mlln vå nor. ågr hr å of olik gnkpr om må lgr. Orn grf hr inör orning mlln grnnrn ill n no.
okn informll pifikion: mpy konrurr n om grf un nor oh ågr Inr-no(v, g) är in non v i grfn g Inr-g(, g) är in n åg i grfn g. föruä norn finn i grfn Impy(g) r om grfn g är om, v un nor H-no-g(g) r om grfn g knr ågr hoo-no(g) väljr u n no ur grfn g Nighour(v, g) mängn v ll grnnr ill v i grfn g l-no(v, g) r or non v ur grfn g, föru v in ingår i någon åg l-g(, g) r or ågn ur grfn g Projk grf-pifikion: + inrno(n:no):voi + inrg(r:no, :No, wigh:in):voi + impy():ooln + hnog():ooln + nighour(n:no):vor + gno():vor + gwigh(r:no, :No):in + lno(n:no):voi + lg(r:no, :No):voi + Wigh(r:No, :No, wigh:in):voi hoo-no(g) kn Konrukion v grfr Konrukion v grfr örinlmri ågrn rprnr v or i n mri. vir vilk ågr mn kn nå från. Kolumn vir från vilk nor kommr ågr ill. + nkl implmnr oh pr när mn hr iffror på nor oh ågr. - Mrin kn li or oh gl oh kräv pilrik. 5 5 rf om fäl v li. Lin är grnnkplin. Mn ugår finn min n åg från vrj no (äl) mn in går n åg från vrj no ill vrj nnn no (ärför Li). + In lik urymmkrävn om n gl mri. Urymm = O(n+m) - ix nl nor rflgorimr jup-för-rvrring Trvrring rn-för oh jup-för Konrur (min) upppännn rä inn vägrn från n no ill ll nr nor Kor vägn mlln vå nor inn mximl flö mlln vå nor ök ugångnon oh n grnnr jup-för rkuriv. Unrök n lyrin gnom mrkr vägr mn gå m färg. yklr mför rik för oänlig rvrring Håll r på om non är ök llr j. Om rn ök gör ing rkuriv nrop. n nor mn kn nå från ugångnon kommr ök. Prolm m grfr om j är mmnhängn.
phir() jup för i n orik grf * Mrkr non om ök. rnnr = {,, } j ök, rkuriv nrop. I J K rn för i n orik grf Mrkr non om ök oh lägg in n i kön. q = () T frm för lmn (), q = ( ) I J K T n frm grnnmängn ill S = {,, } jup-för-lgorim: rn-för-lgorim lgorim phir(no n, rph g) inpu: no n in grph g o rvr vii(n, g) // Mrk h no vii nighours nighour(n, g); for h nighour in nighours o if no ivii(nighour) phir(nighour, g) Mn unrökr för non, n grnnr, grnnrn grnnr ov. ik för oänlig körning om mn in nvänr n mrkör för non ök. n nor ill vilk finn n väg från ugångnon kommr ök. n kö hjälpr o håll r på grnnrn. jup_för.pp rn-för-lgorim: Upppännn rä lgorim rhir(no n, rph g) inpu: no n in grph g o rvr Quu q mpy(); vii(n, g) // Mrk h no vii q nquu(n, q); whil no impy(q) o nwno fron(q) q quu(q); nighours nighour(nwno, g); for h nighour in nighours o if no ivii(nighour) vii(nighour, g); q nquu(nighour, q); rn_för.pp å rn-för oh jup-förrvrringrn gr o upppännn rä. Om vi pr unn informionn... Må uök grfpifikionn Är miniml? n ol längn i rä k vr miniml. Om vrj kn hr mm vik är rä miniml upppännn för rn-för rvrring. o Om mn läggr ill krv vrj no k h å kor väg om möjlig ill ron. Upppännn rä Skp m jup-för j miniml I J K I J K Skp m rn-för Miniml nl färg knr = i å flln. Skp m jup-för j miniml K I J Upppännn rä Jämför vägn ill! Skp m rn-för Miniml I J K
Tikomplxi Kor-vägn-lgorim vi lik vik ör rn-för oh jup-för gällr: n = nl nor, m = nl ågr Vrj no ök xk n gång O(n) ör vrj no följr mn ågrn u från non för hi grnnrn. ör h O(gr(v)), vär fll O(n). o nvän mängorinr p. får mn O(m) rnnmängn hövr vlur n gång för vrj no lir komplxin O(Σ gr(v)) =O(m) o Vrj åg illhör vå grnnkp Tol O(n) + O(m) rf m lik vikr på ll ågr nvän n vrin v rn-för rvrring för räkn konn för n kor vägn från n no ill nr. y från vnlig kö ill priorikö. Lägg ill mor för lgr vån från rno ill kull no i norn. Kor-vägn-lgorim vi lik vik lgorim rhir(no n, rph g) inpu: no n in grph g o rvr PrioQuu q mpy(); vii(n, g) // Mrk h no vii i(n, ) q inr(n, q); whil no impy(q) o nwno inpir(q) q lir(q); nighours nighour(nwno, g); for h nighour in nighours o if no ivii(nighour) vii(nighour, g); i(nighour, gi(nwno)+) q inr(nighour, q); I J K Om ll ågr hr vik I J K Upppännn rä Prim lgorim Hur hnrr mn grfr m vikr? Upppännn rä m min ol läng. o är llå in n kor-vägn lgorim! ör nvigringorinr pifikion o Prim lgorim ör mängorinr pifikion o Krukl lgorim 5 år u på ygg upp ll örr rä om ill lu pännr upp grfn llr n mmnhängn komponn v n. I vrj g välj n åg m miniml vik. Lik vikr må hnl konkvn. gln yr hur färig rä r u.
5. Välj n no vilkn om hl oh mrkr n om öppn. Lå n li ro. Prim lgorim Prim lgorim: or. Prim (9- ) r på ll lorori illmmn m Joph Krukl Prnr lgorimn 957 Mn lgorimn h rn uppäk v Vojh Jrnik 9... lgorimn åruppäk v gr ijkr 959 lgorimn kll okå för JP lgorihm llr Jrnik lgorihm iln gn från hp://www.m.org/furolumn/rhiv/r.hml oh xn från hp://n.wikipi.org/wiki/or_._prim. Välj n no vilkn om hl oh mrkr n om öppn. Lå n li ro.. Mrkr n om äng.. ör vr oh n v ( ik-äng) grnnrn:. Mrkr n om öppn (om n in är ).. Sopp in n kull non, grnnn oh vikn i n priorikö. Är vikrn lik k ny lmn lägg in för i kön. (v rlionn är ). T frm lmn ur priorikön oh il ny lrä gnom lägg in n åg om finn i lmn i rä. OS! Lägg n in ågn om lunon in är äng! Lå lunon li n ny kull non, äng n oh gå ill. prim.pp ul v Prim lgorim: Prim lgorim - komplxi 5 Sr 5 Slu m 5 Slu m < Mn gör n rvrring v grfn, v O(m) + O(n). Sn illkommr köoprionr ör vrj åg är mn in lmn i kön, inpkrr oh r u. o lir O(m*Kökon) Kökon: o Li O(m), o Hp (prill orr inär rä) gr O(log m). Tol: O(n) + O(m ) llr O(n) + O(m log m) ron på implmnion v priorikön. Krukl lgorim Krukl lgorim Väljr ågr ll from mn formr in lrä unr konrukionn. Ingn rvrring un rr på nn ä m ågrn. ärglägg ågrn för håll r på vilkn lgrf illhör. Joph Krukl (9- ) r på ll lorori illmmn m or. Prim Prnr lgorimn 95 iln gn från hp://www.m.org/furolumn/rhiv/r.hml oh xn från hp://n.wikipi.org/wiki/joph_krukl
5 P = ((,,), (,,), (,,),(,,), (,,), (,,5), (,,), (,,), (,,), (,,)). Skp n priorikö v ll ågrn uifrån vikrn på Krukl lgorim Krukl lgorim - komplxi. Skp n priorikö v ll ågrn uifrån vikrn på.. n för ågn plok frm oh ilr n för lgrfn. Norn färglägg.. Upprp ill kön är om:. T frm n ny åg.. Om ingn v norn är färg. ärglägg m ny färg oh il ny lgrf.. Om n n no är färg. Ingn rik för ykl uök grfn oh färglägg.. Om å norn är färg m olik färg. Välj n v färgrn oh färg om n ny gmnmm grfn. 5. Om å norn hr mm färg. Ignorr ågn, n kpr n ykl krukl.pp ör ygg n priorikö från ågmängn Komplxi ror på implmnionn v ågmängn oh priorikön Vrj åg rvrr n gång. n kn l in i fyr fll: Tr fll m komplxi O() är ågn kn lägg ill un prolm. fll är n lgrf må färg om. Komplxi O(n). inn vägn ill n no rn-för rvrring gr o vägrn från n no ill ll nr. Om vi prr unn vägn Är n kor? J, om ll vikr lik! nnr å? Vi kommr i på vå lgorimr: o loy hor ph O(N ) o ijkr hor ph loy hor ph lgorim om yggr på ynmik progrmmring prnr grfn m hjälp v n mri. 5 5 5 loy hor ph lgorim floy(rph g) inpu: grph g o fin hor ph in // mrix rprnion (:,:,) gmrix(g) N gnoofno(g) for k= o N- for i= o N- for j= o N- (i,j,k+) = min((i,j,k), (i,k,k)+ (k,j,k)) (:,:,N) innhållr kor vånn mn hur få g på vägn? Spr på mm gång n förgångrmri. kommr okå ko O(N ) å n ökr in komplxin. Uppr loy lgorim floy(rph g) inpu: grph g o fin hor ph in // mrix rprnion (:,:,) gmrix(g) N gnoofno(g) for i = o N- for j = o N- if (i==j or (i,j,)==inf) Ph(i,j,) = - l Ph(i,j,) = i for k= o N- for i= o N- for j= o N- (i,j,k+) = min((i,j,k), (i,k,k)+(k,j,k)) if ((i,j,k) (i,k,k)+(k,j,k)) Ph(i,j,k+) = Ph(i,j,k) l Ph(i,j,k+) = Ph(k,j,k)
Vi rr i. Sär värn i non. Skpr kön q oh oppr in ru,, null q= ((ru,,null)). Tr frm v ur kön v = (ru,,null) oh 5 q = (). = L n frm grnnrn = {, } ör grnn : nwi = + =. j ök. q = ((ru,,)) ör grnn : nwi = + =. j ök. q = ((ru,,), (ru,,)) k 5 5 Vi hr hi n korr väg mlln oh. Vilkn är n? Vilkn är vägn mlln oh? k9 5 7 7 5 5 5 5 9 9 7 9 7 5 9 5 - - - - - - - - Lå o l i vår förgångrmri. (ör nklhn kull hr jg ko om iffrorn ill movrn nor på OHiln.) 5 Mn må l kläng. Om vi vill hi vägn mlln oh gör mn å här: Ti på rn för. L r på kolumnn för. är r vi. Sn ir vi i kolumnn för är r vi. Vägn är llå --. På mm ä r vi kor vägn mlln oh är ---- (m kon 5). ijkr lgorim gr W. ijkr, 9 Kor vägn från n no n ill ll nr xmpl på n irig lgorim T ä g i vrj vrv I fll lr okå ill glol min ungrr r på grfr m poiiv vikr. Lå vrj no h följn riu Vii nn när vi hi n väg ill n in längn på n kor vägn frm ill non Prn frn ill förgångrn på vägn or mor, u for ompur Sin i no mor ou ompur hn ronomy i ou lop. Progrm ing n u o how h prn of ug, u nvr o how hir n! Th quion of whhr Mhin n Think... i ou rlvn h quion of whhr Sumrin n Swim. iln från hp://www..ux.u/ur/w/ oh in ävn från hp://n.wikiquo.org/wiki/gr_ijkr lgorim ijkr(no n, rph g) inpu: grph g o fin hor ph ring from no n n.vii ru; n.in ; n.prn null; Pquu q mpy(); q inr(n,q); whil no impy(q) v inp-fir(q); q l-fir(q); v.in; nighours nighour(v, g); for h w in nighours o nwi + gwigh(v,w); if no ivii(w) w.vii ru; w.in nwi; w.prn v; q inr(w,q); l if nwi < w.in w.in nwi; w.prn v; q up(w,q) ijkr lgorim ijkr lgorim - komplxi Vi är in vrj no i kön n gång. Tol n*o(inr) Vi r u vrj no ur kön n gång. Tol n*o(l-fir) Vi kn höv uppr lmn i kön. Mximl m gångr, m*o(up) Om mr Om kön är konrur om implmnion Oorr li å får vi n*o()+n*o(n) + m*o() = O(n ) +O(m) Hp å får vi n*o(log n)+n*o(log n) + m*o(log n) = O((n+m)log n)
loy v. ijkr lö i n grf loy O(n ) hir n kor vägn mlln ll nor. ijkr O((n+m) log n) m hp, hir kor vägn mlln n no oh ll nr. Må kör N gångr för få mm rul om loy. v O(n(n+m) log n). Är är på or gl grfr. ik grf m vikr v,w, om ngr flökpi övr ågn (v,w). Kpin kn.x. vr mängn väk om kn flö gnom rör, mximl mängn rfik på n väg llr kommunikionkpin i ornä. rfn hr vå nor (our) oh (ink) oh uppgifn är räkn mximl flö mlln oh. nom vrj åg (u,v) kn vi mximl h flö på u,v nhr. ör vrj no v gällr ol inkommn flö må vr lik m ugån flö. Kpi oh flö Mximumflö prolm lö är n funkion på knrn: flö (u, v) lö in ill non = flö u ur non Vär/vlu: kominr flö in ill vlopp. iv nävrk N, hi flö m mximl vär xmpl på mximl flö Vär = 5 örärn (ugmning) flö Nävrk m flövär Nu hr flövär ök ill!! örärn väg (ugmning ph) Ökn väg rmårik ågr flö(u, v) < (u, v) lö kn ök! kårik ågr flö(u,v) > lö kn mink! u u v v
Mximl flöorm + lgorim flö hr mximum vär om oh n om nävrk in hr någon förärn väg. or & ulkron lgorimn:. Iniilir nävrk m noll flö. nrop mon finlow() om finir nlig. Om finn förärn vägr:.. Hi n v m.. Ök flö.. nrop (rkuriv) finlow() Iniir nävrk m nollflö. Kpirn i vr ovn ågrn oh flö i grön nn ågrn. Skik ignom nhflö gnom nävrk. lövägn mrkr m rö oh förär flövärn i lå. Skik yrligr nhflö gnom nävrk. Skik nhflö gnom n förärn vägn. Nu finn ing flr förärn vägr. llå Skik ignom yrligr nhflö gnom nävrk. Nor finn yrligr n förärn väg om går gnom knn i min. Vi hr hi nävrk mximl flö! Hur gör mn mr pifik? Hur v mn finn n förärn väg? Hur v mn vilkn v förär vägrn mn k för? lgorimn på iorn 55-5 mr pifik. Norn numrr oh numrn nvän om n f prioriorning i n kö. (-, ) (-, ) (, ) (, ) ör vägn från ill : märk om äng oh (-, ) (v in öppn från någon no flö kn föränr oänlig) ågrn från rvrr, norn i nr änn mrkr öppn oh märk m r mximl kpi oh ä in i prio-kön. q = (, )
(-, ) (, ) (, ) (, ) ör non från kön () oh mrkr äng. ågr unrök i ur oh orning. ågn (,) lr ill äng no oh (, ) lr ill öppn no - ing hänr. ågn (,) lr ill n ny no om mrkr (, ) Nu hr vi nå frm ill, rvrringn vry. Mn följr gn kå ill oh mrkrr ågrn miig om norn vmrkr. (-, ) (-, ) (, ) (, ) nr vägn från ill : märk om äng oh (-, ) ågrn från rvrr. from vägn ill in kn ök mr runr vi i n. q=() (, ) ör non från kön () oh mrkr äng. ågr unrök i ur oh orning. ågn (,) lr ill äng no - ing hänr. ågn (,) lr ill n ny no (kläng) om kn mrkr m mximl nuvrn flö, v (, ). ågn (,) lr ill n ny no om mrkr (, ). q=(,) (, ) (-, ) (, ) (, ) ör non från kön () oh mrkr äng. ågr unrök i ur oh orning. ågn (,) oh (, ) lr ill äng nor oh (, ) ill n öppn no - (, ) ing hänr. ör non från kön (). Vi hr nå. Trvrring vry oh vi går kå oh vmkrr ll. Om vi nu förökr örj om ign å hir vi ing ny from å (,) oh (,) unyj mximl.