Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

A minimális költségű folyam feladat és megoldási módszerei Készítette: Kovács Péter 2008.01.30.

Hasonló előadás


Az előadások a következő témára: "A minimális költségű folyam feladat és megoldási módszerei Készítette: Kovács Péter 2008.01.30."— Előadás másolata:

1 A minimális költségű folyam feladat és megoldási módszerei Készítette: Kovács Péter

2 I. rész A minimális költségű folyam feladat

3 Minimális költségű folyam G=(V,E) irányított gráf, adott:  (i,j)  E élre: l ij alsó, u ij felső korlát, c ij élköltség  i  V csúcsra: b(i) termelés/fogyasztás (előjeles!) Keresendő:  (i,j)  E élre x ij folyamérték, amelyre: 3

4 Minimális költségű folyam A egy n×m-es mátrix, ahol minden oszlop egy (i,j) élhez tartozik: az i. sorában +1, a j. sorában -1 van, a többi érték 0. Így a feladat felírható LP feladatként: 4 Általában minden adat egész, és egészértékű megoldást keresünk, tehát IP feladat, a megoldása nem triviális.

5 Speciális esetek 5 Legrövidebb út  (i,j)  E : l ij = 0, u ij = 1,  i  V \ {s,t} : b(i) = 0, b(s) = 1, b(t) = -1  (i,j)  E : l ij = 0, u ij = n-1,  i  V \ {s} : b(i) = -1, b(s)= n-1 Szállítási feladat Pl. termelők, fogyasztók (páros gráf, minden (i,j) élre: i Pl. termelők, fogyasztók (páros gráf, minden (i,j) élre: i  V 1, j  V 2 ) Hozzárendelési feladat i ua., csak minden kapacitás 1, és  i  V 1 : b(i) = 1,  j  V 2 : b(j) = -1 Áramfeladat i  i  V : b(i) = 0 (nincs termelés/fogyasztás, a min. költségű áramlást keressük) Maximális folyam  i  V : b(i) = 0,  (i,j)  E : c ij = 0, és a gráfot kiegészítjük egy (t,s) éllel, amelyre l ts =0, u ts = ∞, c ts = -1

6 Általánosítások 6 Konvex költségű folyam a célfüggvény valamilyen konvex fv. pl. torlódások kezelése közlekedési, ill. kommunikációs hálózatokban Általánosított folyam az egyes élek „fogyaszthatják” és „növelhetik” is a rajtuk átfolyó folyamot pl. elektromos hálózatokban veszteségek, vízvezeték hálózatokban szivárgás/párolgás, romlandó termék szállítása stb. Több termékes folyam egyszerre több árucikk, a kapacitásokon osztoznak pl. utasok közlekedése, üzenetek küldése különböző küldő-címzett párok között stb.

7 Feltételezések Minden adat (kapacitás, élköltség, termelés) egész. Minden kapacitás véges. (össztermelés = összes fogyasztás) Minden alsó korlát nulla (l ij = 0). Ekvivalens átalakítással elérhető. Minden élköltség nemnegatív (c ij ≥ 0). Ekvivalens átalakítással elérhető. 7

8 Minimális költségű folyam A vizsgált feladat még egyszer: 8 Ahol minden adat egész, és  b(i) = 0.

9 Megoldási módszerek Összetett feladat, számos megoldó algoritmus létezik. 9 Csoportosítás: megközelítés módja szerint: primál, duál, primál–duál, relaxációs műveletigény szerint: kvázipolinomiális, polinomiális, erősen polinomiális Jelölés: n a csúcsok, m az élek száma U a max. kapacitás/termelés, C a max. élköltség Elnevezés: kvázipolinomiális: n, m, U, C függvényében polinomiális polinomiális: n, m, log U, log C függvényében polinomiális erősen polinomiális: n, m függvényében polinomiális

10 Megoldási módszerek 10 A legjobb lépésszámkorlátokat adó algoritmusok: SP(...) a legrövidebb út-keresés műveletigényét jelöli.

11 II. rész A két alapvető megoldási módszer

12 Megoldási módszerek A két alapvető megoldási módszer: Primál: negatív kör algoritmus (negative cycle / cycle canceling) Duál: ismételt legrövidebb út algoritmus (successive shortest path) Még szükséges fogalmak: maradék (reziduális) hálózat optimalitási feltételek csúcspotenciálok, redukált élköltségek 12

13 Maradék hálózat Maradék (reziudális) kapacitás a szokásos módon, de itt élköltségek is kellenek. Szemlélet: egy adott x folyamhoz viszonyított módosítás. (i,j) élen max. u ij – x ij mennyiség küldhető még át, c ij költséggel, „visszafelé” max. x ij mennyiség, a költség nyilván –c ij (c ij -t kapunk vissza). 13 Jelölés: G x az x folyamhoz tartozó maradék hálózat. Csak azok az élek szerepelnek benne, amelyek maradék kapacitása pozitív!

14 Optimalitási feltételek Cél: karakterizálni egy megengedett megoldás optimalitását. Eszköz a hatékony ellenőrzésre. Ötletet ad megoldó algoritmusokhoz. Állítás: Bármely x megengedett folyam átvihető bármely y megengedett folyamba úgy, hogy a G x maradék hálózat irányított körei mentén folyamot küldünk. Ilyenkor y összköltsége egyenlő x költségének és a körök költségének összegével. Ezen a tulajdonságon alapul minden optimalitási feltétel és minden algoritmus. 14

15 Negatív kör módszer Tétel: Negatív kör optimalitási feltétel Egy x megengedett folyam ACSA optimális, ha G x nem tartalmaz negatív összköltségű irányított kört. Biz: Ha G x -ben van negatív kör, akkor azon pozitív mennyiségű folyamot átküldve x-nél jobb megoldást kapunk. Ha x nem optimális, akkor javítható, tehát kell lennie ilyen körnek. ■ A tételből közvetlenül adódik az alábbi algoritmus: Legyen x egy tetszőleges megengedett folyam. Keressünk negatív kört G x -ben. Amíg találtunk, küldjük végig rajta a megengedett legtöbb folyamot. Ha már nincs negatív kör, a talált folyam optimális. 15

16 Negatív kör módszer 16

17 3, 100 kapacitás, élköltség 7, 100 2, 1002, 200 3, Példa:Egy megengedett folyam: 3, , 100 2, , , 50 Maradék hálózat: 17 3, Optimális folyam: egy negatív kör Negatív kör módszer

18 Az általános módszer nem határozza meg: a megengedett folyam keresésének módját, a negatív körök kiválasztásának módját és sorrendjét. A megengedett folyam-keresés visszavezethető maximális folyam feladatra: Egészítsük ki a gráfot egy s forrás és egy t nyelő csúccsal. Minden i termelő csúcshoz legyen egy (s,i) él b(i) kapacitással, minden j fogyasztó csúcshoz legyen egy (j,t) él –b(j) kapacitással. Az eredeti feladatnak ACSA van megengedett megoldása, ha a segédgráfban a max. folyam telíti az s-ből kivezető, ill. t-be vezető éleket. Ilyenkor a max. folyam megad egy megengedett megoldást is. 18

19 Negatív kör módszer Negatív köröket kereshetünk legrövidebb út-kereső algoritmusokkal. Pl. Bellman–Ford-algoritmussal: A szokásos n-1 iteráció után egy n-ediket végrehajtva abban ACSA javítunk, ha a gráfban van negatív kör. Egy kör így megtalálható O(n m) időben. Minden adat egész és minden körrel javítunk, így legfeljebb O(mCU) iteráció lehet (max. ennyi a kezdeti folyam összköltsége). Tehát az algoritmus O(n m 2 CU) időben fut. Algoritmus javítása: Nem feltétlenül kell n BF-iteráció egy negatív kör kereséséhez. Ötlet: először csak néhány iteráció, utána ellenőrzés. Ha nem találtunk negatív kört, akkor a korlátot növeljük, és újabb iterációkat hajtunk végre. Ez nagyságrendekkel gyorsítja az algoritmust! 19

20 Redukált élköltségek Algoritmusokban gyakran van szükség az élköltségek módosítására. Minden csúcshoz rendeljünk hozzá egy  (i) potenciálértéket. Egy (i,j) él redukált költsége: c  ij = c ij +  (i) –  (j) Megjegyzés: Minden irányított kör költsége c  és c szerint megegyezik. 20

21 Optimalitási feltételek Tétel: (ism.) Negatív kör optimalitási feltétel Egy x megengedett folyam ACSA optimális, ha G x nem tartalmaz negatív összköltségű irányított kört. Tétel: Redukált költség optimalitási feltétel Egy x megengedett folyam ACSA optimális, ha létezik  potenciál, amelyre a G x minden élének redukált költsége nemnegatív. Szemlélet: Potenciálok ≈ távolságcímkék. Legrövidebb út problémánál az optimalitás szükséges feltétele: minden (i,j) élre: d(j) ≤ d(i) + c ij Ezt átírva: c ij + d(i) – d(j) ≥ 0, vagyis: c d ij ≥ 0. 21

22 Ismételt legrövidebb út módszer Az azonosan nulla folyamból indulunk ki. Végig olyan folyamot és potenciálokat tartunk nyilván, hogy minden redukált költség nemnegatív legyen (a folyam nem megengedett!). Minden lépésben kiválasztunk egy v csúcsot, ahol még többlet van és egy w csúcsot, ahol még hiány van, és folyamot küldünk v-ből w-be a maradék hálózat egy, a redukált költségek szerint vett legrövidebb útja mentén. Ezután a távolságcímkék alapján módosítani kell a potenciálokat is! Amikor a folyam megengedett lesz, akkor optimális is. A redukált költségek végig nemnegatívak, ezért használhatjuk a Dijkstra-algoritmust. 22

23 Ismételt legrövidebb út módszer Minden lépésben csökken a többlet és a hiány egy-egy csúcsban, ami kezdetben max. nU/2 lehet. Így az algoritmus O(nU SP(n, m) ) időben fut, ahol SP(…) a Dijkstra- algoritmus műveletigénye. Fibonacci-kupacokkal: O(nU (m + n log n) ) Duál megközelítési módszer: A  csúcspotenciálok a min. költségű folyam feladat duál megoldása! Duál megengedett megoldásokat tartunk nyilván, és a primál megengedettséget akarjuk elérni (megengedett folyam). 23

24 Ismételt legrövidebb út módszer 24

25 3, 100 kapacitás, élköltség 7, 100 2, 1002, 200 3, Példa:Első legrövidebb út: 3, , 100 2, 100 3, 50 Maradék hálózat: 25 3, Optimális folyam: Ismételt legrövidebb út módszer 2, 200 3, 50 második legrövidebb út

26 Összehasonlítás A két módszer hatékony C++ implementációjának összehasonlítása különböző sűrűségű gráfokon: 26

27 Felhasznált irodalom Ravindra K. Ahuja – Thomas L. Magnanti – James B. Orlin: Network Flows: Theory, Algorithms, and Applications. Prentice-Hall, Inc., February Alexander Schrijver: Combinatorial Optimization: Polyhedra and Efficiency. Springer-Verlag, Thomas H. Cormen – Charles E. Leiserson – Ronald L. Rivest – Clifford Stein: Introduction to Algorithms. The MIT Press, 2nd edition, diplomamunka: Hálózati folyamok és alkalmazásaik – Hatékony algoritmusok a minimális költségű folyam feladatra. 27


Letölteni ppt "A minimális költségű folyam feladat és megoldási módszerei Készítette: Kovács Péter 2008.01.30."

Hasonló előadás


Google Hirdetések