04.09.2013 Views

Kapitel 9: Netværksmodeller - lah@sam.sdu.dk

Kapitel 9: Netværksmodeller - lah@sam.sdu.dk

Kapitel 9: Netværksmodeller - lah@sam.sdu.dk

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Kapitel</strong> 9: <strong>Netværksmodeller</strong><br />

Terminologi:<br />

Et netværk eller en graf bestar ° af et sæt punkter samt et sæt linier, der forbinder par af punkter;<br />

netværket betegnes som komplet, hvis ethvert par af punkter er forbundet.<br />

Punkterne betegnes noder;<br />

lad N betegne sættet af noder.<br />

-> Enhver node kan i et stort antal applikationer betegnes som enten<br />

demand-, transshipment-, eller udbudsnode.<br />

Linierne, der forbinder par af noder, betegnes kanter (arcs); lad A betegne sættet af kanter.<br />

-> Enhver kant er i et stort antal applikationer karakteriseret ved en<br />

længde og/eller en øvre/nedre grænse for flowet langs pagældende °<br />

kant.<br />

Grafen kan da beskrives ved sættet af noder og kanter og dertil hørende parametre C:.<br />

-> G(N, A, C).<br />

Orienterede vs. ikke-orienterede netværker:<br />

Kanter betegnes orienterede, hvis de alene kan passeres i en og kun en retning; netværket<br />

betegnes orienteret, hvis alle kanter er orienterede.<br />

Kanter betegnes ikke-orienterede, hvis de kan passeres i begge retninger; netværket betegnes<br />

ikke-orienteret, hvis dette gælder for samtlige kanter.<br />

Stier og cykler:<br />

En sti mellem 2 noder er en sekvens af orienterede og/eller ikke orienterede distinkte kanter, der<br />

forbinder de 2 noder.<br />

En orienteret sti fra node i til node j er en sekvens af forbindende kanter, der tillader et flow fra<br />

node i til node j; en orienteret sti ma ° saledes °<br />

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<br />

nødvendigvis tillader et flow fra node i til node j; en ikke-orienteret sti kan saledes ° indeholde<br />

kanter orienteret fra j mod i.<br />

En cycle er en sti, som begynder og ender i samme node.<br />

2 noder betegnes connected,<br />

hvis der eksisterer en sti mellem dem.<br />

Et netværk, hvorom gælder at ethvert par af noder er connected, betegnes et connected<br />

netværk.<br />

Træer og udspændende træer:<br />

Ethvert sæt af kanter noder i netværket, hvorom gælder<br />

i) der eksisterer en sti mellem ethvert par af modsvarende noder, og<br />

ii) ingen sadan ° sti udgør en cycle<br />

betegnes et træ.<br />

Et træ kan dyrkes med udgangspunkt i en vilkarlig ° kant; de hertil modsvarende noder betegnes<br />

forbundne, og de øvrige ikke-forbundne. Hertil adderes successivt yderligere kanter, en ad<br />

gangen, idet enhver yderligere kant skal forbinde en p.t. forbundet node med en p.t. ikkeforbundet<br />

node. Denne konstruktion sikrer, at der eksisterer netop 'en sti imellem ethvert par af<br />

forbundne noder, og at ingen sadan ° sti udgør en cycle.<br />

Træet gøres successivt større ved additionen af nye kanter.<br />

Lad betegne antallet af noder i netværket. Ethvert par af noder er forbundet med en sti, nar °<br />

træet bestar ° af 1 kanter; et sadant ° træ betegnes et udspændende træ.<br />

Netværksproblemfelter:<br />

1) Korteste Vej Problemet<br />

2) Bestemmelse af et Minimalt Udspændende Træ<br />

3) Maximum Flow Problemet<br />

Korteste Vej Problemet:


Udgangspunktet er her et netværk med ¸N ¸noder ( ¸N ¸angiver 5+/>/8 af indexsættet<br />

N, d.v.s. antallet af elementer i dette sæt, her altså antallet af noder i netværket), hvoraf nogle par<br />

er indbyrdes forbundet af en kant med en given længde. Problemet består nu i at finde den<br />

korteste vej mellem en på forhånd angivet source node og enhver anden node i netværket.<br />

Problemet løses ved en såkaldt labeling algoritme. I iteration 1 identificeres den node, der ligger<br />

tættest på source noden, og i en vilkårlig iteration k den node som er 'k'te tættest' på source<br />

noden. Algoritmen kan enten implementeres med udgangspunkt i en tegning af netværket som i<br />

lærebogen eller i tabelform.<br />

I det følgende bruges korteste vej algorimen til løsning af problemet defineret ved Figur 9.1. i<br />

lærebogen:<br />

kandidat node tentativ label permanent label senest mærket node forgænger<br />

iteration 0 1 [0, S] 1<br />

iteration 1<br />

2<br />

œ<br />

3<br />

[15, 1]<br />

œ<br />

[10, 1]<br />

3->[10, 1] 3<br />

1<br />

iteration 2<br />

2<br />

œ<br />

5<br />

Ú [15, 1]<br />

Û<br />

œ<br />

[13, 3] r<br />

Ü [14, 3]<br />

2->[13, 3] 2 3<br />

Ú4 Ú[19,<br />

2]<br />

iteration 3 Û 5 Û [14, 3] 5->[14, 3] 5 3<br />

Ü7 Ü[30,<br />

2]<br />

iteration 4<br />

Ú 4<br />

Û 6<br />

Ü 7<br />

Ú<br />

Ý œ<br />

Û<br />

Ý<br />

Ü<br />

œ<br />

Ú<br />

Û<br />

Ü œ<br />

Ò19,<br />

2]<br />

[18, 5] r<br />

[16, 5]<br />

[30, 2]<br />

6->[16, 5] 6 5<br />

iteration 5<br />

4<br />

7<br />

[18, 5]<br />

[30, 2]<br />

[22, 6] r<br />

4->[18, 5] 4 5<br />

iteration 6 7 [22, 6] 7->[22, 6] 7 6<br />

Algoritme:<br />

1) Giv node 1 permanent label [0, S]. Lad kandidatlisten bestå af alle ikke-permanent<br />

labeled noder, der er forbundet med en kant til node 1.Gå til 2).<br />

2) Gentag til kandidatlisten er tom:<br />

Lad kandidatlisten bestå af alle ikke-permanent labeled noder, der er forbundet med en<br />

kant til en permanent labeled node. Lad K(t) betegne et indexset for mængden af<br />

noder i kandidatlisten i iteration t. For enhver node i kandidatlisten 5 beregnes for<br />

enhver permanent labeled node forbundet med en kant til pågældende kandidat 35


den totale vejlængde ved bevægelse fra node 1 (source noden) langs den korteste<br />

vej til 35 og videre langs kanten fra 35 til 5 som SP"3 c 3 5 , hvor SP "3 er længden<br />

5 5 5<br />

af den korteste vej fra 1 til 35 og c 3 5 er længden af kanten fra 35 til 5. Node 5<br />

5<br />

mærkes tentativt med den korteste blandt disse vejlængder og indeks for<br />

modsvarende permanent labeled node.<br />

Identificer den node i kandidatlisten med minimal SP c . Gør denne nodes<br />

"3 3 5<br />

5 5<br />

p.t.tentative labe permanent.<br />

Betragt først iteration 1. K(1) består af noderne {2, 3}, fordi de som de eneste er forbundet til<br />

node 1. Den korteste vej fra node 1 over sættet af p.t. permanent labeled noder (d.v.s. node 1<br />

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<br />

node før ankomst til node 2; node 2 lables derfor tentativt [15, 1]. Tilsvarende for node 3, der<br />

lables [10, 1]. 10 er mindre end 15; node 3 er derfor tættest på node 1, og den label gøres<br />

permanent.<br />

Betragt nu iteration 2. K(2) består af noderne {2, 5}, fordi de som de eneste er forbundet til de<br />

permanent labeled noder 1 og 3. Den korteste vej fra node 1 over sættet af p.t. permanent<br />

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<br />

over 3 til 2. Den første mulighed er fanget i det allerede givne tentative label af node 2 med [15,<br />

1] og vejlængden ved den anden mulighed er 10 3 med node 3 som sidste node før ankomst til<br />

node 2; node 2 lables derfor også tentativt [13, 3]. 13 er kortere end 15, så det tentative label<br />

[15, 1] slettes. Node 5 lables [14, 3], fordi den korteste vej fra 1 til 3 har længden 10 og<br />

længden af kanten fra 3 til 5 er 4. Node 2 er således tættere på node 1 end node 5, fordi den<br />

korteste vej til node 2 har længden 14. Node 2's tentative label [14, 3] gøres derfor permanent.<br />

Og vi har i iteration 2 fundet den næst tætteste node til 1.<br />

Betragt iteration 4. K(4) består af noderne {4, 6, 7}. Node 4 har 2 tentative labels. [19, 2]<br />

slettes, fordi vejen til node 4 over node 5 er kortere. Node 6 er den 4. tætteste node, fordi 16 er<br />

mindre end 18 og 30. Node 6's label [16, 5] gøres derfor permanent.<br />

Hvad er den korteste vej fra node 1 til f.eks. node 7? Node 7 har en label på [22, 6]. Det<br />

betyder, at den korteste vej fra node 1 til node 7 har længden 22, og at vi kommer til node 7 fra<br />

node 6. Men node 6 er labeled [16, 5]. Vi kommer altså til node 6 fra node 5 og har tilbagelagt<br />

vejlængden 16 ved ankomst til node 6. Label for node 5 fortæller at vi kom til 5 fra 3, og label fra<br />

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<br />

korteste vej fra 1 til 7.<br />

LP-formulering af korteste vej problem:<br />

Lad vejlængder angive omkostninger svarende til at sende en vareenhed langs en given kant. Da<br />

er bestemmelsen af den korteste vej fra en source node til en på forhånd kendt terminal eller sink<br />

node ækvivalent til at finde den billigst mulige måde at sende en vareenhed fra fra source til sink.<br />

Dette giver anledning til følgende LP-formulering:


min ! c x<br />

Ð3ß4Ñ−E<br />

34 34<br />

s.t. ! x 1<br />

4<br />

Ð=ß4Ñ−E<br />

=4 œ<br />

! x34 ! x43 œ0 for alle 3− N, 3Á=ß3Á><br />

4 4<br />

Ð3ß4Ñ−E Ð4ß3Ñ−E<br />

! x4> œ 1<br />

4<br />

Ð4ß>Ñ−E<br />

1 x 34<br />

!ß Ð3ß4Ñ−E<br />

Bemærk: Altid heltallige løsninger p.g.a. netværksstrukturen!<br />

Minimal Spanning Tree Algoritme:<br />

1) Lad NC betegne sættet af p.t. ikke forbundne noder, d.v.s. NC œ N, og lad C<br />

betegne sættet af p.t. forbundne noder, d.v.s. C œg.<br />

Vælg en vilkårlig node og<br />

forbind denne til dens tætteste nabo. Fjern disse 2 noder fra NC og indfør dem i C.<br />

Gå til 2).<br />

2) Gentag til NC er tom:<br />

Identificer den p.t. ikke forbundne node i NC som er tættest på en p.t. forbunden<br />

node i C; ties brydes tilfældigt. Lad 38C være den hermed identificerede p.t. ikkeforbundne<br />

node i NC og lad 3- være den ligeledes identificerede forbundne node i<br />

C, der er tættest på 3 ÞForbind 3 og 3 og fjern node 3 fra NC og indfør den i C.<br />

8C - 8C 8C<br />

3) Stop; det hermed etablerede træ er et minimalt udspændende træ.<br />

Brug selv algoritmen på problemet defineret ved Figur 9.13.<br />

Bemærk: I første iteration indføres 2 af ¸N ¸ noder i C og i hver efterfølgende iteration 1 node.<br />

Algoritmen terminerer derfor efter ¸N¸ kanter.<br />

1 iterationer, og et udspændende træ består af ¸N¸ 1<br />

Maximum Flow problemet:<br />

Udgangspunkt:


Orienteret/ikke-orienteret sammenhængende netværk.<br />

1 node er defineret som udbudsnode.<br />

1 node er defineret som efterspørgselsnode.<br />

Alle øvrige noder er transshipment/intermediate noder.<br />

Hver kant har en tilknyttet kapacitet, der angiver det maximale flow i en bestemt retning.<br />

Problemet er nu at bestemme det maximale flow gennem fra udbudsnode (eller source) til<br />

efterspørgselsnode (eller sink) med de givne kapaciteter.<br />

Algoritmen er baseret på bestemmelse af såkaldte J69AE?17/8>381T+>2= eller FAPs. En<br />

FAP er en sti fra source til sink med ledig kapacitet langs alle fremadrettede kanter.<br />

Betragt den orienterede kant fra 3 til 4:<br />

0<br />

3‰ ------------------------> ‰4<br />

6<br />

Tallet 6 angiver, at kanten ( 3ß 4)<br />

har en fremadrettet kapacitet på 6 enheder, d.v.s. at det er muligt<br />

at sende 6 enheder fra node 3 til node 4.<br />

Tallet 0 angiver tilsvarende, at det ikke er muligt<br />

at sende noget fra 4 til 3.<br />

Lad os nu forestille os, at vi sender 4 enheder fra 3 til 4.<br />

Residualkapaciteterne er da givet ved<br />

0 4<br />

3‰ ------------------------> ‰4<br />

6 4<br />

hvilket selvfølgelig er det samme som<br />

4<br />

3‰ ------------------------> ‰4<br />

2<br />

Det er altså muligt at sende yderligere 2 enheder fra 3 til 4.<br />

Men det er også nu muligt at sende 4<br />

enheder fra 4 til 3. Det sker rent praktisk ved at lade være med at sende dem fra 3 til 4 i første omgang.<br />

Lad os se på følgende sti fra source ( = ) til sink ( > ):<br />

0 0 4 0<br />

=‰ ------------> ‰ ------------> ‰ ‰><br />

7 3 0 3<br />

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<br />

anden node), 4 (fra tredie til anden node), og 1 (fra tredie node til > ). Da er residualkapaciteterne givet<br />

ved<br />

2 0 0 1<br />

=‰ ------------> ‰ ------------> ‰ ‰><br />

5 3 4 2<br />

Bemærk: Flow ind skal være lig med flow ud i enhver intermediate node. Første node må<br />

derfor sende 2 enheder ud til andre noder i netværket, anden node må sende 4 enheder ud, og<br />

tredie node må modtage 5 enheder fra andre noder i netværket.<br />

Nu er stien fra = til > en FAP, fordi der er en ledig fremadrettet kapacitet i enhver node (nemlig hhv.<br />

5, 3, 4 og 2). Det er derfor muligt at øge flowet fra = til > langs denne sti.<br />

Den maksimale tilvækst er givet ved den minimale ledige fremsdrettede kapacitet langs stien, d.v.s.<br />

min(5, 3, 4, 2) œ 2. Øges flowet langs stien med 2 enheder, sendes 2 2 fra = til den første node,<br />

0 2 mellem første og anden node, 2 fra tredie til anden node, og 3 fra tredie node til > . Da er<br />

residualkapaciteterne givet ved<br />

4 2 2 3<br />

=‰ ------------> ‰ ------------> ‰ ‰><br />

3 1 2 0<br />

Max-Flow Algoritmen:<br />

1) Initialiser netværket, d.v.s. angiv indexsæt for kanter T, angiv kapaciteter -34 for alle<br />

kanter (, 3 4) i T og sæt aktuelt flow lig 0. Gå til 2).<br />

2) Find en FAP.<br />

Stop hvis ingen FAPs; aktuelt flow er maximalt.<br />

Ellers lad ( = , 3 , 3 , ...., 3 , > ) definere FAP og gå til 3).<br />

1 # 5<br />

3) Øg flow så meget som muligt langs aktuel FAP, der består af kanterne<br />

T (, ), ( ), ...., ( )<br />

JET œÖ= 3 3 ß3 3 ß>×<br />

" " # 5<br />

Den maximale flowtilvækst ˜ er givet ved den minimale ledige fremadrettede<br />

kapacitet på FAP, d.v.s.<br />

˜ œ min -34<br />

( 3ß4) − TJET Opdater kapaciteter:


Ú -34<br />

for alle kanter ej på FAP<br />

-34 œÛ-34<br />

˜for<br />

alle fremadrettede kanter på FAP<br />

Ü - ˜for<br />

alle tilbagerettede kanter på FAP<br />

34<br />

Opdater flow: aktuelt flowœaktuelt flow ˜<br />

Gå til 2).<br />

Det er i små netværker let at finde FAPs ved visuel inspektion. I større netværker kan følgende<br />

systematiske procedure bruges:<br />

1) Lad indexsættet W bestå af elementet {1}, og lad indexsættet W8/B><br />

være tomt.<br />

2) Gentag successivt for nye mærkede noder, d.v.s. for noder i indexsættet W,<br />

indtil<br />

sinknoden mærkes eller ingen ny node kan mærkes:<br />

for 3−W begin<br />

Mærk enhver p.t. ikke mærket node 4, der kan nås fra3langs en enkelt<br />

fremadrettet kant med ledig kapacitet, '3'. Introducer 4i W8/B><br />

end<br />

Sæt Wœg<br />

WœW8/B><br />

W œg<br />

8/B><br />

3) Hvis sinknoden mærkes, er der fundet en FAP fra source til sink.<br />

I modsat fald findes ingen FAP, og det aktuelle flow er maximalt. Sættet af kanter der<br />

forbinder en mærket node med en ikke-mærket node definerer i den situation et såkaldt<br />

73837+6>-?>=/> .<br />

LP-formulering af Max-Flow Problemet:<br />

max @<br />

s.t. ! x<br />

4<br />

Ð=ß4Ñ−E<br />

=4 œ@<br />

! x34 ! x43 œ0 for alle 3− N, 3Á=ß3Á><br />

4 4<br />

Ð3ß4Ñ−E Ð4ß3Ñ−E<br />

!<br />

4<br />

Ð4ß>Ñ−E<br />

x4><br />

œ@<br />

0 x 34 34<br />

Ÿ Ÿ? ß Ð3ß4Ñ−E


I den formulering måler variablen @ den størst mulige mængde flow, der kan sende fra source til<br />

sink. ? ßÐ3ß4Ñ−E, er upper bound på flowet langs kanten ( 3ß 4) i retningen fra 3 til 4.<br />

34<br />

LP-formulering af det mere generelle balancerede Min Cost Flow Problem:<br />

min ! c<br />

(3ß4Ñ−E<br />

B<br />

34 34<br />

s.t. ! x ! x œb for alle 3−N<br />

34 43 3<br />

4 4<br />

Ð3ß4Ñ−E Ð4ß3Ñ−E<br />

0 x 34 34<br />

Ÿ Ÿ? ß Ð3ß4Ñ−E<br />

Her måler parametrene b 3 nettoudbud i node 3:<br />

b30 -> 3supply<br />

node<br />

b30 -> 3demand<br />

node<br />

b3œ0 -> 3transshipment/intermediate<br />

node<br />

Problemet betegnes balanceret, idet det forudsættes<br />

! b 0<br />

3<br />

3 œ<br />

Er dette krav ikke opfyldt, findes der ikke brugbare løsninger med bibetingelserne formuleret som<br />

ligheder!

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!