Elérhetőségi reláció
A matematika, azon belül a gráfelmélet területén az elérhetőség (reachability) arra a lehetőségre utal, hogy a gráf egyik csúcsából el lehet jutni egy másik csúcsába. Az csúcsból elérhető a csúcs (avagy a csúcs elérhető az csúcsból), ha létezik szomszédos csúcsok sorozata (tehát egy séta), ami -sel kezdődik és -vel végződik.
Irányítatlan gráfban tetszőleges két csúcs közötti elérhetőség eldönthető a gráf összefüggő komponenseinek ismeretében. Két csúcs pontosan akkor elérhető egymásból, ha ugyanahhoz az összefüggő komponenshez tartoznak. Az irányítatlan gráf komponensekre bontása lineáris időben elvégezhető.
A szócikk további része az irányított gráfokkal foglalkozik, melyekben lényegesen nehezebb feladat a páronkénti elérhetőség megállapítása.
Definíció
[szerkesztés]A csúcshalmazzal és élhalmazzal rendelkező irányított gráfban értelmezett elérhetőségi reláció alatt az tranzitív lezárását értjük, vagyis csúcsainak minden rendezett párját, melyre létezik olyan csúcssorozat úgy, hogy a él bármely -re része -nek.[1]
Ha körmentes, akkor elérhetőségi relációja egy részbenrendezés; bármely részbenrendezés meghatározható ezen a módon, például mint a tranzitív redukciójának elérhetőségi relációja.[2] Egy fontos következmény, hogy mivel a részbenrendezések antiszimmetrikusak, ha -ből elérhető , -ből nem érhető el . Ez könnyen látható abból, hogy ha -ből -be és vissza -be is el tudunk jutni, akkor kört tartalmazna, pedig abból indultunk ki, hogy körmentes. Ha irányított, de nem körmentes (tehát legalább egy kört tartalmaz), akkor elérhetőségi relációja részbenrendezés helyett előrendezésnek felel meg. [3]
Algoritmusok
[szerkesztés]Az elérhetőséget meghatározó algoritmusokat két csoportba oszthatjuk: vannak azok, melyek futásához szükség van előfeldolgozásra és azok, melyekhez nem.
Ha csak egyetlen, vagy néhány lekérdezést végezhetünk, hatékonyabb eltekinteni a komplex adatstruktúráktól és közvetlenül a kívánt csúcspár elérhetőségével számolni. Ez lineáris idejű algoritmusokkal elvégezhető, például szélességi bejárás vagy iteratívan mélyülő keresés segítségével.[4]
Ha több lekérdezést végezhetünk, kifinomultabb módszerek is alkalmazhatók; a használni kívánt módszer a szóba jövő gráf jellemzőitől függhet. Némi előfeldolgozási időért és extra tárterületért cserébe egy olyan adatszerkezet hozható létre, ami bármilyen csúcspár között felmerülő elérhetőségi kérdéseket akár időben megválaszolhat. Alább három különböző, egyre specializáltabb helyzetekre kiélezett algoritmust és hozzá tartozó adatstruktúrát vizsgálunk meg.
Floyd–Warshall-algoritmus
[szerkesztés]A Floyd–Warshall-algoritmus[5] bármely irányított gráf tranzitív lezárásának kiszámítására felhasználható, ami az elérhetőségi relációt a definíció szerint előállítja.
Az algoritmus a legrosszabb esetet figyelembe véve időben fut le és tárterületet vesz igénybe. A Floyd–Warshall-algoritmus nem csak az elérhetőséget számítja ki, hanem a csúcspárok közötti legrövidebb utak nagyságát is tárolja. A „negatív köröket” tartalmazó gráfoknál a legrövidebb utak definiálatlanok is lehetnek (hiszen még egy negatív körbejárással mindig tovább csökkenthető az út költsége), de a páronkénti elérhetőséget így is rögzíti.
Thorup-algoritmus
[szerkesztés]A síkbarajzolható irányított gráfok esetében létezik egy sokkal gyorsabb módszer, amit Mikkel Thorup írt le 2004-ben.[6] A módszer előkészítési idő alatt a síkbarajzolható gráfhoz létrehoz egy méretű adatstruktúrát; ezután idő alatt képes megválaszolni elérhetőségi kérdéseket. A Thorup-algoritmus képes közelítő legrövidebb utak számítására, valamit útválasztási információ megadására.
Az algoritmus nagy vonalakban úgy működik, hogy minden csúcshoz kis számú, úgynevezett elválasztó utat rendel oly módon, hogy egy csúcsból bármely másik csúcsba menő útnak keresztül kell menni vagy vagy egy szeparátorán. Az elérhetőséggel kapcsolatos rész vázlatos áttekintése következik.
Adott gráfon az algoritmus először a csúcsokat rétegekbe szervezi egy tetszőlegesen választott csúcstól kezdve. A rétegek felépítésekor először az előző lépésből elérhető csúcsokat vesszük figyelembe (az egyetlen -ból kiindulva), majd az előző lépésbe elérő csúcsokat tekintjük, amíg csak minden csúcsot hozzá nem rendelünk valamely réteghez. A rétegek felépítése során egy csúcs legfeljebb két rétegben jelenik meg, és minden irányított útja két szomszédos rétegen, -n és -en belül húzódik. Legyen az utoljára létrehozott réteg, tehát a kifejezésben legkisebb értéke.
Ezután a gráfot újraértelmezzük a irányított gráfok sorozataként, ahol minden egyes , és ahol az összes korábbi szint egyetlen csúccsá történő összehúzása. Mivel minden irányított út legfeljebb két egymást követő rétegben jelentkezik, és mivel minden -t két egymást követő réteg alkot, ezért minden -beli irányított út legalább egy -ben (és legfeljebb kettőben) megjelenik.
Minden -re azonosítunk három olyan szeparátort, melyek eltávolításával a gráf három komponensre esik szét, melyek egyenként az eredeti gráf csúcsainak legfeljebb -részét tartalmazzák. Mivel két réteg ellentétes irányítású útból van felépítve, minden szeparátor legfeljebb két irányított utat tartalmazhat, tehát a szeparátorok összesen 6 irányított utat. Legyen ezen irányított utak halmaza. Annak bizonyítását, hogy mindig lehet találni ilyen szeparátorokat Lipton és Tarjan síkgráf-elválasztási tétele tartalmazza; ezek a szeparátorok ráadásul lineáris időben megtalálhatók.
Bármely irányított út esetében a irányítottságából adódik a csúcsok egy természetes indexelése az út elejétől a végéig. Minden -beli csúcs esetében megkeressük -ban az első olyan csúcsot, ami -ből elérhető, és az utolsót, ami eléri -t. Más szavakkal, azt vizsgáljuk, hogy -ből mennyire az elejére tudunk eljutni -nak, illetve, hogy milyen sokáig tudunk -ban maradni úgy, hogy vissza tudjunk jutni -be. Ezt az információt minden csúcshoz eltároljuk. Ezután bármilyen és csúcspár esetén, akkor éri el a csúcsot -n keresztül, ha korábban kapcsolódik -hoz, mint ahogy csatlakozik -hez.
A -t felépítő egyes rekurziós lépések során minden csúcs címkézésre kerül. Mivel a rekurzió logaritmikus mélységű, csúcsonként összesen extra információ tárolására kerül sor. Innen nézve a logaritmikus idejű elérhetőségi lekérdezés egyszerűen annyiból áll, hogy a csúcspár címkéi közül egy megfelelő közös -t kell találni. Az eredeti cikk a továbbiakban azzal foglalkozik, hogy a lekérdezés időigényét -ig tuningolja.
A módszer analízisének összefoglalásaként először láthatjuk, hogy a réteges megközelítés úgy particionálja a csúcsokat, hogy egy-egy csúccsal csak ideig kell foglalkozni. Az algoritmus szeparációs fázisa a gráfot az eredeti gráf méretének legfeljebb -e méretű komponensekre bontja, ami logaritmikus rekurziós mélységet eredményez. A rekurzió minden szintjén csak lineáris idejű munkát igényel a szeparátorok megkeresése és a csúcsok közti lehetséges kapcsolatok feltárása. A végeredmény előfeldolgozási idő, és plusz eltárolandó információ csúcsonként.
Kameda-algoritmus
[szerkesztés]Az előfeldolgozás még gyorsabb módszerét T. Kameda ötlötte ki 1975-ben.[7] Kameda módszere kizárólag olyan irányított gráfokra alkalmazható, melyek síkba rajzolhatók, körmentesek és a következő tulajdonságokkal is rendelkeznek: az összes, 0 befokú, illetve 0 kifokú csúcsnak a lerajzolás ugyanazon tartományán kell lennie (ez a feltételezés szerint általában a külső tartomány), és a tartomány határa kettéparticionálható oly módon, hogy az összes 0 befokú csúcs az egyik részben és az összes 0 kifokú csúcs a másik partícióban jelenik meg (tehát ez a kétfajta csúcs nem váltakozik).
Ha rendelkezik ezekkel a tulajdonságokkal, akkor az előfeldolgozás mindössze időt vesz igénybe, és az előző algoritmushoz hasonlóan mindössze bitet tárol el csúcsonként, az elérhetőség lekérésének ideje pedig ettől kezdve , egy egyszerű összehasonlítás.
Az előfeldolgozás a következő lépésekben történik. Hozzáadunk egy új csúcsot, melyből minden 0 befokú csúcshoz élt húzunk, valamint egy új csúcsot, melybe pedig minden 0 kifokú csúcstól húzunk élt. Vegyük észre, hogy tulajdonságai megengedik ezt a síkbarajzolhatóság megszűnése nélkül, tehát a hozzáadott csúcsok új élei sem fogják keresztezni a többit. Minden csúcshoz eltároljuk a szomszédok (a kimenő élek) listáját, a síkba rajzolás által meghatározott valamely sorrend szerint (például a gráf lerajzolása szerint az óramutató járásával megegyező irányban). Ekkor inicializálunk egy számlálót és -től indulva mélységi bejárást kezdünk meg. A bejárás során minden csúcs szomszédsági listája balról jobbra haladva meglátogatásra kerül szükség szerint. Ahogy a csúcsokat elővesszük a bejárásnál használt veremből, megcímkézzük őket értékével, majd -t dekrementáljuk. Vegyük észre, hogy címkéje mindig , címkéje pedig . Ezután megismételjük a mélységi bejárást, de ezúttal a szomszédsági lista jobbról balra kerül látogatásra.
A bejárások végeztével az és csúcsokat, valamint a hozzájuk tartozó éleket eltávolítjuk. A megmaradt csúcsok mindegyikének címkéje egy-egy kételemű lista, -től -ig terjedő értékekkel. Bármely két és csúcsot, illetve és címkéiket tekintve azt mondhatjuk, hogy pontosan akkor áll fenn, ha , , továbbá és közül legalább az egyik esetében a kisebb mint , illetve reláció is fennáll.
A módszer végeredménye az az állítás, hogy pontosan akkor elérhető -ból, ha , ami időben egyszerűen kiszámítható.
Kapcsolódó problémák
[szerkesztés]A gráfbeli elérhetőség területének másik problémája, hogy csúcs hibája esetén vizsgáljunk elérhetőségeket. Például: „Elérhető-e az -ból a csúcs akkor is, ha az csúcsok hibásak és nem érinthetjük őket?” Egy kapcsolódó probléma az élek hibáját, vagy a kettő keverékét vizsgálja. A szélességi keresési technikák ilyen lekérdezéseknél is működnek, de a hatékony orákulum konstrukciója ilyenkor nehezebb lehet.[8][9]
Az elérhetőségi lekérdezésekkel kapcsolatos másik probléma, hogy miként lehet gyorsan újraszámolni az elérhetőségi kapcsolatokat, ha a gráf egyes részei megváltoznak. Ez a kérdés előkerül például a szemétgyűjtés során, amikor egyensúlyozni kell a memória felszabadítása (hogy újra kiosztható legyen) és a futó alkalmazás teljesítményigénye között.
Kapcsolódó szócikkek
[szerkesztés]Jegyzetek
[szerkesztés]- ↑ Skiena, Steven S. (2011), "15.5 Transitive Closure and Reduction", The Algorithm Design Manual (2nd ed.), Springer, pp. 495–497, ISBN 9781848000698, <https://books.google.com/books?id=7XUSn0IKQEgC&pg=PA495>.
- ↑ Cohn, Paul Moritz (2003), Basic Algebra: Groups, Rings, and Fields, Springer, p. 17, ISBN 9781852335878, <https://books.google.com/books?id=VESm0MJOiDQC&pg=PA17>.
- ↑ Schmidt, Gunther (2010), Relational Mathematics, vol. 132, Encyclopedia of Mathematics and Its Applications, Cambridge University Press, p. 77, ISBN 9780521762687, <https://books.google.com/books?id=E4dREBTs5WsC&pg=PA559&lpg=PA77>.
- ↑ Gersting, Judith L. (2006), Mathematical Structures for Computer Science (6th ed.), Macmillan, p. 519, ISBN 9780716768647, <https://books.google.com/books?id=lvAo3AeJikQC&pg=PA519>.
- ↑ Cormen, Thomas H.; Leiserson, Charles E. & Rivest, Ronald L. et al. (2001), "Transitive closure of a directed graph", Introduction to Algorithms (2nd ed.), MIT Press and McGraw-Hill, pp. 632–634, ISBN 0-262-03293-7.
- ↑ Thorup, Mikkel (2004), "Compact oracles for reachability and approximate distances in planar digraphs", Journal of the ACM 51 (6): 993–1024, DOI 10.1145/1039488.1039493.
- ↑ Kameda, T (1975), "On the vector representation of the reachability in planar directed graphs", Information Processing Letters 3 (3): 75–77, DOI 10.1016/0020-0190(75)90019-8.
- ↑ Demetrescu, Camil; Thorup, Mikkel & Chowdhury, Rezaul Alam et al. (2008), "Oracles for distances avoiding a failed node or link", SIAM Journal on Computing 37 (5): 1299–1318, DOI 10.1137/S0097539705429847.
- ↑ Halftermeyer, Pierre, Connectivity in Networks and Compact Labeling Schemes for Emergency Planning, Universite de Bordeaux, <https://tel.archives-ouvertes.fr/tel-01110316/document>.
További információk
[szerkesztés]
Fordítás
[szerkesztés]- Ez a szócikk részben vagy egészben a Reachability című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.