Mi történik ha a Dijkstra algoritmusban a kezdő csúcsnak nincs szomszédja?
Kezdő csúcsnak nincs szomszédja: Izolált csúcs, a többi pont ne érhető el. Az algoritmus újraindítható egy másik komponensből.
Ha valahol közben fordul elő, akkor a komponens összes csúcsa fel van használva, amiből a többi komponens nem érhető el. Az algoritmus újraindítható egy másik komponensből.
Csak szeretném minél korrektebben specifikálni a feladot. Mert ezek nekem a pseudo kód alapján nem derültek ki. Mindig kivesszük a sorból a megfelelő elemet, oké. De mi van akkor, ha az i. lépésben a sorban szereplő csúcsok mindegyikének végtelen a távolsága a kezdőcsúcshoz képest?
Igazából nyilván a leprogramozása miatt kérdezem ezeket, hogy minél korrektebb legyen a program és a kód. Mert nyilván végtelenek nem tudok ábrázolni, legfeljebb a legnagyobb ábrázolható számot.
Vagy olyan állapotba nem is juthatok el, hogy a sorban már csak olyan csúcsok vannak, amelyeknek végtelen a távolságuk a kezdőponthoz képest?
Egyetemen nem tanultam ezekről és a pseudkód alapján tudok tájékozódni. Konkrétan az angol wiki-n lévő, de máshol is ilyet láttam. Csak tényleg, én a pseudkódban azt látom, hogy ebben az esetben ez egy végtelen ciklus. Vagy ki lehet venni a végtelennel rendelkezőeket is?
És erre hogy lenne korrekt felkészíteni a programot? Alapból csak összefüggő gráfokra fusson le, vagy fusson és ha ilyennel találkozik akkor álljon meg?
"De mi van akkor, ha az i. lépésben a sorban szereplő csúcsok mindegyikének végtelen a távolsága a kezdőcsúcshoz képest?"
Az algoritmus a Q halmazból (itt most az angol wikis jelölésrendszert használom) mindig azt a csúcsot szedi ki, amire a dist érték a legkisebb. Ha több legkisebb távolságú csúcs van, akkor tulajdonképpen választ egyet véletlenszerűen. Ha egy olyan állapotba kerülünk, ahol már minden dist érték végtelen (azaz a komponensen belül már nincs csúcs), akkor a legkisebb dist érték a végtelen, így kiválaszt véletlenszerűen egy csúcsot és folytatja tovább az algoritmust, csak véges szám helyett végtelennel kell számolni, és a végén néhol elő fognak fordulni végtelen értékek. Így minden elem ki lesz véve előbb-utóbb a Q halmazból és nem fog végtelen ciklusba kerülni az program.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!