• No results found

Icke-triviala billigaste väg-ruttningskonflikter - klassificering och sökmetoder

N/A
N/A
Protected

Academic year: 2021

Share "Icke-triviala billigaste väg-ruttningskonflikter - klassificering och sökmetoder"

Copied!
41
0
0

Loading.... (view fulltext now)

Full text

(1)Examensarbete. Icke-triviala billigaste väg-ruttningskonflikter - klassificering och sökmetoder Björn Morén LiTH - MAT - EX - - 2010 / 19 - - SE.

(2)

(3) Icke-triviala billigaste väg-ruttningskonflikter - klassificering och sökmetoder Optimeringslära, MAI, Linköpings Universitet Björn Morén LiTH - MAT - EX - - 2010 / 19 - - SE. Examensarbete: 16 hp Level: G2 Supervisor: Mikael Call, Optimeringslära, MAI, Linköpings Universitet Examiner: Kaj Holmberg, Optimeringslära, MAI, Linköpings Universitet Linköping: juni 2010.

(4)

(5) Datum Date. Avdelning, Institution Division, Department. juni 2010. Matematiska Institutionen 581 83 LINKÖPING SWEDEN Språk Language. x. Rapporttyp Report category. Svenska/Swedish Engelska/English. Licentiatavhandling. x. Examensarbete. ISBN ISRN. LiTH - MAT - EX - - 2010 / 19 - - SE. C-uppsats. Serietitel och serienummer. D-uppsats. Title of series, numbering. ISSN. Övrig rapport. URL för elektronisk version http://www.ep.liu.se/exjobb/mai/2004/tm/004/. Titel Title. Non-trivial shortest path routing conflicts - classification and search methods. Författare Author. Björn Morén. Sammanfattning Abstract. Within telecommunication and routing of traffic in IP-networks a protocol named “Open Shortest Path First” (OSPF) is widely used. This means that a server deals with the routing over a network with given weights by calculating shortest paths to use for routing. If we assume that a desired traffic pattern is given the problem is to find out if it is possible to set the weights so that the desired traffic pattern is a part of a shortest path graph. In this thesis we assume that it is a unique shortest path. To search for weights that solve the problem leads to a complex LP-model. An alternative is to search in the LP-dual under certain restrictions. These solutions to the LP-dual are called conflicts and a conflict means that there exists no weights so that the desired traffic pattern is obtained. The goal of this thesis is to study, classify and search for conflicts. An algorithm has been developed that finds some kind of conflicts in polynomial time with respect to the size of the graph.. Nyckelord Keyword. OSPF, SPR-conflicts, SPRD, ISPR, classification, search methods.

(6) vi.

(7) Sammanfattning Inom telekommunikation och ruttning av datatrafik i IP-nätverk så används ofta ett protokoll som kallas “Open Shortest Path First” (OSPF). Det innebär att en server sköter ruttningen över ett nätverk genom att utifrån givna bågkostnader beräkna billigaste vägar som används för ruttningen. Frågeställningen utgår från att vi har ett önskat ruttningsschema och vi vill ta reda på om det går att sätta bågkostnader så att det önskade ruttningsschemat ingår i en billigaste väg-graf. I det här examensarbetet splittas inte trafik utan varje billigaste väg är unik mellan två noder. Att söka efter bågkostnader som löser problemet ger en krävande LP-modell och ett alternativ är att utgå från LP-dualen under vissa restriktioner. Dessa lösningar till LP-dualen benämns konflikter och en konflikt motsvarar att det inte finns några bågkostnader så att det önskade ruttningsschemat fås. Målet med examensarbetet är att studera, klassificera och söka efter konflikter. En algoritm har tagits fram som hittar vissa typer av sådana konflikter i polynomiell tid, sett till storleken på grafen. Nyckelord: OSPF, BVR-konflikter, design av BVR, inversa billigaste vägproblem, klassificering, sökmetoder.. Morén, 2010.. vii.

(8) viii.

(9) Innehåll 1 Introduktion 1.1 Bakgrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1 1. 2 Teori 2.1 Billigaste väg-problem . . . . . . 2.2 Grafteori . . . . . . . . . . . . . 2.3 Design av billigaste väg-ruttning 2.4 Inversa billigaste väg problem . . 2.4.1 Grundläggande begrepp . 2.4.2 Realiserbarhet . . . . . . 2.4.3 Partiell kompatibilitet . . 2.4.4 Partiell realiserbarhet . . 2.4.5 Giltiga cykler . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. 3 3 4 4 5 5 6 6 6 7. 3 Klassificering av konflikter 3.1 Yttervara . . . . . . . . . 3.2 Strukturgraf . . . . . . . . 3.3 Klassificering . . . . . . . 3.4 Exempel på konflikter . . 3.4.1 Nod . . . . . . . . 3.4.2 Väg . . . . . . . . 3.4.3 Träd . . . . . . . . 3.5 Irreducibla konflikter . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. 9 10 10 11 11 11 11 12 13. 4 Algoritmer 4.1 Introduktion . . . . . . . . . . 4.2 Algoritmbeskrivning . . . . . . 4.3 Komplexitet . . . . . . . . . . . 4.4 Exempel med algoritmen . . . . 4.4.1 Exempel 1 . . . . . . . . 4.4.2 Exempel 2 . . . . . . . . 4.5 Verifiering av algoritmen . . . . 4.5.1 Falska lösningar . . . . . 4.6 Resultat för algoritmen . . . . 4.7 Algoritmen med iterationer . . 4.7.1 Algoritmbeskrivning . . 4.8 Exempel med iterationer . . . . 4.8.1 Exempel 2 - fortsättning. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. 15 15 16 16 16 16 18 18 20 20 21 22 22 22. Morén, 2010.. . . . . . . . .. . . . . . . . .. ix.

(10) x. Innehåll. 4.8.2 Exempel 3 . . . . . . . . . . . . . 4.9 Verifiering av algoritmen med iterationer 4.10 Resultat för algoritmen med iterationer 4.11 Generaliseringar av algoritmen . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. 24 24 25 25. 5 Diskussion. 27. Referenser. 29.

(11) Kapitel 1. Introduktion 1.1. Bakgrund. Den typ av frågeställningar som det här examensarbetet behandlar har sitt ursprung inom telekommunikation och ruttning av datatrafik inom IP-nätverk. Det finns flera olika ruttningsprotokoll som används men det vanligaste är “Open shortest path first” (OSPF) vilket gör att det är en naturlig utgångspunkt för studier. Vi utgår från ett IP-nätverk med givna noder och bågar samt ett önskat ruttningsschema för trafiken. En fråga är om det går att sätta vikter på bågarna så att det önskade ruttningsschemat ger vissa givna billigaste väg-grafer och att de bågar som inte får ingå i en billigaste väg inte gör det. Denna fråga är viktig eftersom bågkostnaderna är det enda sättet att påverka hur det resulterande ruttningsschemat ser ut. Problemet blir ett inverst billigaste vägruttningsproblem (ISPR, “inverse shortest path routing”) då vi vill hitta de bågkostnader som ger vissa ingrafer. Ett tillvägagångssätt för att lösa problemet är att ta reda på när det saknas sådana bågkostnader. Det kan ske genom att ta fram de konflikter som de önskade ruttningsscheman ger upphov till för att sedan modifiera inblandade ruttningsscheman. En stor del av examensarbetet har bestått i att studera och generera konflikter vilket har lett fram till metoder för att klassificera konflikter. Dessutom så kommer en algoritm för att upptäcka vissa typer av konflikter presenteras. Det inversa billigaste-väg ruttningsproblemet går att formulera så att det antingen ska finnas en unik billigaste väg mellan en nod och en destination eller så att det är möjligt att dela upp trafiken på flera vägar. Jag har valt att studera fallet där trafiken inte får delas upp men de flesta resultaten är naturliga att omformulera till fallet där trafiken får delas upp.. Exempel För att ge en bättre känsla för konflikter utan att definiera dem formellt ges ett inledande exempel. Morén, 2010.. 1.

(12) 2. Kapitel 1. Introduktion. @ 2 >> >> >> > 1 _ _ _ _ _ _/ 3 Grafen ovan består av några bågar i två billigaste väg-träd. De olika bågtyperna svarar mot olika destinationer för billigaste väg-trädet. Konflikten orsakas här av att det finns två stycken billigaste vägar från 1 till 3. De utgörs av vägen 1 → 3 respektive vägen 1 → 2 → 3. Eftersom det ska finnas en unik billigaste väg så har vi en konflikt. Ett sätt att förbjuda konflikten är att införa ett villkor så att dessa tre bågar inte tillhör billigaste vägar samtidigt..

(13) Kapitel 2. Teori Genom kapitlet används en riktad graf G = (N, A) med nodmängd N och ˜ = (N, A) ˜ bågmängd A. Dessutom används den underliggande oriktade grafen G ˜ där A svarar mot den oriktade bågmängden som fås från A när riktningen på bågarna tas bort.. 2.1. Billigaste väg-problem. Till varje båge (i, j) ∈ A finns en kostnad, wij . Målet med ett billigaste vägproblem är att hitta en billigaste väg från en nod s till en nod t, där s, t ∈ N , förutsatt att en sådan väg existerar samt att det inte finns några cykler med negativ kostnad. Ett exempel är fallet då wij ≥ 0 för alla (i, j) ∈ A. Från optimalitetsvillkoren för dualen till ett billigaste väg-problem fås Bellmans ekvationer πs πj. = =. 0 min {πi + wij }, j ∈ N, j 6= s,. i:(i,j)∈A. där dualpriserna πj anger kostnaden för den billigaste vägen från nod s till nod j. Särskilt gäller om (i, j) tillhör en billigaste väg att πj = πi + wij och om (i, j) inte tillhör en billigaste väg gäller πj < πi + wij . Ekvationerna kan även uttryckas som wij + πi − πj wij + πi − πj. = ≥. 0 Då (i, j) tillhör en billigaste väg. 1 Då (i, j) inte tillhör en billigaste väg, wij ∈ N.. (2.1). De reducerade kostnaderna i primalen är wij + πi − πj och en tolkning av dem är att summan anger hur mycket dyrare det blir att använda bågen (i, j) i en väg till t jämfört med en billigaste väg. Ett exempel på en metod som använder dessa ekvationer är Dijkstras algoritm. För att hitta billigaste vägar från alla noder till alla noder är Floyd-Warshalls algoritm en vanlig metod. Algoritmen utgår från alla direktbågar som finns och sätter då cij = wij där cij betecknar kostnaden för den billigaste väg från i till j som har hittats. Därefter kontrolleras i varje steg k om det finns en billigare väg mellan två noder som passerar nod k, där k ∈ N . Det vill säga för i, j ∈ N undersöks om cik + ckj < cij . Om cik + ckj < cij är uppfyllt sätts cij = cik + ckj . Morén, 2010.. 3.

(14) 4. Kapitel 2. Teori. Detta uttryck är direkt kopplat till Bellmans ekvationer och innebär att ett dualt optimalitetsvillkor som är brutet har hittats och rättas till. [5]. 2.2. Grafteori. Grafen G är planär om den kan avbildas i planet på så sätt att inga bågar skär varandra förutom i noder. [1] ˜ så definieras dualen G ˜ ∗ till G ˜ genom att en Givet en oriktad planär graf G ∗ ˜ för varje region i G ˜ och en båge skapas i G ˜ ∗ mellan två noder nod skapas i G ˜ som regionerna har. Förekomst av loopar samt för varje gemensam båge i G ˜ ∗ är möjligt. [6] multipla bågar mellan noder i G I en starkt sammanhängande graf finns det en väg mellan alla par av noder och därmed så finns det åtminstone en riktad cykel (där noder kan besökas flera gånger). På motsvarande sätt finns det en starkt sammanhängande komponent i en graf G om det finns en delgraf S ⊆ G som är starkt sammanhängande. [6]. 2.3. Design av billigaste väg-ruttning. Målet med det här avsnittet är att komma fram till en matematisk modell för design av nätverk med billigaste väg-ruttning (SPRD, “shortest path routing design problem”). Problemet kan hanteras som ett vanligt nätverks design problem med sidovillkor för ruttning, vilket innebär att en given trafikmängd ska skickas mellan varje nodpar. Ett val som måste göras för att hantera ruttningen i modellen är hur metriken ska behandlas. Det vill säga hur bågkostnaderna ska modelleras. Ett alternativ till den modell som presenteras här är att explicit inkludera bågkostnaderna i modellen. En anledning till att explicita bågkostnader inte används här är att de ger modeller som är mycket svåra att lösa eftersom de ger väldigt svaga LP-relaxationer när det löses i praktiken. Definiera en delmängd L ⊆ N med destinationer och en mängd källnoder Nl ⊆ N för varje destination l. Till varje par av noder, källa-destination (k, d) ∈ Nl × L hör en efterfråga på hur mycket trafik som ska ruttas från k till d. Till modellen hör två typer av variabler. Den ena typen är flödesvariabler xkl ij där (i, j) svarar mot en båge i A och k och l mot en källnod respektive en destination. Dessa flödesvariabler visar hur stor del av det efterfrågade flödet från källnoden till destinationen som går genom bågen (i, j). I fallet när flöden inte får splittas så är xkl ij binära, så att antingen skickas hela efterfrågan på bågen eller så skickas l inget. Även den andra typen är en binär variabel, yij som antar värdet 1 om (i, j) tillhör en billigaste väg till l och 0 annars. Inför nu avbildningen Y l (w) : N|A| → B|A| där B är mängden binära tal och w ≥ 1 är en vektor med bågkostnaderna för bågar (i, j) ∈ A. Avbildningen Y l (w) kan ses som att ett billigaste väg-problem löses så att för en given kostnadsvektor ges en billigaste väg-graf med destination l. För Y gäller Y l (w)ij =. . 1 0. om (i, j) tillhör en billigaste väg till nod l m.a.p w annars.. Från denna definition av Y l (w) kan ett tillåtet ruttningsschema definieras som ingraferna som fås från bågkostnader w. Mängden av vektorer Y l (w) som.

(15) 2.4. Inversa billigaste väg problem. 5. motsvarar simultant realiserbara ingrafer ger i sin tur definitionen Y = {y = (y l )l∈L |∃w ∈ N|A| så att y l = Y l (w) ∀l ∈ L}. För y ∈ Y där y är en billigaste väg-graf så finns det bågkostnader w så att y = Y l (w). Med denna mängd för tillåtna ruttningsscheman kan en modell formuleras. X. (j,i)∈A. xkl ij −. X. xkl ij. =. bkl i. i ∈ N, k ∈ Nl , l ∈ L. kl X xij l yij. ≤ =. l yij 1. (i, j) ∈ A, k ∈ Nl , l ∈ L i ∈ N, l ∈ L, i 6= l. y xkl ij l yij. ∈ ∈ ∈. Y B B. (i, j) ∈ A, k ∈ Nl , l ∈ L (i, j) ∈ A, l ∈ L. (i,j)∈A. (2.2). (i,j)∈A. där bkl i står för nodbalansen, med   −1 i = k 1 i=l = bkl i  0 i 6= k, i 6= l.. P l = 1, i ∈ N, l ∈ L, i 6= l innebär att det ska Notera att villkoret (i,j)∈A yij finnas exakt en billigaste väg från varje nod som inte är en destination så att flöden inte kan splittas. Tillsammans med de två första bivillkoren så ger de att för varje destination så utgör flödet ett inträd. I ett inträd till nod l så finns det en väg från varje nod i 6= l till l. För att kunna lösa (2.2) med till exempel CPLEX behöver mängden Y uttryckas med linjära olikheter. Ett problem är då att antalet bivillkor växer exponentiellt mot antalet noder i G och därför löses det i praktiken med bivillkorsgenerering. [3]. 2.4 2.4.1. Inversa billigaste väg problem Grundläggande begrepp. Definiera en delmängd med destinationer L ⊆ N och tag en nod l ∈ L. Låt nu Al ⊆ A svara mot ett partiellt billigaste väg-träd, det vill säga att bågarna i Al ska tillhöra någon billigaste väg till nod l. På motsvarande sätt svarar A¯l mot bågar som inte får tillhöra en billigaste väg till l och Ul = A \ (A¯l ∪ Al ) mot bågar som det inte finns några krav på. Beteckna mängden av alla bågar som utgår från nod i med δ + (i). Då gäller i fallet när flöden inte får splittas att ∪i∈N :δ+ (i)∩Al 6=∅ {j ∈ N : (i, j) ∈ δ + (i)\Al } ⊆ A¯l . Genom rapporten kommer begreppet “vara” användas vilket motsvarar engelskans commodity. En vara är kopplad till en destination l och dess billigaste väg-träd (Al ∪ A¯l )..

(16) 6. 2.4.2. Kapitel 2. Teori. Realiserbarhet. En mängd av billigaste väg-grafer (Al , A¯l ) är realiserbar om det finns bågkostnader så att bågarna i Al tillhör billigaste vägar samt att bågarna i A¯l inte tillhör någon billigaste väg. En lösning till (2.2) inducerar inträd som är realiserbara. I de kommande avsnitten presenteras två modeller som ger svagare resultat än realisbarhet men som istället är enklare att lösa.. 2.4.3. Partiell kompatibilitet. Med bågkostnader wij för varje båge (i, j) samt nodpriser πil för varje nod i och destination l fås följande modell från optimalitetsvillkoren i (2.1). En mängd billigaste väg-träd är partiellt kompatibel om modellen har en tillåten lösning. [3] wij + πil − πjl wij + πil − πjl wij + πil − πjl wij. 2.4.4. =0 ≥1 ≥0 ≥1. (i, j) ∈ Al , l ∈ L (i, j) ∈ A¯l , l ∈ L (i, j) ∈ Ul , l ∈ L (i, j) ∈ A.. (2.3). Partiell realiserbarhet. För att komplettera Al till ett uppspännande inträd, lägg till bågar (i, l) ∀i ∈ N sådana att det inte finns någon utbåge från i och benämn mängden av de nya ˜ l . Till varje sådan båge (i, l) ∈ D ˜ l inför en variabel dil som motsvarar bågarna D vägkostnad. Bågarna (i, l) införs för att det i uppspännande billigaste väg-träd ska finnas en väg från varje nod till destinationen. Dessa bågar (i, l) kan därför ses som artificiella vägar som måste införas, antingen som direktbågar eller som vägar genom någon annan nod. ˜ l . Definiera också U ˜l = A˜ \ (Al ∪ D ˜ l ∪ A¯l ), ˜ där D ˜ = ∪l∈L D Låt A˜ = A ∪ D ˜ där Ul liksom Ul är bågar som det inte finns några krav på. Inför variabler w ˜ij där w ˜ij = wij om (i, j) ∈ A och w ˜ij = dij om (i, j) ∈ ˜ för varje båge (i, j) samt nodpriser π l för varje nod i och destination l. D i Då fås följande modell. Om modellen har en tillåten lösning är mängden av billigaste väg-grafer partiellt realiserbar som är ett starkare resultat än partiell kompatibilitet. [3] w ˜ij + πil − πjl w ˜ij + πil − πjl w ˜ij + πil − πjl w ˜ij. =0 ≥1 ≥0 ≥1. ˜ l, l ∈ L (i, j) ∈ Al ∪ D ¯ (i, j) ∈ Al , l ∈ L ˜l , l ∈ L (i, j) ∈ U ˜ (i, j) ∈ A.. (2.4). Notera även att formuleringen (2.4) generellt är starkare än (2.3) eftersom det inte behöver finnas någon tillåten lösning i (2.4) även om det finns en i (2.3). En tillåten lösning till (2.4) behöver i sin tur inte motsvara en tillåten lösning till (2.2). För att kunna dra sådana slutsatser om (2.2) från (2.4) så krävs det att Al är uppspännande träd, för l ∈ L. I det fallet så är modellerna (2.3) och ˜ l = ∅ för l ∈ L. Generellt är så dock inte fallet utan (2.4) ekvivalenta eftersom D (2.4) löses för Al som sedan kompletteras för att bli uppspännande. Ett ekvivalent alternativ till att leta efter tillåtenhet i (2.4) är att använda LP-dualitet och från LP-dualen undersöka om det finns en obegränsad lösning..

(17) 2.4. Inversa billigaste väg problem. 7. [5] För att kunna använda LP-dualitetPkan (2.4) omformuleras som ett minimeP P ˜ij + l∈L i∈N 0 · πil läggs ringsproblem då målfunktionen z = (i,j)∈A˜ 0 · w till samt variabelbytet w ˜ij := w ˜ij − 1 görs. Följande modell kan då fås från LP-dualen där istället för att maximera målfunktionen v så minimeras målfunktionen −v. X X l θij min −v = ˜ A ¯l l∈L (i,j)∈A\. X. l θij. ˜ j:(i,j)∈A. −. X. l θji. ˜ X j:(j,i)∈A l θij l∈L l θij. = 0 i ∈ N, l ∈ L. (2.5). ≤ 0 (i, j) ∈ A˜ ˜l ∪ A¯l , l ∈ L ≥ 0 (i, j) ∈ U. l Variablerna θij kan ses som flödet på en båge av en vara. Det andra villkoret gäller nodbalans, så att inflöde och utflöde är lika i varje nod. Detta kan också ses som att flödet går i cykler då det varken finns källor eller sänkor. Det tredje villkoret är en kapacitetsbegränsning som innebär att nettoflödet i varje båge l ˜ l inte omfattas då (i, j) ∈ Al ∪ D får vara högst 0. Lägg särskilt märke till att θij av det sista bivillkoret i modellen och att de därmed är fria variabler. Det är existensen av obegränsade lösningar i dualen som är intressant eftersom det innebär att primalen saknar lösning. [5] Därmed kan minimering av målfunktionen −v ersättas av villkoret −v < 0. Detta eftersom varje tillål l , k > 0 så att i (2.5) där −v < 0 kan skalas om till k·θij ten lösning med θij en obegränsad lösning fås i dualen. Följande modell som kommer användas i fortsättningen fås då. X X l θij <0 ˜ A ¯l l∈L (i,j)∈A\ X l l θji θij − ˜ ˜ j:(j,i)∈A j:(i,j)∈A. X. X. l θij. l∈L l θij. 2.4.5. =0. i ∈ N, l ∈ L. ≤0. (i, j) ∈ A˜. ≥0. ˜l ∪ A¯l , l ∈ L (i, j) ∈ U. (2.6). Giltiga cykler. Från teorin för LP-dualitet följer det att det finns en tillåten lösning i (2.6) l om och endast om (2.4) saknar en tillåten lösning. Då θij är fria variabler för ˜ (i, j) ∈ Al ∪ Dl kan dessa minskas obegränsat så länge bivillkoren är uppfyllda. Detta kan ske till exempel om det finns en cykel C i G med “bakåtbågar” B och “framåtbågar” F . Flödet på bakåtbågar kan vara negativt och med ett negativt flöde på bågarna motsvarar detta att bågen används bakåt. Framåtbågar är istället bågar med positivt flöde. ˜ k , k ∈ L, B ⊆ Al ∪ D ˜ l , l ∈ L, C = F ∪ B, F ⊆ Ak ∪ D med följande flöden l l > 0, (i, j) ∈ F < 0, (i, j) ∈ B, θij θij k k > 0, (i, j) ∈ B, < 0, (i, j) ∈ F, θij θij.

(18) 8. Kapitel 2. Teori. där flödet kan sättas så att det till beloppet är lika stort på alla bågar och l k därmed är θij = −θij . Notera att cykeln inte är riktad i grafen G men att den blir det då vi betraktar bågarna i B som bakåtbågar vilket kan ses som att bågarna vänds och då fås en riktad cykel. En sådan cykel kallas en giltig cykel (valid cycle) och om det finns en sådan är mängderna av billigaste väg-grafer (Al ∪ A¯l ) och (Ak ∪ A¯k ) inte partiellt realiserbara då modell (2.4) saknar en tillåten lösning. En giltig cykel påverkar det första villkoret i (2.6) där summan minskar då flödet ökar samt att nettoflödet i varje båge i cykeln är 0 eftersom den ena varan ökar på bågar i B medan den andra varan minskar och tvärtom för bågar i F . Om en giltig cykel hittas så är bågarna som inte ingår i cykeln ointressanta då flödet på de bågarna kan sättas till 0 och det påverkar inte tillåtenhet i (2.6). I till exempel [2] och [3] presenteras algoritmer för att hitta giltiga cykler i polynomiell tid..

(19) Kapitel 3. Klassificering av konflikter En konflikt består av två eller fler cykler som ger en tillåten lösning i (2.6) vilket medför att (2.4) saknar en tillåten lösning. Ett enkelt exempel på en konflikt är en giltig cykel bestående av två cykler i motsatt riktning men konflikter behöver inte bestå av två varor utan kan vara en sammansättning av flera varor med flöden i cykler. Därför kan de ge upphov till komplicerade strukturer som är betydligt svårare att hitta än en giltig cykel. Eftersom det finns flera effektiva algoritmer för att ta fram giltiga cykler så är fokus för det här examensarbetet på konflikter med fler än två varor. I varje cykel C = B ∪ F är en entydigt bestämd vara kopplad till B men det kan finnas varor som är kopplade till flera cykler. I många fall är dock begreppen cykel och vara ekvivalenta. Även om villkoret för nettoflöde i en båge i (2.6) inte är ett likhetsvillkor kommer det att behandlas som ett sådant i de konflikter som studeras här och när algoritmen presenteras. En viktig anledning till att leta efter konflikter är utöver att de svarar mot otillåtna lösningar att de ger upphov till linjära olikheter som används för att uttrycka Y då bivillkor för (2.2) tas fram. För att ge en bättre bild av hur konflikter kan se ut ges ett par inledande exempel. 1        3o. /2 O       4. 1O  4 ^> @ 2 p p 3 g' g' >> g' g' p g' g' >> p p g' g' >> wp p o/ o/ g' ' 7 o / o / o / o / / o / o / o 6 5. I det här exemplet liksom i övriga exempel så antas utritade bågar för en viss vara l tillhöra Al vilket motsvarar att bågarna ingår i ett billigaste väg-träd till destination l. Grafen till vänster svarar mot en giltig cykel vilket är den enklaste typen av konflikter. De tidigare införda beteckningarna används samt att heldragna bågar benämns a och streckade bågar benämns b. Konflikten består av cyklerna 1 → 3 → 4 → 2 → 1 där bågar i Aa = {(1, 2), (4, 3)} används som bakåtbågar Morén, 2010.. 9.

(20) 10. Kapitel 3. Klassificering av konflikter. och 1 → 2 → 4 → 3 → 1 där Ab = {(1, 3), (4, 2)} används som bakåtbågar. Flödet i cykeln 1 → 2 → 4 → 3 → 1 är θ på framåtbågarna (1, 2) och (4, 3) och −θ på bakåtbågarna (4, 2) och (1, 3) och flödet i den andra cykeln är lika stort men i motsatt riktning. Det ger tillåtenhet i modell (2.6) vilket innebär att det finns en konflikt. I det här fallet är det inte specificerat vilka destinationer som a och b svarar mot. Till höger är det en lite mer komplicerad konflikt som består av den yttre cykeln 1 → 4 → 7 → 6 → 5 → 2 → 1 där heldragna bågar används som bakåtbågar, samt de övriga tre cyklerna 1 → 3 → 7 → 4 → 1, 5 → 3 → 1 → 2 → 5 och 5 → 6 → 7 → 3 → 5 där bakåtbågar utgörs av prickade bågar, streckade bågar respektive kurviga bågar. Notera att nettoflödet på varje båge är 0 förutsatt att flödet är lika stort i de fyra cyklerna, vilket krävs för att det ska utgöra en tillåten lösning i (2.6). Sett till grafen så är flödet i den yttre cykeln medurs medan flödet på de övriga cyklerna är moturs.. 3.1. Yttervara. Med en plan inbäddning så åsyftas en visualisering av en plan graf som är plan. Antag att det finns en plan inbäddning P av den delgraf som utgör en konflikt så att den yttre regionen motsvarar en cykel samt att varje inre region svarar mot en cykel. Beteckna den vara som motsvarar den yttre regionen för yttervara. Ett sätt att se på yttervaran är då att den täcker upp de övriga cyklerna så att nettoflödet blir 0 på alla bågar. En utgångspunkt för konflikter ges av att varje cykel Ci där i = 0, . . . , p ses som en vektor med komponenter som svarar mot flödet på de inblandade bågarna. Flödet sätts lämpligen till -1, 0 eller 1. Då det antas att P nettoflödet i p varje båge är 0 i en konflikt innebär det att dessa vektorer uppfyller i=0 Ci = 0 och att de därmed är linjärt Ppberoende. Med C0 som cykel för yttervaran kan den uttryckas som C0 = − i=1 Ci som väl överrensstämmer med synsättet att yttervaran täcker upp de övriga cyklerna. En anmärkning kan vara på sin plats om att yttervaran eller den yttre regionen inte är unik. Grafen P kan ritas om så att valfri annan cykel svarar mot den yttre regionen. Även från cyklernas linjära beroende är det möjligt att uttrycka valfri cykel som en summa av övriga cykler. Användningen av en särskild yttervara berättigas snarare av att det underlättar när konflikter ska åskådliggöras samt är relevant när det gäller att hitta konflikter. I avsnitt 3.4 ges ett par exempel där yttervarans betydelse framgår tydligare.. 3.2. Strukturgraf. Utgå från en planär inbäddning P som i avsnitt 3.1 med en cykel Cy , motsvarande den yttre regionen i P . Med definitionen av dualen till en graf i åtanke kan en strukturgraf SGy definieras där y svarar mot yttervaran. Skapa en nod i SGy för varje cykel förutom Cy som ingår i konflikten och skapa en båge mellan två noder om det finns minst en gemensam båge i P för cyklerna. Här skiljer sig SGy mot dualen då det aldrig skapas fler än en båge mellan två noder i SGy . Att det inte skapas någon nod för yttervaran medför att SGy kommer ha varierande utseende beroende på vilken vara som väljs som yttervara i P ..

(21) 3.3. Klassificering. 11. Därför är det naturligt att skilja på strukturgrafer med olika yttervaror genom att låta strukturgrafen bero på en graf P samt en yttervara y. Strukturgrafen ger en beskrivning av cyklerna som ingår i en konflikt samt deras inbördes relation. Denna hanteringen av yttervaran är förknippad med hur algoritmen som presenteras i kapitel 4 är uppbyggd.. 3.3. Klassificering. Med utgångspunkt i strukturgrafen så kan man införa en klassificering av konflikter. En grundläggande sådan klassificering är att dela upp konflikterna i trädbaserade respektive mer komplicerade konflikter vars strukturgraf har godtycklig struktur. Det är trädbaserade konflikter som prioriteras i det här examensarbetet. Nedan följer exempel på konflikter vars strukturgraf motsvarar olika typer av trädstrukturer.. 3.4 3.4.1. Exempel på konflikter Nod 1       3o. •. /2 O      4. Med samma konflikt och beteckningar som i det första exemplet i kapitlet så består strukturgrafen bara av en nod, vilket syns i figuren ovan. Cyklerna kan x x x x skrivas som vektorer på formen Cx = (f12 , f13 , f42 , f43 ) där fij är flödet av vara x på bågen (i, j). Med flöde ±1 gäller för destination a att Ca = (−1, 1, 1, −1) och för destination b att Cb = (1, −1, −1, 1) samt att Ca + Cb = 0. Kopplat till a b b a modell (2.6) så är första olikheten f12 + f13 + f42 + f43 < 0 vilket är uppfyllt för flödena Ca och Cb samtidigt som nettoflödena i varje båge är 0. Det innebär att det finns en konflikt.. 3.4.2. Väg /2o. 1O •.  4 _ _ _ _ _ _/ 5 o. 3 •  6. Figuren ovan är ett exempel på den enklaste formen av konflikter som består av tre eller fler varor. I det här exemplet används beteckningar från föregående exempel samt en tredje vara c vars bågar är prickade. De tre cyklerna utgörs av 1 → 4 → 5 → 6 → 3 → 2 → 1 med heldragna bakåtbågar, 1 → 2 → 5 → 4 → 1.

(22) 12. Kapitel 3. Klassificering av konflikter. med streckade bakåtbågar och 2 → 3 → 6 → 5 → 2 med prickade bakåtbågar. Motsvarigheten i strukturgrafen är en väg vilket kan ses som en enkel variant av ett träd. Notera här att svart heldragen verkar som yttervara men att grafen går att rita om så att valfri vara fungerar som yttervara. Med utgångspunkt i modell 2.6 ges de bågmängder som används samt uttryck för flöden. De givna bågmängderna är Aa = {(1, 2), (3, 6), (4, 1), (6, 5)}, Ab = {(4, 5)} och Ac = {(3, 2), (2, 5)} Den första olikheten i ekvation (2.6) blir då a a a a b c c f12 + f36 + f41 + f65 + f45 + f32 + f25 <0 x x x x x x x Cyklerna på vektorform blir Cx = (f12 , f36 , f41 , f65 , f45 , f32 , f25 ) och för respektive vara med flöde ±1 ges följande lösning till modell 2.6.. Ca = (−1, −1, −1, −1, 1, 1, 0) Cb = (1, 0, 1, 0, −1, 0, 1) Cc = (0, 1, 0, 1, 0, −1, −1) Att lösningen är tillåten följer då summan i första villkoret är -7 < 0. Detta ger att det finns en konflikt. Det finns även en mindre konflikt i exemplet bestående av noderna 2, 3, 5 och 6 som utgör en giltig cykel. Detta undersöks närmare i avsnittet 3.5.. 3.4.3. Träd. Nedan visas ett exempel på en konflikt G vars strukturgraf utgör ett träd med en mer generell struktur. Även här är strukturgrafen ritad inuti G.. 3 •  8. 1O _ _ _ _ _ _   •    / 4 /o /o o/ /o /o /o o/ O O O O O • O O O O /9. _/ 2 O. 6 _ _ _ _ _ _ _/ 7O. /o / 5 o KS •. / 10 ks. 11. •  / 12. / 13. •  14 o.  15. Liksom i tidigare exempel så svarar varje region mot en cykel, ytterregionen inkluderad, samt att flödet för en viss vara l i en cykel Cl är negativt på bågar i Al och positivt på bågar som tillhör Ak , k ∈ L, k 6= l. Därmed är det lätt att verifiera att varje båge används exakt två gånger med olika riktningar för respektive cykel. Detta resulterar i att nettoflödet är 0 på varje båge och då flödet är uppbyggt kring cykler medför det att tillåtenhet uppnås i (2.6)..

(23) 3.5. Irreducibla konflikter. 3.5. 13. Irreducibla konflikter. När en konflikt har hittats så är det intressant att veta om konflikten är irreducibel eller om det finns en mindre konflikt vars bågar utgör en delmängd av bågmängden för den hittade konflikten. För att undersöka detta kan återigen en variant av den duala grafen definieras, som också har likheter med strukturgrafen. Utgå från en graf G som svarar mot en konflikt och definiera nu grafen Γ genom att lägga till en nod för varje cykel Ci i G. För två cykler i G som har minst en båge gemensamt låt Ck = Bk ∪ Fk och Cl = Bl ∪ Fl vara mängden av de bågar som ingår i respektive cykel. Lägg nu till en båge från nod k till nod l om det finns en båge (i, j) ∈ Fk ∩ Bl och tvärtom lägg till en båge från nod l till nod k om finns en båge (i, j) ∈ Bk ∩ Fl . Det betyder att cykeln Ck använder en bakåtbåge som hör till vara l som framåtbåge och vice versa. Dessa bågar symboliserar beroenden, så om det finns en båge till en nod så är den cykeln beroende av en annan cykel. Metoden för att nu avgöra om konflikten är irreducibel eller inte är att ta bort alla noder som hör till en vara i Γ och alla bågar som går till och från noderna. Om den resulterande grafen då inte är starkt sammanhängande så är konflikten inte irreducibel. I det fallet där vi får en graf som inte är starkt sammanhängande så innebär det att någon komponent bestående av en eller flera noder inte har någon utbåge och därmed att motsvarande cykler inte heller är nödvändiga för konflikten. Om en sådan komponent har hittats så är konflikten reducibel och dess bågar tas bort från konflikten G. Därefter så läggs de bågar som behövs tillbaka från den cykel som hör till den nod eller de noder som först togs bort. Exempel Med definitionen för Γ kan vi nu återvända till exemplet i avsnitt 3.4.1 och bestämma Γ.. 1O. X•

(24) E 2X 22

(25) 22

(26) 22

(27)

(28)

(29) 22

(30) /

(31) 2 22

(32)

(33) 22

(34)

(35) 22

(36)

(37)  

(38) o Y• Z•.  4 _ _ _ _ _ _ _ _/ 5 o. /3 O. Y•o. 6. /3 O. /2. 1O. Z•.  4 _ _ _ _ _ _ _/ 5 o. Här är Γ utritad i samma graf som G och grafen med den översta noden X, motsvarande yttervaran, samt in- och utbågar borttagna till höger. I den högra grafen så saknar noden Y utbågar och därmed kan den noden med tillhörande cykel tas bort. Därefter läggs noden X tillbaka samt de növändiga ytterbågarna (2, 3) och (6, 5) vilket ger att den kvarvarande konflikten, som är irreducibel, är en giltig cykel och även identisk med konflikten i exempel 3.4.1. En anledning till att det kan vara intressant att hitta den minsta konflikten är att den ger upphov till starkare villkor som kan läggas till modellen (2.2) då Y ska uttryckas med linjära olikheter.. 6.

(39) 14. Kapitel 3. Klassificering av konflikter.

(40) Kapitel 4. Algoritmer I kapitel 4 är målet att ta fram en algoritm som hittar en konflikt motsvarande en tillåten lösning till (2.6). Som vi såg tidigare så består en tillåten lösning av flöden i cykler sådana att nettoflödet inte är positivt på någon båge.. 4.1. Introduktion. Givet är en graf G med n = |N | noder. Antag att det finns en konflikt med cykler {Cl }l∈L . Idén bakom algoritmen är att fokusera på att hitta cyklerna i grafen på formen Cl = Bl ∪ Fl där Bl ⊆ Al med syftet att hitta en tillåten lösning till (2.6). En riktad cykel i G fås då bågar i Bl vänds samt bågar i Fl används som de är. Med utgångspunkt i en sådan cykel Cl och flöden -1 på bågar (i, j) ∈ Bl och 1 på bågar (i, j) ∈ Fl så är det strikta negativitetsvillkoret, nodbalansvillkoret och det villkor för undre varuspecifika flödesgränser i (2.6) uppfyllda. För att kapacitetsvillkoret ska vara uppfyllt krävs det dock att det finns någon eller några andra cykler som kan kombineras med cykeln Cl så att nettoflödet inte är positivt på någon båge. Med en cykel bestående av framåtbågar och bakåtbågar kan den delas in i ˜l ⊆ Bl och framsegment, där ett segment består av bakåtbågar för en vara B ˜ ˜l och F˜l åtbågar för en eller flera andra varor Fl ⊆ Fl . Någon av mängderna B kan vara tomma. Sådana segment som dessutom är sammanhängande benämns ˜l vänds så fås en rik“vägar” genom kapitel 4. Tanken är att om bågarna i B tad väg. Några av vägarna i exempel 3.4.2 är 4 → 5 → 2, 5 → 6 och cykeln 4 → 2 → 3 → 6 → 5 → 4. Algoritmen är tvådelad med ett första steg som består i att skapa en ny graf H baserad på G som utgår från vilka vägar som finns i G. Syftet med dessa vägar är att de ska utgöra grunden för cykler och att det ska gå att dra slutsatser från en väg om hur cykler som innehåller vägen kan se ut med avseende på kapacitetsvillkoret i (2.6). I det andra steget kombineras dessa vägar till cykler vilka ligger till grund för konflikter. Ett mer direkt tillvägagångssätt att leta efter cykler redan i G kan ha en stor nackdel i komplexitet då antalet cykler kan öka exponentiellt sett till antalet noder i G. Morén, 2010.. 15.

(41) 16. 4.2. Kapitel 4. Algoritmer. Algoritmbeskrivning. I Låt y ∈ L svara mot en yttervara. II Låt H vara en tom graf. Skapa en nod (i, j, b, f ) om det finns en väg mellan i och j i G som använder b som bakåtbågar och f som framåtbågar, där i 6= j svarar mot noder i G och b 6= f svarar mot varor i L. III Lägg till en båge mellan u = (i, j, bp , fp ) och v = (k, l, br , fr ), u 6= v sådana att v 6= (j, i, fp , bp ) och att v 6= (i, j, fp , bp ), om bp = fr 6= y och det finns noder (i, k, y, bp ) och (j, l, bp , y). IV Addera en startnod St och en slutnod Sl till H. Lägg till en båge mellan St och (i, j, b, f ) om f = y och lägg till en båge mellan (i, j, b, f ) och Sl om b = y. Lägg även till en båge från Sl till St. V Finns det en riktad cykel i H så har en konflikt hittats. Algoritmen körs sedan för alla y ∈ L för att avgöra om det finns någon konflikt. Notera att när en nod bildas så behöver vägen (i, j) inte bestå av bågar från mer än en mängd Al . Till exempel om det finns en båge (i, j) ∈ Aa , a ∈ L så kommer noderna (i, j, a, x) skapas för alla x ∈ L, x 6= a. De extra villkoren för v i punkt III är till för att undvika en del typer av lösningar som inte svarar mot en konflikt, till exempel två parallella bågar mellan två noder. Mer om detta i avsnitt 4.5.1.. 4.3. Komplexitet. Grafen H som ges av algoritmen i avsnitt 4.2 kan innehålla upp till n4 noder där en faktor n2 kommer från ett par av noder (i, j) ∈ N × N och en faktor n2 kommer från par av varor, b respektive f som tillhör L. Således innehåller H i värsta fall upp till n8 bågar. Att sedan leta efter cykler i grafen H baseras lämpligen på sökning efter starkt sammanhängande komponenter vilket görs på linjär tid sett till antal bågar och antal noder, maximalt n8 .[4] Algoritmen körs upp till n gånger då varje vara testas som yttervara. Detta ger en komplexitet på O(n9 ).. 4.4 4.4.1. Exempel med algoritmen Exempel 1 1O •. /2o O   4.  5 _ _ _ _ _ _/ 6 o. 3. •  7. Låt bågarna i grafen tillhöra respektive billigaste väg-träd Al och låt heldragna bågar svara mot vara a, streckade bågar svara mot vara b och prickade bågar.

(42) 4.4. Exempel med algoritmen. 17. svara mot vara c. Det finns en konflikt bestående av de tre cyklerna 1 → 5 → 6 → 7 → 3 → 2 → 1 med heldragna bågar som bakåtbågar, 1 → 2 → 4 → 6 → 5 → 1 med streckade bågar som bakåtbågar och 2 → 3 → 7 → 6 → 4 → 2 med prickade bågar som bakåtbågar. Nettoflödet på alla bågar är 0 med dessa cykler. Algoritmen hittar till exempel cykeln St → (5, 1, b, a) → (6, 2, c, b) → (7, 3, a, c) → Sl → St i H om vara a används som yttervara. Att noden (5, 1, b, a) existerar beror på att det finns en väg från 5 till 1 som använder bågar i Ab som bakåtbågar och bågar i Aa som framåtbågar. Motsvarande gäller för existens av de andra två noderna. Det finns en båge i H mellan noderna (6, 2, c, b) och (7, 3, a, c) därför att det finns en väg från 6 till 7 som använder bågar i Aa som bakåtbågar och bågar i Ac som framåtbågar samt en väg från 2 till 3 som använder bågar i Ac som bakåtbågar och bågar i Aa som framåtbågar. Att dessa två vägar finns är ekvivalent med att noderna (6, 7, a, c) och (2, 3, c, a) existerar vilket är det algoritmen enligt 4.2 söker efter. Det finns även en konflikt som inte involverar start- och slutnod, nämligen (4, 2, c, b) → (4, 6, b, c) → (4, 2, c, b), med heldragen som yttervara, samt ett par andra varianter av cykler i H som involverar start- och slutnoden. I det här fallet så hittas konflikten dessutom oavsett vilken vara som används som yttervara. Denna konflikt är den enklaste typen av konflikter som involverar tre eller fler varor och motsvarar en väg i strukturgrafen SGa , som finns i figuren ovan. Följande tabell ger en bild av hur stor grafen H är i praktiken då antalet noder i G är sju och antalet bågar i G är åtta.. Yttervara a b c. Antal noder 96 96 96. Icke-isolerade noder 76 79 79. Antal bågar 225 357 357. Att H är relativt liten beror dels på att G har få bågar samt att antalet destinationer |L| = 3 är färre än antalet noder |N | = 7. Storleken kan jämföras med det maximala antalet noder som är av storleksordning 72 · 32 = 441 samt det maximala antalet bågar som är av storleksordning 74 · 34 = 194481. Vidare kan noteras att i fallet då a är yttervara så finns det tre starkt sammanhängande komponenter i H med 28, 2 respektive 2 noder. Liknande resultat gäller för övriga yttervaror. Komponenten med 28 noder motsvarar de lösningar som involverar start- och slutnoden. Algoritmen kan upptäcka en konflikt vid sökning med olika yttervaror som i Exempel 1 men generellt så krävs det sökning med en specifik yttervara för att en konflikt ska hittas..

(43) 18. 4.4.2. Kapitel 4. Algoritmer. Exempel 2 /2o O   5. •.  7 _ _ _ _ _ _ _/ 8 ks. 9. 1O •. 3O. /4. • 6 O O O   / 10 o/ /o /o /o o/ /o /o o/ / 11. •  12 o.  13. I Exempel 2 så finns det en konflikt som involverar fem cykler och som synes så är strukturgrafen ett träd, men konflikten hittas inte av algoritmen. Samma beteckningar som i Exempel 1 används samt två nya varor d och e för kurviga bågar respektive bågar med dubbla linjer. I grafen H så finns det en väg (10, 3, d, c) → (11, 4, a, d) → Sl → St → (7, 1, b, a) → (8, 2, c, b) men inte någon cykel. Ett sätt att komplettera vägen till en cykel vore att lägga till en båge (8, 2, c, b) → (10, 3, d, c). Detta vore önskvärt då det går att täcka flödena på bågarna (9, 8) och (9, 10) med cykeln (8 − 9 − 10 − 13 − 12). Med en modifiering av algoritmen skulle detta kunna vara möjligt vilket i förlängningen skulle innebära att konflikter med generella trädstrukturer kan hittas. Mer om detta i avsnitt 4.7.1. Tabellen är över storleken på H då antalet noder i G är 13 och antalet bågar i G är 16. Yttervara a b c d e. Antal noder Icke-isolerade noder Antal bågar 384 144 379 384 67 147 384 133 317 384 74 163 384 68 159. Jämfört med Exempel 1 har antalet bågar i H i vissa fall minskat och även för till exempel yttervara a så är ökningen inte proportionell mot ökningen av storleken på G. Detta kan bero på att det finns fler varor i Exempel 2 och därmed kortare vägar eftersom algoritmen bara tar hänsyn till vägar som består av två varor. Det leder till att färre bågar skapas mellan noderna.. 4.5. Verifiering av algoritmen. Det finns ett villkor som krävs för att säkerställa att en lösning hittad av algoritmen svarar mot en konflikt och det är att flödet av en vara l på en båge som tillhör Cl som ingår i lösningen måste vara skilt från 0. Ett fall där sådana nollflöden inte kan inträffa är när Al ∩ Ay = ∅ där l, y ∈ L. Detta motsvarar att det inte får finnas någon båge som tillhör en billigaste väg för två eller fler varor. Algoritmen verifieras med den förutsättningen..

(44) 4.5. Verifiering av algoritmen. 19. För att visa att en cykel i H svarar mot en konflikt så gäller det att visa att varje inblandad vara kan skickas i en cykel och att nettoflödet inte är positivt på någon båge vilket motsvarar tillåtenhet i (2.6). I de lösningar som algoritmen hittar kommer villkoret om nettoflöde vara uppfyllt med likhet eftersom varje väg i G som används av en cykel i G kommer täckas med en annan cykel som använder vägen i motsatt riktning. Jämför till exempel med flödet i Exempel 1. Till varje nod u ∈ H finns en väg i G bestående av bakåt- och framåtbågar och för att vägen ska ingå i en konflikt så måste det både finnas en cykel där vägen ingår och det måste dessutom finnas en annan cykel i G som täcker upp flödet på bågarna. Att det finns en båge mellan två noder u = (i, j, l, f ) och v = (m, n, k, l) i H innebär att för l så finns det en cykel Cl i G där varan ˜ l ) som bakåtbågar samt bågar i Cl ∩ (Ak ∪ D ˜k ∪ använder bågar i Cl ∩ (Al ∪ D ˜ ˜ Af ∪ Df ∪ Ay ∪ Dy ) som framåtbågar för varor k och f och en yttervara y. Med denna cykel så uppkommer behov av att täcka bågarna som hör till u och v. Om v tillhör en väg i H så finns det en cykel Ck i G som täcker flödet från Cl på bågarna i v men som i sin tur inför nya bågar som måste täckas. Att det finns en cykel i H kan ses som att behovet av täckning på bågarna som hör till den sista noden löses med hjälp av bågarna för den första noden, då den sista cykeln i G täcker bågar i två noder i H som behöver täckning. Notera även att i Cl tillkommer det andra bågar som måste täckas som inte tillhör någon av noderna u eller v. Det är här yttervaran används då syftet med yttervaran är att den ska täcka sådana bågar. Konflikter kan delas upp i två kategorier beroende på om start- och slutnod tillhör cykeln i H. Fall 1. (St eller Sl ingår inte i cykeln i H): Låt cykeln i H bestå av noder. u1 = (n1 , m1 , x1 , xr ), u2 = (n2 , m2 , x2 , x1 ), . . . , ur = (nr , mr , xr , xr−1 ) med bågar från ui till ui+1 och mellan ur och u1 = ur+1 . Detta ger att för varje xi , i = 1, . . . , r så finns det en cykel i G där vara xi skickas. En cykel Ci i G är sammansatt av vägar som motsvaras av de fyra noderna si = (ni , ni+1 , y, xi ), ti = (mi , mi+1 , xi , y), ui och ui+1 i H. Att noderna si och ti i H existerar följer från konstruktionen av en båge i H. Eftersom flöden på vägen som hör till ui täcks av Ci−1 och flöden på vägen som hör till ui+1 täcks av Ci+1 återstår det att täcka bågarna som tillhör si och ti . Dessa bågar måste täckas av en annan vara än xi som kommer från nodparet (ui , ui+1 ) och det är yttervaran. För yttervaran följer det av konstruktionen att antingen så är alla ni lika eller så finns det en cykel i G bestående av vägarna (n1 , n2 , y, x1 ) → (n2 , n3 , y, x2 ) → . . . → (nr , n1 , y, xr ) samt att antingen så är alla mi lika eller så finns det en cykel i G bestående av vägarna (m2 , m1 , y, x1 ) → (m1 , mr , y, xr ) → . . . → (m3 , m2 , y, x2 ). Fallet där ni = ni+1 är möjligt men då tillkommer det inga bågar som ska täckas och motsvarande gäller om mi = mi+1 . Dessa cykler täcker de flöden på bågar i noder (ni , ni+1 , y, xi ) och (mi+1 , mi , y, xi ) som tillkom med cykeln Ci . Sammantaget ger detta att varje väg används två gånger i olika riktningar och därmed så har varje båge nettoflöde 0. Fall 2. (Där St och Sl ingår i cykeln): Låt cykeln i H bestå av noder. St, u1 = (n1 , m1 , x1 , y), u2 = (n2 , m2 , x2 , x1 ), . . . , ur = (nr , mr , y, xr−1 ), Sl.

(45) 20. Kapitel 4. Algoritmer. För varje båge (ui , ui+1 ) ∈ H, i = 1, . . . , r − 1 finns en cykel Ci i G. Vägen som hör till noden ui för i = 2, . . . , r − 1 täcks av cyklerna Ci−1 och Ci på samma sätt som i fall 1. Låt si = (ni , ni+1 , y, xi ) och ti = (mi+1 , mi , y, xi ) för i = 1, . . . , r där existensen av noderna ti följer av att om det finns en väg från i till j i G som använder bakåtbågar B och framåtbågar F så finns det en väg från j till i som använder F som bakåtbågar och B som framåtbågar. Då är de vägar som återstår att täcka u1 , ur , si och ti för i = 1, . . . , r. De vägar i G som ger upphov till cykeln för yttervaran är (m1 , n1 , y, x1 ) → (n1 , n2 , y, x1 ) → (n2 , n3 , y, x2 ) → . . . → (nr−1 , nr , y, xr−1 ) → (nr , mr , y, xr−1 ) → (mr , mr−1 , y, xr−1 ) → . . . → (m2 , m1 , y, x1 ). Detta medför att yttervaran täcker u1 , ur , si och ti för i = 1, . . . , r, som behövde täckas och därmed så har varje väg nettoflöde 0. Det innebär att cykeln i H svarar mot en konflikt.. 4.5.1. Falska lösningar. En anledning till att algoritmen ibland hittar falska lösningar beror på förekomsten av bågar som tillhör flera billigaste väg-träd. Detta leder i vissa fall till att en båge finns med både som framåtbåge och bakåtbåge i en cykel för en vara vilket i sin tur leder till att nettoflödet av varan på bågen är 0. Ett exempel på detta är bågmängden {(i, j), (j, k)} ⊆ Al ∩ Ay . En lösning enligt algoritmen är cykeln St → u = (i, j, l, y) → v = (j, k, y, l) → Sl → St i H om y är yttervara. Denna cykel existerar eftersom noderna u och v existerar samt även noderna (i, j, y, l) och (j, k, l, y) som används för att skapa bågen (u, v). För att noden (j, k, l, y) ska skapas så räcker det att (j, k) ∈ Al och motsvarande för de övriga noderna. Flödet av vara l i den här lösningen är k → j → i → j → k vilket ger nettoflödet 0 av vara l på bågarna {(i, j), (j, k)} och detsamma gäller för vara y. Ett sätt att förhindra att dessa falska lösningar uppkommer är att studera de bågar i G som en båge i H bygger på samt de noder i H som används för att skapa bågen. Syftet är att se till så att bågmängderna som hör till olika noder i H är disjunkta. Det skulle innebära att lösningar som i exemplet ovan inte hittas eftersom bågmängderna där inte är disjunkta. En båge i H skulle då ge en cykel i G där nettoflödet för varan alltid är skilt från 0.. 4.6. Resultat för algoritmen. Generellt sett så motsvarar strukturgrafen för de konflikter som algoritmen hittar antingen en väg eller en enkel variant av en cykel. Det finns dock en del typer av konflikter som inte hittas av algoritmen. En begränsning i algoritmen är att en cykel Cl som hör ihop med en båge (u, v) i H som mest kan bestå av fyra varor om den ska hittas. Dessa varor kan vara yttervaran, vara l samt upp till två andra varor som hör ihop med noderna u respektive v. Det vore önskvärt att förbättra algoritmen så att fler typer av konflikter och framförallt mer generella typer av träd upptäcks. Dessutom är det viktigt att algoritmen fortfarande körs inom polynomiell tid..

(46) 4.7. Algoritmen med iterationer. 4.7. 21. Algoritmen med iterationer. Ett sätt att förbättra algoritmen så att fler konflikter hittas är att lägga till fler steg efter att grafen H har skapats. Utgångspunkten är återigen fallet där vi har två noder u = (i, r, bp , fp ) och v = (k, s, br , fr ) och en cykel Cl = Bl ∪ Fl i G där flödet på vägarna i → k och r → s måste täckas för att få tillåtenhet i (2.6). Med algoritmen i 4.2 söker vi efter en cykel med yttervaran som täcker flödet på alla bågar i i → k respektive r → s. I de fall där det inte finns en enskild sådan cykel är det önskvärt att kunna leta efter två eller fler cykler som tillsammans skulle kunna täcka flödena på bågarna i i → k respektive r → s, för att sedan använda yttervaran för att täcka de nya cyklerna. Ett exempel på ett sådant fall där iterationer kan användas sågs i Exempel 2. I följande exempel är vägen i → k ett fall som undersöks först när iterationer används. io. _ _ _/ j o.  r o_ _ _ _ _ _. k       /s. Här används heldragen linje som yttervara, kallad a och varan b som svarar mot streckad linje utgör cykeln i → r → s → k → j → i. Den tredje varan c svarar mot prickade bågar. Algoritmen från 4.2 hittar inte cykeln ty den söker efter noden (i,k,a,b) när bågen mellan (i,r,b,a) och (k,s,a,b) ska skapas. Den noden finns inte men det skulle kunna vara möjligt att täcka alla flöden på vägarna i → j och j → k. Ett nödvändigt men inte tillräckligt krav för att det ska finnas en konflikt med grafen ovan som en komponent är att det finns en cykel med varan som svarar mot prickad linje där vägen j → k ingår. Tillägget till algoritmen med iterationer verkar i två steg. Gemensamt för de två stegen är att noder söks som är nära att kunna ingå i en konflikt. Till exempel om en mängd cykler i G skulle utgöra en konflikt om det var möjligt att täcka en eller flera bågar som tillhör mängden. Då vore det intressant att hitta två sådana mängder som behöver täcka en eller flera gemensamma bågar, det vill säga att tillsammans utgör de en konflikt. Här kan Exempel 2 ses som ett fall där de två cyklerna 2 → 3 → 6 → 10 → 9 → 8 → 5 → 2 och 8 → 9 → 10 → 13 → 12 → 8 har gemensamma bågar i (9, 8) och (9, 10) som måste täckas för att det ska vara en konflikt. Kärnan i algoritmen med iterationer är att använda vissa kriterier för när det är möjligt att täcka sådana gemensamma bågar. I det första steget skapas nya bågar i H om cykler i G hittas sådana att flödet på båda vägarna i → k och r → s täcks samt att flödet på de nya cyklerna täcks. Den stora fördelen mot algoritmen i avsnitt 4.2 när iterationer läggs till är att det inte bara är täckningar med yttervaran och vara l som undersöks utan även täckningar med andra varor. Det andra steget är avsett för att sammankoppla två noder i H om flöden på inblandade bågar går att täcka och på så sätt betrakta dem som en nod bestående av en väg. För att återknyta till det senaste exemplet så är målet att sammankoppla noderna (i, j, b, a) och (j, k, b, c) för att kunna använda noden (i, k, b, a) om det visar sig att bågen som tillhör vägen j → k går att täcka med en annan cykel eller en kombination av flera andra cykler..

(47) 22. Kapitel 4. Algoritmer. I algoritmen undersöks vägar bestående av upp till två varor men nu undersöks även vägar med fler varor för att upptäcka om det finns andra cykler som kan täcka de bågar som inte täcks av Cl och yttervaran. Om så är fallet läggs en hjälpnod i H till och den skiljer sig mot en vanlig nod genom att inga bågar kan utgå ifrån den. Det vill säga att den används bara för att nya bågar i skall läggas till. En skillnad på det första steget och det andra steget är att i första steget så betraktas bara vägar bestående av två typer av varor medan i andra steget så tas hänsyn till vägar med fler varor. Om iterationerna upprepas så kommer vägar med godtyckligt många varor undersökas.. 4.7.1. Algoritmbeskrivning. Utgå från den graf H som togs fram i avsnitt 4.2 för en yttervara y ∈ L. I För varje nodpar u = (i, j, bp , fp ) och v = (k, l, br , fr ), sådant att det inte finns någon båge (u, v) lägg till bågen u → v om följande tre punkter är uppfyllda. a) u 6= v, v 6= (j, i, fp , bp ), v 6= (i, j, fp , bp ) och bp = fr 6= y och att b) antingen finns en nod (i, k, y, bp ) eller en väg från (i, k, x, bp ) till Sl där x svarar mot en godtycklig vara samt att c) antingen finns en nod (j, l, bp , y) eller en väg från St till (j, l, bp , x) där x svarar mot en godtycklig vara. II För varje nodpar (i, j, b, fp ) och (j, k, b, fr ), sådant att noden (i, k, b, y) inte finns, skapa en hjälpnod (i, k, b, y) om a) antingen fp = y eller om det finns en väg från St till (i, j, b, fp ) och att b) antingen fr = y eller om det finns en väg från St till (j, k, b, fr ). På motsvarande sätt gäller för nodpar (i, j, bp , f ) och (j, k, br , f ), sådant att noden (i, k, y, f ) inte finns, skapa en hjälpnod (i, k, y, f ) om a) antingen bp = y eller om det finns en väg från (i, j, bp , f ) till Sl och att b) antingen br = y eller om det finns en väg från (j, k, br , f ) till Sl. III Uppdatera nu H för att skapa de bågar som använder sig av de nyskapade hjälpnoderna. IV En konflikt svarar mot att det finns en riktad cykel i H. V Iterera tills dess att inga nya hjälpnoder eller bågar läggs till i H. Villkoret i steg I.a är detsamma som finns i steg III i algoritmen i 4.2. Då algoritmen för iterationerna körs upprepade gånger så kan allt längre vägar kopplas ihop i steg II.. 4.8 4.8.1. Exempel med iterationer Exempel 2 - fortsättning. Betrakta åter Exempel 2 för att se vad iterationerna förändrar..

(48) 4.8. Exempel med iterationer. 1O St. /•. 23. /2o O   / 5• B.  7 _ _ _ _ _ _/ 8 ks.  12 o. 3O. B. /4. /• 6• |> O | O B O B ||   / 9• 10 /o /o /o /o /o /o o/ / 11.  •. / Sl.  13.  Sl. I grunden är det samma konflikt men istället för strukturgrafen är nu en del av H utritad. Noder representeras som fyllda svarta prickar och de bågar som finns i H är de helfyllda linjer som förbinder två noder. Den streckade linje som förbinder noder i H är ämnad för att visa hur iterationerna fungerar genom att en konflikt hittas om noden (8, 10, e, c) får användas till att skapa bågen ((8, 2, c, b) → (10, 3, d, c)) i H. För cyklerna i G som bildas från vägen St → (7, 1, b, a) → (8, 2, c, b) → (10, 3, d, c) → (11, 4, a, d) → Sl → St i H så är det bågarna som tillhör noden (8, 10, e, c) som orsakar otillåtenhet i (2.6) när det gäller kapacitetsvillkoret. Observera att denna väg i H inte tas fram av algoritmen på grund av otillåtenheten. Då det är samma väg med motsatt riktning som orsakar otillåtenhet i (2.6) för cyklerna i G som hör till vägen (8, 10, e, c) → (12, 13, a, e) → Sl så skulle en kombination av de två mängderna av cykler utgöra en konflikt. Det är detta som är kärnan i algoritmen med iterationer, just metoden att kombinera två mängder av cykler som båda är nära att utgöra en konflikt. Då de två mängderna av cykler kombineras så ändras cykeln för yttervaran medan övriga cykler är oförändrade. I första iterationen, med a som yttervara, så undersöks om det finns en båge (8, 2, c, b) → (10, 3, d, c). Noden (2, 3, c, a) finns och eftersom det finns en väg (8, 10, e, c) → (12, 13, a, e) → Sl i H så skapas den efterfrågade bågen. Därmed avslutas också en cykel i H som involverar St och Sl och konflikten är upptäckt. Detta kan även generaliseras till andra typer av trädstrukturer och alla träd hittas inom ett ändligt antal iterationer. Även när det gäller iterationer har valet av yttervara stor betydelse för att hitta en konflikt..

(49) 24. 4.8.2. Kapitel 4. Algoritmer. Exempel 3. 4•. 5•. yy yy y y yy. 1•. 2•. 6•. 7•. 8•. 9•. 10•. 11•. 12•. 13•. 14•. 15•. 3•. 16• I figuren ovan så syns strukturgrafen för en konflikt. Antag att konflikten är irreducibel. Avsikten med exemplet är att visa ett sätt för hur en konflikt kan tas fram när algoritmen med iterationer används. Observera att det kan finnas flera varianter på lösningar. I första iterationen så slås nod 4 och 8 ihop och med “slås ihop” så menas att om nod 8 ingår i en konflikt så kan 4 användas för att täcka vissa av flödena i C8 , samt att övriga flöden som tillhör C4 kan täckas med yttervaran. Benämn den 80 . Alla flöden som ingår i C8 är dock inte täckta än, då existensen av bågen till nod 9 och nod 12 ger att om C8 ingår i en konflikt så måste även C9 och C12 göra det. Bland övriga noder som kan slås ihop finns (2, 7) := 20 , (5, 6) := 50 , (14, 15) := 140 och (10, 11) := 100 . Fortfarande hittas inte någon konflikt då strukturgrafen generellt sett måste motsvara en väg för att algoritmen ska hitta en konflikt. I den andra iteration så slås bland annat nod 80 ihop med nod 9 eftersom det finns en båge mellan 80 och 12 och även mellan 12 och start- eller slutnoden. Detta kan ses som att C80 och C9 har gemensamma bågar som behöver täckas samt att C12 tillsammans med yttervaran täcker återstående bågar i C80 . Benämn den nya cykeln C90 . Med den sammanslagningen så består strukturgrafen av en väg och algoritmen hittar en konflikt. Motsvarande cykel i H går från startnoden genom cyklerna C16 , C140 , C13 , C90 , C100 , C50 , C1 , C20 till C3 och därefter till slutnoden. Metoden som används för att hitta konflikter vars strukturgraf utgörs av ett träd kan ses som att löv i trädet successivt slås ihop till nya noder tills dess det bara återstår en väg, vilket algoritmen beskriven i 4.2 hittar.. 4.9. Verifiering av algoritmen med iterationer. Precis som i avsnitt 4.5 så används villkoret Al ∩ Ay = ∅ för l, y ∈ L här för att en hittad lösning med säkerhet ska svara mot en konflikt. Antag att det finns en cykel i H med y som yttervara. Flödet består av cykler vilket visades i avsnitt 4.5 och det återstår att visa att nettoflödet inte är positivt på någon båge vilket motsvarar tillåtenhet i (2.6). Tag nu två noder u = (a, c, bp , fp ) och v = (d, e, br , fr ) sådana att det finns en båge i H mellan dem och att det därmed finns en cykel a → c → e → d → a bestående av vara bp = fr . Beteckna denna vara l. För vägen c → e = F ∪ B där ˜ l ) och F ⊆ ∪i∈L (Ai ∪ D ˜ i ), i 6= l så måste bågarna i F kunna täckas. B ⊆ (Al ∪ D.

References

Related documents

När det gäller hur lärarna arbetar med litteratur i de olika kurserna så uttrycker alla lärare att de i A-kursen, oavsett om det är i svenska eller i svenska som andraspråk, vill

Beredskapsorganisation Yttrande över planer Registreringar Utredningar. Projektledning Framtagning o revidering av planer

lat sig fram från västra Asien och ända ner till södra Chile, på samma sätt som de gjorde för minst 45 000 år sedan från Asien till Australien.. Det är inte lätt att

Utgångspunkten är att studera varumärken som komplexa objekt (Lury, 2004), eller kulturella och sociala resurser som existerar i en dialektik mellan marknadsföringspraktik

Dessa damer byts ut mot nakna badande män med de feminiserande poser intakta för att synliggöra förhållningsätten kring maskulinitet relaterad till femininitet (bild

Det krav som ställs upp i remissen är att personen frivilligt ska kontakta Polismyndigheten och lämna de uppgifter som behövs för att myndigheten ska kunna omhänderta den

Polisen lämnade ett yttrade att de ser en fördel med att likrikta bestämmelserna om pyrotekniska varor i de lokala ordningsföreskrifterna för de fyra kommuner som ingår

Till böter döms den som med uppsåt eller av oaktsamhet bryter mot något av kraven i 7–15 §§ eller föreskrifter som har meddelats med stöd av 36 § och ansvar inte kan dömas