Lyhimmän polun ongelma

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 20. elokuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 4 muokkausta .

Lyhyin polkuongelma  on ongelma löytää lyhin polku (ketju) kahden pisteen (pisteen) välillä graafista , jossa reitin muodostavien reunojen painojen summa on minimoitu.

Lyhimmän polun ongelma on yksi tärkeimmistä graafiteorian klassisista ongelmista . Nykyään sen ratkaisemiseen tunnetaan monia algoritmeja .

Tällä ongelmalla on muita nimiä: minimipolkuongelma tai vanhentuneessa versiossa kulkuväyläongelma.

Tämän tehtävän merkityksen määräävät sen erilaiset käytännön sovellukset . Esimerkiksi GPS-navigaattorit etsivät lyhimmän polun aloituspisteen ja määränpään välillä. Risteykset toimivat pisteinä, ja tiet ovat niiden välissä olevia reunoja. Jos risteysten välisten teiden pituuksien summa on minimaalinen, niin löydetty polku on lyhin.

Määritelmä

Kuvaajan lyhimmän polun löytämisen ongelma voidaan määrittää suuntaamattomalle , suunnatulle tai sekagraafille . Seuraavaksi tarkastellaan ongelman lausetta ohjaamattoman graafin yksinkertaisimmassa muodossa. Sekoitettua ja suunnattua graafia varten on lisäksi otettava huomioon reunojen suunnat.

Graafi on kokoelma ei-tyhjiä kärki- ja reunajoukkoja (pisteparien joukkoja). Graafin kaksi kärkeä ovat vierekkäisiä, jos niillä on yhteinen reuna. Polku ohjaamattomassa graafissa on sarja pisteitä , jotka ovat lähellä for . Tällaista polkua kutsutaan poluksi, jonka pituus on pisteestä pisteeseen ( ilmaisee polun kärjen numeron , eikä sillä ole mitään tekemistä graafin kärkien numeroinnin kanssa).

Antaa olla  reuna yhdistää kaksi kärkeä: ja . Annettu painofunktio , joka kartoittaa reunat niiden painoihin, joiden arvot ilmaistaan ​​reaalilukuina, ja suuntaamaton graafi . Tällöin lyhin polku kärjestä kärkeen on polku (jossa ja ), jolla on summan pienin arvo .

Lyhimmän polun ongelmasta on olemassa useita muotoja:

Erilaisissa ongelman muotoiluissa reunan pituuden roolia voivat olla paitsi itse pituudet, myös aika, kustannukset, kustannukset, käytettyjen resurssien määrä (materiaali, rahoitus, polttoaine ja energia jne.) tai muut kunkin reunan läpikulkuun liittyvät ominaisuudet. Siten ongelma löytää käytännön sovellutuksia useilla aloilla (tietotekniikan, taloustieteen, maantieteen jne.).

Lyhyin polkuongelma, johon liittyy lisärajoituksia

Lyhimmän polun ongelma kohtaa hyvin usein tilanteessa, jossa on otettava huomioon lisärajoitukset. Niiden läsnäolo voi merkittävästi lisätä tehtävän monimutkaisuutta [1] . Esimerkkejä tällaisista tehtävistä:

  1. Lyhin tie, joka kulkee tietyn kärkijoukon läpi. Kaksi rajoitusta voidaan ottaa huomioon: lyhimmän polun tulee kulkea valitun pistejoukon läpi ja lyhimmän polun tulee sisältää mahdollisimman vähän valitsemattomia pisteitä. Näistä ensimmäinen tunnetaan hyvin operaatiotutkimuksen teoriassa [2] .
  2. Suunnatun graafin kärkien minimipeitto poluilla . Haku suoritetaan minimimäärälle graafia peittäviä polkuja, nimittäin kaikkien st polkujen osajoukkoa siten, että suunnatun graafin jokainen kärki kuuluu ainakin yhteen tällaiseen polkuun [3] .
  3. Vaadittujen polkujen ongelma. On löydettävä joukko st polkuja, joiden kardinaalisuus on minimaalinen siten, että jokaiselle on polku , joka peittää sen.  on joukko polkuja suunnatussa graafissa G [4] .
  4. Suunnatun graafin kaarien minimaalinen peitto poluilla. Ongelmana on löytää kaikkien polkujen vähimmäisosajoukko polkujen lukumäärän perusteella siten, että jokainen kaari kuuluu vähintään yhteen tällaiseen polkuun. Tässä tapauksessa lisävaatimus on mahdollista, että kaikki polut tulevat yhdestä kärjestä [5] .

Algoritmit

Koska tästä ongelmasta on monia erilaisia ​​​​formulaatioita, on olemassa suosituimmat algoritmit kaavion lyhimmän polun löytämisen ongelman ratkaisemiseksi:

Työ (Cherkassky et al., 1993) [8] esittää useita muita algoritmeja tämän ongelman ratkaisemiseksi.

Ongelma lyhimmän polun löytämisessä yhdestä huippupisteestä kaikkiin muihin

Tässä tehtävän muotoilussa suoritetaan lyhimmän polun haku kärjestä v kaikkiin muihin graafin pisteisiin.

Painottamaton suunnattu graafi

Algoritmi Monimutkaisuus Tekijä
Leveys ensimmäinen haku O ( V+E )
Tämä on epätäydellinen luettelo, eikä se välttämättä koskaan täytä tiettyjä täydellisyysvaatimuksia. Voit täydentää sitä hyvämaineisista lähteistä .

Suunnattu kuvaaja ei-negatiivisilla painoilla

Algoritmi Monimutkaisuus Tekijä
- O ( V 2 EL ) Ford 1956
Bellman-Ford-algoritmi O ( VE ) Bellman 1958 [9] , Moore 1957 [10]
- O ( V 2 log V ) Danzig 1958, Danzig 1960, Minty (vrt. Pollack & Wiebenson 1960), Whiting & Hillier 1960
Dijkstran lista - algoritmi . O ( V2 ) _ Leyzorek et ai. 1957 [11] , Dijkstra 1959 [12]
Dijkstran algoritmi modifioidulla binäärikeolla O ( ( E + V ) log V ) -
. . . . . . . . .
Dijkstran algoritmi Fibonacci-keon avulla O ( E + V log V ) Fridman & Tarjan 1984 [13] , Fridman & Tarjan 1987 [14]
- O ( E log log L ) Johnson 1982, Karlsson & Poblete 1983
Gabovin algoritmi O ( E log E / V L ) Gabow 1983, Gabow 1985
- O ( E + V √ log L ) Ahuja et ai. 1990
Tämä on epätäydellinen luettelo, eikä se välttämättä koskaan täytä tiettyjä täydellisyysvaatimuksia. Voit täydentää sitä hyvämaineisista lähteistä .

Suunnattu kuvaaja mielivaltaisilla painoilla

Algoritmi Monimutkaisuus Tekijä
Bellman-Ford-algoritmi O ( VE ) Bellman [9] , Moore [10]
Tämä on epätäydellinen luettelo, eikä se välttämättä koskaan täytä tiettyjä täydellisyysvaatimuksia. Voit täydentää sitä hyvämaineisista lähteistä .

Kaikkien kärkiparien välisen lyhimmän polun ongelma

Lyhimmän polun ongelman painottamattoman suunnatun graafin kaikkien kärkiparien välillä esitti Simbel vuonna 1953 [15] , joka havaitsi, että se voidaan ratkaista lineaarisella määrällä matriisimanipulaatioita (kertoja). Tällaisen algoritmin monimutkaisuus on O ( V 4 ).

Tämän ongelman ratkaisemiseen on myös muita nopeampia algoritmeja, kuten Floyd-Warshall-algoritmi , jonka monimutkaisuus on O ( V 3 ), ja Johnson-algoritmi (joka on Bellman-Ford- ja Dijkstra-algoritmien yhdistelmä), jonka kompleksisuus on O ( VE + V 2 log V ) .

Sovellus

Kuvaajan lyhimmän polun löytämisen ongelma voidaan tulkita eri tavoin ja soveltaa eri alueilla. Seuraavassa on esimerkkejä ongelman erilaisista sovelluksista. Muita sovelluksia tutkitaan operaatiotutkimusta käsittelevällä tieteenalalla [16] .

Karttapalvelut

Kuvaajan lyhimmän polun algoritmeja käytetään etsimään polkuja fyysisten kohteiden välillä karttapalveluista, kuten Google Maps tai OpenStreetMap . Googlen harjoitusvideossa voit oppia erilaisia ​​tehokkaita algoritmeja, joita käytetään tällä alueella [17] .

Ei-deterministinen kone

Jos kuvittelemme epädeterministisen abstraktin koneen graafina, jossa kärjet kuvaavat tiloja ja reunat määrittelevät mahdolliset siirtymät, niin lyhimmän polun algoritmeja voidaan soveltaa löytämään optimaalinen ratkaisusarja päätavoitteen saavuttamiseksi. Esimerkiksi, jos kärjet ovat Rubikin kuution tiloja ja reuna edustaa yhtä kuution toimintoa, algoritmia voidaan soveltaa ratkaisun löytämiseen mahdollisimman pienellä määrällä liikkeitä.

Tieverkot

Lyhyimmän polun löytäminen kaaviosta on laajalti käytössä tieverkon lyhimmän etäisyyden määrittämisessä.

Tieverkosto voidaan esittää graafisesti positiivisilla painoilla. Huippupisteet ovat tienristeyksiä ja reunat ovat teitä, jotka yhdistävät ne. Reunapainot voivat vastata tietyn osan pituutta, sen ylittämiseen tarvittavaa aikaa tai matkakustannuksia. Orientoituja reunoja voidaan käyttää edustamaan yksisuuntaisia ​​katuja. Tällaiseen sarakkeeseen voit syöttää ominaisuuden, joka osoittaa, että jotkin tiet ovat tärkeämpiä kuin toiset pitkillä matkoilla (esimerkiksi moottoritiet). Se virallistettiin moottoriteiden käsitteeseen (ideaan) [18] .

Lähestymistavan toteuttamiseksi, jossa jotkut tiet ovat tärkeämpiä kuin toiset, on olemassa monia algoritmeja. Ne ratkaisevat lyhimmän polun löytämisen ongelman paljon nopeammin kuin vastaavat tavalliset kaaviot. Tällaiset algoritmit koostuvat kahdesta vaiheesta:

  1. esikäsittelyvaiheessa. Graafi esikäsitellään ottamatta huomioon alku- ja loppupisteitä (se voi kestää useita päiviä, jos työskentelet todellisen datan kanssa). Se suoritetaan yleensä kerran ja sitten käytetään vastaanotettua dataa.
  2. pyyntövaihe. Pyyntö ja lyhimmän polun haku suoritetaan, kun alku- ja loppupisteet tunnetaan.

Nopein algoritmi voi ratkaista tämän ongelman Euroopan tai Amerikan teillä mikrosekunnin murto-osassa [19] .

Muita tällä alueella käytettyjä lähestymistapoja (tekniikoita):

Samanlaisia ​​ongelmia

On ongelmia, jotka ovat samanlaisia ​​kuin kaavion lyhimmän polun löytäminen.

Lausunto lineaarisen ohjelmoinnin ongelmasta

Olkoon suunnattu graafi ( V , A ), jossa V  on joukko pisteitä ja A  on joukko reunoja, jonka alkupiste s , loppu t ja painot w ij jokaiselle A :n reunalle ( i , j ) . Kunkin reunan paino vastaa ohjelman muuttujaa x ij .

Sitten ongelma esitetään seuraavasti: etsi funktion minimi , jossa , edellyttäen, että seuraava epäyhtälö pätee kaikille i :lle ja j :lle:

Katso myös

Muistiinpanot

  1. Graafiteorian soveltaminen ohjelmointiin, 1985 .
  2. ↑ Graafiteorian soveltaminen ohjelmointiin, 1985 , s. 138-139.
  3. ↑ Graafiteorian soveltaminen ohjelmointiin, 1985 , s. 139-142.
  4. ↑ Graafiteorian soveltaminen ohjelmointiin, 1985 , s. 144-145.
  5. ↑ Graafiteorian soveltaminen ohjelmointiin, 1985 , s. 145-148.
  6. 1 2 Diskreetti matematiikka. Combinatorial Optimization on Graphs, 2003 .
  7. ↑ Graafiteorian soveltaminen ohjelmointiin, 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. Algoritmien ja ohjelmistojen kehittäminen geometristen polkujen suunnitteluongelmiin, 1996 .
  17. Nopea reittisuunnittelu .
  18. Highway Dimension, 2010 .
  19. Keskitinpohjainen merkintäalgoritmi, 2011 .
  20. Ladyzhensky Y., Popoff Y. Algorithm, 2006 .

Kirjallisuus