Gráfok megvalósítása adatszerkezetekkel
Éllistás ábrázolás
Csúcsok felsorolása:
- A rá illszkedő élek másik végponttal
- A szomszédaival
- (Jelen esetben az élek, mint önálló objektumok inszignifikánssak)
Szomszédsági mátrix
Illeszkedési mátrix (incidencia)
\(N_{i,j}\begin{cases} 1, \text{ha a csúcs éle illeszkedik} \\ 0, else \end{cases}\)
Címkézett / Súlyozott Gráf
Egy \(V\text{, bocsánat }G=(V,E,\varphi, f, C)\) ötöst címkézett gráfnak (élcímkézett) nevezünk, ha
- \((V,E,\varphi)\) egy gráf???
- \(f: E \to C\)
C: számhalmaz esetén (\(\N, \Z, \R, \R^+, \R^+_0\)) \(\iff\) élsúlyozott gráf
A súlyokat akár az adjacenciamátrixba is beírhatjuk:
Adjacenciamátrix TÖBB, mint egy táblázat:
-
Az \(M\) mátrix k-adig hatványa
\(\left(M^k\right)_{i,j}\) \(i\)-ből \(j\)-be vezető \(k\) hosszú séták száma
-
Valószínűségi címkék esetén (irányított gráf)
pl. %-os valószínűség minden élre(akár magára is)
\(M^k\): \(i, j\) elem: \(k\) lépésben \(i\)-ből indulva milyen eséllyel leszek \(j\)-ben
Alkalmazásai
- Társasjáték
- Nyelvészet
- Google keresőmotor \(^{(\text{Pagerank})}\)
Cél: minimális költségű "hálózat kialakítása"
Feladat: minimális költségű feszítőfa keresése
Input: egy véges, összefüggő, pozitív élsúlyozott rendezet gráf
Output: Egyik minimális össz-élsúlyú feszítőfa
Megoldás: Kruskal algoritmus
Init: vegyük azt a részgráfot, mely az összes csúcsot tartalmazza, de nincs éle
Ciklus amíg nem összefüggő:
- Adjuk hozzá a részgráfunkhoz az (egyik) legkisebb súlyú élt azok közül, melyekkel nem keletkezik kör
Mohó algoritmus (greedy)
Minden lépésben az aktuálisan legjobbnak tűnő opciót választja Egy \(G\) gráf Euler-vonalán olyan vonalat értünk (vonal: nem ismétlünk éleket), melyben \(G\) összes éle szerepel
Mikor van G-bel Euler-vonal?
A kezdő- és végpont kivételével minden csúcson áthaladásonk \(\rightarrow\) páros fok
G-ben \(\exists\) zárt euler vonal \(\iff\) \(\forall\) csúcs foka páros