Készítette: Kosztyán Zsolt Tibor Hálótervezés Készítette: Kosztyán Zsolt Tibor kzst@almos.vein.hu kzst@vision.vein.hu http://vision.vein.hu/~kzst/oktatas/halo/index.htm 2.
Módszerek lefutási ideje P osztályúak NP osztályúak NP teljesek Lefutási idő: O(f(n))=g(n) n1>n, c>0 cf(n)>=g(n) n1<n
Alapvető gráfelméleti algoritmusok BFS (Breath First Search) O(n2)
Alapvető gráfelméleti algoritmusok DFS (Depth First Search) O(n2)
Minimális költségű feszítőfa keresése Minimális költségű feszítőfa: Egy súlyozott gráf részgráfja minimális költségű feszítőfa (minimal spanning tree) ha: Feszítőfa (a gráf valamennyi csúcsát tartalmazza összefüggő körmentes) és a lehetséges feszítőfák közül minimális költségű.
Kruskál algoritmus O(n2), O(m+n·log(n))
Prim algoritmus O(n2), O(m+n·log(n))
Sollin algoritmus O(m.log(n))
Minimális költségű feszítőfák - esettanulmány
Legrövidebb út keresése – Dijkstra algoritmussal O(n2)
Legrövidebb út keresése - esettanulmány
Negatív összegű körök ERROR
Bellman – Ford algoritmus O(n3)
Izomorfia, automorfizmus Egy G1=(N1,A1) gráf izomorf egy G2=(N2,A2) gráffal, ha létezik j:N1N2 , és f:A1A2 kölcsönösen egyértelmű függvény. Egy gráf önmagával vett izomorf leképzését automorfizmusnak nevezzük.
Topológikus rendezés Egy G=(N,A) irányított körmentes gráf topologikus rendezésén a csúcsainak egy olyan sorba rendezését értjük, melyre teljesül, hogy ha N1,N2N és (N1,N2)A akkor N1,N2 –t előzze meg a listában.
Topológikus rendezés – szintekre bontás Első szintbe rendezzük azokat a csúcsokat, amelyeknek csak kimenő élük van. (források) Ezekből a csúcsokból kimenő éleket töröljük. Majd a következő szintbe rendezzük azokat a csúcsokat, amelyek a módosított gráfban források. 2. addig ismételjük, ameddig az összes csúcsot szintekbe nem soroltuk. Összekötjük a csúcsokat az eredeti gráfnak megfelelően.
Topológikus rendezés – szintekre bontás
Minimális út keresése – topologikus rendezéssel O(n+m)
Legrövidebb út számítása minden csúcspontból Legrövidebb utat számoló algoritmusok alkalmazása minden pontra Legrövidebb utak számítása mátrixokkal Egyéb módszerek
Mátrixok használata legrövidebb utak számítására - fogalmak Szomszédsági mátrix Legyen G egy irányított gráf, melynek n csúcsa van, akkor a G szomszédsági mátrixa, A , n x n -es mátrix a következő módon definiálható : Ai,j=1, ha i csúcsból él vezet j-be, különben Ai,j=0. Ha G irányítatlan gráf, akkor a szomszédsági mátrixa szimmetrikus! A=
Mátrixok használata legrövidebb utak számítására - fogalmak Elérhetőségi mátrix Legyen A a G gráf szomszédsági mátrixa, akkor K = Ak, azaz A k-adik hatványaként kapott mátrix. Ki,j eleme, az i csúcsból a j csúcsba vezető k hosszúságú utak számát adja. Pl. k=2, k=3, k=4 hosszúságú utak: A2= A3= A4=
Mátrixok használata legrövidebb utak számítására - fogalmak Elérhetőségi mátrix Definiáljunk egy Br mátrixot akkor ennek a mátrixnak az i,j eleme az i-ből j-be vezető r vagy ennél rövidebb utak számát adja. Ha i-ből létezik út j-be akkor ez maximum n hosszú vagy rövidebb út. Ebből következik, hogyha az útmátrixok valamelyikének 1<=k<=n esetén i,j -edik eleme nem zérus, azaz a mátrix i,j eleme nem zérus, akkor j elérhető i-ből. Ennek megfelelően definiálhatunk egy ún. elérhetőségi mátrixot: A G gráf útmátrix elérhetőségi mátrixa legyen egy P mátrix. Pi,j=1, ha i-ből létezik valamilyen út j-be, különben Pi,j=0
Mátrixok használata legrövidebb utak számítására - fogalmak Elérhetőségi, szomszédsági mátrixok - példa
Floyd-Warshall algoritmus O(n3) Legyen adva a következő gráf: Legyen 1~R, 2~S, 3~T és 4~U. Legyen W a gráf súlymátrixa. Írjunk a 0-ák helyébe -t és nevezzük ezt a mátrixot A-nak
Floyd-Warshall algoritmus O(n3) Ennek megfelelő útmátrix: Vezessük be a következő mátrix műveletet: ahol a Ak k=1..n -ig számítandó, n a A mérete (n*n) , és A0=A. A kapott eredmény mátrix An a legrövidebb utakat adja!
Floyd-Warshall algoritmus O(n3) Esetünkben n=4. Az első menetben k=1-re a kapott mátrix: A megfelelő útmátrix: ahol pl. URS = UR+RS ami megfelel a (4,1)+(1,2) útnak.
Floyd-Warshall algoritmus O(n3) A k = 4 -re a végeredmény, a legrövidebb utak hossza és a megfelelő útmátrix a legrövidebb utakkal:
Szorgalmi feladatok Pásztor, a farkas, a kecske és a káposzta A pásztor, a farkas, a kecske, és a káposzta a folyó egyik oldalán vannak. A pásztor feladata, hogy átvigye a társaságot a túlsó partra. Ehhez egy kétszemélyes csónak áll rendelkezésre, amelyben a pásztoron kívül még egy utas elfér, a kecske vagy a farkas, vagy a káposzta. (10p) Minimális költségű legrövidebb út keresése (5-15p + 5-15p)
Szorgalmi feladatok Arbitrázs Az arbitrázs a valuta árfolyamokban rejlő egyenetlenségnek olyan hasznosítását jelenti, amikor egy valuta egy egységét ugyanazon valuta egy egységnél nagyobb értékére váltjuk át. Pl. tfh. 1USD=0,7GDP, 1GDP=9,5DKK és 1DKK=0,16USD. Ekkor az a pénzváltó aki 1USD-t fektet be a valuta konverzió során 0,7x9,5x0,16 USD-t vásárol, ezzel 6,4% haszonra tesz szert.
Szorgalmi feladatok Arbitrázs Tfh. Adott n különböző (c1,c2,..,cn) valutanem és a valutaárfolyamok egy n x n-es R táblázata, amely azt mutatja, hogy a ci valuta egy egységéért Ri,j egységnyi cj valuta vásárolható. Adjunk hatékony algoritmust, amely meghatározza, hogy létezik-e a valutanemeknek olyan (ci1,ci2,..,cik) sorozata, amelyre Ri1,i2xRi2,i3x..xRik-1,ikxRik,1>1. Elemezzük az algoritmus futási idejét. (30p)
2.