Algoritmuselmélet Schlotter Ildi
2010. május 13. ildi@cs.bme.hu
Gyakorló feladatok vizsgára
Gráfelméleti alapfogalmak
1. LegyenG = (V, E) egy irányítatlan (nem feltétlenül egyszer˝u) gráf, ami éllistával adott. Hogyan lehet O(|V|+|E|)lépésben meghatározni, hogy van-e két azonos fokszámú csúcsa?
2. Egynpontú ésnél˝u összefügg˝o gráfnak összesennfeszít˝ofája van. Mi ez a gráf?
3. Egy gráf izomorf a komplementerével. Mutassuk meg, hogy összefügg ˝o.
4. Hány éle van azncsúcsú teljes gráfnak? És azncsúcsú 4-, illetve 3-reguláris gráfnak? (Egy gráfk-reguláris, ha minden csúcsának fokak.)
5. Bizonyítsd be, hogy egy gráfban a páratlan fokszámú pontok száma páros!
6. Van-e olyan egyszer˝u gráf, amely csúcsainak fokszáma rendre a) 1, 2, 2, 3, 3, 3 ? b) 1, 1, 2, 2, 3, 4, 4 ?
c) 8, 8, 8, 5, 5, 5, 3, 2, 2 ?
7. EgyGegyszer˝u,npontú gráfban(n≥3)csak egy pontnak van páros foka. Hány páros fokú pont van ekkor Gkomplementerében? (EgyG= (V, E)gráf komplementere egyG¯ = (V, E0)gráf, aholE0-ben pontosan azok az élek szerepelnek, melyekE-ben nincsenek benne.)
8. Egy összefügg˝oGgráfról tudjuk, hogy minden pontjának foka páratlan, és van egyeéle, melyet elhagyva a gráf két komponensre esik szét. Bizonyítsuk be, hogy ekkor mindkét komponens páratlan sok pontot tartal- maz!
9. Igaz-e, hogy minden összefügg˝o gráfnak van olyan pontja, melyet (a hozzá tartozó élekkel együtt) elhagyva még mindig összefügg˝o gráfot kapunk?
10. Van-e olyan (legalább 2 pontú) egyszer˝u gráf, melyben minden pont foka különböz ˝o?
Gráfok, szélességi és mélységi bejárás
1. Adott aGirányítatlan gráf a következ˝o éllistával :
a:b, c;b:a, d;c:a, d;d:b, c, e, f;e:d, f, g;f :d, e, g, h;g:e, f, h;h:f, g;
KeressünkG-ben
(a)a-ból kiinduló mélységi feszít˝ofát! (Adja meg a mélységi és befejezési számokat is, az éleket pedig osztá- lyozza típusok szerint.)
(b)a-ból kiinduló szélességi feszít˝ofát!
2. Éllistájukkal adottak aG1ésG2irányított gráfok (zárójelben az élsúlyok).
G1:a:b(3),c(8);b:d(-7);c:d(5);d:e(2);e:a(-10);
G2:a:b(2),e(1),f(-2);b:c(8),e(-7);c:;d:c(-π);e:c(100),d(5);f:d(3),e(8);
(a) Döntsük el mélységi bejárás segítségével, hogy ezek a gráfok DAG-ok-e!
(b) Amelyik gráf DAG, abban adjunk meg egy topologikus sorrendet, határozzuk meg azajel˝u csúcsból az összes többibe vezet˝o legrövidebb utak hosszát, és számítsuk ki a gráfban lev˝o leghosszabb út hosszát is.
3. Határozzuk meg az alábbi gráfban a forrásból a többi pontba vezet˝o legrövidebb illetve leghosszabb utak hosszát!
a)
6 1
1 2
0
3 0 1
3 1 3
1
4 5
1
b)
B
A C
2
9 4
5 3
D 1 E
7 F
5 −1
5
4. Határozzuk meg az alábbi gráfban a forrásból a többi pontba vezet˝o legrövidebb utak hosszát azx valós paraméter függvényében!
10 10
15 15
8 10
7 7
x 7
5 5
5. Éllistával adott a súlyozott él˝u G = (V, E)gráf. Tegyük fel, hogy az élek súlyai az 1,2,3 számok közül valók. JavasoljunkO(n+e)költség˝u algoritmust azs∈V pontból az összes továbbiv∈V pontokba viv ˝o legrövidebb utak hosszának a meghatározására. (IttnaGgráf csúcsainak,epedig az éleinek a száma.) 6. LegyenGegy irányítatlan összefügg˝o gráf. Igaz-e, hogy
(a)Gmindenféléhez vanG-nek olyan mélységi bejárása, amelybenfegy faél?
(b)Gmindenféléhez vanG-nek olyan szélességi bejárása, amelybenf egy faél?
(c)GmindenFfeszít˝ofájához vanG-nek olyan mélységi bejárása, amelybenF minden éle faél?
(d)GmindenFfeszít˝ofájához vanG-nek olyan szélességi bejárása, amelybenFminden éle faél?
7. Egy játékban egyn×mrácson lépegetünk. Egy lépés során a rács mentén vízszintesen jobbra vagy függ ˝o- legesen lefelé tudunk a következ˝o rácspontba lépni. Azonban adott néhány keresztez˝odés, ahova nem szabad lépnünk. AdjonO(nm)futási idej˝u algoritmust annak meghatározására, hogy ha a bal fels ˝o rácspontból kez- dünk, akkor el tudunk-e jutni a jobb alsó sarokba.
8. Egyn×n-es sakktábla néhány mez˝ojén az ellenfél egy huszárja (lova) áll. Ha mi olyan mez˝ore lépünk, ahol az ellenfél le tud ütni, akkor le is üt, de egyébként az ellenfél nem lép. Valamelyik mez ˝on viszont a mi huszárunk áll. AdjunkO(n2)lépésszámú algoritmust, ami meghatározza, hogy mely másik mez˝okre tudunk (lólépések sorozatával) eljutni a nélkül, hogy az ellenfél leütne!
9. A 6 pontúGgráf csúcsait jelöljex, y, z, u, v, w. A gráf egy mélységi bejárásánál a mélységi, ill. a befejezési számok a következ˝ok:x: 1,6;y: 2,4;z: 6,5;u: 3,3;v: 4,1;w: 5,2. Adjuk meg a bejáráshoz tartozó mélységi feszít˝ofa éleit. Rekonstruálható-eGaz el˝oz˝o számok ismeretében?
10. Egy számítógéphálózatbannszámítógép van. Minden olyan eseményt, hogy azi-edik gép üzenetet küld a j-ediknek(i, j, t)formában feljegyezünk, ahol ategész szám az üzenet küldésének id ˝opontját jelöli. Ugyan- abban atid˝opontban egy gép több gépnek is küldhet üzenetet. Ha atid˝opontban azi-edik gép vírusos volt, akkor egy(i, j, t)üzenet hatására aj-edik gép megfert˝oz˝odhet, ami azt jelenti, hogy at+ 1id˝oponttól kezdve már aj-edik gép is vírusos lehet. Legyen adott az(i, j, t)hármasoknak egymhosszú listája, valamintx,y és t0 < t1 egész számok. Azt kell eldöntenünk, hogy ha azx-edik gép at0 id˝opontban vírusos volt, akkor lehet-e emiatt azy-adik gép at1id˝opontban vírusos. Adjon algoritmust, ami ezt a kérdéstO((t1−t0)n+m) lépés után megválaszolja.
11. Bizonyítsuk be, hogy minden hurokélmentesG= (V, E)irányított gráf felbontható két DAG-ra; pontosabban az élhalmazának van olyanE1, E2 partíciója (E = E1∪E2 ésE1∩E2 =∅), hogy aG1 = (V, E1)és a G2= (V, E2)gráfok DAG-ok!
12. Legyen adott egyn×npixelb˝ol álló fekete-fehér kép. Szeretnénk a képen a bal fels˝o saroktól a jobb alsó sarokig egy jobbra-lefele haladó határvonalat húzni úgy, hogy a vonaltól jobbra-felfele es ˝o fekete, valamint a vonaltól balra-lefele es˝o fehér pixelek számának az összege a lehet˝o legkisebb legyen. Oldjuk meg ezt a feladatotO(n2)id˝oben!
13. Egy el˝ore rögzített útvonalon úgy indulunk el, hogy az autó L literes tankja tele van. Úticélunkhoz úgy akarunk elérni, hogy legalább egy fél tanknyi benzin maradjon az autóban. Tudjuk, hogy az utunkba es ˝o n benzinkút közül melyikben mennyibe kerül a benzin, továbbá, hogy két szomszédos benzinkút között, vala- mint a kiindulóponttól az els˝o benzinkútig, illetve az utolsó benzinkúttól a célunkig mennyi benzint fogyaszt az autó. Az egyszer˝uség kedvéért ha megállunk egy benzinkútnál, akkor mindig tele tankolunk. Adjon algo- ritmust, amiO(Ln2)lépésben megmondja, hogy hol álljunk meg tankolni ha azt akarjuk, hogy utunk során a benzinköltség minimális legyen.
Legrövidebb utak
1. a) Határozza meg minden lehetséges(s, t)pontpárra azs-b˝ol at-be vezet˝o legrövidebb út hosszát aGgráfban a Floyd-algoritmus segítségével!
b) Határozza meg az A csúcsból az összes többibe vezet˝o legrövidebb utak hosszát az alábbi gráfban a Bellmann-Ford algoritmus segítségével!
5 61
1
6 1
2 A
H B
D
F E
C
3 3
1 4
2
G 4
−3 2 1 −2
3
1 D E
B C
A
2. LegyenG= (V, E)mátrixszal adottnpontú, súlyozott él˝u irányított gráf. Tegyük fel, hogyGnem tartalmaz negatív összhosszúságú irányított kört, továbbá azt, hogy aG-beli egyszer˝u irányított utak legfeljebb 25 élb ˝ol állnak. JavasoljunkO(n2)költség˝u módszert az 1 ∈ V pontból az összes továbbiv ∈ V pontokba viv˝o legrövidebb utak hosszának a meghatározására.
3. Nyári utazásunkra valutát akarunk váltani. A pénzváltónkülönböz ˝o valutával foglalkozik, aj. fajta 1 egysé- géértrij-t kell fizetni azi. pénznemben. (Pl. ha aj. a dollár, azi. a forint, akkor mostrij = 183lehet.) Azrij
tömb felhasználásával adjonO(n3)lépéses algoritmust, amely minden valutapárra meghatározza, hogy mi az elérhet˝o legjobb átváltási arány, ha feltesszük, hogy az átváltásokért nem számolnak fel külön költséget. (Az i-r˝ol aj-re való átváltás történhet több lépcs˝oben is, érdemes lehet el˝obbi-r˝olk1-re konvertálni, onnank2-re, stb., végülj-re.)
4. Vidéken autózunk, ahol benzinkút csak bizonyos falvakban van. AzAfalubeli benzinkúttól indulunk és aB faluba akarunk elérni (ahol szintén van benzinkút). A falvak közötti utakat egyncsúcsúeél˝u, összefügg ˝o, irányítatlan gráf írja le, melynek csúcsai a falvak, az élek pedig a falvak közötti utakat jelentik, egy él súlya a két falut összeköt˝o útszakasz hossza. A gráf az éllistájával adott, és ezen kívül adott még az akfalu, amelyben van benzinkút. AdjonO(kne)lépésszámú algoritmust, amely meghatározza azA-bólB-be viv ˝o legrövidebb olyan útvonalat, melynek során soha nem kell 600 kilométernél többet autóznunk két benzinkút között.
5. Éllistával adott a súlyozott él˝u G = (V, E)gráf. Tegyük fel, hogy az élek súlyai az 1,2,3 számok közül valók. JavasoljunkO(n+e)költség˝u algoritmust azs∈V pontból az összes továbbiv∈V pontokba viv ˝o legrövidebb utak hosszának a meghatározására. (IttnaGgráf csúcsainak,epedig az éleinek a száma.)
Minimális súlyú feszít˝ofák
1. Girányítatlan gráf a következ˝o éllistával (zárójelben a költségek):
a:b(2),c(3); b:a(2),d(2); c:a(3),d(1); d:b(2),c(1),e(2),f(4);e:d(2),f(1),g(2); f:d(4),e(1),g(2),h(1);g:e(2),f(2),h(3);
h:f(1),g(3);
KeressünkG-ben
a) Prim algoritmusával minimális költség˝u feszít˝ofát!
b) Kruskal algoritmusával minimális költség˝u feszít˝ofát!
2. Öt falu szeretne aszfaltutat építeni egymás között, hogy bármelyik faluból el tudjanak jutni bármelyik másik faluba. Mi a legolcsóbb megoldás, ha az egyes falvakat az alább láthatóH gráf csúcsai, a falvak közti útépítés költségeit pedig az adott élre írt számok jelképezik?
3. Van egy2npontú teljes gráfunk, melyet két egyenl˝o pontúAésBhalmazra bontunk. A két halmazon belül az élek súlya 1, míg a két ponthalmaz között 2. Mekkora súlyú a minimális összsúlyú feszít ˝ofa a gráfban?
Hányféleképpen állhat el˝o?
4. A szoftverpiaconnféle grafikus formátum közötti oda-vissza konverzióra használatos programok kaphatók:
azi-edik és aj-edik között oda-vissza fordító program áraaij, futási ideje pedigtij(ha létezik).
a) Javasoljunk módszert annak megtervezésére, hogy minden egyes formátumról a saját grafikus terminálunk által megértett formátumra a lehet˝o leggyorsabban konvertáljunk! (Az ár nem számít.)
b) Javasoljunk módszert annak eldöntésére, hogy mely programokat vásároljuk meg, ha azt szeretnénk a lehet˝o legolcsóbban megoldani, hogy a megvett programok segítségével bármelyik formátumról bármelyik más formátumra képesek legyünk konvertálni. (Itt a futási id˝o nem számít).
5. Mátrixával adott egyG(V, E) irányítatlan gráf, melynek minden éléhez egy pozitív súly tartozik. A gráf minden csúcsa vagy egy raktárat vagy egy boltot jelképez, az élsúlyok a megfelel ˝o távolságokat jelentik.
OlyanG0 részgráfját keressük G-nek, amely minden csúcsot tartalmaz, és amelyben minden bolthoz van legalább egy raktár, ahonnan oda tudunk szállítani (azaz van köztük út a gráfban). AdjonO(n2)lépésszámú algoritmust egy a feltételeknek megfelel˝o minimális összsúlyúG0részgráf megkeresésére.
6. LegyenG = (V, E)egy súlyozott irányítatlan gráf, amiben minden él súlya pozitív. Tegyük fel, hogyG összefügg˝o, de nem teljes gráf. AGgráfhoz egy 0 súlyú élt akarunk hozzáadni úgy, hogy a keletkez ˝oG0 gráfban a minimális feszít˝ofa súlya a lehet˝o legkisebb legyen. Adjon algoritmust ami a mátrixával adottG gráfraO(|V|3)lépésben meghatározza, hogy melyik két, aG-ben nem összekötött pont közé húzzuk be az új élet.
Párosítás
1. Keressen javítóutat az alábbi páros gráfban!
2. Az alábbiP gráfban vastag élekkel jelöltem egyM párosítást. A magyar módszer segítségével keressen javítóutatM-hez, és ennek segítségével növeljeMméretét a tanult módon. A kapott párosításról döntse el, hogy az teljes illetve maximális párosítás-e! Mindkét választ indokolja!
PSfrag replacements
H
A B C D E F
P K
1 2 3 4 5 6
7
√8 2 π
3. Kutyasétáltatáskor egy parkban egy gazda egy rögzített, egyenes szakaszokból álló útvonalon halad, aminek töréspontjait1, . . . , tn, a bejáratot jelöljet0, a kijáratottn+1. A kutyája szabadon szaladgál, de atipontokban találkozik a gazdájával. Atiésti+1pontokban való találkozás között a kutya szeretne egy fát is meglátogatni (mindeni= 0,1, . . . , nesetén legfeljebb egyet-egyet). Legyenek adottak azs(ti, ti+1)távolságok (0≤i≤ n), valamint minden fának az összestiponttól vett távolsága. Tegyük fel, hogy két találkozás között a kutya legfeljebb kétszer akkora távolságot tud megtenni, mint a gazda. Adjon algoritmust, ami segít a kutyának eldönteni, hogy mikor melyik fát látogassa meg ha a kutya célja, hogy minél több fánál járjon. Az algoritmus lépésszáma legyenO(n2f+nf2), aholf a parkban lev˝o fák számát jelöli.