Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.

Slides:



Advertisements
Hasonló előadás
A Dijkstra algoritmus.
Advertisements

Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
Készítette: Major Máté
Matematika II. 4. előadás Geodézia szakmérnöki szak 2010/2011. tanév Műszaki térinformatika ágazat tavaszi félév.
Illés Tibor – Hálózati folyamok
Minimális költségű feszítőfák
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Készítette: Hanics Anikó. Az algoritmus ADT szintű leírása: A d[1..n] és P[1..n] tömböket, a korábban ismertetett módon, a távolság és a megelőző csúcs.
Készítette Schlezák Márton
Készítette: Pető László
Papp Róbert, Blaskovics Viktor, Hantos Norbert
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
A digitális számítás elmélete
5. VÉGTELEN HALMAZOK 5.1 Kiválasztási axióma
Prím algoritmus.
1 Györgyi Tamás – GYTNAAI.ELTE 2007 Április 03 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus Bellman-Ford Algoritmusa S a b d e
„Országos” feladat. Feladat: Egy tetszőleges, színes országokat tartalmazó térképen akar eljutni egy kommandós csapat egy országból egy másikba. Viszont.
Készítette: Kosztyán Zsolt Tibor
Kvantitatív módszerek
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Készítette: Lakos Péter.  Adott egy élsúlyozott, véges gráf  Negatív élsúlyokat nem tartalmaz  Lehet irányított vagy irányítatlan  Továbbá adott egy.
Dijkstra-algoritmus ismertetése
Algoritmusok II. Gyakorlat 3. Feladat Pup Márton.
Hierarchikus lista Kétféle értelemezése van:
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
11. tétel Adatbázis táblái közti kapcsolatok optimalizálása
A Dijkstra algoritmus.
Készítette: Hanics Anikó. Az algoritmus elve: Kezdetben legyen n db kék fa, azaz a gráf minden csúcsa egy-egy (egy pontból álló) kék fa, és legyen minden.
Előadó: Nagy Sára Mesterséges intelligencia Kereső rendszerek.
1 Szélességi Bejárás Györgyi Tamás – GYTNAAI.ELTE 2007 Március 22 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S b a d e f h g c.
1 Dijkstra Algoritmusa Györgyi Tamás – GYTNAAI.ELTE 2007 Április 02 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S a b c d e
Az ábrán az inicializáló blokk lefutása utáni állapotot láthatjuk. A KÉSZ halmazhoz való tartozást színezéssel valósítjuk meg. A nem KÉSZ csúcsok fehérek,
Mélységi bejárás Az algoritmus elve: Egy kezdőpontból kiindulva addig megyünk egy él mentén, ameddig el nem jutunk egy olyan csúcsba, amelyből már nem.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Dijkstra-algoritmus. A Dijkstra-algoritmus egy mohó algoritmus, amivel irányított gráfokban lehet megkeresni a legrövidebb utakat egy adott csúcspontból.
Kruskal-algoritmus.
Készítette Schlezák Márton
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Algoritmus és adatszerkezet Tavaszi félév Tóth Norbert1 Floyd-Warshall-algoritmus Legrövidebb utak keresése.
Bellmann-Ford Algoritmus
Dodekaéder Hamilton köre
Útkeresések.
Mohó algoritmusok Szlávi Péter ELTE IK
Morvai Mária-Júlia F3D3D4.  Adott egy G=(V,E)élsúlyozott, irányított vagy irányítás nélküli, negatív élsúlyokat nem tartalmazó,véges gráf. Továbbá adott.
Algoritmusok és adatszerkezetek
Prim algoritmus Algoritmusok és adatszerkezetek 2. Újvári Zsuzsanna.
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
(Bináris) Kupac (heap) adattípus
Dijkstra algoritmus. Egy minimális költségű utat keres élsúlyozott gráfban A gráf lehet irányított vagy irányítás nélküli Feltétele, hogy pozitív élsúlyok.
Dinamikus programozás
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozás II. Gráfok Dijkstra algoritmus Kruskal algoritmus.
Kvantitatív módszerek
A Dijkstra algoritmus.
BFák Kiegyensúlyozott keresőfák
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
INFOÉRA Gráfok, gráfalgoritmusok III. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Algoritmusok és Adatszerkezetek I.
Depth First Search Backtracking
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
Dijkstra algoritmusa: legrövidebb utak
Gráfalgoritmusok G=(V,E) gráf ábrázolása
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít Megvalósítás pl. láncolt listákkal HalmaztKészít(x):Képviselő egy olyan új halmazt hoz létre, amely egyetlen eleme x. X nem lehet eleme egyetlen más halmaznak sem Egyesít(x,y):Képviselő az x-et tartalmazó S x és az y-t tartalmazó S y halmazokat egyesíti HalmaztKeres(x):Képviselő visszaadja azon halmaz képviselőjének a mutatóját, amelynek x egy eleme

Mohó algoritmusok Optimalizációs problémák Globális  lokális optimalizálás A mohó stratégia csak helyi optimalizálást végez Bizonyos problémákra bebizonyíthatóan (globálisan is) optimális eredményt ad Más problémákra csak szuboptimális a mohó eredmény Példa: erőforrás lefoglalási probléma. Tfh adott egy S=(S 1,…,S n ) eseményhalmaz, amelyekhez egy k i kezdő és egy b i befejező időpont rendelhető. Két esemény kompatibilis, ha a kezdő vagy befejező pillanatukon kívül nincs átfedő időpillanat. Az optimálás célja: minél több (rövid) eseményt rendeljünk az erőforráshoz.

Az algoritmus lényege: 1. a versenyző eseményeket a befejező időpont szerint rendezzük 2.vesszük a legkorábban befejeződőt (a legrövidebbet) 3. ciklusban vesszük a befejeződött esemény után kezdődő (és a sorban a leghamarabb befejeződő) eseményt A mohó stratégiát a sorbaállítás és a leghamarabb befejeződő esemény kiválasztása jelenti. Ez esetben a mohó (lokálisan optimális) megoldás választása egyben globálisan is optimális megoldást ad.

Gráfalgoritmusok – Optimális feszítőfa Súlyozott gráfok: az élekhez hozzárendelt w:E  R függvény. Def: egy G irányítatlan gráf feszítőfája: egy olyan fa, amely az eredeti csomóponthalmazából, és az élek egy részhalmazából áll. Minimális: az élek minimális (súlyú) részhalmazából áll Mind a mélységi, mind a széltében keresés létrehoz egy feszítőfát (feszítő erdőt). Prim és Kruskal algoritmusa (mohó algoritmusok) Példa: a fa teljes súlya 37. a b h i c g d f e Vágat 4

Minimális feszítőfa növelése Alapötlet: valamelyik csúcspontból kiindulva élenként növelve. Nyilvántartjuk a minimális feszítőfa eddig felderített részét. Mohó stratégia: lépésenként egy „optimálisnak látszó” élt választunk ki. Azt az élt, amelyet a felderített fához hozzáveszünk, biztonságos élnek nevezzük, ha a fa még mindig optimális marad. Def: egy gráf egy vágata a csúcspontjainak két halmazba osztása. Léteznek a vágatot keresztező és kikerülő élek. Def: Egy vágatban könnyű élnek nevezzük a legkevesebb súlyú(ak)at.

Általános MinimálisFeszítőfaNövelő algoritmus pszeudokódja MinFFa FFa={} while FFa nem feszítőfa keresünk egy biztonságos (u,v) élt FFa-ra nézve FFa=FFa+{(u,v)} Return FFa Tétel: Ha G=(V,E) a w:E  R függvénnyel súlyozott gráf, és A olyan részhalmaza E-nek, ami egy minimális feszítőfa része is. Ha (u,v) egy könnyű él a FFa-t kikerülő vágatban, akkor az biztonságos is FFa-ra nézve Biz….. Nem bizonyítjuk be Vagyis: a mohó algoritmus egyben globálisan optimális is

Kruskal algoritmusa Az általános MinFFa algoritmuson alapul A már megtalált élek halmaza nem fa, hanem erdő Növekvő sorrendben vesszük a gráf éleit, úgy, hogy fa/erdő maradjon a b h i g d f e c 4

Kruskal algoritmusa MinFFaKruskal FFa={} for minden u  V-re do HalmaztKészít(u) Élek rendezése súly szerint növekvő sorrendben for minden (u,v)  E élre növekvő sorrendben do if HalmaztKeres(u)<>HalmaztKeres(v) then FFa=FFa+{(u,v)} Egyesít(u,v) return FFa Futási idő: elsősorban a diszjunkt halmaz megvalósítástól függ. Megfelelő megvalósítás esetén O(|E|*log(|E|))

Prim algoritmusa Egyetlen gyökérpontból indul ki, egyetlen fát épít Kezdetben a bejáratlan csúcsok  V, az induló csúcs súlya pedig 0 Minden lépésben a még bejáratlan legkönnyebb élt vesszük hozzá a halmazhoz. A bejáratlan csomópontokat prioritásos sorban tároljuk, amely a kulcs tulajdonság szerint van sorbaállítva (az odavezető él súlya) Ha egy csúcsot már elértünk, és az új irányból könnyebb élt találunk, akkor lecseréljük a kulcs értékét és a Szülő értéket Az eredmény a Szülő vektorban tárolt fa lesz

Prim algoritmusa a b h i g d f e c 4 Hatékonysága: az elsőbbségi sor hatékonyságán múlik - az első ciklus V-szer fut le - a második ciklus szintén V-szer fut le, a KiveszMin művelet időszükséglete O(logV) - a for ciklus össz időszükséglete O(E) - a kulcsot csökkent művelet időszükséglete O(logV) - össz. While*KiveszMin+For*KulcsotCsökkent, azaz O(VlogV+ElogV)=O((V+E)logV) Fibonacci-kupacok esetén javítható O(E+VlogV)-re…

MinFFAPrim(r) Bejáratlan=V for minden v  V-re do kulcs[v]=végtelen kulcs[r]=0 Szülő[r]=NIL while Bejáratlan<>{} do u=Bejáratlan.KiveszMin for minden v  u.Szomszéd-ra do if v  Bejáratlan and w(u,v)<=kulcs[v] then Szülő[v]=u kulcs[v]=w(u,v) return Szülő