Kapitel 9: Netværksmodeller

Relaterede dokumenter
Kapitel 9: Netværksmodeller

Chapter 7: Transport-, assignment- & transshipmentproblemer

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

Chapter 5: Simplex metoden til løsning af LP. -> max problem alle uligheder af typen ì alle højresider ikke-negative alle variable ikke-negative

Simplex metoden til løsning af LP

Danmarks Tekniske Universitet

Projekt Planlægning: PERT/CPM

Chapter 6: Følsomhedsanalyse og dualitet i LP

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

P2-gruppedannelsen for Mat og MatØk

Grafer og graf-gennemløb

Minimum udspændende Træer (MST)

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Sammenhængskomponenter i grafer

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er

Prioritetskøer og hobe. Philip Bille

Minimum udspændende Træer (MST)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Danmarks Tekniske Universitet

Ugeseddel 12( )

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Grafteori. 1 Terminologi. Indhold

Lineære differentialligningers karakter og lineære 1. ordens differentialligninger

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Grafteori. 1 Terminologi. Grafteori, Kirsten Rosenkilde, august fra V. (Engelsk: subgraph, spanning subgraph, the subgraph

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Danmarks Tekniske Universitet

P2-projektforslag Kombinatorik: grafteori og optimering.

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Danmarks Tekniske Universitet

Videregående Algoritmik. Version med vejledende løsninger indsat!

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

Danmarks Tekniske Universitet

Symmetrisk Traveling Salesman Problemet

Reeksamen i Diskret Matematik

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

DM507 Algoritmer og datastrukturer

Transkript:

Kapitel 9: Netværksmodeller Terminologi: Et netværk eller en graf bestar af et sæt punkter samt et sæt linier, der forbinder par af punkter; netværket betegnes som komplet, hvis ethvert par af punkter er forbundet. Punkterne betegnes noder; lad N betegne sættet af noder. -> Enhver node kan i et stort antal applikationer betegnes som enten demand-, transshipment-, eller udbudsnode. Linierne, der forbinder par af noder, betegnes kanter (arcs); lad A betegne sættet af kanter. -> Enhver kant er i et stort antal applikationer karakteriseret ved en længde og/eller en øvre/nedre grænse for flowet langs pagældende kant. Grafen kan da beskrives ved sættet af noder og kanter og dertil hørende parametre C:. -> G(N, A, C). Orienterede vs. ikke-orienterede netværker: Kanter betegnes orienterede, hvis de alene kan passeres i en og kun en retning; netværket betegnes orienteret, hvis alle kanter er orienterede. Kanter betegnes ikke-orienterede, hvis de kan passeres i begge retninger; netværket betegnes ikke-orienteret, hvis dette gælder for samtlige kanter. Stier og cykler: En sti mellem 2 noder er en sekvens af orienterede og/eller ikke orienterede distinkte kanter, der forbinder de 2 noder. En orienteret sti fra node i til node j er en sekvens af forbindende kanter, der tillader et flow fra node i til node j; en orienteret sti ma saledes ikke indeholde kanter orienteret fra j mod i.

En ikke-orienteret sti fra node i til node j er en sekvens af forbindende kanter, der ikke nødvendigvis tillader et flow fra node i til node j; en ikke-orienteret sti kan saledes indeholde kanter orienteret fra j mod i. En cycle er en sti, som begynder og ender i samme node. 2 noder betegnes connected, hvis der eksisterer en sti mellem dem. Et netværk, hvorom gælder at ethvert par af noder er connected, betegnes et connected netværk. Træer og udspændende træer: Ethvert sæt af kanter noder i netværket, hvorom gælder i) der eksisterer en sti mellem ethvert par af modsvarende noder, og ii) ingen sadan sti udgør en cycle betegnes et træ. Et træ kan dyrkes med udgangspunkt i en vilkarlig kant; de hertil modsvarende noder betegnes forbundne, og de øvrige ikke-forbundne. Hertil adderes successivt yderligere kanter, en ad gangen, idet enhver yderligere kant skal forbinde en p.t. forbundet node med en p.t. ikkeforbundet node. Denne konstruktion sikrer, at der eksisterer netop 'en sti imellem ethvert par af forbundne noder, og at ingen sadan sti udgør en cycle. Træet gøres successivt større ved additionen af nye kanter. Lad betegne antallet af noder i netværket. Ethvert par af noder er forbundet med en sti, nar træet bestar af 1 kanter; et sadant træ betegnes et udspændende træ. Netværksproblemfelter: 1) Korteste Vej Problemet 2) Bestemmelse af et Minimalt Udspændende Træ 3) Maximum Flow Problemet Korteste Vej Problemet:

Udgangspunktet er her et netværk med N noder ( N angiver 5+<.38+63>/>/8 af indexsættet N, d.v.s. antallet af elementer i dette sæt, her altså antallet af noder i netværket), hvoraf nogle par er indbyrdes forbundet af en kant med en given længde. Problemet består nu i at finde den korteste vej mellem en på forhånd angivet source node og enhver anden node i netværket. Problemet løses ved en såkaldt labeling algoritme. I iteration 1 identificeres den node, der ligger tættest på source noden, og i en vilkårlig iteration k den node som er 'k'te tættest' på source noden. Algoritmen kan enten implementeres med udgangspunkt i en tegning af netværket som i lærebogen eller i tabelform. I det følgende bruges korteste vej algorimen til løsning af problemet defineret ved Figur 9.1. i lærebogen: kandidat node tentativ label permanent label senest mærket node forgænger iteration 0 1 [0, S] 1 iteration 1 2 [15, 1] 3 [10, 1] 3->[10, 1] 3 1 iteration 2 Ú [15, 1] 2 Û [13, 3] r 5 Ü [1, 3] 2->[13, 3] 2 3 Ú Ú[19, 2] iteration 3 Û 5 Û [1, 3] 5->[1, 3] 5 3 Ü7 Ü[30, 2] iteration Ú Ú Ý Ò19, 2] [18, 5] r Û 6 Û Ü 7 Ý [16, 5] Ü [30, 2] 6->[16, 5] 6 5 iteration 5 Ú [18, 5] Û Ü [30, 2] 7 [22, 6] r ->[18, 5] 5 iteration 6 7 [22, 6] 7->[22, 6] 7 6 Algoritme: 1) Giv node 1 permanent label [0, S]. Lad kandidatlisten bestå af alle ikke-permanent labeled noder, der er forbundet med en kant til node 1.Gå til 2). 2) Gentag til kandidatlisten er tom: Lad kandidatlisten bestå af alle ikke-permanent labeled noder, der er forbundet med en kant til en permanent labeled node. Lad K(t) betegne et indexset for mængden af noder i kandidatlisten i iteration t. For enhver node i kandidatlisten 5 beregnes for enhver permanent labeled node forbundet med en kant til pågældende kandidat 3 5

den totale vejlængde ved bevægelse fra node 1 (source noden) langs den korteste vej til 35 og videre langs kanten fra 35 til 5 som SP"3 c 3 5, hvor SP "3 er længden 5 5 5 af den korteste vej fra 1 til 35 og c 3 5 er længden af kanten fra 35 til 5. Node 5 5 mærkes tentativt med den korteste blandt disse vejlængder og indeks for modsvarende permanent labeled node. Identificer den node i kandidatlisten med minimal SP"3 c 3 5. Gør denne nodes 5 5 p.t.tentative labe permanent. Betragt først iteration 1. K(1) består af noderne {2, 3}, fordi de som de eneste er forbundet til node 1. Den korteste vej fra node 1 over sættet af p.t. permanent labeled noder (d.v.s. node 1 selv) til node 2 består i at gå fra 1 til 2; længden af denne vej er 0 15 med node 1 som sidste node før ankomst til node 2; node 2 lables derfor tentativt [15, 1]. Tilsvarende for node 3, der lables [10, 1]. 10 er mindre end 15; node 3 er derfor tættest på node 1, og den label gøres permanent. Betragt nu iteration 2. K(2) består af noderne {2, 5}, fordi de som de eneste er forbundet til de permanent labeled noder 1 og 3. Den korteste vej fra node 1 over sættet af p.t. permanent labeled noder (d.v.s. node 1 og 3) til node 2 kan enten bestå i at gå direkte fra 1 til 2 eller fra 1 over 3 til 2. Den første mulighed er fanget i det allerede givne tentative label af node 2 med [15, 1] og vejlængden ved den anden mulighed er 10 3 med node 3 som sidste node før ankomst til node 2; node 2 lables derfor også tentativt [13, 3]. 13 er kortere end 15, så det tentative label [15, 1] slettes. Node 5 lables [1, 3], fordi den korteste vej fra 1 til 3 har længden 10 og længden af kanten fra 3 til 5 er. Node 2 er således tættere på node 1 end node 5, fordi den korteste vej til node 2 har længden 1. Node 2's tentative label [1, 3] gøres derfor permanent. Og vi har i iteration 2 fundet den næst tætteste node til 1. Betragt iteration. K() består af noderne {, 6, 7}. Node har 2 tentative labels. [19, 2] slettes, fordi vejen til node over node 5 er kortere. Node 6 er den. tætteste node, fordi 16 er mindre end 18 og 30. Node 6's label [16, 5] gøres derfor permanent. Hvad er den korteste vej fra node 1 til f.eks. node 7? Node 7 har en label på [22, 6]. Det betyder, at den korteste vej fra node 1 til node 7 har længden 22, og at vi kommer til node 7 fra node 6. Men node 6 er labeled [16, 5]. Vi kommer altså til node 6 fra node 5 og har tilbagelagt vejlængden 16 ved ankomst til node 6. Label for node 5 fortæller at vi kom til 5 fra 3, og label fra node 3 at vi kom fra 1 til 3. Vi skal altså traversere kanterne 1-3, 3-5, 5-6 og 6-7 for at gå den korteste vej fra 1 til 7. LP-formulering af korteste vej problem: Lad vejlængder angive omkostninger svarende til at sende en vareenhed langs en given kant. Da er bestemmelsen af den korteste vej fra en source node til en på forhånd kendt terminal eller sink node ækvivalent til at finde den billigst mulige måde at sende en vareenhed fra fra source til sink. Dette giver anledning til følgende LP-formulering:

min! Ð3ßÑ E c x 3 3 s.t.! x 1 Ð=ßÑ E =! x! x 0 for alle 3 N, 3Á=ß3Á> 3 3 Ð3ßÑ E Ðß3Ñ E! Ðß>Ñ E 1 x x 1 > 3!ß Ð3ßÑ E Bemærk: Altid heltallige løsninger p.g.a. netværksstrukturen! Minimal Spanning Tree Algoritme: 1) Lad NC betegne sættet af p.t. ikke forbundne noder, d.v.s. NC N, og lad C betegne sættet af p.t. forbundne noder, d.v.s. C g. Vælg en vilkårlig node og forbind denne til dens tætteste nabo. Fjern disse 2 noder fra NC og indfør dem i C. Gå til 2). 2) Gentag til NC er tom: Identificer den p.t. ikke forbundne node i NC som er tættest på en p.t. forbunden node i C; ties brydes tilfældigt. Lad 3 8C være den hermed identificerede p.t. ikkeforbundne node i NC og lad 3 - være den ligeledes identificerede forbundne node i C, der er tættest på 3 ÞForbind 3 og 3 og fjern node 3 fra NC og indfør den i C. 8C - 8C 8C 3) Stop; det hermed etablerede træ er et minimalt udspændende træ. Brug selv algoritmen på problemet defineret ved Figur 9.13. Bemærk: I første iteration indføres 2 af N noder i C og i hver efterfølgende iteration 1 node. Algoritmen terminerer derfor efter N 1 iterationer, og et udspændende træ består af N 1 kanter. Maximum Flow problemet: Udgangspunkt:

Orienteret/ikke-orienteret sammenhængende netværk. 1 node er defineret som udbudsnode. 1 node er defineret som efterspørgselsnode. Alle øvrige noder er transshipment/intermediate noder. Hver kant har en tilknyttet kapacitet, der angiver det maximale flow i en bestemt retning. Problemet er nu at bestemme det maximale flow gennem fra udbudsnode (eller source) til efterspørgselsnode (eller sink) med de givne kapaciteter. Algoritmen er baseret på bestemmelse af såkaldte J69AE?17/8>381T+>2= eller FAPs. En FAP er en sti fra source til sink med ledig kapacitet langs alle fremadrettede kanter. Betragt den orienterede kant fra 3 til : 0 3 ------------------------> 6 Tallet 6 angiver, at kanten ( 3ß ) har en fremadrettet kapacitet på 6 enheder, d.v.s. at det er muligt at sende 6 enheder fra node 3 til node. Tallet 0 angiver tilsvarende, at det ikke er muligt at sende noget fra til 3. Lad os nu forestille os, at vi sender enheder fra 3 til. Residualkapaciteterne er da givet ved 0 3 ------------------------> 6 hvilket selvfølgelig er det samme som 3 ------------------------> 2 Det er altså muligt at sende yderligere 2 enheder fra 3 til. Men det er også nu muligt at sende enheder fra til 3. Det sker rent praktisk ved at lade være med at sende dem fra 3 til i første omgang. Lad os se på følgende sti fra source ( = ) til sink ( > ): 0 0 0 = ------------> ------------> <------------ ------------> > 7 3 0 3 Det er ikke en FAP, fordi den fremadrettede kapacitet på den tredie kant er 0.

Lad os nu forestille os, at flowet på de viste kanter er 2 (fra = til den første node), 0 (mellem første og anden node), (fra tredie til anden node), og 1 (fra tredie node til > ). Da er residualkapaciteterne givet ved 2 0 0 1 = ------------> ------------> <------------ ------------> > 5 3 2 Bemærk: Flow ind skal være lig med flow ud i enhver intermediate node. Første node må derfor sende 2 enheder ud til andre noder i netværket, anden node må sende enheder ud, og tredie node må modtage 5 enheder fra andre noder i netværket. Nu er stien fra = til > en FAP, fordi der er en ledig fremadrettet kapacitet i enhver node (nemlig hhv. 5, 3, og 2). Det er derfor muligt at øge flowet fra = til > langs denne sti. Den maksimale tilvækst er givet ved den minimale ledige fremsdrettede kapacitet langs stien, d.v.s. min(5, 3,, 2) 2. Øges flowet langs stien med 2 enheder, sendes 2 2 fra = til den første node, 0 2 mellem første og anden node, 2 fra tredie til anden node, og 3 fra tredie node til >. Da er residualkapaciteterne givet ved 2 2 3 = ------------> ------------> <------------ ------------> > 3 1 2 0 Max-Flow Algoritmen: 1) Initialiser netværket, d.v.s. angiv indexsæt for kanter T, angiv kapaciteter - 3 for alle kanter (, 3 ) i T og sæt aktuelt flow lig 0. Gå til 2). 2) Find en FAP. Stop hvis ingen FAPs; aktuelt flow er maximalt. Ellers lad ( =, 3, 3,..., 3, > ) definere FAP og gå til 3). 1 # 5 3) Øg flow så meget som muligt langs aktuel FAP, der består af kanterne T JET Ö= (, 3" ), ( 3" ß3# ),..., ( 35ß> ) Den maximale flowtilvækst er givet ved den minimale ledige fremadrettede kapacitet på FAP, d.v.s. min - 3 ( 3ß) T JET Opdater kapaciteter:

Ú -3 for alle kanter ej på FAP -3 Û -3 for alle fremadrettede kanter på FAP Ü - for alle tilbagerettede kanter på FAP 3 Opdater flow: aktuelt flowaktuelt flow Gå til 2). Det er i små netværker let at finde FAPs ved visuel inspektion. I større netværker kan følgende systematiske procedure bruges: 1) Lad indexsættet W bestå af elementet {1}, og lad indexsættet W 8/B> være tomt. 2) Gentag successivt for nye mærkede noder, d.v.s. for noder i indexsættet W, indtil sinknoden mærkes eller ingen ny node kan mærkes: for 3 W begin Mærk enhver p.t. ikke mærket node, der kan nås fra3 langs en enkelt fremadrettet kant med ledig kapacitet, ' 3'. Introducer i W 8/B> end Sæt Wg WW 8/B> W 8/B> g 3) Hvis sinknoden mærkes, er der fundet en FAP fra source til sink. I modsat fald findes ingen FAP, og det aktuelle flow er maximalt. Sættet af kanter der forbinder en mærket node med en ikke-mærket node definerer i den situation et såkaldt 73837+6>-?>=/>. LP-formulering af Max-Flow Problemet: max s.t. @! Ð=ßÑ E x = @! x! x 0 for alle 3 N, 3Á=ß3Á> 3 3 Ð3ßÑ E Ðß3Ñ E! x> @ Ðß>Ñ E 0 Ÿx 3 3 Ÿ? ß Ð3ßÑ E

I den formulering måler variablen @ den størst mulige mængde flow, der kan sende fra source til sink.? ßÐ3ßÑ E, er upper bound på flowet langs kanten ( 3ß ) i retningen fra 3 til. 3 LP-formulering af det mere generelle balancerede Min Cost Flow Problem: min! (3ßÑ E c B 3 3 s.t.! x! x b for alle 3 N 3 3 3 Ð3ßÑ E Ðß3Ñ E 0 Ÿx Ÿ? ß Ð3ßÑ E 3 3 Her måler parametrene b 3 nettoudbud i node 3: b3 0 -> 3supply node b3 0 -> 3demand node b3 0 -> 3transshipment/intermediate node Problemet betegnes balanceret, idet det forudsættes!b3 0 3 Er dette krav ikke opfyldt, findes der ikke brugbare løsninger med bibetingelserne formuleret som ligheder!