• Nem Talált Eredményt

3. Gr´ afok 62

3.4. Gr´ afbej´ ar´ asok

3.4.2. Legsz´ elesebb utak

Ha egy gr´af ´eleihez sz´amokat rendel¨unk, az nem csak az adott ´el hossz´at vagy k¨olts´ e-g´et ´ırhatja le. Elk´epzelhet˝o olyan modell is, ahol egy ´elhalmazt nem a hozz´ajuk rendelt sz´amok ¨osszege, hanem mondjuk azok minimuma jellemez. K´epzelj¨uk el, hogy egy sz´ a-m´ıt´og´eph´al´ozat egyik cs´ucs´ab´ol egy m´asik cs´ucs´aba kell adatfolyamot k¨ulden¨unk ´ugy, hogy az esetleges k´esleltet´es nem okoz probl´em´at, azonban az adatok csak egyetlen ´ utvo-nalon utazhatnak, amelyen min´el nagyobb s´avsz´eless´eg el´er´ese a c´el. Ebben az esetben a sz´am´ıt´og´eph´al´ozatot le´ır´o gr´af ´eleihez tartoz´o ´ert´ekek az adott kapcsolat s´avsz´eless´ e-g´enek felelnek meg ´es egy ´ut s´avsz´eless´ege pedig az ´uton tal´alhat´o ´elek s´avsz´eless´eg´enek minimuma lesz. Ez motiv´alja az al´abbi defin´ıci´ot.

3.69. Defin´ıci´o Legyen G = (V, E) egy ir´any´ıtott vagy ir´any´ıtatlan gr´af, ´es legyen w : E →R+ az egyes ´elek

”sz´eless´eg´et” le´ır´o f¨uggv´eny. Ha P aGegy ´utja, akkorwsz´eless´ege a P legkeskenyebb ´el´enek sz´eless´ege: w(P) := min{w(e) :e∈E(P)}.

A legr¨ovidebb utak keres´es´ehez hasonl´oan term´eszetes probl´ema adott G gr´af ´es w sz´eless´egf¨uggv´eny eset´en, hogy Gb´armely k´et cs´ucsa k¨oz¨ott legsz´elesebb utat keress¨unk, ill., hogy egyG-beli gy¨ok´erpontb´olGb´armely m´asik pontj´aba legsz´elesebb utat tal´aljunk.

Az al´abbi t´etel szerint haGir´any´ıtatlan, akkor nagyon gyorsan boldogulhatunk, mert G tetsz˝oleges maxim´alis ¨ossz-sz´eless´eg˝u fesz´ıt˝of´aja a G gr´af b´armely k´et cs´ucsa k¨oz¨ott egy maxim´alis sz´eless´eg˝u utat tartalmaz.

3.70. T´etel Tegy¨uk fel, hogy G= (V, E) ir´any´ıtatlan, ¨osszef¨ugg˝o gr´af ´es a w:E →R+

sz´eless´egf¨uggv´eny olyan, hogy w(e1) ≥ w(e2) ≥ . . . ≥ w(em), ahol E = {e1, e2, . . . , em}.

Ekkor a Kruskal algoritmust az e1, e2, . . . sorrendben lefuttatva a G olyan F fesz´ıt˝of´aj´at adja meg, ami G b´armely k´et cs´ucsa k¨oz¨ott G egy legsz´elesebb ´utj´at tartalmazza.

Bizony´ıt´as. Indirekt bizony´ıtunk. LegyenF a T´etelben le´ırt fesz´ıt˝ofa, ´es tegy¨uk fel, hogy P olyan uv-´ut G-ben, ami sz´elesebb az u-t ´es v-t F-ben ¨osszek¨ot˝o P0 utn´´ al. A P0 ut´ sz´eless´eg´et meghat´aroz´oe0 ´el sz´eless´ege teh´at kisebb aP ´ut b´armely ´el´enek sz´eless´eg´en´el.

Hagyjuk el e0-t F-b˝ol, mi´altal F ugy esik k´´ et komponensre, hogy a u az egyik, v pedig a m´asik komponensbe ker¨ul. Mivel P egy u-t ´es v-t ¨osszek¨ot˝o ´ut, a P-nek van legal´abb egy olyan (mondjuk e) ´ele, ami F −e0 k´et komponense k¨oz¨ott fut, ´es ez´ert persze e nem

´

ele F-nek. Az indirekt feltev´es miatt w(e) > w(e0), de ekkor a Kruskal algoritmus e-t e0-n´el kor´abban ellen˝orizte, teh´atF −e0 egy r´eszhalmaz´ahoz pr´ob´alta hozz´avenni. Mivel e-t m´eg F −e0-h¨oz hozz´av´eve sem kapunk k¨ort, a Kruskal algoritmus fut´asakor az e ´elt be kellett volna venn¨unk az F ´elhalmazba, m´arpedig ez ellentmond annak, hogy e nem

´

ele F-nek. Ez az ellentmond´as pedig az indirekt feltev´es¨unket c´afolja, teh´at F aG gr´af b´armely cs´ucsa k¨oz¨ott egy legsz´elesebb utat tartalmaz.

A fenti bizony´ıt´as ´ertelemszer˝u m´odos´ıt´as´aval az is igazolhat´o, hogy a 3.70. T´etelben a Kruskal algoritmus helyett b´armely m´as olyan algoritmust is haszn´alhattunk volna, ami egy legnagyobb ¨ossz-sz´eless´eg˝u fesz´ıt˝of´at tal´al a G gr´afban. Ha azonban a G gr´af ir´any´ıtott, akkor a fenti elj´ar´as nem m˝uk¨odik. Kider¨ul azonban, hogy a Dijkstra algo-ritmus egy ´ertelemszer˝u m´odos´ıt´asa alkalmazhat´o erre az esetre. Mivel az algoritmus kiterjeszt´ese l´enyegesen ´altal´anosabb k¨or¨ulm´enyek k¨oz¨ott is m˝uk¨odik, ez´ert az al´ abbiak-ban ´altal´anos´ıtjuk a legsz´elesebb utak keres´es´enek probl´em´aj´at, ´es erre az ´altal´anos´ıtott probl´em´ara mutatunk elj´ar´ast.

3.71. Defin´ıci´o Tegy¨uk fel, hogy a G gr´af ´utjain ´ugy ´ertelmezt¨unk egy

”j´os´ag” nev˝u tu-lajdons´agot. Ez a tulajdons´ag rendez´es, ha b´armely ´ut legal´abb olyan j´o mint ¨onmaga, b´armely k´et ´ut ¨osszehasonl´ıthat´o (azaz k¨oz¨ul¨uk az egyik legal´abb olyan

”j´o”, mint a m´asik)

´

es tranzit´ıv, azaz ha P

”jobb”, mint Q ´es Q

”jobb”, mint R, akor P is

”jobb” mint R.

A ”j´os´ag” tulajdons´agot akkor nevezz¨uk monotonnak, ha tetsz˝oleges ´ut r´esz´utja mindig legal´abb olyan

”j´o”, mint maga az ´ut. V´eg¨ul a j´os´ag tulajdons´ag konzisztens, ha tetsz˝ o-leges ´ut egy kezd˝oszakasz´at egy, a kezd˝oszakaszn´al nem

”rosszabb” ´uttal helyettes´ıtve a kiindul´asi ´utn´al nem kaphatunk kev´esb´e

”j´ot”.

Vegy¨uk ´eszre, hogy ha egy ´ut ann´al

”jobb” min´el sz´elesebb, akkor ez a fajta

”j´os´ag”

tulajdons´ag monoton, konzisztens rendez´es. Hasonl´oan, ha egy utat akkor tekint¨unk

”jobbnak” egy m´asikn´al, ha kevesebb ´elt tartalmaz (vagy ´altal´anosabban: ha adott nem-negat´ıv hosszf¨ugv´eny szerint r¨ovidebb), akkor is egy monoton, konzisztens rendez´est defini´altunk. Sz¨uks´eg¨unk lesz a k¨ovetkez˝o seg´edt´etelre.

3.72. Lemma Ha a

”j´os´ag” a G ir´any´ıtott gr´af ´utjain egy monoton, konzisztens rende-z´es, ´es P egy

”legjobb”uv-´ut G-ben (azaz nincs P-n´el jobb uv-´ut), akkor P tetsz˝oleges w pontj´ara G

”legjobb”uw-´utja legal´abb olyan

”j´o”, mint P.

Bizony´ıt´as. A P ut´ u-b´ol w-be vezet˝o P0 r´esze a P ´ut r´esz´utja, ez´ert a

”j´os´ag” mo-notonit´asa miatt P0 legal´abb olyan j´o, mint P, ´es a

”legjobb” uw-´ut nem lehet P0-n´el

”rosszabb”.

A legsz´elesebb utak ir´any´ıtott gr´afban t¨ort´en˝o keres´es´ehez az a f˝o eredm´eny, hogy tet-sz˝oleges monoton, konzisztens rendez´es eset´en haszn´alhat´o a Dijkstra algoritmus al´abbi v´altozata.

Dijkstra algoritmusa az utak monoton, konzisztens

”j´os´ag” szerinti rende-z´esekor

Input: Egyn cs´ucs´uG= (V, E) ir´any´ıtott gr´af, u=u0 gy¨ok´erpont ´es egy monoton, konzisztens

”j´os´ag” szerinti rendez´esG utjain.´

Output: G egy u gy¨oker˝u, u-b´ol kifel´e ir´any´ıtott F r´eszf´aja, amiben minden u-b´ol G-ben el´erhet˝o cs´ucs el´erhet˝o, m´egpedig egy

”legjobb”G-beli uv-´uton.

M˝uk¨od´es: LegyenU0 =u0´esF0 azu0 pontot tartalmaz´o egypont´u fa. Az algoritmus az i-dik l´ep´esben elk´esz´ıti az Fi r´eszf´at ´es az Ui = {u0, u1, . . . , ui} halmazt, az output pedig az F = Fn r´eszfa. A tov´abbiakban jel¨olje Pvi az Fi fa uv-´utj´at (felt´eve, hogy v cs´ucsa Fi-nek). Az algoritmus fut´asa sor´an minden i-re igaz, hogy u-b´ol Fi-ben az Ui halmaz mindenv cs´ucsa el´erhet˝o, tov´abb´a, hogyUi−1-en k´ıv¨ulFi-nek csak levelei vannak.

u Ui

ui

Az algoritmus i-dik l´ep´es´eben az Fi−1 r´eszf´ab´ol ´ugy k´esz´ıti el az Fi r´eszf´at, hogy a G gr´af ¨osszes olyan ui−1v ´elen jav´ıtunk, amire v 6∈ Ui−1. A jav´ıt´as abb´ol ´all, hogy ha

Pvi−1 nem

”jobb” mint az az ´ut, amit ´ugy kapunk, hogy a Pui−1i−1 utat kieg´esz´ıtj¨uk az ui−1v

´

ellel (mivel v az Fi−1 lev´ele, ez´ert ez val´oban ´ut lesz), akkor t¨or¨olj¨uk Fi−1-nek a v-be vezet˝o ´el´et, ´es bevessz¨uk Fi-be az ui−1v ´elt. (Speci´alisan, ha v nem volt cs´ucsa az Fi−1

f´anak, akkorFi-be automatikusan bevessz¨uk azui−1v´elt.) Az algoritmusi-dik l´ep´es´enek m´asodik r´esz´eben pedig tekintj¨uk azUi−1-b˝ol kivezet˝o Pvi-utakat, ezen utak

Az algoritmus helyess´eg´ehez csup´an azt al´abbi Lemm´at kell igazolni.

3.73. Lemma A fent le´ırt Dijkstra algoritmus v´egrehajt´asa ut´an az al´abbi tulajdons´agok teljes¨ulnek minden i= 0,1, . . . neset´en.

Tekintettel a V(G) = Un−1 egyenl˝os´egre, az algoritmus helyess´ege azonnal k¨ovetkezik az output F =Fn fa3.3tulajdons´ag´ab´ol.

A 3.73. Lemma bizony´ıt´asa. Azt igazoljukiszerinti indukci´oval, hogy azFi ara mindenieset´en

fenn-´

allnak a 3.3´es3.4 tulajdons´agok. A

os´ag” monotonit´asa miatt az egypont´u utak a legjobbak, ez´ert i= 0-ra teljes¨ul a3.4 tulajdons´ag. A3.3tulajdons´agi= 0-ra k¨ozvetlen¨ul ad´odik azF1 defin´ıci´oj´ab´ol.

Tegy¨uk fel teh´at, hogy3.3´es3.4 teljes¨ulnek (i1)-re, az indukci´os l´ep´esben pedig ugyanezt igazoljuk i-re. vonatkoz´o3.3tulajdons´ag miattPwi nem

rosszabb”Pw-n´el, teh´atP-n´el sem. P ut´ w-ig tart´o kezd˝oszelet´et helyettes´ıtj¨ukPwi-vel. Figyelj¨uk meg egyr´eszt, hogy az (i1)-re vonatkoz´o 3.3 tulajdons´ag ´es a

os´ag” konzisztenci´aja miattP0 nem

rosszabb”P-n´el. a 3.3tulajdons´ag ekkor is teljes¨ul.

2.2 eseteg¨ul, ha a P0 ´ut nem tartalmazza azui cs´ucsot, akkor az algoritmusb´ol ad´od´oan Pvi+1 nem rosszabb”Pvi-n´el, ami (i1)-re ´erv´enyes3.3tulajdons´ag miatt nem rosszabbP0-n´el, teh´atP-n´el sem. Ebben az esetben is teljes¨ul teh´at a3.3tulajdons´agi-re.

Az indukci´os l´ep´es befejez´es´ehez a 3.4 tulajdons´agot kelli-re igazolnunk. Tegy¨uk fel, hogy v Ui

´

esw6∈Ui, valamint, hogyP a Gegy tetsz˝oleges uw-´utja. Hav 6=ui, azazvUi−1, akkor az (i 1)-re feltett 3.4 tulajdons´ag miatt Pvi−1 nem rosszabb P-n´el. Az algoritmusb´ol ad´od´oan pedig Pvi nem rosszabb, mint Pvi−1-n´el, teh´at Pvi csakugyan legal´abb olyan j´o, mintP.

Feltehetj¨uk teh´at, hogy v = ui. Legyen x a P ut utols´´ o Ui-beli cs´ucsa ut´an k¨ovetkez˝o cs´ucs ´es esz´ıts¨uk el aP0 utat ´ugy, hogy aP ut´ u-b´olx-be vezet˝o r´esz´etPxi-szel helyettes´ıtj¨uk. Mivelx-be vezet Ui-beli pontb´ol ´el, ez´ertxbenne van az Fi aban. R´aad´asulPxi mindenxel˝otti cs´ucsaUi-beli, ez´ertP0 val´oban egyG-beli ´ut lesz. Az (i1)-re feltett 3.3tulajdons´ag miatt Pxi legal´abb olyan

o”, mint az amit helyettes´ıtett¨unk vele P-ben, ez´ert a

os´ag” konzisztenci´aja miatt P0 legal´abb olyan

o”, mint P. Az algoritmusi-dik l´ep´es´ebenui-t ´ugy v´alasztottuk, hogyPuii ne legyen

rosszabb”Pxi-n´el, ez´ertPuii nem rosszabb”P0-n´el ´es ´ıgyP-n´el sem. Ez pedig a 3.4 tulajdons´agot igazolja, ´es ezzel befejezt¨uk az indukci´os l´ep´es bizony´ıt´as´at.

Mi´ert k´ınl´odtunk az ´altal´anos´ıtott Dijkstra algoritmus helyess´eg´enek

os´agos” igazol´as´aval ahelyett, hogy k¨ul¨on bizony´ıtottunk volna legr¨ovidebb utakra ´es legsz´elesebbekre is? K´et okb´ol. Egyr´eszt p´eld´at mutattunk arra a fajta gondolkod´asm´odra, aminek elsaj´at´ıt´asa a t´argy egyik c´elja, ´es tal´an haszna is azok sz´am´ara, akik meg´ertenek valamit bel˝ole, ´es nem csak ´atmennek a vizsg´an. Arr´ol van ugyanis sz´o, hogy amint siker¨ult igazolni egy m´odszer helyess´eg´et, azonnal felmer¨ul (egy matematikusban) a term´eszetes erd´es: vajon melyek azok a leg´altal´anosabb felt´etelek, amelyek fenn´all´asa mellett m´eg helyesen m˝uk¨odik az algoritmus? Erre l´attunk egyfajta v´alaszt a fenti gondolatmenetben. De innen mindj´art l´atszik a asik ok is. Az utak r¨ovids´ege ill. sz´eless´ege csup´an k´et kiragadott p´elda volt monoton, konzisztens rendez´esre. Az algoritmus ereje abban ´all, hogy b´armely ilyen szitu´aci´oban helyesen m˝uk¨odik, teh´at ha pl egy gr´af ´elein adott egyl hossz- ´es egyw sz´eless´egf¨uggv´eny, akkor egy P ut´

os´ag´at” defini´alhatjuk

´

eppens´eggel ´ugy, hogyP akkor

jobb”, mintP0, hag(P)g(P0), aholg(P) := 63·w(P)−37·l(P). Ez a

os´agfogalom” k¨onnyen l´athat´oan monoton ´es konzisztens rendez´es, teh´at erre is m˝uk¨odik az algoritmus.

(Voltak´eppen arr´ol van sz´o, hogy a j´os´ag szempontj´ab´ol s´ulyozzuk az ´ut sz´eless´eg´et ´es hossz´at, a konkr´et eld´aban 63%-ban sz´am´ıt a sz´eless´eg, ´es 37%-ban a hossz.) Egy ´erdekes extr´em eset, amikor a sz´eless´eg 100%-ban sz´am´ıt, ´es

infinitezim´alisan” a hossz, vagyis egy P ´ut akkor

jobb”P0-n´el, haP sz´elesebb P0-n´el vagy ha P ´es P0 egyforma sz´elesek, deP ovidebb. Ekkor a fenti algoritmus ´u.n. legr¨ovidebb legsz´elesebb utakat keres: a megtal´alt uv-´ut a l´etez˝o legsz´elesebbuv-utak egyike, m´egpedig az egyik legr¨ovidebb lesz. M˝uk¨odik persze a dolog ford´ıtott priorit´assal is: az ´altal´anos´ıtott Dijkstra algoritmus tetsz˝oleges u gy¨ok´erb˝ol (kezd˝opontb´ol) megtal´alja a G olyan kifel´e ir´any´ıtott

fesz´ıt˝of´aj´at”, amely a gy¨ok´erpontb´ol b´armely m´as cs´ucsba egy legr¨ovidebb utat tartalmaz, de ha t¨obb ilyen is van, akkor a legr¨ovidebbek k¨oz¨ul a legsz´elesebbek egyik´et.