bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

Hasonló dokumentumok
Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány

angolul: greedy algorithms, románul: algoritmi greedy

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Diszkrét matematika 2.

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

Gráfalgoritmusok ismétlés ősz

Algoritmusok bonyolultsága

Gráfelméleti alapfogalmak

Diszkrét matematika 1. estis képzés

ELTE IK Esti képzés tavaszi félév. Tartalom

A számítástudomány alapjai

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Diszkrét matematika 2. estis képzés

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Diszkrét matematika 2.C szakirány

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

2. Visszalépéses keresés

Algoritmuselmélet 18. előadás

Elmaradó óra. Az F = (V,T) gráf minimális feszitőfája G-nek, ha. F feszitőfája G-nek, és. C(T) minimális

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus

Diszkrét matematika 2.

Diszkrét matematika 2.C szakirány

Diszkrét matematika 1. estis képzés

Programozási módszertan. Mohó algoritmusok

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Diszkrét matematika 2. estis képzés

DISZKRÉT MATEMATIKA 2 KIDOLGOZOTT TÉTELSOR 1. RÉSZ

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Az optimális megoldást adó algoritmusok

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Gráfelméleti feladatok. c f

Hálózatszámítási modellek

III. Gráfok. 1. Irányítatlan gráfok:

Diszkrét matematika 2.C szakirány

Programozási segédlet

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Diszkrét matematika 2. estis képzés

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

2. Visszalépéses stratégia

Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz

24. tétel. Kombinatorika. A grá fok.

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Algoritmizálás, adatmodellezés tanítása 8. előadás

Gráfokkal megoldható hétköznapi problémák

Útkeresési eljárás a városi közforgalmú közlekedés szimulációjához

Algoritmusok és adatszerkezetek 2.

1. tétel - Gráfok alapfogalmai

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Gráfelmélet II. Gráfok végigjárása

Érdekes informatika feladatok

Algoritmuselmélet 2. előadás

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Matematikai problémák vizsgálata a Maple programcsomag segítségével

Megoldások 7. gyakorlat Síkgráfok, dualitás, gyenge izomorfia, Whitney-tételei

Matematika. Számonkérés. Írásbeli vizsga januárban. 1. konzultáció. Irodalom

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16.

Algoritmusok bonyolultsága

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

Adatszerkezetek II. 2. előadás

24. MINIMÁLIS KÖLTSÉGŰ UTAK I.

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

Javító és majdnem javító utak

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 12.

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

SzA II. gyakorlat, szeptember 18.

Adatszerkezetek II. 1. előadás

Adatszerkezetek II. 6. előadás

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

5. A gráf, mint adatstruktúra Gráfelméleti bevezető

Gráfok. Programozás II. előadás. Szénási Sándor.

Adatszerkezetek 2. Dr. Iványi Péter

Bevezetés a számításelméletbe II. 2. zh, ben egy maximális párosítást és egy minimális lefogó csúcshalmazt.

Mohó stratégia. Feladat: Megoldás:

Mohó algoritmusok. Példa:

Tuesday, March 6, 12. Hasító táblázatok

Dinamikus programozás - Szerelőszalag ütemezése

Diszkrét Matematika MSc hallgatók számára 7. Előadás Párosítási tételek Előadó: Hajnal Péter Jegyzetelő: Kovácsházi Anna

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Diszkrét matematika II. gyakorlat

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

2: Minimális feszítőfák, legrövidebb utak. HálózatokII, 2007

Ramsey-féle problémák

Algoritmuselmélet 11. előadás

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

7. Régió alapú szegmentálás

Átírás:

. Minimális súlyú feszítő fa keresése Képzeljük el, hogy egy útépítő vállalat azt a megbízást kapja, hogy építsen ki egy úthálózatot néhány település között (a települések között jelenleg nincs út). feltétel az, hogy az úthálózat olyan legyen, hogy bármely településről bármely másikra el lehessen jutni. vállalat tudja, hogy tetszőlegesen adott két település között mennyibe kerül megépíteni egy utat (ami sok mindentől függhet: pl. az út hosszától; domborzati viszonyoktól stb...), és úgy akarja megépíteni az úthálózatot, hogy a költségei minimálisak legyenek. zt a feladatot lefordíthatjuk a gráfelmélet nyelvére is: legyenek a települések a gráf pontjai; pontot kössünk össze éllel, ha köztük út építhető (előfordulhat, hogy település között nem lehet utat építeni, mert mondjuk az egy tájvédelmi körzeten menne keresztül, és ott nem engedélyezett útépítés); az élek súlya pedig legyen az adott út megépítésének a költsége. feladat ekkor az, hogy ebben a gráfban találjunk egy olyan részgráfot, mely a gráf összes pontját tartalmazza, bármely pont között van út, vagyis összefüggő, és az élek súlyának összege minimális. Gondoljuk meg, hogyan nézhet ki az optimális megoldás! nnyit biztosan mondhatunk, hogy nem lehet benne kör, hiszen egy kör tetszőleges élét elhagyva az összefüggőség továbbra is megmarad, az összsúly viszont csökkenne. Vagyis a feladat az, hogy irányítatlan gráfban, melyben minden élnek van valamilyen pozitív súlya, találjunk olyan minimális összsúlyú részgráfot, mely a gráf összes pontját tartalmazza, összefüggő és körmentes. Vagyis a feladat nem más, mint egy minimális összsúlyú feszítő fa keresése az adott gráfban. Minimális súlyú feszítő fa keresésére most ismertetünk algoritmust. továbbiakban legyen G = (V, ) egy irányítatlan, összefüggő gráf, melyben minden e élhez tartozik egy c(e) > súly. G-nek szeretnénk meghatározni egy minimális összsúlyú feszítő fáját. Kruskal algoritmus: Legyen = (V, ), és i =. Rendezzük a G éléit súlyuk nagysága szerinti növekvő sorrendbe (legyen az élek sorrendje e, e, e m ). while ( nem feszítő fája G-nek) if (az e i gráf körmentes) := e i ; i := i + ; end if end while

Kruskal-algoritmus tehát egy olyan üres gráfból indul ki, amelynek ponthalmaza a G gráf ponthalmazával egyezik meg. zt követően az algoritmus egyesével megvizsgálja a G gráf éleit a súlyuk nagysága szerinti sorrendben. Ha egy e élt hozzáadva az aktuális gráfhoz a kapott gráf körmentes lesz, akkor az e élt hozzávesszük -hez, egyébként pedig ugrunk a következő élre. z algoritmus akkor le, amikor az aktuális gráf feszítő fája G-nek. z algoritmus működését a következő példán mutatjuk be. Legyen a G gráf a következő: z első lépésben az súlyú élek közül kiválasztjuk az egyiket, mondjuk a élt. következő lépésben a másik egy súlyú élt, az élt is kiválaszthatjuk, hiszen így nem jön létre kör.

Most a súlyú élek közül az egyiket, mondjuk a élt választjuk, mert ezzel nem hozunk létre kört. következő lépésben az élt nem választhatjuk, mert ekkor az,, élek egy kört alkotnának. súlyú élt viszont vehetjük, hiszen ez nem hoz létre kört. zt követően a súlyú élt megint kiválaszthatjuk, hiszen így nem jön létre kör. Mivel így megkaptuk a G gráf egy feszitő fáját, ezért az algoritmus megáll.

Prim algoritmus: Legyen s a G gráf egy tetszőleges pontja. Legyen = (V, ), ahol V = s és =. while ( nem feszítő fája G-nek) G gráf azon (x, y) élei közül, melyekre x V és y V, válasszuk ki a minimális súlyút. Legyen ez az él (x, y ). V := V y ; := (x, y ); end while Prim algoritmus tehát egy olyan gráfból indul ki, mely a G gráf egyetlen pontját tartalmazza. zt követően, ha az aktuális gráfunk nem feszítő fája G-nek, kiválasztja G legkisebb súlyú olyan élét, melyet az aktuális gráfhoz hozzávéve (az élnek az -hez nem tartozó végpontjával egy) egy fát kapunk. zt az élt, és az élnek az -hez nem tartozó pontját hozzávesszük -hez. zt az eljárást folytatjuk addig, amíg a G feszítő fája lesz. uttassuk le a Prim algoritmust az előző példán a ponttal indulva. kkor a kiinduló gráfunk a pontból áll (az aktuális gráf pontjait a fekete színű pontok, éleit a vastag élek jelölik. z algoritmus először megkeresi azt a legkisebb súlyú élt, melynek az egyik végpontja az pont, a másik pedig nem a pont. z az él. z gráfhoz hozzávesszük az pontot és az élt.

zt követően megkeressük azt legkisebb súlyú élt, melynek egyik végpontja eleme az (, ) halmaznak, a másik pedig nem. z az él. z gráfhoz hozzávesszük az pontot és az élt. zután vesszük azt a legkisebb súlyú élt, melynek egyik végpontja eleme az (,, ) halmaznak, a másik pedig nem. z az él. gráfhoz hozzávesszük az pontot és az élt. következő lépésben megkeressük azt a legkisebb súlyú élt, melynek egyik végpontja eleme az (,,, ) halmaznak, a másik pedig nem. z az él. gráfhoz hozzávesszük az pontot és az élt. Végezetül vesszük azt a legkisebb súlyú élt, melynek egyik végpontja eleme az (,,,, ) halmaznak, a másik pedig nem. z az él. gráfhoz hozzávesszük az pontot és az élt.

Mivel a kapott gráf már feszítő fája G-nek, ezért az algoritmus megáll. zzel megkaptuk G egy minimális súlyú feszítő fáját. Mind a Kruskal-, mind a Prim algoritmus élek egyenkénti hozzávételével építi fel a legkisebb súlyú feszítő fát. z élek hozzávételénél mindkét algoritmus figyel arra, hogy kört ne hozzon létre. Vegyük észre, hogy a Kruskal algoritmusban az aktuális gráf mindig egy erdő, és az algoritmus mindig a legkisebb súlyú olyan élt veszi hozzá -hez, mellyel nem hoz létre kört, azaz továbbra is erdő marad. zzel szemben a Prim algoritmusban az aktuális gráf mindig egy fa, és az algoritmus mindig a legkisebb súlyú olyan élt (és az élnek az -ben nem szereplő végpontját) veszi hozzá -hez, mellyel az így kapott új gráf továbbra is fa marad. Mivel mindkét algoritmus az élek hozzávételénél mindig az adott lépésben,,legjobb élt választja, ezért a két algoritmust szokták mohó algoritmusnak is nevezni. Érdekességképpen megemlítjük, hogy fenti két algoritmussal ellentétben az eredeti gráfból kiindulva, élek egyenkénti törlésével is megkaphatunk egy minimális súlyú feszítő fát. ntimohó algoritmus: while (míg G-ben van kör) Válasszuk ki G egy tetszőleges körét, és hagyjuk el a legnagyobb súlyú élét. end while