k kortaste vägen
Det k kortaste vägdirigeringsproblemet är en generalisering av det kortaste vägdirigeringsproblemet i ett givet nätverk. Den frågar inte bara om en kortaste väg utan också om nästa k−1 kortaste väg (som kan vara längre än den kortaste vägen). En variant av problemet är de slinglösa k kortaste vägarna.
Att hitta k kortaste vägarna är möjligt genom att utöka Dijkstra-algoritmen eller Bellman-Ford-algoritmen .
Historia
Sedan 1957 har många artiklar publicerats om problemet med den kortaste vägen. De flesta av de grundläggande arbetena gjordes mellan 1960-talet och 2001. Sedan dess har det mesta av forskningen handlat om problemets tillämpningar och dess varianter. 2010, Michael Günther et al. publicerade en bok om symbolisk beräkning av k -kortaste vägar och relaterade mått med det stokastiska processalgebraverktyget CASPA .
Algoritm
Dijkstra -algoritmen kan generaliseras för att hitta de k kortaste vägarna.
Definitioner :
Algoritm:
|
Variationer
Det finns två huvudvarianter av routingproblemet med k kortaste vägen. I en variant tillåts banor att besöka samma nod mer än en gång, vilket skapar loopar. I en annan variant krävs att vägar är enkla och loopfria . Den loopiga versionen är lösbar med Eppsteins algoritm och den looplösa variationen är lösbar med Yens algoritm .
Loopy variant
I den här varianten förenklas problemet genom att inte kräva att vägar ska vara loopfria. En lösning gavs av BL Fox 1975 där de k -kortaste vägarna bestäms i O ( m + kn log n ) asymptotisk tidskomplexitet (med hjälp av big O -notation . 1998 rapporterade David Eppstein ett tillvägagångssätt som upprätthåller en asymptotisk komplexitet på O ( m + n log n + k ) genom att beräkna en implicit representation av vägarna, som var och en kan matas ut i O ( n ) extra tid. År 2015 tog Akuba et al fram en indexeringsmetod som ett betydligt snabbare alternativ för Eppsteins algoritm, där en datastruktur som kallas ett index konstrueras från en graf och sedan topp- k avstånd mellan godtyckliga par av hörn kan snabbt erhållas.
Slinglös variant
I den slinglösa varianten är vägarna förbjudna att innehålla slingor, vilket ger en extra komplexitetsnivå. Det kan lösas med hjälp av Yens algoritm för att hitta längden på alla kortaste vägar från en fast nod till alla andra noder i ett n -nod-nätverk med icke negativt avstånd, en teknik som endast kräver 2 n 2 tillägg och n 2 jämförelse, färre än andra tillgängliga kortaste väg algoritmer behöver. Körtidskomplexiteten är pseudopolynom , vilket är O ( kn ( m + n log n )) (där m och n representerar antalet kanter respektive hörn). 2007 John Hershberger och Subhash Suri en ersättningsvägsalgoritm, en mer effektiv implementering av Lawlers och Yens algoritm med O ( n ) förbättring i tid.
Några exempel och beskrivning
Exempel #1
Följande exempel använder sig av Yens modell för att hitta k kortaste vägarna mellan kommunicerande ändnoder. Det vill säga att den hittar en kortaste väg, näst kortaste väg etc. upp till den K: e kortaste vägen. Mer detaljer finns här . Koden som tillhandahålls i det här exemplet försöker lösa det k kortaste vägdirigeringsproblemet för ett nätverk med 15 noder som innehåller en kombination av enkelriktade och dubbelriktade länkar:
Exempel #2
Ett annat exempel är användningen av k kortaste vägarnas algoritm för att spåra flera objekt. Tekniken implementerar en spårning av flera objekt baserat på den k kortaste vägarnas routingalgoritm. En uppsättning probabilistiska beläggningskartor används som indata. En objektdetektor tillhandahåller ingången.
Den fullständiga informationen finns på " Computer Vision Laboratory – CVLAB".
Exempel #3
En annan användning av k kortaste vägarnas algoritmer är att designa ett transitnät som förbättrar passagerarnas upplevelse av kollektivtrafiksystem. Ett sådant exempel på ett transitnät kan konstrueras genom att ta hänsyn till restid. Utöver restid kan andra villkor gälla beroende på ekonomiska och geografiska begränsningar. Trots variationer i parametrar hittar de k kortaste vägalgoritmerna de mest optimala lösningarna som tillfredsställer nästan alla användarbehov. Sådana tillämpningar av k kortaste vägsalgoritmer blir vanliga, nyligen studerade Xu, He, Song och Chaudry (2012) de k kortaste vägproblemen i transitnätsystem.
Ansökningar
Den k kortaste vägen är ett bra alternativ för:
- Geografisk vägplanering
- Nätverksrouting, speciellt i optiska mesh-nätverk där det finns ytterligare begränsningar som inte kan lösas med vanliga kortaste vägsalgoritmer .
- Hypotesgenerering inom beräkningslingvistik
- Sekvensanpassning och metabolisk väg att hitta inom bioinformatik
- Spårning av flera objekt enligt beskrivningen ovan
- Vägnät: vägkorsningar är noder (hörn) och varje kant (länk) på grafen är associerad med ett vägsegment mellan två korsningar.
Relaterade problem
- Bredd -första sökalgoritmen används när sökningen endast är begränsad till två operationer.
- Floyd –Warshall-algoritmen löser alla pars kortaste vägar.
- Johnsons algoritm löser alla pars kortaste vägar och kan vara snabbare än Floyd–Warshall på glesa grafer .
- Perturbationsteorin finner (i värsta fall) den lokalt kortaste vägen.
Cherkassky et al. tillhandahålla fler algoritmer och tillhörande utvärderingar.
Se även
Anteckningar
externa länkar
- Implementering av Yens algoritm
- Implementering av Yens och snabbaste k kortaste enkla vägar algoritmer
- http://www.technical-recipes.com/2012/the-k-shortest-paths-algorithm-in-c/#more-2432
- Spårningsteknik för flera objekt med K-kortaste sökvägsalgoritm: http://cvlab.epfl.ch/software/ksp/
- Computer Vision Laboratory: http://cvlab.epfl.ch/software/ksp/