Korteste vej problem

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 20. august 2021; checks kræver 4 redigeringer .

Problemet med den korteste vej  er problemet med at finde den korteste vej (kæde) mellem to punkter (hjørnepunkter) på en graf , hvor summen af ​​vægten af ​​de kanter , der udgør stien, er minimeret.

Problemet med den korteste vej er et af de vigtigste klassiske problemer i grafteori . I dag er mange algoritmer kendt for at løse det .

Dette problem har andre navne: minimumsstiproblemet eller, i en forældet version, diligensproblemet.

Betydningen af ​​denne opgave bestemmes af dens forskellige praktiske anvendelser . For eksempel søger GPS-navigatorer efter den korteste vej mellem et startpunkt og en destination. Korsveje fungerer som knudepunkter, og veje er kanter, der ligger mellem dem. Hvis summen af ​​vejlængderne mellem kryds er minimal, så er den fundne vej den korteste.

Definition

Problemet med at finde den korteste vej på en graf kan defineres for en urettet , rettet eller blandet graf. Dernæst vil vi overveje problemformuleringen i den enkleste form for en urettet graf. For en blandet og rettet graf skal kanternes retninger desuden tages i betragtning.

En graf er en samling af et ikke-tomt sæt af hjørner og kanter (sæt af par af hjørner). To hjørner i en graf er tilstødende, hvis de deler en fælles kant. En sti i en urettet graf er en sekvens af knudepunkter , som støder op til for . En sådan sti kaldes en sti af længde fra toppunkt til ( angiver nummeret på kurvens toppunkt og har intet at gøre med nummereringen af ​​toppunkter på grafen).

Lade være  en kant, der forbinder to hjørner: og . Givet en vægtfunktion, der kortlægger kanter til deres vægte, hvis værdier er udtrykt som reelle tal, og en urettet graf . Så vil den korteste vej fra toppunkt til toppunkt være stien (hvor og ), der har summens minimumværdi .

Der er forskellige formuleringer af problemet med den korteste vej:

I forskellige formuleringer af problemet kan kantens længde ikke kun spilles af længderne selv, men også af tid, omkostninger, udgifter, mængden af ​​brugte ressourcer (materiale, finansiel, brændstof og energi osv.) eller andre egenskaber forbundet med passagen af ​​hver kant. Problemet finder således praktisk anvendelse på en lang række områder (datalogi, økonomi, geografi osv.).

Problemet med den korteste vej er underlagt yderligere begrænsninger

Problemet med den korteste vej opstår meget ofte i en situation, hvor der skal tages højde for yderligere begrænsninger. Deres tilstedeværelse kan øge kompleksiteten af ​​opgaven markant [1] . Eksempler på sådanne opgaver:

  1. Den korteste vej, der går gennem et givet sæt af hjørner. Der kan tages hensyn til to begrænsninger: den korteste vej skal passere gennem det valgte sæt af toppunkter, og den korteste vej skal indeholde så få uvalgte toppunkter som muligt. Den første af disse er velkendt inden for operationsforskningsteori [2] .
  2. Minimumsdækningen af ​​hjørnerne af en rettet graf med stier. Søgningen udføres efter det mindste antal stier, der dækker grafen, nemlig en delmængde af alle st stier, således at hvert hjørne af en rettet graf tilhører mindst én sådan vej [3] .
  3. Problemet med nødvendige stier. Det er nødvendigt at finde et sæt stier med minimal kardinalitet , således at der for enhver er en sti, der dækker den.  er et sæt af nogle stier i en rettet graf G [4] .
  4. Minimal dækning af buer af en rettet graf med stier. Problemet er at finde den minimale delmængde af alle stier i form af antallet af stier, således at hver bue tilhører mindst én sådan sti. I dette tilfælde er et yderligere krav muligt, at alle stier kommer fra et toppunkt [5] .

Algoritmer

På grund af det faktum, at der er mange forskellige formuleringer af dette problem, er der de mest populære algoritmer til at løse problemet med at finde den korteste vej på en graf:

Værket (Cherkassky et al., 1993) [8] præsenterer flere flere algoritmer til at løse dette problem.

Problemet med at finde den korteste vej fra et toppunkt til alle andre

I denne problemformulering udføres søgningen efter den korteste vej fra toppunktet v til alle andre toppunkter på grafen.

Uvægtet rettet graf

Algoritme Kompleksitet Forfatter
Bredde først søgning O ( V+E )
Dette er en ufuldstændig liste og vil muligvis aldrig opfylde visse standarder for fuldstændighed. Du kan supplere det fra velrenommerede kilder .

Styret graf med ikke-negative vægte

Algoritme Kompleksitet Forfatter
- O ( V 2 EL ) Ford 1956
Bellman-Ford algoritme O ( VE ) Bellman 1958 [9] , Moore 1957 [10]
- O ( V 2 log V ) Danzig 1958, Danzig 1960, Minty (jf. Pollack & Wiebenson 1960), Whiting & Hillier 1960
Dijkstras listealgoritme . _ O ( V2 ) _ Leyzorek et al. 1957 [11] , Dijkstra 1959 [12]
Dijkstras algoritme med modificeret binær bunke O (( E + V ) log V ) -
. . . . . . . . .
Dijkstras algoritme ved hjælp af 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 algoritme O ( E log E / V L ) Gabow 1983, Gabow 1985
- O ( E + V √ log L ) Ahuja et al. 1990
Dette er en ufuldstændig liste og vil muligvis aldrig opfylde visse standarder for fuldstændighed. Du kan supplere det fra velrenommerede kilder .

Styret graf med vilkårlige vægte

Algoritme Kompleksitet Forfatter
Bellman-Ford algoritme O ( VE ) Bellman [9] , Moore [10]
Dette er en ufuldstændig liste og vil muligvis aldrig opfylde visse standarder for fuldstændighed. Du kan supplere det fra velrenommerede kilder .

Problemet med den korteste vej mellem alle par af hjørner

Det korteste vejproblem mellem alle par af hjørner for en uvægtet rettet graf blev stillet af Simbel i 1953 [15] , som fandt ud af, at det kunne løses i et lineært antal matrixmanipulationer (multiplikationer). Kompleksiteten af ​​en sådan algoritme er O ( V 4 ).

Der er også andre hurtigere algoritmer til at løse dette problem, såsom Floyd-Warshall-algoritmen med kompleksitet O ( V 3 ), og Johnson-algoritmen (som er en kombination af Bellman-Ford og Dijkstra-algoritmerne) med kompleksitet O ( VE + V2 log V ) .

Ansøgning

Problemet med at finde den korteste vej på en graf kan fortolkes på forskellige måder og anvendes i forskellige områder. Det følgende er eksempler på forskellige anvendelser af problemet. Andre anvendelser er ved at blive udforsket inden for disciplinen, der beskæftiger sig med operationsforskning [16] .

Korttjenester

Grafiske korteste sti-algoritmer bruges til at finde stier mellem fysiske objekter på korttjenester såsom Google Maps eller OpenStreetMap . I træningsvideoen fra Google kan du lære forskellige effektive algoritmer, der bruges på dette område [17] .

Ikke-deterministisk maskine

Hvis vi forestiller os en ikke-deterministisk abstrakt maskine som en graf, hvor toppunkter beskriver tilstande og kanter definerer mulige overgange, så kan korteste vejalgoritmer anvendes til at finde den optimale rækkefølge af løsninger for at nå hovedmålet. For eksempel, hvis hjørnerne er tilstanden af ​​en Rubiks terning , og kanten repræsenterer en enkelt handling på terningen, så kan algoritmen anvendes til at finde en løsning med et minimum antal træk.

Vejnet

Problemet med at finde den korteste vej på en graf er meget brugt til at bestemme den korteste afstand i et vejnet.

Vejnettet kan repræsenteres som en graf med positive vægte . Punkterne er vejkryds , og kanterne er de veje, der forbinder dem. Kantvægte kan svare til længden af ​​en given sektion, den tid, det tager at overvinde den, eller omkostningerne ved at rejse langs den. Orienterede kanter kan bruges til at repræsentere ensrettede gader. I en sådan kolonne kan du indtaste en karakteristik, der angiver, at nogle veje er vigtigere end andre til lange rejser (f.eks. motorveje). Det blev formaliseret i konceptet (ideen) om motorveje [18] .

For at implementere tilgangen, hvor nogle veje er vigtigere end andre, er der mange algoritmer. De løser problemet med at finde den korteste vej meget hurtigere end tilsvarende på almindelige grafer. Sådanne algoritmer består af to faser:

  1. forbehandlingsstadiet. Grafen er forbehandlet uden at tage højde for de indledende og endelige hjørner (det kan tage op til flere dage, hvis du arbejder med rigtige data). Det udføres normalt én gang, og derefter bruges de modtagne data.
  2. anmodningsstadiet. En anmodning og søgning efter den korteste vej udføres, mens de indledende og endelige toppunkter er kendt.

Den hurtigste algoritme kan løse dette problem på vejene i Europa eller Amerika på en brøkdel af et mikrosekund [19] .

Andre tilgange (teknikker), der bruges på dette område:

Lignende problemer

Der er problemer, der ligner problemet med at finde den korteste vej på en graf.

Udtalelse af problemet med lineær programmering

Lad en rettet graf ( V , A ) være givet, hvor V  er et sæt af hjørner, og A  er et sæt af kanter, med et startpunkt s , ende t og vægte w ij for hver kant ( i , j ) i A. Vægten af ​​hver kant svarer til programvariablen x ij .

Så er problemet stillet som følger: find minimum af funktionen , hvor , forudsat at følgende ulighed gælder for alle i og j :

Se også

Noter

  1. Anvendelse af grafteori til programmering, 1985 .
  2. Anvendelse af grafteori i programmering, 1985 , s. 138-139.
  3. Anvendelse af grafteori i programmering, 1985 , s. 139-142.
  4. Anvendelse af grafteori i programmering, 1985 , s. 144-145.
  5. Anvendelse af grafteori i programmering, 1985 , s. 145-148.
  6. 1 2 Diskret matematik. Kombinatorisk optimering på grafer, 2003 .
  7. Anvendelse af grafteori i programmering, 1985 , s. 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. Udvikling af algoritmer og software til geometriske stiplanlægningsproblemer, 1996 .
  17. Hurtig ruteplanlægning .
  18. Motorvejsdimension, 2010 .
  19. En Hub-Based Labeling Algorithm, 2011 .
  20. Ladyzhensky Y., Popoff Y. Algorithm, 2006 .

Litteratur