Hálózati folyamok és alkalmazásaik. Kovács Péter
|
|
- Irén Oroszné
- 6 évvel ezelőtt
- Látták:
Átírás
1 EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR Hálózati folyamok és alkalmazásaik Hatékony algoritmusok a minimális költségű folyam feladatra DIPLOMAMUNKA Kovács Péter programtervező matematikus hallgató Témavezetők: Király Zoltán egyetemi docens ELTE Természettudományi Kar Számítógéptudományi Tanszék Jüttner Alpár tudományos segédmunkatárs ELTE Természettudományi Kar Operációkutatási Tanszék Budapest 2007 Javított változat,
2 Tartalomjegyzék Bevezetés 3 1. Minimális költségű folyam A vizsgált feladat Speciális esetek Legrövidebb út Maximális folyam Szállítási feladat Hozzárendelési feladat Áramfeladat Általánosítások Konvex költségű folyam Általánosított folyam Több termékes folyam Történeti előzmények Feltételezések és átalakítások Élköltségek kezelése Maradék hálózat Redukált élköltségek Optimalitási feltételek A feladat dualitása Optimális folyamok és potenciálok Megoldási módszerek Műveletigény-elemzés Kvázipolinomiális algoritmusok Negatív kör módszer Ismételt legrövidebb út módszer Primál duál módszer Out-of-Kilter módszer Relaxációs módszer Hálózati szimplex módszer Polinomiális algoritmusok Kapacitásskálázó algoritmusok Költségskálázó algoritmusok Egyéb polinomiális algoritmusok Erősen polinomiális algoritmusok Legjobb lépésszámkorlátok
3 3. Megvalósítás Az implementáció kerete Negatív kör algoritmusok Megengedett folyam keresése Egyszerű negatív kör algoritmus Minimális átlagú negatív kör algoritmus Minimális átlagú kör keresése Duál algoritmusok Ismételt legrövidebb út algoritmus Kapacitásskálázó algoritmus Hálózati szimplex algoritmus Pivotálási szabályok Tesztelés Tesztadatok Algoritmusok változatai Megengedett folyam keresése Egyszerű negatív kör algoritmus Minimális átlagú negatív kör algoritmus Ismételt legrövidebb út algoritmus Kapacitásskálázó algoritmus Hálózati szimplex algoritmus Összehasonlítás Összefoglalás 59 Irodalomjegyzék 60 2
4 Bevezetés A hálózati folyamok az operációkutatás egyik legszélesebb körben alkalmazott eszköztára. Közvetlenül felhasználható telekommunikációs vagy egyéb kommunális hálózatok tervezési feladatainak megoldására, továbbá alapvető építőeleme különböző hálózati útvonalválasztó és forgalommenedzselő eljárásoknak, logisztikai problémák megoldására szolgáló algoritmusoknak is. A különböző alkalmazások mindegyikében valamilyen entitást (terméket, adatot, villamos energiát stb.) szeretnénk továbbítani az adott hálózat egy vagy több pontjából más pontokba minél hatékonyabban. Ezzel kapcsolatban három alapvető problémakör fogalmazható meg: legrövidebb út, maximális folyam és minimális költségű folyam. Jelen dolgozat célkitűzése a minimális költségű folyam feladat elméleti hátterének és különböző megoldási módszereinek áttekintése, valamint ezek közül néhány kiválasztott algoritmus hatékony megvalósításának bemutatása és összehasonlítása. Minden implementációt C++ nyelven, a LEMON hálózattervező és optimalizálási programkönyvtár keretein belül, a már meglévő eszközeinek felhasználásával végeztünk. A tárgyalás során feltesszük, hogy az Olvasó rendelkezik a téma vizsgálatához szükséges matematikai ismeretekkel, tisztában van a gráfelmélet alapfogalmaival és szokásos jelöléseivel, továbbá ismeri az alapvető gráfelméleti algoritmusokat is. 3
5 1. Minimális költségű folyam A minimális költségű folyam a hálózati folyamok legalapvetőbb modellje, amely mint ahogy később látni fogjuk speciális esetként magában foglal sok más folyamfeladatot is, többek között a két legismertebbet: a legrövidebb út és a maximális folyam problémát. A hálózati folyamok elméleti hátterét, a sokféle ismert algoritmust és ezek szerteágazó alkalmazási területeit nagyon jól bemutatja Ahuja, Magnanti és Orlin [2] műve A vizsgált feladat A minimális költségű folyam feladat lényege egy olyan minimális költségű szállítási terv, folyam meghatározása, amellyel az adott hálózat termelő csúcsaiból a fogyasztó csúcsokba eljuttathatjuk a megfelelő mennyiségű terméket oly módon, hogy az élekre vonatkozó kapacitáskorlátokat betartjuk. Legyen G = (V, E) egy irányított, gyengén összefüggő gráf n = V csúccsal és m = E éllel. Minden (i, j) E élhez hozzárendelünk egy l ij R, l ij 0 alsó és egy u ij R {+ }, u ij l ij felső korlátot, valamint egy c ij R költséget, amely az adott élen folyó egységnyi folyam költségét jelöli. Feltesszük tehát, hogy a hálózatban a folyam költsége lineárisan függ a mennyiségétől. Ezen kívül minden i V csúcshoz hozzárendelünk egy b(i) R értéket, amely a termelését, illetve fogyasztását jelöli. Ha b(i) > 0, akkor i termelő csúcs b(i) termeléssel, ha b(i) < 0, akkor i fogyasztó csúcs b(i) fogyasztással, ha pedig b(i) = 0, akkor i közvetítő csúcs. Ezen feltételek mellett szeretnénk meghatározni az egyes éleken az x ij R folyamértékeket oly módon, hogy az összköltség minimális legyen. A legtöbb esetben azonban minden mennyiség- és költségérték egész, és a megoldást is egészértékű folyamként keressük. Ezek alapján a vizsgált optimalizálási modell az alábbi módon formalizálható: határozzuk meg a min c ij x ij (1) értéket a j : (i,j) E x ij (i,j) E j : (j,i) E feltételek mellett, ahol feltesszük, hogy i V b(i) = 0. x ji = b(i) i V, (2) l ij x ij u ij (i, j) E (3) A probléma tehát egy lineáris programozási feladat. Legyen A a gráf n m-es ún. csúcsél szomszédsági mátrixa, ahol minden oszlop egy (i, j) E élhez tartozik: az i. sorában +1-et, a j. sorában 1-et tartalmaz, a többi érték pedig nulla. Ekkor a feladat mátrix alakban az alábbi módon írható fel: határozzuk meg a min cx (4) 4
6 értéket az feltételek mellett. Ax = b, (5) l x u (6) A (2), illetve (5) feltételt mennyiségkiegyenlítettségi feltételnek (mass balance constraint) vagy termelés/fogyasztás feltételnek (supply/demand constarint) nevezzük, amely azt mondja ki, hogy minden i V csúcshoz az összes kifolyó és az összes befolyó folyammennyiség különbsége egyezzen meg a b(i) termeléssel. A (3), illetve (6) feltételt pedig korlátfeltételnek (flow bound constraint) nevezzük, amely tipikusan a hálózat fizikai tulajdonságait, illetve a folyammal kapcsolatos elvárásainkat jellemzi Speciális esetek Ebben az alfejezetben bemutatjuk a minimális költségű folyam feladat néhány speciális esetét, amelyek többnyire önálló feladatként is ismertek, és gyakran előfordulnak különböző alkalmazásokban. Ezekkel szeretnénk szemléltetni, hogy a vizsgált probléma egy igen általános keretet határoz meg, amelyen belül sok speciálisabb feladat is megfogalmazható. Így a később bemutatásra kerülő megoldási módszerek széles körben, sok különböző területen alkalmazhatók Legrövidebb út A legrövidebb út (shortest path) talán a legismertebb és legegyszerűbb folyamfeladat: keressünk egy legrövidebb (legkisebb költségű) utat a megadott hálózat egy s kezdőcsúcsából egy t célcsúcsába a c ij élköltségek szerint. Az előző alfejezet jelöléseivel legyen l ij = 0 és u ij = 1 minden (i, j) élre, valamint b(s) = 1, b(t) = 1 és b(i) = 0 minden más i csúcsra. Ekkor a kapott optimális megoldás egy egységnyi folyamot visz át s-ből t-be egy legrövidebb út mentén. Amennyiben pedig egy s csúcsból kiindulva az összes többi csúcsba keressük a legrövidebb utat, akkor legyen b(s) = n 1 és b(i) = 1 minden más i csúcsra, továbbá minden u ij kapacitás legyen legalább n 1. Ekkor a megoldás az s csúcsból egy egységnyi folyamot visz át minden más csúcsba egy-egy legrövidebb út mentén Maximális folyam A maximális folyam (maximum flow) feladat bizonyos értelemben a legrövidebb út komplementer modelljének is tekinthető. Az utóbbinál ugyanis csak az élek költsége játszik szerepet, ezzel szemben a maximális folyam feladatban nincsenek költségek, csak kapacitáskorlátokkal foglalkozunk. A feladat az, hogy egy adott s forrás csúcsból egy t nyelő 5
7 csúcsba találjunk egy maximális értékű megengedett folyamot (vagyis olyan folyamot, amely nem sérti meg az u ij kapacitáskorlátokat). Ezt formalizálhatjuk minimális költségű folyamként oly módon, hogy b(i) = 0 minden i csúcsra, és c ij = 0 minden (i, j) E élre, továbbá kiegészítjük a gráfot egy (t, s) éllel, amelyre c ts = 1, l ts = 0, u ts =. Ekkor egy optimális megoldás nyilván maximalizálja a folyamot a (t, s) élen, ehhez viszont ennek a folyammennyiségnek az eredeti éleken el kell jutnia s-ből t-be (hiszen minden b(i) = 0). Így a megoldás az eredeti gráfon egy maximális s t folyamot ad Szállítási feladat A szállítási feladat (transportation problem) a minimális költségű folyam olyan speciális esete, ahol a csúcsok V halmaza felbontható két (nem feltétlenül azonos méretű) V 1, V 2 halmazra oly módon, hogy minden i V 1 termelő csúcs, minden j V 2 fogyasztó csúcs, továbbá minden (i, j) E élre i V 1 és j V 2 (vagyis G páros gráf). Egyes alkalmazásokban kapacitáskorlátokat sem feltételeznek, ilyenkor l ij = 0, u ij = minden élre Hozzárendelési feladat A hozzárendelési feladatban (assignment problem) adott két azonos méretű halmazunk: V 1 és V 2, valamint a lehetséges hozzárendelések egy E V 1 V 2 halmaza és mindegyikhez egy c ij költség. A feladat az, hogy minden V 1 -beli elemhez rendeljünk pontosan egy V 2 -belit egy (i, j) E él mentén oly módon, hogy az összköltség minimális legyen. Ezt a feladatot is formalizálhatjuk minimális költségű folyamként: legyen G = (V 1 V 2, E), ahol b(i) = 1 minden i V 1 csúcsúra, b(j) = 1 minden j V 2 csúcsra, és minden élre l ij = 0, u ij = Áramfeladat Az áramfeladat (circulation problem) a minimális költségű folyam olyan speciális esete, amelyben csak közvetítő csúcsok vannak, vagyis minden b(i) = 0, a teljes folyammennyiség körbeáramlik a hálózatban. Ehhez példaként tekinthetünk egy olyan alkalmazást, amelyben egy optimális menetrendet szeretnénk megadni egy repülőgép társaság gépei számára. Ebben a modellben minden gép a különböző városok repülőterei között jár körbe. Minden l ij alsó korlátot egyre választunk azokban az esetekben, ha biztosítanunk kell egy járatot az i csomópontból a j csomópontba. Itt a gráf csúcsai a térbeli elhelyezkedés és az indulási/érkezési időpont kombinációját reprezentálják, például Budapest 10:00, London 11:00. Az egyes repülőtereken való várakozásnak pedig további élek feleltethetők meg, amelyeknek szintén lehetnek kapacitáskorlátai (a repülőtér befogadó képessége) és nullától különböző költségei is. 6
8 1.3. Általánosítások Az alábbiakban áttekintjük a minimális költségű folyam feladat szokásos általánosításait és azok néhány alkalmazási lehetőségét. Ezekkel jelen dolgozat keretében részletesebben nem foglalkozunk, azonban az itt felsorolt példák szintén jól mutatják a vizsgált modell jelentőségét, továbbá az általánosabb folyamproblémák részfeladataiként gyakran kapunk minimális költségű folyam feladatot Konvex költségű folyam Az eddig tárgyalt modellben feltettük, hogy a folyam költsége a mennyiség lineáris függvénye, ezzel szemben a konvex költségű folyam (convex cost flow) feladatban csak annyit kötünk meg, hogy ez valamilyen konvex függvény legyen. Számos olyan probléma van, amelynél szükséges lehet ez az általánosítás, például: elektromos hálózatokban az ellenállások hatására bekövetkező villamosenergia-veszteségek leírása; az egyes vonalak terheltsége, illetve az esetleges torlódások miatt fellépő késleltetés, várakozási idő kezelése különböző közlekedési és kommunikációs hálózatokban Általánosított folyam Az általánosított folyam (generalized flow) modellben az egyes élek fogyaszthatják és növelhetik is a rajtuk átfolyó folyamot. Ha az i csúcsból az (i, j) élen x ij egységnyi folyam lép ki, akkor a j csúcsba µ ij x ij egységnyi érkezik meg. Ha µ ij < 1, akkor az él veszteséges, ha pedig µ ij > 1, akkor nyereséges. Ez a megközelítés természetes módon felmerül sok alkalmazásban, például: villamos energia továbbítása elektromos hálózatokban, ahol a vezetékeken veszteség léphet fel; vízvezeték-hálózatokban, csatornákban a szivárgás, illetve párolgás jelenségének kezelése; valamilyen romlandó termék szállítása; valamint pénzügyi, gazdasági rendszerek modellezése, ahol az egyes élek reprezentálják a különböző befektetési lehetőségeket, eseményeket, a hozzájuk rendelt szorzó tényezők pedig a várható hozamot, illetve veszteséget Több termékes folyam A több termékes folyam (multicommodity flow) feladatban egyszerre több árucikk van jelen ugyanabban a hálózatban. Mindegyiknek külön vannak termelő és fogyasztó csúcsai, külön kiegyenlítettségi feltételek vonatkoznak rájuk, viszont az élek kapacitásain osztoznak. Az alapvető probléma tehát nyilván az, hogyan osszuk fel a rendelkezésre álló kapacitásokat az egyes termékek között. Ez a feladat is számos valós probléma modellezésére alkalmas, például: utasok közlekedése egy város bizonyos pontjai között; különböző termékek, mezőgazdasági termények szállítása egy-egy országon belül, illetve 7
9 országok között; valamint üzenetek küldése egy kommunikációs hálózatban különböző küldő-címzett párok között Történeti előzmények Elsőként L. V. Kantorovich orosz matematikus vizsgált olyan szállítási problémákat, amelyek a minimális költségű folyam modell kialakulásához vezettek ben írt értekezése [43] csak jóval később, az 1960-as években vált ismertté, miután nyugaton is elkezdődtek hasonló kutatások ben T. C. Koopmans holland matematikussal megosztva Közgazdasági Alfred Nobel-emlékdíjjal jutalmazták. Kantorovich kilenc különböző problémaosztályt határozott meg, amelyek között szerepel például: munka elosztása az egyes munkagépek között; rendelések elosztása gyárak, termelőüzemek között; különböző nyersanyagok, illetve üzemanyag elosztása; valamint optimális teherszállítási tervek készítése. Később, az 1940-es években megjelent munkáiban már foglalkozott kapacitáskorláttal rendelkező hálózatokkal is, valamint felismerte a primál és duál feladat kapcsolatát. Nyugaton F. L. Hitchcock foglalkozott először hasonló problémákkal, 1941-ben megfogalmazta az szakaszban bemutatott klasszikus szállítási feladatot [40]. Egy m n dimenziós geometriai reprezentációt adott m gyár és n város közti áruszállítás problémájára, bevezette a megengedett tartomány és az extremális pontok fogalmát ben Koopmans pedig megfogalmazott egy optimalitási kritériumot, és megmutatta, hogy az extremális pontoknak a gráf terminológiában feszítőfák felelnek meg. H. W. Kuhn 1955-ben [51] a hozzárendelési feladat megoldására kidolgozott egy algoritmust, amely két magyar matematikus, Egerváry Jenő és Kőnig Dénes eredményeire épült, ezért az ő tiszteletükre magyar módszernek nevezte el. Később ez az operációkutatás egyik legjelentősebb módszere lett, amely hálózati folyamokkal, párosításokkal és matroidokkal kapcsolatos számos algoritmus kidolgozását alapozta meg. A hálózati folyamok és ezen belül a minimális költségű folyam modell ma használt fogalomrendszerének kialakulása, az alapvető elméleti eredmények jelentős része L. R. Ford és D. R. Fulkerson munkásságának köszönhető ben megjelent értekezésükben [22] számos eredményüket összefoglalták, megfogalmazták és részletesen elemezték többek között a minimális költségű folyam problémát, és bemutattak több különböző megoldási módszert is. Az 1960-as évektől előtérbe került ez a problémaosztály, és az 1990-es évekig folyamatosan születtek újabb és újabb eredmények. Ezek részletes időrendi áttekintésétől azonban eltekintünk, helyette a 2. fejezetben az egyes megoldási módszerek tárgyalásakor utalunk azok történeti előzményeire. Ahuja, Magnanti és Orlin [2] könyvében megtalálható minden ismertebb algoritmus történeti hátterének összefoglalása számos hivatkozással, Schrijver [59] cikke pedig a hálózati folyamok elméletének fejlődését mutatja be. 8
10 1.5. Feltételezések és átalakítások A dolgozat további részeiben az 1.1. alfejezetben leírt minimális költségű folyam feladatot vizsgáljuk, és arra keresünk megoldó algoritmusokat. Ehhez azonban először megfogalmazunk néhány további feltételezést, és megmutatjuk, hogy megfelelő átalakításokkal ezek biztosíthatók Feltételezés. Minden adat (kapacitás, élköltség és termelés/fogyasztás érték) egész. Ez a feltételezés az alkalmazások többségénél nem jelent lényegi megszorítást, ugyanis a racionális számokat egy kellően nagy számmal megszorozva egésszé alakíthatjuk, az irracionális számokat pedig eleve valamilyen racionális közelítéssel helyettesítjük a számítógépes ábrázolás során. A 3.2. alfejezetben megmutatjuk, hogy ha ezen feltétel mellett a feladatnak van optimális megoldása, akkor létezik olyan optimális megoldás is, amelyben minden x ij érték egész, ezért a továbbiakban minden esetben ilyen folyamot keresünk Feltételezés. Minden kapacitásérték véges. Általában ez a feltétel sem jelent megszorítást, ugyanis a végtelen kapacitásokat a többi adat függvényében lecserélhetjük kellően nagy véges értékekre. Olyankor viszont ez nem alkalmazható, amikor az eredeti feladatban a végtelen kapacitások miatt a megengedett megoldásokhoz tartozó célfüggvényértékek halmaza alulról nem korlátos, ugyanis a transzformált feladatnak nyilván ilyenkor is létezne optimális megoldása. Az ilyen eseteket azonban könnyen kizárhatjuk az alábbi kritérium alapján [35] Tétel. A minimális költségű folyam feladatnak akkor és csak akkor létezik optimális megoldása, ha létezik megengedett megoldása, és a G gráf nem tartalmaz olyan negatív összköltségű irányított kört, amelyben minden él kapacitása végtelen. Tehát ha az eredeti feladatban szerepelnek végtelen kapacitások, akkor megvizsgáljuk, hogy létezik-e végtelen kapacitású negatív kör. Ha igen, akkor a feladatnak nincs optimális megoldása, egyébként pedig a végtelen kapacitásokat lecserélhetjük kellően nagy véges kapacitásokra. Vegyük észre, hogy az 1.1. és 1.2. feltételezések mellett a feladatnak csak véges sok különböző (egészértékű) megengedett megoldása lehet, ezért ha létezik megengedett megoldás, akkor létezik optimális megoldás is Feltételezés. A b(i) termelés/fogyasztás értékek összege nulla. Ez a kikötés mindenképpen szükséges ahhoz, hogy a feladatnak legyen megengedett megoldása, ugyanis: 9
11 b(i) = i V i V = i V ( x ij ) x ji = j : (i,j) E j : (i,j) E x ij i V j : (j,i) E j : (j,i) E x ji = Feltételezés. Minden l ij alsó korlát nulla. Ez a kikötés az általánosság megszorítása nélkül feltehető, ugyanis minden minimális költségű folyam feladat ekvivalens módon átalakítható úgy, hogy ez teljesüljön. Legyen (i, j) egy tetszőlegesen rögzített él l ij 0 alsó korláttal. Ekkor az 1. ábrán látható módon ezen az élen az x ij folyamérték helyett tekintsük az x ij = x ij l ij értéket, és legyen l ij = = 0, u ij = u ij l ij. Ezáltal a mennyiségkiegyenlítettségi feltételben b(i) l ij -vel csökken, b(j) pedig l ij -vel növekszik, így ezt az átalakítást minden élre elvégezve adódik, hogy: b (i) = b(i) l ij + l ji. j : (i,j) E j : (j,i) E A fenti transzformációt egy két fázisból álló megoldási módszerként is értelmezhetjük. Először minden (i, j) élen l ij folyamot folyatunk, aztán a második lépésben az ehhez hozzáadandó további folyammennyiségeket (az x ij értékeket) keressük oly módon, hogy azok összköltsége minimális legyen. b(i) i u ij, c ij x ij b(j) j b(i) l ij i u ij l ij, c ij x ij b(j) + l ij j 1. ábra. Nem nulla alsó korlátok eltávolítása Könnyen látható, hogy az így definiált l ij, u ij, x ij és b (i) értékekre a szükséges feltételek teljesülnek, továbbá az eredeti és a transzformált feladat megoldásai kölcsönösen egyértelműen megfeleltethetők egymásnak oly módon, hogy a két célfüggvényérték közti különbség minden esetben megegyezik a (i,j) E c ijl ij konstanssal. Tehát a két feladat ekvivalens. Ezek alapján a továbbiakban eltekintünk az l ij alsó korlátoktól, csak az u ij kapacitásokkal foglalkozunk Feltételezés. Minden c ij élköltség nemnegatív. Az előzőhöz hasonlóan ez a feltétel is biztosítható a feladat ekvivalens átalakításával. A szükséges transzformáció lényege, hogy minden negatív költségű (i, j) él esetén az x ij változót u ij x ji-re cseréljük a feladatban. Ennek megfelelően a 2. ábrán látható módon az élt megfordítjuk, lecseréljük egy (j, i) élre c ji = c ij költséggel és u ji = u ij kapacitással. 10
12 Ezt az átalakítást is egy két lépcsős megoldási módszerként értelmezhetjük. Először minden negatív költségű (i, j) élen küldjük át a lehető legtöbb, vagyis u ij egységnyi folyamot (ezáltal b(i) u ij -vel csökken, b(j) pedig u ij -vel növekszik), a második lépésben pedig a megfordított éleken visszafolyó mennyiségek (az x ji értékek) azt adják meg, hogy mennyit kell ebből levonni, mekkora az a folyammennyiség, amelyet mégsem folyatunk át ezeken az éleken. Ezt a transzformációt minden élre elvégezve adódik, hogy: b (i) = b(i) u ij + u ji, j : (i,j) E j : (j,i) E ahol E jelöli az eredeti gráf negatív költségű éleinek halmazát. b(i) i u ij, c ij x ij b(j) b(i) u ij u ij, c ij b(j) + u ij j i j x ji 2. ábra. Negatív élköltségek eltávolítása Megjegyezzük, hogy a fenti átalakítás következtében a gráfban megjelenhetnek párhuzamos élek, akkor is, ha eredetileg nem voltak. Az ilyen feladatok esetén azonban a gyakorlatban többnyire olyan gráfimplementációt használunk, amely megfelelően kezeli a párhuzamos éleket. A továbbiakban mindig ilyen megvalósítást feltételezünk, viszont az elméleti tárgyalás során az egyszerűség kedvéért továbbra is megtartjuk az élek (i, j) jelölését Feltételezés. G irányított gráf. Az eddigiekben is irányított gráfra fogalmaztuk meg a feladatot, viszont bizonyos alkalmazásokban irányítatlan hálózatok szerepelnek. Az alábbiakban megmutatjuk, hogy az 1.5. és 1.6. feltételezések mellett minden irányítatlan gráfra megfogalmazott minimális költségű folyam feladatot természetes módon átírhatunk irányított gráfra. Fontos megjegyeznünk azonban, hogy irányítatlan hálózatok esetén ez a két feltétel lényegi megszorítást jelent. A fent bemutatott transzformációk ilyenkor nem alkalmazhatók, ugyanis nem tudjuk meghatározni, hogy a kérdéses éleken kezdetben átküldendő l ij, illetve u ij folyammennyiséget hogyan osszuk el a két irány között. Ráadásul nem nulla alsó korlátok, illetve negatív élköltségek esetén az irányítatlan feladatnak általában úgy van értelme, ha kikötjük, hogy minden élen csak egy irányba folyhat folyam, ez viszont NP-nehéz problémákat eredményez [27]. Feltesszük tehát, hogy nincsenek alsó korlátok, és minden élköltség nemnegatív. Jelölje {i, j} az i és j csúcsok közötti irányítatlan élt (vagyis {i, j} = {j, i}), amelynek kapacitása u {i,j}, költsége pedig c {i,j} 0. Ekkor az {i, j} élen a két irányba összesen u {i,j} folyam folyhat, az egységnyi költség pedig mindkét esetben c {i,j}. A folyam fogalma tehát 11
13 szükségszerűen irányított marad, ezért a megoldást x ij, x ji ({i, j} E) alakban keressük. Ezek alapján irányítatlan gráfra az alábbi módon írható fel a feladat: határozzuk meg a min ( ) c{i,j} x ij + c {i,j} x ji (7) értéket a feltételek mellett. j : {i,j} E x ij {i,j} E j : {i,j} E x ji = b(i) i V, (8) x ij + x ji u {i,j} {i, j} E, (9) 0 x ij, x ji {i, j} E (10) Mivel azonban feltettük, hogy a költségek nemnegatívok, ha létezik optimális megoldás, akkor nyilván létezik olyan optimális megoldás is, ahol minden {i, j} élre x ij és x ji közül legalább az egyik nulla. A (8) feltétel ugyanis átírható a következő módon: x ij x ji = (x ij x ji ) = b(i) i V. j : {i,j} E j : {i,j} E j : {i,j} E Tehát x ij és x ji közül a kisebb helyett nullát, a nagyobb helyett a kettő különbségét írva a (8) (10) feltételek továbbra is teljesülnek, a (7) célfüggvény értéke pedig nem növekszik. Ezzel azt értük el, hogy a megoldás átfedésmentes lesz, vagyis bármely élen legfeljebb az egyik irányba folyik folyam. Vegyük észre, hogy pozitív alsó korlátok esetén ez az átalakítás nem lenne lehetséges. Ezek után írjuk át a (7) (10) feladatot irányított gráfra oly módon, hogy minden {i, j} irányítatlan élnek egy (i, j) és egy (j, i) élt feleltetünk meg u {i,j} kapacitással és c {i,j} költséggel. Ekkor a két modell nem átfedő folyamai nyilván kölcsönösen egyértelműen megfeleltethetők egymásnak (azonos célfüggvényértékkel), az átfedő folyamok pedig mindkét esetben olyan nem átfedő folyamokká alakíthatók, amelyek költsége nem nagyobb. Tehát az egyik feladat bármely optimális megoldásából könnyen kaphatunk optimális megoldást a másikra, és viszont, vagyis a két probléma ekvivalens. Az eddigiekben adott feltételezéseket összegezve fogalmazzuk meg újra a vizsgált feladatot. Határozzuk meg a min c ij x ij (11) értéket a j : (i,j) E x ij (i,j) E j : (j,i) E x ji = b(i) i V, (12) 0 x ij u ij (i, j) E (13) feltételek mellett, ahol feltesszük, hogy minden b(i), c ij, u ij és x ij érték egész, minden c ij költség nemnegatív, valamint i V b(i) = 0. A továbbiakban minimális költségű folyam feladat alatt minden esetben ezt értjük. 12
14 1.6. Élköltségek kezelése Ebben az alfejezetben még néhány szükséges fogalmat tárgyalunk, amelyek az élköltségekkel rendelkező folyammodellhez kapcsolódnak Maradék hálózat A hálózati folyamokkal kapcsolatban az egyik alapvető fogalom a maradék (reziduális) kapacitás, illetve hálózat, amelyeket ismertnek feltételezünk. Ebben a modellben azonban a maximális folyam feladattal ellentétben költségeket is értelmezünk a maradék hálózat élein. A maradék hálózat fogalom lényege az, hogy a folyamokat nem abszolút értelemben vizsgáljuk, hanem egy rögzített folyamhoz viszonyítva, annak módosításaként, ami az algoritmusokban tipikusan egy köztes megoldáson való javításnak felel meg. Legyen tehát x egy rögzített folyam a G hálózatban. Ekkor egy (i, j) élen i-ből j-be még u ij x ij folyamot küldhetünk át c ij költséggel, j-ből i-be pedig a már meglévő folyam csökkentésével átvihetünk x ij mennyiséget. Az utóbbi esetben nyilván csökkentjük a célfüggvény értékét, így ebben az irányban c ij -re választjuk az élköltséget. r ij = u ij x ij, c ij i u ij, c ij j i j x ij r ji = x ij, c ij 3. ábra. Maradék hálózat Ezek alapján az eredeti gráf minden (i, j) élét a 3. ábrán látható módon egy (i, j) és egy (j, i) élre cseréljük. Az (i, j) él maradék kapacitása r ij = u ij x ij, költsége c ij, a (j, i) él maradék kapacitása pedig r ji = x ij, költsége c ij. Az ilyen módon definiált élek közül a pozitív maradék kapacitással rendelkezők alkotják az x folyamhoz tartozó G x maradék hálózatot. Megjegyezzük, hogy ha a G gráfban két csúcs között mindkét irányba vezet él, akkor a G x maradék hálózatban megjelenhetnek párhuzamos élek, amelyeknek maradék kapacitása, illetve költsége különböző lehet. Ezért ahogy korábban is említettük mindig olyan megvalósítást feltételezünk, amelyben ez nem okoz gondot, viszont többnyire megtartjuk az élek kissé pontatlan (i, j) jelölését Redukált élköltségek A minimális költségű folyam feladatra adott algoritmusokban gyakran van szükség arra, hogy a gráf éleinek költségét a végpontjaikhoz hozzárendelt ún. potenciálértékek alapján 13
15 módosítsuk. Ezek az egyes algoritmusokban tipikusan valamilyen köztes számítási eredményeket jelenítenek meg, amelyeket a különböző tudományterületeken definiált potenciálokhoz hasonló módon értelmezhetünk. A G gráf minden i csúcsához hozzárendelve egy tetszőleges előjelű π(i) potenciálértéket, a π-hez tartozó redukált élköltségeket az eredeti költség és az él végpontjai között lévő potenciálkülönbség összegeként definiáljuk: c π ij = c ij π(i) + π(j) (i, j) E. Azonosan nulla potenciálfüggvény esetén nyilván az eredeti költségeket kapjuk vissza. Mivel sok algoritmusban alkalmazzuk ezeket, fontos megvizsgálni az eredeti és a redukált élköltségek kapcsolatát Állítás. Tetszőleges π potenciálfüggvény esetén teljesülnek az alábbiak. a) Az eredeti és a redukált élköltségek szerint vett minimális költségű folyam feladat optimális megoldásai megegyeznek, és a két célfüggvényérték közti különbség minden esetben a i V π(i)b(i) = πb konstans. b) Minden W irányított körre (i,j) W cπ ij = (i,j) W c ij. c) Minden P irányított útra, amely a k csúcsból az l csúcsba visz (i,j) P cπ ij = = (i,j) P c ij π(k) + π(l). Bizonyítás. Az első összefüggés belátásához induljunk ki az azonosan nulla potenciálfüggvényből. Ha egy i csúcs potenciálját π(i)-re változtatjuk, akkor definíció szerint minden i-ből induló élen π(i)-vel csökken, és minden i-be mutató élen π(i)-vel növekszik a redukált költség. Így tetszőleges megengedett folyam esetén a célfüggvényértékben történt változás a π(i) érték, valamint az i csúcs összes kifolyó és befolyó folyama különbségének szorzata. Ez az utóbbi különbség viszont éppen a b(i) termelés/fogyasztás érték, tehát a fenti lépést minden csúcsra elvégezve adódik az állítás a) pontja. A b) és c) összefüggések pedig egyszerűen következnek abból, hogy az egymáshoz csatlakozó irányított élek redukált költségeinek összegében az ellentétes előjellel szereplő csúcspotenciálok kiejtik egymást Optimalitási feltételek Az alábbiakban bemutatunk három különböző, de ekvivalens optimalitási feltételt a minimális költségű folyam feladatra. Ezek több szempontból is nagyon fontos szerepet töltenek be a megoldó algoritmusokban: egyrészt egy konkrét megoldás esetén könnyen és hatékonyan ellenőrizhetők, másrészt közvetlenül is ötletet adnak egy-egy módszer kidolgozásához. Először azonban kimondunk egy fontos tételt, amelyből ezek a feltételek következnek. 14
16 1.9. Tétel. A minimális költségű folyam feladat egy tetszőleges x megengedett megoldásából egy tetszőleges y megengedett megoldás előállítható a G x maradék hálózat legfeljebb m irányított köre mentén történő változtatással, és az y folyam költsége megegyezik az x folyam költségének és a körök mentén küldött folyamok költségének összegével. A tétel bizonyítása azon a tulajdonságon alapul, hogy minden megengedett folyam szétbontható egyszerű utakra és körökre [2] Tétel (Negatív kör optimalitási feltétel). A minimális költségű folyam feladat egy x megengedett megoldása akkor és csak akkor optimális, ha a G x maradék hálózat nem tartalmaz negatív összköltségű irányított kört. Bizonyítás. Tegyük fel, hogy egy x megengedett megoldáshoz tartozó G x maradék hálózat tartalmaz negatív kört. Ekkor x nyilván nem lehet optimális, ugyanis a célfüggvényérték csökkenthető azáltal, hogy pozitív folyammennyiséget küldünk egy ilyen kör mentén. Vagyis ha x optimális, akkor G x nem tartalmaz negatív kört. Másrészt tegyük fel, hogy egy x megengedett megoldás esetén G x nem tartalmaz negatív kört, és legyen x egy optimális megoldás. Az 1.9. tétel szerint ekkor az x x folyam előáll G x -beli irányított körök összegeként. Mivel azonban G x -ban nincs negatív kör, ez a módosítás biztosan nem csökkenti a célfüggvény értékét, így cx cx, tehát x is optimális megoldás. Az egyes algoritmusokban gyakran használunk csúcspotenciálokat és redukált költségeket, ezért sokszor hasznos a fenti tétel alábbi átfogalmazása Tétel (Redukált költség optimalitási feltétel). A minimális költségű folyam feladat egy x megengedett megoldása akkor és csak akkor optimális, ha létezik olyan π potenciálfüggvény, amelyre a G x maradék hálózat minden (i, j) élének redukált költsége nemnegatív. A feltétel szemléletes jelentése érthetőbbé válik, ha összevetjük a legrövidebb út probléma egyszerűbb optimalitási kritériumával. A szokásos jelöléssel legyen d(i) az i csúcs távolságcímkéje. Egy megoldás csak akkor lehet optimális, ha minden (i, j) élre d(j) d(i) + c ij. Vegyük észre, hogy ezt átírhatjuk az alábbi ekvivalens formába: minden (i, j) élre c d ij = c ij + d(i) d(j) 0. Ez az alak pedig π = d választással a fenti optimalitási feltételnek felel meg: a G x maradék hálózat minden (i, j) élére c π ij = c ij π(i) + π(j) 0. 15
17 Általában is igaz, hogy szoros kapcsolat áll fenn a minimális költségű folyam feladatban szereplő csúcspotenciálok és megfelelő távolságcímkék között. A µ(i) = π(i) mennyiséget értelmezhetjük úgy, mint egy egységnyi terméknek az i csúcsban való beszerzési költségét, és így c π ij a teljes költsége annak, hogy egy egységnyi terméket az i csúcsban megvásárolunk, majd a j csúcsba elszállítjuk és ott eladjuk. Ezek alapján egy szállítási terv, egy folyam nyilván akkor és csak akkor optimális, ha azon (i, j) élek mentén, amelyek maradék kapacitása pozitív (még szállíthatunk), már nem tudunk javítani, vagyis ha c π ij 0, azaz µ(j) µ(i) + c ij. Ez pedig éppen a fenti optimalitási kritériumot adja. Bizonyítás. A redukált költség optimalitási feltétel ekvivalens a negatív kör feltétellel. Tegyük fel, hogy egy x megengedett megoldásra és π potenciálra teljesül az előbbi. Ekkor nyilván minden G x -beli W irányított körre (i,j) W cπ ij 0, így az 1.8. állításban szereplő b) összefüggést felhasználva (i,j) W c ij 0, tehát G x -ban nincs negatív kör. Másrészt tegyük fel, hogy G x nem tartalmaz negatív kört, és egészítsük ki ezt a gráfot egy olyan virtuális s csúccsal, amelyből minden valós i csúcsba egy nulla költségű él vezet. Az így kapott gráf szintén nem tartalmaz negatív kört, és az s csúcsból minden csúcs elérhető. Ismert, hogy ilyenkor az egyes csúcsoknak az s csúcstól mért d( ) távolsága jóldefiniált (d(i) 0 minden i csúcsra), és minden (i, j) élre d(j) d(i) + c ij, vagyis c ij +d(i) d(j) 0. Tehát π = d választással éppen a kívánt feltételt kapjuk. Az előző két tételben a maradék hálózat segítségével adtuk meg az optimalitás feltételét, az alábbiakban pedig kimondjuk ezek ekvivalens átfogalmazását az eredeti hálózatra nézve Tétel (Complementary Slackness optimalitási feltétel). A minimális költségű folyam feladat egy x megengedett megoldása akkor és csak akkor optimális, ha létezik olyan π potenciálfüggvény, amellyel a G gráf minden (i, j) élére teljesülnek az alábbiak. a) Ha c π ij > 0, akkor x ij = 0. b) Ha 0 < x ij < u ij, akkor c π ij = 0. c) Ha c π ij < 0, akkor x ij = u ij. Bizonyítás. Felhasználva, hogy a maradék hálózat definíciója szerint egy (i, j) E él esetén c π ji = c π ij, továbbá hogy az (i, j) él pontosan akkor szerepel a G x hálózatban, ha x ij < u ij, a (j, i) él pedig pontosan akkor, ha x ij > 0, egyszerű meggondolással adódik, hogy a tétel ekvivalens a redukált költség feltétellel. 16
18 1.8. A feladat dualitása A lineáris programozásban különösen is fontos fogalom a dualitás, amelyet alapvetően ismertnek feltételezünk. Minden lineáris programozási feladathoz megadható egy ún. duál feladat, amelynek optimális célfüggvényértéke megegyezik az eredeti (primál) probléma optimális megoldásának célfüggvényértékével (ha ez létezik). Maximalizálási feladat duálisa minimalizálási feladat, és fordítva. Sok olyan probléma van, amelyet megfogalmazhatunk lineáris programozási feladatként, de a specialitásait kihasználva hatékonyabb megoldási módszereket adhatunk rá, mint az általános esetre. Ilyen a minimális költségű folyam feladat is. A dualitás viszont ezekben az esetekben is fontos, ugyanis a duál probléma megtalálása szinte mindig együtt jár egy polinomiális megoldási módszer megtalálásával, továbbá többnyire egyszerű és hatékonyan ellenőrizhető optimalitási feltételeket eredményez. Az alábbiakban az 1.5. alfejezetben megfogalmazott (11) (13) feladat dualitását vizsgáljuk. Egy lineáris programozási feladat duálisának meghatározásakor egy duál változót rendelünk a primál feladat minden korlátozó feltételéhez (kivéve a nemnegativitási feltételeket). Az i csúcsra vonatkozó termelés/fogyasztás feltételhez rendeljük hozzá a π(i) változót, az (i, j) élre vonatkozó kapacitásfeltételhez pedig az α ij változót. Ezekkel a jelölésekkel a duális minimális költségű folyam feladat a következőképpen írható fel: határozzuk meg a max b(i)π(i) u ij α ij (14) i V értéket a feltételek mellett. (i,j) E π(i) π(j) α ij c ij (i, j) E, (15) α ij 0 (i, j) E (16) A további vizsgálatok egyszerűbbé tehetők azáltal, ha ebből az alakból az α ij változókat kitranszformáljuk. Vegyük észre, hogy a π(i) értékeket csúcspotenciáloknak tekintve, és az szakaszban bevezetett redukált költségek c π ij = c ij π(i) + π(j) jelölését felhasználva, a (15) feltételt átírhatjuk az alábbi módon: α ij c π ij (i, j) E. (17) Mivel a célfüggvény értékét maximalizálni szeretnénk, és minden α ij 0 változó együtthatója negatív vagy nulla, mindegyikhez a legkisebb lehetséges értéket szeretnénk hozzárendelni. Így a (16) és (17) feltételek alapján α ij = max{0, c π ij} (i, j) E. (18) Tehát ha ismerjük a π(i) változók optimális értékét, akkor az α ij változók optimális értéke meghatározható ilyen módon. Ezek alapján a (14) (16) duál feladatból kitranszformálva 17
19 az α ij változókat az alábbi ekvivalens feladatot kapjuk: max b(i)π(i) u ij max{0, c π ij}. (19) i V (i,j) E Ezzel a duál probléma optimális π(i) értékek megtalálására egyszerűsödött. Ezek után kimondunk két fontos tételt, amelyek a lineáris programozásban ismert általános dualitás tételek speciális esetei [2], a bizonyításukat viszont jelen dolgozat keretében nem tárgyaljuk Tétel (Gyenge dualitás tétel). Legyen z(x) a primál feladat egy x megengedett megoldásához tartozó célfüggvényérték, w(π) pedig a duál feladat egy π megengedett megoldásához tartozó célfüggvényérték. Ekkor w(π) z(x). A tétel közvetlen következménye, hogy ha egy x primál megengedett megoldás és egy π duál megengedett megoldás célfüggvényértéke megegyezik, akkor mindkettő optimális. A következő tétel pedig ilyen primál duál megoldáspárok létezését mondja ki Tétel (Erős dualitás tétel). Ha a primál feladatnak létezik optimális megoldása, akkor a duál feladatnak is, és a két optimális célfüggvényérték megegyezik. Megjegyezzük, hogy a korábban adott 1.1. és 1.2. feltételezések mellett a tételben elegendő lenne megengedett megoldás létezését feltenni, ugyanis abból következik az optimális megoldás létezése. Fontos kapcsolat van a minimális költségű folyam feladat dualitása és a korábban bemutatott optimalitási feltételek között, amelyet az alábbi tételben fogalmazunk meg Tétel. Egy x megengedett folyam és π potenciálfüggvény esetén z(x) = w(π) akkor és csak akkor teljesül, ha az (x, π) pár kielégíti a redukált költség optimalitási feltételt. Tehát az és tétel értelmében optimális potenciálfüggvények megegyeznek az optimális duál megoldásokkal. Így a későbbiekben tárgyalt minden olyan algoritmus, amely redukált élköltségekkel dolgozik, és a folyamértékek mellett megfelelő csúcspotenciálokat is meghatároz, egyaránt szolgáltat optimális primál és duál megoldást is Optimális folyamok és potenciálok Az előző két alfejezetben bemutattuk az optimális folyamok és optimális csúcspotenciálok kapcsolatát. Az alábbiakban pedig azt a kérdést vizsgáljuk, hogyan lehet egy optimális folyamból kiindulva optimális potenciálfüggvényt, illetve optimális potenciálfüggvényből kiindulva optimális folyamot meghatározni. 18
20 Elsőként tegyük fel, hogy adott egy x optimális folyam. Ekkor az tétel bizonyításában leírt módon egy legrövidebb út-kereséssel meghatározhatunk optimális csúcspotenciálokat. Ezek után vizsgáljuk meg a fordított esetet, amikor optimális potenciálértékek ismeretében szeretnénk egy optimális folyamot meghatározni. Ehhez a G gráf éleit soroljuk be három csoportba a c π ij redukált költségek szerint. Ha c π ij > 0, akkor az optimalitási feltétel a) pontja szerint x ij-nek nullának kell lennie. Legyen tehát x ij = 0, és töröljük az (i, j) élt a gráfból. Ha c π ij < 0, akkor az optimalitási feltétel c) pontja szerint legyen x ij = u ij, és töröljük az (i, j) élt a gráfból. Mivel azonban u ij egységnyi folyamot átküldtünk ezen az élen, b(i)-t csökkentsük, b(j)-t pedig növeljük u ij -vel. Ha c π ij = 0, akkor az optimalitási feltétel alapján x ij tetszőleges értéket felvehet 0 és u ij között. Az ilyen módon kapott hálózatban tehát egy megengedett folyamot keresve az eredeti feladat egy optimális megoldását kapjuk. A szakaszban pedig megmutatjuk, hogy a megengedett folyam-keresés visszavezethető maximális folyam feladatra. 19
21 2. Megoldási módszerek Az elmúlt néhány évtized során számos algoritmust dolgoztak ki a minimális költségű folyam feladat megoldására. Ezeket többféleképpen is csoportosíthatjuk: egyrészt a megközelítés módja szerint megkülönböztetünk primál, duál, primál duál és relaxációs módszereket, másrészt a műveletigényük alapján beszélhetünk kvázipolinomiális, polinomiális és erősen polinomiális algoritmusokról. Ebben a fejezetben az utóbbi, elméleti és történeti szempontból is meghatározóbb csoportosítás szerint áttekintjük az ismert módszerek széles skáláját Műveletigény-elemzés Az egyes megoldási módszerek tárgyalása során központi szerepet kap a műveletigényük elemzése és aszimptotikus összehasonlítása, amelyben mindig a maximális lépésszám (legrosszabb eset) vizsgálatára szorítkozunk. A minimális költségű folyam feladatot megoldó algoritmusok műveletigényét a következő paraméterek függvényében adjuk meg: n a gráf csúcsainak, m az éleinek száma, C az élköltségek, U pedig a kapacitások és termelés/fogyasztás értékek felső korlátja. Azt mondjuk, hogy egy algoritmus kvázipolinomiális, ha a műveletigénye n, m, C, U egy polinomiális függvényével felülről becsülhető; polinomiális, ha a futási ideje az élköltségek és kapacitások nagyságának csak logaritmusától függ, vagyis n, m, log C, log U függvényében polinomiális; illetve erősen polinomiális, amennyiben egy kizárólag n-től és m-től függő polinomiális függvénnyel felülről becsülhető. A vizsgált módszerekben gyakran merülnek fel részfeladatként legrövidebb út, illetve maximális folyam problémák, így a futási idejük erősen függ attól, hogy ezek megoldására milyen algoritmust használunk. Ezért ilyenkor a műveletigényt ennek függvényében adjuk meg, az alábbiakban pedig áttekintjük az említett két feladatra jelenleg ismert legjobb lépésszámkorlátokat. Jelölje SP (n, m, C) a legrövidebb út-keresés műveletigényét egy C-nél nem nagyobb nemnegatív egész élköltségeket tartalmazó gráfban, MF (n, m, U) pedig a maximális folyam-keresés műveletigényét egy U-nál nem nagyobb egész kapacitásokkal rendelkező hálózatban. Nemnegatív élköltségek esetén a legrövidebb út probléma a Dijkstra-algoritmus Fibonacci-kupacokat használó változatával [23] megoldható SP (n, m) = O(m + n log n) (20) erősen polinomiális időben. Viszonylag kicsi, egész élköltségek esetén azonban ennél jobb korlátok is adhatók. Ahuja, Mehlhorn, Orlin és Tarjan 1990-ben [3] adott algoritmusa O(m + n log C) időben fut, a legjobb ismert polinomiális korlátok pedig a Thorup által 2003-ban [66] bemutatott adatszerkezetekkel érhetők el: SP (n, m, C) = O(m + n min{log log n, log log C}). (21) 20
22 A maximális folyam feladatra Dinic 1970-ben [20] egy O(n 2 m) idejű algoritmust, tőle függetlenül Edmonds és Karp pedig 1972-ben [21] egy O(nm 2 ) idejű algoritmust adott, amelyek Ford és Fulkerson módszerén [22] alapultak. Dinic algoritmusa a Sleator és Tarjan által 1983-ban [61] erre a célra kifejlesztett dinamikus fákkal O(nm log n) időben megvalósítható. Goldberg és Tarjan 1986-ban [31] kidolgozott egy másik nagyon hatékony megoldási módszert, az előfolyam (preflow) algoritmust, és dinamikus fák felhasználásával egy O(nm log(n 2 /m)) idejű implementációt adtak rá. Később Ahuja, Orlin és Tarjan [4] hasonló hatékonyságú skálázó algoritmusokat dolgozott ki. A legjobb erősen polinomiális korlát King, Rao és Tarjan [47] eredménye: MF (n, m) = O(nm log m/(n log n) n). (22) A legjobb polinomiális korlátot pedig 1998-ban Goldberg és Rao [30] adta: MF (n, m, U) = O(m min{n 2/3, m} log(n 2 /m) log U). (23) 2.2. Kvázipolinomiális algoritmusok Ebben az alfejezetben a minimális költségű folyam problémára adott kvázipolinomiális algoritmusokat mutatjuk be. Ezek nem csupán történeti jelentőséggel bírnak, ugyanis egyrészt a és szakaszban bemutatott negatív kör és ismételt legrövidebb út módszerek adják a két alapvető megközelítési módot (primál és duál), így alapját képezik több bonyolultabb algoritmusnak is; másrészt a és szakaszban tárgyalt relaxációs és szimplex alapú algoritmusok a gyakorlatban a leghatékonyabb módszerek közé tartoznak Negatív kör módszer A negatív kör (negative cycle vagy cycle-canceling) módszert Klein [48] dolgozta ki 1967-ben. Az algoritmus az negatív kör optimalitási feltételen alapul: először meghatározunk egy megengedett megoldást, majd minden iterációban negatív köröket keresünk az aktuális folyamhoz tartozó maradék hálózatban. Ha találunk ilyen kört, akkor azon a legkisebb maradék kapacitású élének megfelelő mennyiségű folyamot folyatunk, és ezzel az élt kiiktatjuk a maradék hálózatból, ha pedig már nem találunk, akkor az említett feltétel értelmében a folyam optimális. Klein egy O(nm) idejű távolságcímkéző legrövidebb út-algoritmust használt a negatív körök keresésére. Mivel a kezdeti folyam összköltségének mcu nyilván felső korlátja, és az algoritmus ezt minden lépésben legalább eggyel javítja (ugyanis minden kapacitás és folyamérték egész), az iterációk száma is legfeljebb mcu, így a teljes műveletigény O(nm 2 CU). 21
23 Az általános módszer nem határozza meg a negatív körök kiválasztásának sorrendjét, speciális választási szabályok alkalmazásával később különböző polinomiális változatokat dolgoztak ki. Weintraub [68] azt javasolta, hogy minden iterációban olyan kör mentén történjen javítás, amellyel a legnagyobb változás érhető el, később Barahona és Tardos Éva [6] ennek egy módosított változatáról megmutatta, hogy O(m 2 log(mcu) SP (n, m, C)) időben fut. Goldberg és Tarjan [33] pedig egy erősen polinomiális negatív kör algoritmust adott, amelyben mindig minimális átlagköltségű körök mentén javítanak. Megjegyezzük továbbá, hogy a szakaszban bemutatott primál hálózati szimplex algoritmus is a negatív kör módszer egy sajátos változata. A negatív kör algoritmusok primál megközelítési módot valósítanak meg, aminek fontos előnye, hogy bármely megengedett folyamból kiindulva alkalmazhatók. Ez különösen akkor lehet hasznos, ha adott egy közel optimális megoldás, és azt akarjuk javítani, amire tipikus példa az, amikor egy hálózatban valamilyen módszerrel már meghatároztunk egy minimális költségű folyamot, viszont utána néhány él költsége megváltozott. Ilyenkor a meglévő folyamot ezzel a módszerrel többnyire kevés iteráció árán optimális folyammá alakíthatjuk, feltéve persze, hogy a hálózatban történt változás kevés élt érint és nem túl jelentős. A negatív kör módszer egy egyszerűbb, valamint a fent említett erősen polinomiális változatát is megvalósítottuk, elsősorban elméleti jelentőségük miatt. A 3.2. alfejezetben ezt a két algoritmust és implementációjuk módját mutatjuk be Ismételt legrövidebb út módszer Jewell 1958-ban [42], Iri 1960-ban [41], valamint Busacker és Gowen 1960-ban [13] egymástól függetlenül dolgozta ki az ismételt legrövidebb út (successive shortest path) duál módszert. Megmutatták, hogy a minimális költségű folyam feladat megoldható legrövidebb út-keresések sorozatával, és ezzel egy O(nm 2 U) idejű algoritmust adtak. Később Edmonds és Karp [21], valamint Tomizawa felismerte, hogy csúcspotenciálok alkalmazásával biztosítani lehet a nemnegatív élköltségeket a legrövidebb út-keresésekhez, ezt felhasználva pedig egy nagyságrendileg gyorsabb, O(nU SP (n, m, nc)) idejű algoritmust dolgoztak ki (a továbbiakban minden esetben ezt vizsgáljuk). Megjegyezzük, hogy a futási időben azért SP (n, m, nc) szerepel, mert az algoritmusban használt redukált élköltségeknek nem C, hanem nc a felső korlátja. Az előző szakaszban bemutatott negatív kör módszerben egy primál megengedett megoldásból indulunk ki, és a célfüggvény lépésenkénti javításával érjük el, hogy teljesüljön az optimalitás feltétele. Ezzel szemben az ismételt legrövidebb út módszer duál megközelítési módot alkalmaz: az azonosan nulla folyamból kiindulva végig egy olyan folyamot tartunk nyilván, amelyre teljesülnek a nemnegativitási és kapacitásfeltételek, viszont megsértheti a termelés/fogyasztás feltételeket. Minden iterációban kiválasztunk egy s csúcsot, ahol még többlet van (vagyis a termelése nagyobb, mint a kifolyó és befolyó folyam 22
24 különbsége), és egy t csúcsot, ahol még hiány van, majd a maradék hálózat egy legrövidebb útja mentén átküldjük a lehető legnagyobb folyammennyiséget s-ből t-be. A fent említett csúcspotenciálok alkalmazásával biztosítani lehet, hogy az algoritmus minden lépésében teljesüljön az feltétel, tehát az eredeti élköltségek helyett használhatjuk a nemnegatív redukált költségeket, és így Dijkstra algoritmusával sokkal hatékonyabban kereshetünk legrövidebb utakat. Mivel minden lépésben csökkentjük valamely csúcsban a többletet, egy másik csúcsban pedig a hiányt, az iterációk száma legfeljebb nu/2 lehet, tehát az algoritmus valóban O(nU SP (n, m, nc)) időben fut. A későbbiekben bemutatunk olyan algoritmusokat, amelyek általában jóval hatékonyabbak, azonban viszonylag kis termelés/fogyasztás értékek esetén ez a módszer az egyik leggyorsabb. A gyakorlatban pedig sokszor felmerül például az a feladat, hogy egy hálózat két csúcsa között k értékű minimális költségű folyamot keresünk valamely kis k egészre, továbbá az szakaszban tárgyalt hozzárendelési feladat is ilyen hálózatot eredményez (U = 1). Ezen kívül ahogy korábban is említettük ez a módszer alapját képezi több bonyolultabb, skálázási technikát alkalmazó algoritmusnak is. Egyszerűsége és hatékonysága miatt megvalósítottuk az ismételt legrövidebb út algoritmust, valamint annak egy kapacitásskálázó változatát is, amelyeket a 3.3. alfejezetben részletesen tárgyalunk Primál duál módszer Ford és Fulkerson [22] kidolgozott egy primál duál megoldási módszert a minimális költségű folyam feladatra. Ez az ismételt legrövidebb út algoritmushoz hasonlóan egy olyan folyamot tart nyilván, amely megsértheti a termelés/fogyasztás feltételeket, és ezen minden lépésben legrövidebb utak mentén küldött folyamokkal javít. A különbség az, hogy a primál duál módszer minden iterációban egy maximális folyam feladatot megoldva egyszerre több legrövidebb út mentén javít. Az algoritmus azzal indul, hogy kiegészítjük a G gráfot egy s forrás csúccsal és egy t nyelő csúccsal oly módon, hogy minden i termelő csúcshoz felveszünk egy (s, i) élt b(i) kapacitással, és minden i fogyasztó csúcshoz egy (i, t) élt b(i) kapacitással. Az egyes iterációkban pedig először egy s-ből indított legrövidebb út-kereséssel meghatározzuk a csúcspotenciálokat, hogy teljesüljön a redukált költség feltétel, majd a maradék hálózatban egy maximális folyamot keresünk s-ből t-be kizárólag nulla redukált költségű éleket felhasználva. Mivel minden redukált költség nemnegatív, a talált folyamban megjelenő s t utak biztosan legrövidebb utak. Ezen folyam mentén javítva legalább eggyel csökken az s csúcsban a többlet, továbbá legalább eggyel csökken a t csúcs potenciálja is (hiszen a következő legrövidebb út-keresés során már legalább egy távolságra lesz s-től). Mivel kezdetben az összes többlet legfeljebb nu/2 lehet, és egyik csúcs potenciálja sem csökkenhet nc alá, legfeljebb min{nu/2, nc} iteráció lehet, így az algoritmus műveletigénye O ( min{nu, nc}(sp (n, m, nc) + MF (n, m, U)) ). 23
Minimális költségű folyam-algoritmusok összehasonlítása
Minimális költségű folyam-algoritmusok összehasonlítása Király Zoltán¹, Kovács Péter² ¹ ELTE TTK Számítógéptudományi Tanszék, ELTE CNL kiraly@cs.elte.hu ² ELTE IK Algoritmusok és Alkalmazásaik Tanszék,
Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2017/ Szegedi Tudományegyetem Informatikai Intézet
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 7. Előadás Árazási interpretáció Tekintsük újra az erőforrás allokációs problémát (vonat
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma
Hálózati Folyamok Alkalmazásai. Mályusz Levente BME Építéskivitelezési és Szervezési Tanszék
Hálózati Folyamok Alkalmazásai Mályusz Levente BME Építéskivitelezési és Szervezési Tanszék Maximális folyam 7 7 9 3 2 7 source 8 4 7 sink 7 2 9 7 5 7 6 Maximális folyam feladat Adott [N, A] digráf (irányított
A szimplex algoritmus
A szimplex algoritmus Ismétlés: reprezentációs tétel, az optimális megoldás és az extrém pontok kapcsolata Alapfogalmak: bázisok, bázismegoldások, megengedett bázismegoldások, degenerált bázismegoldás
Optimalizálás alapfeladata Legmeredekebb lejtő Lagrange függvény Log-barrier módszer Büntetőfüggvény módszer 2017/
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 9. Előadás Az optimalizálás alapfeladata Keressük f függvény maximumát ahol f : R n R és
A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2018/
Operációkutatás I. 2018/2019-2. Szegedi Tudományegyetem Informatika Intézet Számítógépes Optimalizálás Tanszék 2. Előadás LP alapfeladat A lineáris programozás (LP) alapfeladata standard formában Max c
A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2017/
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatika Intézet Számítógépes Optimalizálás Tanszék 2. Előadás LP alapfeladat A lineáris programozás (LP) alapfeladata standard formában Max c
Gráfelmélet/Diszkrét Matematika MSc hallgatók számára. 3. Előadás
Gráfelmélet/Diszkrét Matematika MSc hallgatók számára 3. Előadás Előadó: Hajnal Péter Jegyzetelő: Pék Máté 2009. szeptember 21. 1. Folyamok 1.1. Definíció. G = (V, E, K, B) irányított gráf, ha e! v : ekv
Totális Unimodularitás és LP dualitás. Tapolcai János
Totális Unimodularitás és LP dualitás Tapolcai János tapolcai@tmit.bme.hu 1 Optimalizálási feladat kezelése NP-nehéz Hatékony megoldás vélhetően nem létezik Jó esetben hatékony algoritmussal közelíteni
11. Előadás. 11. előadás Bevezetés a lineáris programozásba
11. Előadás Gondolkodnivalók Sajátérték, Kvadratikus alak 1. Gondolkodnivaló Adjuk meg, hogy az alábbi A mátrixnak mely α értékekre lesz sajátértéke a 5. Ezen α-ák esetén határozzuk meg a 5 sajátértékhez
Algoritmusok bonyolultsága
Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,
Az optimális megoldást adó algoritmusok
Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.
Algoritmuselmélet 11. előadás
Algoritmuselmélet 11. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Március 26. ALGORITMUSELMÉLET 11. ELŐADÁS 1 Kruskal
HÁLÓZAT Maximális folyam, minimális vágás
HÁLÓZAT Maximális folyam, minimális vágás HÁLÓZAT informálisan Hálózat Irányított gráf Mindegyik élnek adott a (nemnegatív) kapacitása Spec csúcsok: Forrás (Source): a kiindulási pont csak ki élek Nyelő
Általános algoritmustervezési módszerek
Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás
22. GRÁFOK ÁBRÁZOLÁSA
22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is
Függvények növekedési korlátainak jellemzése
17 Függvények növekedési korlátainak jellemzése A jellemzés jól bevált eszközei az Ω, O, Θ, o és ω jelölések. Mivel az igények általában nemnegatívak, ezért az alábbi meghatározásokban mindenütt feltesszük,
Döntéselőkészítés. I. előadás. Döntéselőkészítés. Előadó: Dr. Égertné dr. Molnár Éva. Informatika Tanszék A 602 szoba
I. előadás Előadó: Dr. Égertné dr. Molnár Éva Informatika Tanszék A 602 szoba Tárggyal kapcsolatos anyagok megtalálhatók: http://www.sze.hu/~egertne Konzultációs idő: (páros tan. hét) csütörtök 10-11 30
5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.
5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. Optimalis feszítőfák Egy összefüggő, irányítatlan
Hálózati Folyamok Alkalmazásai. Mályusz Levente BME Építéskivitelezési és Szervezési Tanszék
Hálózati Folyamok Alkalmazásai Mályusz Levente BME Építéskivitelezési és Szervezési Tanszék Alsó felső korlátos maximális folyam 3,9 3 4,2 4,8 4 3,7 2 Transzformáljuk több forrást, több nyelőt tartalmazó
1/ gyakorlat. Hiperbolikus programozási feladat megoldása. Pécsi Tudományegyetem PTI
1/12 Operációkutatás 5. gyakorlat Hiperbolikus programozási feladat megoldása Pécsi Tudományegyetem PTI 2/12 Ha az Hiperbolikus programozási feladat feltételek teljesülése mellett a A x b x 0 z(x) = c
További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék
További forgalomirányítási és szervezési játékok 1. Nematomi forgalomirányítási játék A forgalomirányítási játékban adott egy hálózat, ami egy irányított G = (V, E) gráf. A gráfban megengedjük, hogy két
A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex
A sorozat fogalma Definíció. A természetes számok N halmazán értelmezett függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet a valós számok halmaza, valós számsorozatról beszélünk, mígha az
Analízis előadás és gyakorlat vázlat
Analízis előadás és gyakorlat vázlat Készült a PTE TTK GI szakos hallgatóinak Király Balázs 2010-11. I. Félév 2 1. fejezet Számhalmazok és tulajdonságaik 1.1. Nevezetes számhalmazok ➀ a) jelölése: N b)
11. Előadás. 1. Lineáris egyenlőség feltételek melletti minimalizálás
Optimalizálási eljárások MSc hallgatók számára 11. Előadás Előadó: Hajnal Péter Jegyzetelő: Hajnal Péter 2011. április 27. 1. Lineáris egyenlőség feltételek melletti minimalizálás Múlt héten nem szerepeltek
1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI
/ Operációkutatás. gyakorlat Lineáris Programozási feladatok megoldása szimplex módszerrel Pécsi Tudományegyetem PTI /. Legyen adott az alábbi LP-feladat: x + 4x + x 9 x + x x + x + x 6 x, x, x x + x +
15. LINEÁRIS EGYENLETRENDSZEREK
15 LINEÁRIS EGYENLETRENDSZEREK 151 Lineáris egyenletrendszer, Gauss elimináció 1 Definíció Lineáris egyenletrendszernek nevezzük az (1) a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + + a
Operációkutatás. Vaik Zsuzsanna. Budapest október 10. First Prev Next Last Go Back Full Screen Close Quit
Operációkutatás Vaik Zsuzsanna Vaik.Zsuzsanna@ymmfk.szie.hu Budapest 200. október 10. Mit tanulunk ma? Szállítási feladat Megoldása Adott: Egy árucikk, T 1, T 2, T,..., T m termelőhely, melyekben rendre
A Szállítási feladat megoldása
A Szállítási feladat megoldása Virtuális vállalat 201-2014 1. félév 4. gyakorlat Dr. Kulcsár Gyula A Szállítási feladat Adott meghatározott számú beszállító (source) a szállítható mennyiségekkel (transportation
út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.
1 Az utazó ügynök problémája Utazó ügynök feladat Adott n számú város és a városokat összekötő utak, amelyeknek ismert a hossza. Adott továbbá egy ügynök, akinek adott városból kiindulva, minden várost
További programozási esetek Hiperbolikus, kvadratikus, integer, bináris, többcélú programozás
További programozási esetek Hiperbolikus, kvadratikus, integer, bináris, többcélú programozás Készítette: Dr. Ábrahám István Hiperbolikus programozás Gazdasági problémák optimalizálásakor gyakori, hogy
Érzékenységvizsgálat
Érzékenységvizsgálat Alkalmazott operációkutatás 5. elıadás 008/009. tanév 008. október 0. Érzékenységvizsgálat x 0 A x b z= c T x max Kapacitások, együtthatók, célfüggvény együtthatók változnak => optimális
Diszkrét matematika 2.C szakirány
Diszkrét matematika 2.C szakirány 2017. ősz 1. Diszkrét matematika 2.C szakirány 2. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.
Diszkrét matematika 2.C szakirány
Diszkrét matematika 2.C szakirány 2015. ősz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2015.
Opkut deníciók és tételek
Opkut deníciók és tételek Készítette: Bán József Deníciók 1. Deníció (Lineáris programozási feladat). Keressük meg adott lineáris, R n értelmezési tartományú függvény, az ún. célfüggvény széls értékét
19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI
19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI Ebben a fejezetben aszimptotikus (nagyságrendi) alsó korlátot adunk az összehasonlításokat használó rendező eljárások lépésszámára. Pontosabban,
Operációkutatás. 4. konzultáció: Szállítási feladat. A feladat LP modellje
Operációkutatás 1 NYME KTK, gazdálkodás szak, levelező alapképzés 2002/2003. tanév, II. évf. 2.félév Előadó: Dr. Takách Géza NyME FMK Információ Technológia Tanszék 9400 Sopron, Bajcsy Zs. u. 9. GT fszt.
Követelmények Motiváció Matematikai modellezés: példák A lineáris programozás alapfeladata 2017/ Szegedi Tudományegyetem Informatikai Intézet
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 1. Előadás Követelmények, teljesítés feltételei Vizsga anyaga Előadásokhoz tartozó diasor
Hálózati folyamok. Tétel: A maximális folyam értéke megegyezik a minimális vágás értékével.
Hálózati folyamok Definíció: Legyen G = (V,E) egy irányított gráf, adott egy c: E R + {0} ún. kapacitásfüggvény, amely minden (u,v) ε E élhez hozzárendel egy nem negatív c(u,v) kapacitást. A gráfnak van
f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva
6. FÜGGVÉNYEK HATÁRÉRTÉKE ÉS FOLYTONOSSÁGA 6.1 Függvény határértéke Egy D R halmaz torlódási pontjainak halmazát D -vel fogjuk jelölni. Definíció. Legyen f : D R R és legyen x 0 D (a D halmaz torlódási
Nemlineáris programozás 2.
Optimumszámítás Nemlineáris programozás 2. Többváltozós optimalizálás feltételek mellett. Lagrange-feladatok. Nemlineáris programozás. A Kuhn-Tucker feltételek. Konvex programozás. Sydsaeter-Hammond: 18.1-5,
Optimumkeresés számítógépen
C Optimumkeresés számítógépen Az optimumok megtalálása mind a gazdasági életben, mind az élet sok más területén nagy jelentőségű. A matematikában számos módszert dolgoztak ki erre a célra, például a függvények
Követelmények Motiváció Matematikai modellezés: példák A lineáris programozás alapfeladata 2017/ Szegedi Tudományegyetem Informatikai Intézet
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 1. Előadás Követelmények, teljesítés feltételei Vizsga anyaga Előadásokhoz tartozó diasor
Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás
Algoritmusok Tervezése 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás Mi az algoritmus? Lépések sorozata egy feladat elvégzéséhez (legáltalánosabban) Informálisan algoritmusnak nevezünk bármilyen jól definiált
Diszkrét matematika 2. estis képzés
Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 10. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék
Döntéselőkészítés. VII. előadás. Döntéselőkészítés. Egyszerű Kőnig-feladat (házasság feladat)
VII. előadás Legyenek adottak Egyszerű Kőnig-feladat (házasság feladat) I, I 2,, I i,, I m személyek és a J, J 2,, J j,, J n munkák. Azt, hogy melyik személy melyik munkához ért ( melyik munkára van kvalifikálva)
1/12. 3. gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI
/ Operációkutatás. gyakorlat Lineáris Programozási feladatok megoldása szimplex módszerrel Pécsi Tudományegyetem PTI Normál feladatok megoldása szimplex módszerrel / / Normál feladatok megoldása szimplex
6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének
6. Függvények I. Elméleti összefoglaló A függvény fogalma, értelmezési tartomány, képhalmaz, értékkészlet Legyen az A és B halmaz egyike sem üreshalmaz. Ha az A halmaz minden egyes eleméhez hozzárendeljük
1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba
Hibaforrások Hiba A feladatok megoldása során különféle hibaforrásokkal találkozunk: Modellhiba, amikor a valóságnak egy közelítését használjuk a feladat matematikai alakjának felírásához. (Pl. egy fizikai
Bevezetés az operációkutatásba A lineáris programozás alapjai
Bevezetés az operációkutatásba A lineáris programozás alapjai Alkalmazott operációkutatás 1. elıadás 2008/2009. tanév 2008. szeptember 12. Mi az operációkutatás (operations research)? Kialakulása: II.
Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.
11. gyakorlat Branch-and-Bound a korlátozás és szétválasztás módszere 1. Az egészértéketű programozás 1.1. Bevezető Bizonyos feladatok modellezése kapcsán előfordulhat olyan eset, hogy a megoldás során
Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.
Nagyságrendek Kiegészítő anyag az Algoritmuselmélet tárgyhoz (a Rónyai Ivanyos Szabó: Algoritmusok könyv mellé) Friedl Katalin BME SZIT friedl@cs.bme.hu 018. február 1. Az O, Ω, Θ jelölések Az algoritmusok
Diszkrét matematika 2.C szakirány
Diszkrét matematika 2.C szakirány 2015. tavasz 1. Diszkrét matematika 2.C szakirány 1. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu Komputeralgebra Tanszék 2015. tavasz Gráfelmélet Diszkrét
Diszkrét matematika 2.
Diszkrét matematika 2. 2018. szeptember 21. 1. Diszkrét matematika 2. 2. előadás Fancsali Szabolcs Levente nudniq@cs.elte.hu www.cs.elte.hu/ nudniq Komputeralgebra Tanszék 2018. szeptember 21. Gráfelmélet
Diszkrét Matematika MSc hallgatók számára. 4. Előadás
Diszkrét Matematika MSc hallgatók számára 4. Előadás Előadó: Hajnal Péter Jegyzetelő: Szarvák Gábor 2012. február 28. Emlékeztető. A primál feladat optimális értékét p -gal, a feladat optimális értékét
Hadamard-mátrixok Előadó: Hajnal Péter február 23.
Szimmetrikus kombinatorikus struktúrák MSc hallgatók számára Hadamard-mátrixok Előadó: Hajnal Péter 2012. február 23. 1. Hadamard-mátrixok Ezen az előadáson látásra a blokkrendszerektől független kombinatorikus
A lineáris programozás alapjai
A lineáris programozás alapjai A konvex analízis alapjai: konvexitás, konvex kombináció, hipersíkok, félterek, extrém pontok, Poliéderek, a Minkowski-Weyl tétel (a poliéderek reprezentációs tétele) Lineáris
A szimplex tábla. p. 1
A szimplex tábla Végződtetés: optimalitás és nem korlátos megoldások A szimplex algoritmus lépései A degeneráció fogalma Komplexitás (elméleti és gyakorlati) A szimplex tábla Példák megoldása a szimplex
Diszkrét matematika 2.C szakirány
Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.
Nemkonvex kvadratikus egyenlőtlenségrendszerek pontos dualitással
pontos dualitással Imre McMaster University Advanced Optimization Lab ELTE TTK Operációkutatási Tanszék Folytonos optimalizálás szeminárium 2004. július 6. 1 2 3 Kvadratikus egyenlőtlenségrendszerek Primál
SHk rövidítéssel fogunk hivatkozni.
Nevezetes függvény-határértékek Az alábbiakban a k sorszámú függvény-határértékek)re az FHk rövidítéssel, a kompozíció határértékéről szóló első, illetve második tételre a KL1, illetve a KL rövidítéssel,
A szimplex algoritmus
. gyakorlat A szimplex algoritmus Az előző órán bevezetett feladat optimális megoldását fogjuk megvizsgálni. Ehhez új fogalmakat, és egy algoritmust tanulunk meg. Hogy az algoritmust alkalmazni tudjuk,
17. előadás: Vektorok a térben
17. előadás: Vektorok a térben Szabó Szilárd A vektor fogalma A mai előadásban n 1 tetszőleges egész szám lehet, de az egyszerűség kedvéért a képletek az n = 2 esetben szerepelnek. Vektorok: rendezett
Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor
Gráfok 2. Legrövidebb utak, feszítőfák előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok 2
Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.
Programkonstrukciók Definíció Legyen π feltétel és S program A-n. A DO A A relációt az S-ből a π feltétellel képezett ciklusnak nevezzük, és (π, S)-sel jelöljük, ha 1. a / [π] : DO (a) = { a }, 2. a [π]
Analízis I. Vizsgatételsor
Analízis I. Vizsgatételsor Programtervező Informatikus szak 2008-2009. 2. félév Készítette: Szabó Zoltán SZZNACI.ELTE zotyo@bolyaimk.hu v.0.6 RC 004 Forrás: Oláh Gábor: ANALÍZIS I.-II. VIZSGATÉTELSOR 2006-2007-/2
S Z Á L L Í T Á S I F E L A D A T
Döntéselmélet S Z Á L L Í T Á S I F E L A D A T Szállítási feladat meghatározása Speciális lineáris programozási feladat. Legyen adott m telephely, amelyeken bizonyos fajta, tetszés szerint osztható termékből
minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.
Függvények határértéke és folytonossága Egy f: D R R függvényt korlátosnak nevezünk, ha a függvényértékek halmaza korlátos. Ha f(x) f(x 0 ) teljesül minden x D esetén, akkor x 0 -at a függvény maximumhelyének
Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.
Algoritmuselmélet Bonyolultságelmélet Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 12. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet
Assignment problem Hozzárendelési feladat (Szállítási feladat speciális esete)
Assignment problem Hozzárendelési feladat (Szállítási feladat speciális esete) C költség mátrix költség Munkákat hozzá kell rendelni gépekhez: egy munka-egy gép c(i,j) mennyi be kerül i-dik munka j-dik
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék 2016/17 2. félév 8. Előadás Dr. Kulcsár Gyula egyetemi docens Kereső algoritmusok alkalmazása
Gráfalgoritmusok ismétlés ősz
Gráfalgoritmusok ismétlés 2017. ősz Gráfok ábrázolása Egy G = (V, E) gráf ábrázolására alapvetően két módszert szoktak használni: szomszédsági listákat, illetve szomszédsági mátrixot. A G = (V, E) gráf
Diszkrét matematika 2. estis képzés
Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék
Diszkrét matematika 2. estis képzés
Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék
Nem-lineáris programozási feladatok
Nem-lineáris programozási feladatok S - lehetséges halmaz 2008.02.04 Dr.Bajalinov Erik, NyF MII 1 Elég egyszerű példa: nemlineáris célfüggvény + lineáris feltételek Lehetséges halmaz x 1 *x 2 =6.75 Gradiens
Diszkrét matematika 2.C szakirány
Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék
Egyváltozós függvények 1.
Egyváltozós függvények 1. Filip Ferdinánd filip.ferdinand@bgk.uni-obuda.hu siva.banki.hu/jegyzetek 015 szeptember 1. Filip Ferdinánd 015 szeptember 1. Egyváltozós függvények 1. 1 / 5 Az el adás vázlata
Diverzifikáció Markowitz-modell MAD modell CAPM modell 2017/ Szegedi Tudományegyetem Informatikai Intézet
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 11. Előadás Portfólió probléma Portfólió probléma Portfólió probléma Adott részvények (kötvények,tevékenységek,
Diszkrét matematika 2. estis képzés
Diszkrét matematika 2. estis képzés 2016. tavasz 1. Diszkrét matematika 2. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék
Diszkrét matematika I., 12. előadás Dr. Takách Géza NyME FMK Informatikai Intézet takach november 30.
1 Diszkrét matematika I, 12 előadás Dr Takách Géza NyME FMK Informatikai Intézet takach@infnymehu http://infnymehu/ takach 2005 november 30 Vektorok Definíció Egy tetszőleges n pozitív egész számra n-komponensű
Adatszerkezetek 2. Dr. Iványi Péter
Adatszerkezetek 2. Dr. Iványi Péter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér (root) Nincsennek hurkok!!! 2 Bináris fák Azokat
1. A k-szerver probléma
1. A k-szerver probléma Az egyik legismertebb on-line probléma a k-szerver probléma. A probléma általános deníciójának megadásához szükség van a metrikus tér fogalmára. Egy (M, d) párost, ahol M a metrikus
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék 2016/17 2. félév 5. Előadás Dr. Kulcsár Gyula egyetemi docens Tartalom 1. Párhuzamosan
FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI
FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI statisztika 8 VIII. REGREssZIÓ 1. A REGREssZIÓs EGYENEs Két valószínűségi változó kapcsolatának leírására az eddigiek alapján vagy egy numerikus
Kétfázisú szimplex algoritmus és speciális esetei
5. gyakorlat Kétfázisú szimplex algoritmus és speciális esetei. Emlékeztető Standard alak, áttérés Standard alak Minden feltétel et tartalmaz csak. A célfüggvényünket maximalizáljuk. A b vektor (jobb oldalon
Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:
Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: C(T ) = (u,v) T c(u,v) Az F = (V,T) gráf minimális feszitőfája G-nek,
Diszkrét matematika I.
Diszkrét matematika I. középszint 2014. ősz 1. Diszkrét matematika I. középszint 3. előadás Mérai László diái alapján Komputeralgebra Tanszék 2014. ősz Relációk Diszkrét matematika I. középszint 2014.
A számítástudomány alapjai
A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Legszélesebb utak Katona Gyula Y. (BME SZIT) A számítástudomány
A minimális költségűfolyam probléma megoldása hálózati szimplex-módszerrel
A minimális költségűfolyam probléma megoldása hálózati szimplex-módszerrel 1 A minimális költségűfolyam probléma megoldása hálózati szimplex-módszerrel DR. BENKŐJÁNOS GATE, Logisztikai Tanszék A hálózat
10. Előadás. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai
Optimalizálási eljárások MSc hallgatók számára 10. Előadás Előadó: Hajnal Péter Jegyzetelő: T. Szabó Tamás 2011. április 20. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai A feltétel nélküli optimalizálásnál
4. Előadás: Erős dualitás
Optimalizálási eljárások/operációkutatás MSc hallgatók számára 4. Előadás: Erős dualitás Előadó: Hajnal Péter 2018. Emlékeztető. A primál feladat optimális értékét p -gal, a feladat optimális értékét d
Ütemezési feladatok. Az ütemezési feladatok vizsgálata az 50-es évek elején kezdődött, majd
1 Ütemezési feladatok Az ütemezési feladatok vizsgálata az 50-es évek elején kezdődött, majd tekintettel a feladat gyakorlati fontosságára sok különböző modell tanulmányozására került sor, és a témakör
Dijkstra algoritmusa
Budapesti Fazekas és ELTE Operációkutatási Tanszék 201. július 1. Legrövidebb utak súlyozatlan esetben v 4 v 3 Feladat Hány élből áll a legrövidebb út ezen a gráfon az s és t csúcsok között? v v 6 v 7
10. előadás. Konvex halmazok
10. előadás Konvex halmazok Konvex halmazok Definíció: A K ponthalmaz konvex, ha bármely két pontjának összekötő szakaszát tartalmazza. Állítás: Konvex halmazok metszete konvex. Konvex halmazok uniója
Diszkrét matematika 1. estis képzés
Diszkrét matematika 1. estis képzés 2019. tavasz 1. Diszkrét matematika 1. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján
M. 33. Határozza meg az összes olyan kétjegyű szám összegét, amelyek 4-gyel osztva maradékul 3-at adnak!
Magyar Ifjúság 6 V SOROZATOK a) Három szám összege 76 E három számot tekinthetjük egy mértani sorozat három egymás után következő elemének vagy pedig egy számtani sorozat első, negyedik és hatodik elemének
Ütemezési problémák. Kis Tamás 1. ELTE Problémamegoldó Szeminárium, ősz 1 MTA SZTAKI. valamint ELTE, Operációkutatási Tanszék
Ütemezési problémák Kis Tamás 1 1 MTA SZTAKI valamint ELTE, Operációkutatási Tanszék ELTE Problémamegoldó Szeminárium, 2012. ősz Kivonat Alapfogalmak Mit is értünk ütemezésen? Gépütemezés 1 L max 1 rm
2017/ Szegedi Tudományegyetem Informatikai Intézet
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 8. Előadás Bevezetés Egy olyan LP-t, amelyben mindegyik változó egészértékű, tiszta egészértékű
3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa
A változó fogalma Definíció Legyen A = A 1 A 2... A n állapottér. A pr Ai projekciós függvényeket változóknak nevezzük: : A A i pr Ai (a) = a i ( a = (a 1, a 2,..., a n ) A). A változók jelölése: v i =