A minimális költségű folyam feladat és megoldási módszerei

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

Lineáris egyenletrendszerek
A Floyd-Warshall algoritmus
A Dijkstra algoritmus.
A Szállítási feladat megoldása
Lineáris egyenletrendszerek megoldása Gauss elimináció, Cramer-szabály Dr. Kovács Sándor DE GVK Gazdaságelemzési és Statiszikai Tanszék.
Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
KÉSZÍTETTE: Takács Sándor
Összefoglalás Hardver,szoftver,perifériák Memóriák fajtái
Programozási tételek, és „négyzetes” rendezések
Partner kiválasztási feladat modellezése Virtuális vállalat 8. gyakorlat Dr. Kulcsár Gyula.
Dualitás Ferenczi Zoltán
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Készítette: Major Máté
MI 2003/ A következőkben más megközelítés: nem közvetlenül az eloszlásokból indulunk ki, hanem a diszkriminancia függvényeket keressük. Legegyszerűbb:
Matematika II. 3. előadás Geodézia szakmérnöki szak 2010/2011. tanév Műszaki térinformatika ágazat tavaszi félév.
Matematika II. 4. előadás Geodézia szakmérnöki szak 2010/2011. tanév Műszaki térinformatika ágazat tavaszi félév.
Matematika II. 2. előadás Geodézia szakmérnöki szak 2012/2013. tanév Műszaki térinformatika ágazat őszi félév.
Illés Tibor – Hálózati folyamok
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Dijkstra algoritmus Irányított gráfban.
Dijkstra algoritmus Baranyás Bence. Feladat Adott egy G=(V,E) élsúlyozott, irányított vagy irányítás nélküli, negatív élsúlyokat nem tartalmazó, véges.
Operációkutatás szeptember 18 –október 2.
Gazdaságmatematika 5. szeminárium.
Gazdaságmatematika 6.szeminárium.
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
Szállítási feladatok Optimalitás vizsgálat
Szállítási probléma - fogalmak
Papp Róbert, Blaskovics Viktor, Hantos Norbert
Van-e Euler vonal az alábbi gráfban?
Lineáris programozás Modellalkotás Grafikus megoldás Feladattípusok
OPERÁCIÓKUTATÁS Kalmár János, 2011 Tartalom Több lineáris célfüggvényes LP Tiszta egészértékű LP.
OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.
Optimalizálási módszerek 3. Lineáris programozás
Lineáris algebra Mátrixok, determinánsok, lineáris egyenletrendszerek
1 Györgyi Tamás – GYTNAAI.ELTE 2007 Április 03 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus Bellman-Ford Algoritmusa S a b d e
Dinamikus fák és utak Készítette: Kovács Péter
„Országos” feladat. Feladat: Egy tetszőleges, színes országokat tartalmazó térképen akar eljutni egy kommandós csapat egy országból egy másikba. Viszont.
Dijkstra algoritmusa Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL.
Készítette: Kosztyán Zsolt Tibor
Kvantitatív módszerek
Gráfok Készítette: Dr. Ábrahám István.
Készítette: Lakos Péter.  Adott egy élsúlyozott, véges gráf  Negatív élsúlyokat nem tartalmaz  Lehet irányított vagy irányítatlan  Továbbá adott egy.
Készítette: Lakos Péter.  Adott egy irányított vagy irányítatlan, véges gráf.  Írjuk ki a csúcsokat egy kezdőcsúcstól való távolságuk növekvő sorrendjében.
Dijkstra-algoritmus ismertetése
Algoritmusok II. Gyakorlat 3. Feladat Pup Márton.
Lineáris programozás.
Lineáris programozás Elemi példa Alapfogalmak Általános vizsg.
A Dijkstra algoritmus.
Előadó: Nagy Sára Mesterséges intelligencia Kereső rendszerek.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Dijkstra-algoritmus. A Dijkstra-algoritmus egy mohó algoritmus, amivel irányított gráfokban lehet megkeresni a legrövidebb utakat egy adott csúcspontból.
Business Mathematics A legrövidebb út.
Bellmann-Ford Algoritmus
Útkeresések.
előadások, konzultációk
Morvai Mária-Júlia F3D3D4.  Adott egy G=(V,E)élsúlyozott, irányított vagy irányítás nélküli, negatív élsúlyokat nem tartalmazó,véges gráf. Továbbá adott.
Készítette : Giligor Dávid Neptun : HSYGGS
Adalékok egy véges összegzési feladathoz
Eötvös Konferencia, 2008 április 26. Kovács Máté 1 Útkeresések optimalizálása számítógépes játékokban.
Kvantitatív módszerek
HÁLÓZAT Maximális folyam, minimális vágás
A Dijkstra algoritmus.
Gráfok szélességi bejárása Dijkstra algoritmus
Lineáris programozás Elemi példa Alapfogalmak Általános vizsg.
HÁLÓZAT Maximális folyam, minimális vágás
Számításelmélet Tárgykód: NGM_IN006_1 és LGM_IN006_1
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Előadás másolata:

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

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

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

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

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

Á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

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

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

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

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

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

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

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

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

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

Negatív kör módszer 16

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

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

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

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

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

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

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

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

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

Ö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

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. http://people.inf.elte.hu/kpeter 27