Problém s nejkratší cestou - Shortest path problem
Tento článek obsahuje seznam obecných Reference, ale zůstává z velké části neověřený, protože postrádá dostatečné odpovídající vložené citace.Červen 2009) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v teorie grafů, problém s nejkratší cestou je problém najít cesta mezi dvěma vrcholy (nebo uzly) v a graf tak, že součet závaží jeho základních hran je minimalizováno.
Problém nalezení nejkratší cesty mezi dvěma křižovatkami na cestovní mapě lze modelovat jako speciální případ problému s nejkratší cestou v grafech, kde vrcholy odpovídají křižovatkám a hrany odpovídají úsekům silnice, každý vážený délkou segment.
Definice
Lze definovat problém s nejkratší cestou grafy zda neorientovaný, režie nebo smíšený Je zde definována pro neorientované grafy; pro směrované grafy definice cesty vyžaduje, aby po sobě jdoucí vrcholy byly spojeny příslušnou směrovanou hranou.
Dva vrcholy sousedí, když oba dopadají na společnou hranu cesta v neorientovaném grafu je a sekvence vrcholů takhle sousedí s pro .Taková cesta se nazývá cesta délky z na (The jsou proměnné; jejich číslování zde souvisí s jejich pozicí v pořadí a nemusí se vztahovat k žádnému kanonickému označování vrcholů.)
Nechat být hranou incidentu pro oba a . Vzhledem k tomu, skutečný váhová funkce a neusměrněný (jednoduchý) graf , nejkratší cesta z na je cesta (kde a ) to je možné minimalizuje součet Když má každá hrana v grafu jednotkovou hmotnost nebo , to je ekvivalentní hledání cesty s nejmenším počtem hran.
Problém se někdy také nazývá problém s nejkratší cestou jednoho páru, aby se odlišil od následujících variant:
- The problém s nejkratší cestou jednoho zdroje, ve kterém musíme najít nejkratší cesty ze zdrojového vrcholu proti na všechny ostatní vrcholy v grafu.
- The problém s nejkratší cestou jednoho cíle, ve kterém musíme najít nejkratší cesty ze všech vrcholů v směrovaném grafu k jednomu cílovému vrcholu proti. To lze snížit na problém s nejkratší cestou jednoho zdroje obrácením oblouků v směrovaném grafu.
- The problém s nejkratší cestou všech párů, ve kterém musíme najít nejkratší cesty mezi každou dvojicí vrcholů proti, proti' v grafu.
Tyto zobecnění mají podstatně efektivnější algoritmy než zjednodušující přístup ke spuštění algoritmu nejkratší cesty s jedním párem na všech příslušných párech vrcholů.
Algoritmy
Nejdůležitějšími algoritmy pro řešení tohoto problému jsou:
- Dijkstrův algoritmus řeší problém nejkratší cesty s jedním zdrojem s nezápornou váhou hrany.
- Algoritmus Bellman-Ford řeší problém s jedním zdrojem, pokud okrajové váhy mohou být záporné.
- * Vyhledávací algoritmus řeší nejkratší cestu jednoho páru pomocí heuristiky, aby se pokusil zrychlit hledání.
- Floyd – Warshallův algoritmus řeší všechny páry nejkratší cesty.
- Johnsonův algoritmus řeší všechny páry nejkratších cest a může být rychlejší než Floyd – Warshall řídké grafy.
- Viterbiho algoritmus řeší problém nejkratší stochastické dráhy s další pravděpodobnostní váhou na každém uzlu.
Další algoritmy a související hodnocení lze nalézt v Cherkassky, Goldberg & Radzik (1996).
Nejkratší cesty jednoho zdroje
Neorientované grafy
Závaží | Časová složitost | Autor |
---|---|---|
ℝ+ | Ó(PROTI2) | Dijkstra 1959 |
ℝ+ | Ó((E + PROTI) logPROTI) | Johnson 1977 (binární hromada ) |
ℝ+ | Ó(E + PROTI logPROTI) | Fredman & Tarjan 1984 (Fibonacciho hromada ) |
ℕ | Ó(E) | Thorup 1999 (vyžaduje násobení v konstantním čase) |
Nevážené grafy
Algoritmus | Časová složitost | Autor |
---|---|---|
Šířka první vyhledávání | Ó(E + PROTI) |
Směrované acyklické grafy (DAG)
Použitý algoritmus topologické třídění může vyřešit problém s nejkratší cestou s jedním zdrojem v čase Θ (E + PROTI) v libovolně vážených DAG.[1]
Směrované grafy s nezápornými váhami
Následující tabulka je převzata z Schrijver (2004), s některými opravami a dodatky. Zelené pozadí označuje asymptoticky nejlépe vázané v tabulce; L je maximální délka (nebo hmotnost) mezi všemi hranami, za předpokladu celočíselné hmotnosti hran.
Závaží | Algoritmus | Časová složitost | Autor |
---|---|---|---|
ℝ | Ó(PROTI 2EL) | Ford 1956 | |
ℝ | Algoritmus Bellman-Ford | Ó(VE) | Shimbel 1955, Bellman 1958, Moore 1959 |
ℝ | Ó(PROTI 2 logPROTI) | Dantzig 1960 | |
ℝ | Dijkstrův algoritmus se seznamem | Ó(PROTI 2) | Leyzorek a kol. 1957, Dijkstra 1959, Minty (viz Pollack & Wiebenson 1960 ), Whiting & Hillier 1960 |
ℝ | Dijkstrův algoritmus s binární hromada | Ó((E + PROTI) logPROTI) | Johnson 1977 |
ℝ | Dijkstrův algoritmus s Fibonacciho hromada | Ó(E + PROTI logPROTI) | Fredman & Tarjan 1984, Fredman & Tarjan 1987 |
ℕ | Dialův algoritmus[2] (Dijkstrův algoritmus používat fronta na kbelík s L kbelíky) | Ó(E + LV) | Vytočit 1969 |
Ó(E log logL) | Johnson 1981, Karlsson & Poblete 1983 | ||
Gabowův algoritmus | Ó(E logE/PROTI L) | Gabow 1983, Gabow 1985 | |
Ó(E + PROTI √log L) | Ahuja et al. 1990 | ||
Thorup | Ó(E + PROTI log logPROTI) | Thorup 2004 |
Směrované grafy s libovolnými váhami bez negativních cyklů
Závaží | Algoritmus | Časová složitost | Autor |
---|---|---|---|
ℝ | Ó(PROTI 2EL) | Ford 1956 | |
ℝ | Algoritmus Bellman-Ford | Ó(VE) | Shimbel 1955, Bellman 1958, Moore 1959 |
ℝ | Johnson-Dijkstra s binární hromada | Ó(PROTI (E + logPROTI)) | Johnson 1977 |
ℝ | Johnson-Dijkstra s Fibonacciho hromada | Ó(PROTI (E + logPROTI)) | Fredman & Tarjan 1984, Fredman & Tarjan 1987, upraveno po Johnson 1977 |
ℕ | Johnsonova technika aplikován na Dialův algoritmus[2] | Ó(PROTI (E + L)) | Vytočit 1969, upraveno po Johnson 1977 |
Rovinné směrované grafy s libovolnými váhami
Nejkratší cesty všech párů
Problém s nejkratší cestou všech párů najde nejkratší cesty mezi každou dvojicí vrcholů proti, proti' v grafu. Problém nejkratších cest všech párů pro nevážené směrované grafy představil Shimbel (1953), kteří pozorovali, že by to mohlo být vyřešeno lineárním počtem násobení matic, které by trvalo celkem Ó(PROTI4).
Neusměrněný graf
Závaží | Časová složitost | Algoritmus |
---|---|---|
ℝ+ | Ó(PROTI3) | Floyd – Warshallův algoritmus |
Seidelův algoritmus (očekávaná doba provozu) | ||
ℕ | Williams 2014 | |
ℝ+ | Ó(EV log α (E,PROTI)) | Pettie & Ramachandran 2002 |
ℕ | Ó(EV) | Thorup 1999 aplikován na každý vrchol (vyžaduje násobení v konstantním čase). |
Směrovaný graf
Závaží | Časová složitost | Algoritmus |
---|---|---|
ℝ (žádné negativní cykly) | Ó(PROTI3) | Floyd – Warshallův algoritmus |
ℕ | Williams 2014 | |
ℝ (žádné negativní cykly) | Ó(EV + PROTI2 logPROTI) | Johnson – Dijkstra |
ℝ (žádné negativní cykly) | Ó(EV + PROTI2 log logPROTI) | Pettie 2004 |
ℕ | Ó(EV + PROTI2 log logPROTI) | Hagerup 2000 |
Aplikace
Algoritmy nejkratší cesty se používají k automatickému vyhledání směrů mezi fyzickými místy, jako jsou například směry jízdy mapování webu webové stránky jako MapQuest nebo Google mapy. Pro tuto aplikaci jsou k dispozici rychlé specializované algoritmy.[3]
Pokud jeden představuje nedeterministické abstraktní stroj jako graf, kde vrcholy popisují stavy a hrany popisují možné přechody, lze použít algoritmy nejkratší cesty k nalezení optimální posloupnosti voleb k dosažení určitého stavu cíle nebo k stanovení nižších mezí času potřebného k dosažení daného stavu. Například pokud vrcholy představují stavy hádanky jako a Rubikova kostka a každá směrovaná hrana odpovídá jednomu tahu nebo otočení, lze použít algoritmy nejkratší cesty k nalezení řešení, které využívá minimální možný počet tahů.
V síťování nebo telekomunikace myšlení, tento problém s nejkratší cestou se někdy nazývá problém cesty s minimálním zpožděním a obvykle se spojuje s a problém s nejširší cestou. Algoritmus může například hledat nejkratší (minimální zpoždění) nejširší cestu nebo nejširší nejkratší (minimální zpoždění) cestu.
Bezstarostnější aplikací jsou hry „šest stupňů oddělení „kteří se snaží najít nejkratší cestu v grafech, jako jsou filmové hvězdy, které se objevují ve stejném filmu.
Další aplikace, často studované v operační výzkum, zahrnovat uspořádání závodu a zařízení, robotika, přeprava, a VLSI design.[4]
Silniční sítě
Silniční síť lze považovat za graf s kladnými váhami. Uzly představují silniční křižovatky a každá hrana grafu je spojena s úsekem silnice mezi dvěma křižovatkami. Váha hrany může odpovídat délce příslušného segmentu silnice, času potřebnému k projetí segmentu nebo nákladům na přejetí segmentu. Pomocí směrovaných hran je také možné modelovat jednosměrné ulice. Takové grafy jsou zvláštní v tom smyslu, že některé hrany jsou pro cestování na dlouhé vzdálenosti důležitější než jiné (např. Dálnice). Tato vlastnost byla formována pomocí pojmu dálniční dimenze.[5] Existuje velké množství algoritmů, které tuto vlastnost využívají, a proto jsou schopné vypočítat nejkratší cestu mnohem rychleji, než by to bylo možné v obecných grafech.
Všechny tyto algoritmy fungují ve dvou fázích. V první fázi je graf předzpracován bez znalosti zdrojového nebo cílového uzlu. Druhá fáze je fáze dotazu. V této fázi jsou známé zdrojový a cílový uzel. Myšlenka je, že silniční síť je statická, takže fázi předzpracování lze provést jednou a použít ji pro velké množství dotazů na stejné silniční síti.
Algoritmus s nejrychleji známou dobou dotazu se nazývá označení náboje a je schopen vypočítat nejkratší cestu v silničních sítích Evropy nebo USA za zlomek mikrosekundy.[6] Další techniky, které byly použity, jsou:
- ALT (Hledání, orientační body a nerovnost trojúhelníku )
- Vlajky oblouku
- Hierarchie kontrakcí
- Směrování tranzitního uzlu
- Prořezávání na základě dosahu
- Značení
- Štítky nábojů
Související problémy
Pro problémy s nejkratší cestou v výpočetní geometrie viz Euklidovská nejkratší cesta.
The problém obchodního cestujícího je problém najít nejkratší cestu, která prochází každým vrcholem přesně jednou a vrátí se na začátek. Na rozdíl od problému s nejkratší cestou, který lze vyřešit v polynomiálním čase v grafech bez negativních cyklů, je problém obchodního cestujícího NP-kompletní a proto se věří, že není efektivně řešitelný pro velké soubory dat (viz P = NP problém ). Problém najít nejdelší cestu v grafu je také NP-kompletní.
The Kanadský cestovatelský problém a stochastickým problémem s nejkratší cestou jsou zevšeobecňování, kde buď graf není zcela znám pohybujícímu se subjektu, mění se v čase, nebo kde jsou akce (procházení) pravděpodobnostní.
Nejkratší vícenásobně odpojená cesta [7] je reprezentace sítě primitivních cest v rámci Reptační teorie.
The problém s nejširší cestou hledá cestu tak, aby minimální štítek kterékoli hrany byl co největší.
Strategické nejkratší cesty
Někdy mají hrany v grafu osobnosti: každá hrana má svůj vlastní sobecký zájem. Příkladem je komunikační síť, ve které je každá hrana počítač, který možná patří jiné osobě. Různé počítače mají různé přenosové rychlosti, takže každá hrana v síti má číselnou váhu rovnou počtu milisekund potřebných k přenosu zprávy. Naším cílem je odeslat zprávu mezi dvěma body v síti v co nejkratším čase. Pokud známe dobu přenosu každého počítače (váhu každé hrany), můžeme použít standardní algoritmus nejkratších cest. Pokud neznáme časy přenosu, musíme požádat každý počítač, aby nám sdělil svůj čas přenosu. Ale počítače mohou být sobecké: počítač nám může říct, že jeho doba přenosu je velmi dlouhá, takže ho nebudeme obtěžovat svými zprávami. Možným řešením tohoto problému je použití varianta mechanismu VCG, což dává počítačům motivaci odhalit jejich skutečné váhy.
Formulace lineárního programování
Existuje přírodní lineární programování formulace pro problém s nejkratší cestou, uvedená níže. Je to velmi jednoduché ve srovnání s většinou ostatních použití lineárních programů v diskrétní optimalizace, avšak ilustruje spojení s jinými koncepty.
Vzhledem k orientovanému grafu (PROTI, A) se zdrojovým uzlem s, cílový uzel ta náklady wij pro každou hranu (i, j) v A, zvažte program s proměnnými Xij
- minimalizovat podléhá a pro všechny i,