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

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"— 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: lij alsó, uij felső korlát, cij élköltség  iV csúcsra: b(i) termelés/fogyasztás (előjeles!) Keresendő:  (i,j)E élre xij 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: Á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. 4

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

6 Általánosítások Konvex költségű folyam Általánosított 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. 6

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 (lij = 0). Ekvivalens átalakítással elérhető. Minden élköltség nemnegatív (cij ≥ 0). Ekvivalens átalakítással elérhető. 7

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

9 Megoldási módszerek Összetett feladat, számos megoldó algoritmus létezik. 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 9

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

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. uij – xij mennyiség küldhető még át, cij költséggel, „visszafelé” max. xij mennyiség, a költség nyilván –cij (cij -t kapunk vissza). Jelölés: Gx az x folyamhoz tartozó maradék hálózat. Csak azok az élek szerepelnek benne, amelyek maradék kapacitása pozitív! 13

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 Gx 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 Biz:
Egy x megengedett folyam ACSA optimális, ha Gx nem tartalmaz negatív összköltségű irányított kört. Biz: Ha Gx-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 Gx-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 Negatív kör módszer Példa: Egy megengedett folyam: Maradék hálózat:
kapacitás, élköltség Egy megengedett folyam: 3, 100 7, 100 3 3 +5 -5 3, 50 2, 100 2, 200 2 2 Maradék hálózat: Optimális folyam: 4, 100 3, -100 3 5 3, 50 3, -100 2 2, -100 2, -200 2 egy negatív kör 17

18 Negatív kör módszer 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 m2 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 = cij + (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 Gx 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 Gx 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) + cij Ezt átírva: cij + d(i) – d(j) ≥ 0, vagyis: cdij ≥ 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 Ismételt legrövidebb út módszer
Példa: kapacitás, élköltség Első legrövidebb út: 3, 100 7, 100 3 3 +5 -5 3, 50 2, 100 2, 200 Maradék hálózat: Optimális folyam: 4, 100 3, -100 3 5 3, 50 3, 50 3, -100 2 2, 100 2, 200 2 második legrövidebb út 25

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 1993. Alexander Schrijver: Combinatorial Optimization: Polyhedra and Efficiency. Springer-Verlag, 2003. Thomas H. Cormen – Charles E. Leiserson – Ronald L. Rivest – Clifford Stein: Introduction to Algorithms. The MIT Press, 2nd edition, 2001. Saját 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"

Hasonló előadás


Google Hirdetések