Kortaste vägen Problem

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 20 augusti 2021; kontroller kräver 4 redigeringar .

Det kortaste vägproblemet  är problemet med att hitta den kortaste vägen (kedjan) mellan två punkter (hörn) på en graf där summan av vikterna av kanterna som utgör vägen minimeras.

Kortaste vägproblemet är ett av de viktigaste klassiska problemen inom grafteorin . Idag är många algoritmer kända för att lösa det .

Det här problemet har andra namn: det minsta sökvägsproblemet eller, i en föråldrad version, diligensproblemet.

Betydelsen av denna uppgift bestäms av dess olika praktiska tillämpningar . GPS-navigatorer söker till exempel efter den kortaste vägen mellan en startpunkt och en destination. Korsningar fungerar som hörn, och vägar är kanter som ligger mellan dem. Om summan av väglängderna mellan korsningar är minimal, så är den hittade vägen den kortaste.

Definition

Problemet med att hitta den kortaste vägen på en graf kan definieras för en oriktad , riktad eller blandad graf. Därefter kommer vi att överväga problemformuleringen i den enklaste formen för en oriktad graf. För en blandad och riktad graf måste även kanternas riktningar beaktas.

En graf är en samling av en icke-tom uppsättning av hörn och kanter (uppsättningar av par av hörn). Två hörn i en graf ligger intill varandra om de delar en gemensam kant. En bana i en oriktad graf är en sekvens av hörn som ligger intill för . En sådan bana kallas en längdväg från vertex till ( indikerar numret på banans hörn och har inget att göra med numreringen av hörn på grafen).

Låta vara  en kant som förbinder två hörn: och . Givet en viktfunktion som mappar kanter till deras vikter vars värden uttrycks som reella tal, och en oriktad graf . Då blir den kortaste vägen från vertex till vertex den väg (där och ) som har minimivärdet av summan .

Det finns olika formuleringar av problemet med kortaste vägen:

I olika formuleringar av problemet kan kantens längds roll spelas inte bara av själva längderna utan också av tid, kostnad, utgifter, mängden resurser som förbrukas (material, finansiellt, bränsle och energi, etc.) eller andra egenskaper associerade med passagen av varje kant. Således finner problemet praktisk tillämpning inom ett stort antal områden (datavetenskap, ekonomi, geografi, etc.).

Problemet med kortaste vägen är föremål för ytterligare begränsningar

Problemet med den kortaste vägen uppstår mycket ofta i en situation där ytterligare begränsningar måste beaktas. Deras närvaro kan avsevärt öka komplexiteten i uppgiften [1] . Exempel på sådana uppgifter:

  1. Den kortaste vägen som går genom en given uppsättning hörn. Två begränsningar kan övervägas: den kortaste vägen måste passera genom den valda uppsättningen av hörn, och den kortaste vägen måste innehålla så få ovalda hörn som möjligt. Den första av dessa är välkänd inom operationsforskningsteori [2] .
  2. Minsta täckning av hörnen i en riktad graf med banor. Sökningen utförs efter det minsta antalet banor som täcker grafen, nämligen en delmängd av alla st banor, så att varje vertex i en riktad graf tillhör minst en sådan väg [3] .
  3. Problemet med nödvändiga vägar. Det krävs att hitta en uppsättning st med banor med minimal kardinalitet så att det för alla finns en väg som täcker den.  är en uppsättning av några banor i en riktad graf G [4] .
  4. Minimal täckning av bågar av en riktad graf av banor. Problemet är att hitta den minsta delmängden av alla vägar i termer av antalet vägar, så att varje båge tillhör åtminstone en sådan väg. I detta fall är ett ytterligare krav möjligt att alla vägar kommer från en vertex [5] .

Algoritmer

På grund av det faktum att det finns många olika formuleringar av detta problem, finns det de mest populära algoritmerna för att lösa problemet med att hitta den kortaste vägen på en graf:

Arbetet (Cherkassky et al., 1993) [8] presenterar flera fler algoritmer för att lösa detta problem.

Problemet med att hitta den kortaste vägen från en vertex till alla andra

I denna problemformulering utförs sökningen efter den kortaste vägen från vertex v till alla andra hörn på grafen.

Oviktad riktad graf

Algoritm Komplexitet Författare
Utöka första sökningen O ( V+E )
Detta är en ofullständig lista och kanske aldrig uppfyller vissa standarder för fullständighet. Du kan komplettera det från välrenommerade källor .

Riktad graf med icke-negativa vikter

Algoritm Komplexitet Författare
- O ( V 2 EL ) Ford 1956
Bellman-Ford algoritm O ( VE ) Bellman 1958 [9] , Moore 1957 [10]
- O ( V 2 log V ) Danzig 1958, Danzig 1960, Minty (jfr Pollack & Wiebenson 1960), Whiting & Hillier 1960
Dijkstras listalgoritm . _ O ( V2 ) _ Leyzorek et al. 1957 [11] , Dijkstra 1959 [12]
Dijkstras algoritm med modifierad binär hög O (( E + V ) log V ) -
. . . . . . . . .
Dijkstras algoritm med Fibonacci Heap O ( E + V log V ) Fridman & Tarjan 1984 [13] , Fridman & Tarjan 1987 [14]
- O ( E log log L ) Johnson 1982, Karlsson & Poblete 1983
Gabovs algoritm O ( E log E / V L ) Gabow 1983, Gabow 1985
- O ( E + V √ log L ) Ahuja et al. 1990
Detta är en ofullständig lista och kanske aldrig uppfyller vissa standarder för fullständighet. Du kan komplettera det från välrenommerade källor .

Riktad graf med godtyckliga vikter

Algoritm Komplexitet Författare
Bellman-Ford algoritm O ( VE ) Bellman [9] , Moore [10]
Detta är en ofullständig lista och kanske aldrig uppfyller vissa standarder för fullständighet. Du kan komplettera det från välrenommerade källor .

Problemet med den kortaste vägen mellan alla par av hörn

Det kortaste vägproblemet mellan alla hörnpar för en oviktad riktad graf ställdes av Simbel 1953 [15] , som fann att det kunde lösas i ett linjärt antal matrismanipulationer (multiplikationer). Komplexiteten hos en sådan algoritm är O ( V4 ) .

Det finns även andra snabbare algoritmer för att lösa detta problem, såsom Floyd-Warshall-algoritmen med komplexitet O ( V 3 ), och Johnson-algoritmen (som är en kombination av Bellman-Ford- och Dijkstra-algoritmerna) med komplexitet O ( VE + V2 log V ) .

Applikation

Problemet med att hitta den kortaste vägen på en graf kan tolkas på olika sätt och tillämpas på olika områden. Följande är exempel på olika tillämpningar av problemet. Andra tillämpningar undersöks inom disciplinen som handlar om operationsforskning [16] .

Karttjänster

Algoritmer för diagram med kortaste väg används för att hitta vägar mellan fysiska objekt på karttjänster som Google Maps eller OpenStreetMap . I utbildningsvideon från Google kan du lära dig olika effektiva algoritmer som används inom detta område [17] .

Icke-deterministisk maskin

Om vi ​​föreställer oss en icke-deterministisk abstrakt maskin som en graf där hörn beskriver tillstånd och kanter definierar möjliga övergångar, så kan kortaste vägalgoritmer användas för att hitta den optimala sekvensen av lösningar för att uppnå huvudmålet. Till exempel, om hörnen är tillstånden för en Rubiks kub och kanten representerar en enda åtgärd på kuben, kan algoritmen tillämpas för att hitta en lösning med ett minimum antal drag.

Vägnät

Problemet med att hitta den kortaste vägen på en graf används ofta för att bestämma det kortaste avståndet i ett vägnät.

Vägnätet kan representeras som en graf med positiva vikter . Topparna är vägkorsningar , och kanterna är vägarna som förbinder dem. Kantvikter kan motsvara längden på en given sektion, tiden som krävs för att övervinna den eller kostnaden för att resa längs den. Orienterade kanter kan användas för att representera enkelriktade gator. I en sådan kolumn kan du ange en egenskap som indikerar att vissa vägar är viktigare än andra för långa resor (till exempel motorvägar). Det formaliserades i konceptet (idén) av motorvägar [18] .

För att implementera tillvägagångssättet, där vissa vägar är viktigare än andra, finns det många algoritmer. De löser problemet med att hitta den kortaste vägen mycket snabbare än liknande på vanliga grafer. Sådana algoritmer består av två steg:

  1. förbehandlingsstadiet. Grafen är förbehandlad utan att ta hänsyn till de initiala och slutliga hörnen (det kan ta upp till flera dagar om du arbetar med riktiga data). Det utförs vanligtvis en gång och sedan används den mottagna datan.
  2. begäran stadiet. En begäran och sökning efter den kortaste vägen utförs, medan de initiala och slutliga hörnen är kända.

Den snabbaste algoritmen kan lösa detta problem på Europas eller Amerikas vägar på en bråkdel av en mikrosekund [19] .

Andra tillvägagångssätt (tekniker) som används inom detta område:

Liknande problem

Det finns problem som liknar problemet med att hitta den kortaste vägen på en graf.

Uttalande av problemet med linjär programmering

Låt en riktad graf ( V , A ) ges, där V  är en uppsättning av hörn och A  är en uppsättning kanter, med ett startpunkt s , slut t och vikter w ij för varje kant ( i , j ) i A . Vikten av varje kant motsvarar programvariabeln x ij .

Sedan ställs problemet på följande sätt: hitta minimum av funktionen , där , förutsatt att följande olikhet gäller för alla i och j :

Se även

Anteckningar

  1. Tillämpning av grafteori på programmering, 1985 .
  2. Tillämpning av grafteori i programmering, 1985 , sid. 138-139.
  3. Tillämpning av grafteori i programmering, 1985 , sid. 139-142.
  4. Tillämpning av grafteori i programmering, 1985 , sid. 144-145.
  5. Tillämpning av grafteori i programmering, 1985 , sid. 145-148.
  6. 1 2 Diskret matematik. Combinatorial Optimization on Graphs, 2003 .
  7. Tillämpning av grafteori i programmering, 1985 , sid. 130-131.
  8. Cherkassky, Goldberg, Radzik, 1996 .
  9. 1 2 Bellman Richard, 1958 .
  10. 12 Moore , 1957 .
  11. M. Leyzorek, 1957 .
  12. Dijkstra, 1959 .
  13. Michael Fredman Lawrence, 1984 .
  14. Fredman Michael, 1987 .
  15. Shimbel, 1953 .
  16. Utveckling av algoritmer och programvara för geometriska vägplaneringsproblem, 1996 .
  17. Snabb ruttplanering .
  18. Motorvägsdimension, 2010 .
  19. En navbaserad märkningsalgoritm, 2011 .
  20. Ladyzhensky Y., Popoff Y. Algorithm, 2006 .

Litteratur