1 / 57

DMBO

DMBO. Sieci. Wprowadzenie do grafów: Mosty w Koenigsbergu. Leonard Euler zastanawiał się, czy można przejść przez każdy most tylko raz (1736). Konceptualizacja - węzły. Konceptualizacja - krawędzie. Czy istnieje spacer po wszystkich mostach, tak aby żaden się nie powtórzył?.

Download Presentation

DMBO

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DMBO Sieci

  2. Wprowadzenie do grafów: Mosty w Koenigsbergu Leonard Euler zastanawiał się, czy można przejść przez każdy most tylko raz (1736)

  3. Konceptualizacja - węzły

  4. Konceptualizacja - krawędzie

  5. Czy istnieje spacer po wszystkich mostach, tak aby żaden się nie powtórzył?

  6. Gdyby tak zbudować dwa dodatkowe mosty.

  7. Każdy taki spacer musi wejść i wyjść z każdego wierzchołka dokładnie raz. Czyli stopień każdego wierzchołka musi być parzysty.

  8. Cykl Eulera Cykl Hamiltona Problem komiwojażera

  9. Problem komiwojażera – objazd cykl Czas trwania: 2 d 7 h 2 m Długość trasy: 3615 km

  10. Problem komiwojażera – objazd ścieżka Czas trwania: 2 d 4 h 37 m Długość trasy: 3436 km

  11. Problem komiwojażera – prawdziwy spacer Czas trwania:29 d 11 h 21 m Długość trasy: 3485 km

  12. Problem komiwojażera (travelling salesman problem TSP) • Problem możnazapisaćmatematyczniejako • Zmiennadecyzyjnaxijrównasię 1, gdykomiwojażerprzejeżdża z miastai do miastaj, 0 w przeciwnymprzypadku • Możliwośćprzejazdu z danegomiasta do tegosamegomiasta jest zabroniona

  13. Problem komiwojażera • Kosztprzejazdu z miasta do miasta to dij • Funkcjacelu to łącznykosztprzejazdutrasy • Pierwszeograniczenieoznacza, żekomiwojażermusiopuścićkażdemiastodokładnieraz • Drugieograniczenieoznacza, żekomiwojażermusiwjechać do każdegomiastadokładnieraz • Czy to jużwszystko? • Załóżmy, że w problemie z 5 miastamirozwiązanieoptymalne to x12=x23=x31=x45=x54=1 • To rozwiązaniespełniapowyższeograniczenia i możebyćoptymalne. Jednakzawierapodtrasy (subtours) – rozłącznepętle o rozmiarzemniejszymniżwszystkiemiasta • Trzebawprowadzićdodatkoweograniczenia

  14. Eliminacjapodtras • Pętledladwóchmiast • Pętledlatrzechmiast • Pętledlaczterechmiast • Itd. • Jednak w praktycznejimplementacjitakichograniczeńbyłobystanowczozadużo – w problemie z 30 miastamibyłoby 870 ograniczeńlikwidującychtylkopętledladwóchmiast

  15. Eliminacjapodtras – drugiepodejście • Wprowadzamydodatkowenieujemnezmienneciągłeui: • Podtrasysąwyeliminowane • Ile jest takichograniczeń? • (N-1)2-N, czyli w problemie z 30 miastamiwszystkichograniczeńbyłoby 812, a wcześniejtylkoograniczeńdlapętl o długościdwabyło 870.

  16. Gra • http://www.tsp.gatech.edu/games/index.html

  17. Wprowadzenie do sieci • Dwagłówneelementy: • Łuki (krawędzie) [arcs/edges] • Wierzchołki [nodes] • Graf [graph] to struktura, którąbudujesiępoprzezłączeniewierzchołkówłukami • Graf skierowany [directed graph] (digraf [digraph]) jest grafem, w którymłukimająokreślonykierunek • Sieć [network] to graf (lubdigraf), w którymłukimająprzyporządkowanyprzepływ [flow] • Otoparęprostychprzykładówsieci:

  18. Wprowadzenie do sieci • Łańcuch [chain] to ciągłukówłączącychdwawierzchołkii i j, np. ABCE, ADCE • Ścieżka [path] to ciągskierowanychłukówłączącychdwawierzchołki, np. ABDE, ale nie ABCE • Cykl [cycle] to łańcuchktóryłączywierzchołek z samymsobąbezżadnegopowtarzania [retracing], np. ABCEDA, ale nie ABCDECBA • Graf/siećspójny/a [connected graph/network] ma tylkojednączęść graf grafskierowany

  19. Wprowadzenie do sieci • Drzewo[tree] – grafspójnyniemającycyklów. • Drzeworozpinające [spanning tree] to drzewowybranespośródłuków w grafielub w siecitak, abywszystkiewierzchołki w drzewiebyłypołączone dwadrzewarozpinające dwadrzewa • Zdolnośćprzepływowa[flow capacity] – górna (czasemteżdolna) granicailościprzepływudanegołuku w sieci, np. maksymalnailośćwody w rurociągu • Źródło[source] to wierzchołekktórywprowadzaprzeływ do sieci • Zlew[sink] to wierzchołek, którywyprowadzaprzepływ z sieci

  20. Problem najkrótszejtrasy [The shortest route problem] • Sformułowanie:Dladanegografu, w którymkażdyłukoznaczony jest poprzezdystanspomiędzywierzchołkami, które on łączy, jaka jest najkrótszatrasapomiędzywierzchołkiem i iinnymwierzchołkiemj. • Na przykład: Jaka jest najkrótszatrasapomiędzy A i H? Wyliczeniewszystkichmożliwości [enumeration] – niepraktyczne AlgorytmDijkstra

  21. AlgorytmDijkstra http://optlab-server.sce.carleton.ca/POAnimations2007/DijkstrasAlgo.html

  22. Problem najmniejszegodrzewarozpinającego [minimum spanning tree] • Sformułowanie:Dladanegografu, w którymłukisąoznaczonepoprzezodległościpomiędzywierzchołkami, którełączą, znajdźdrzeworozpinające, które ma najmniejsząłącznądługość • Na przykład: Znajdźminimalnądługośćkabla, abypołączyćwszystkiebiura w budynkumającdanewszystkiedopuszczalnetrasykabli • Algorytm: http://optlab-server.sce.carleton.ca/POAnimations2007/MinSpanTree.html Przykładzachłannegoalgorytmu [greedy algorithm] – robi co jest najlepsze w danymkrokuniepatrzącnaresztęproblemu (zazwyczajnieefektywne – tutaj TAK!) Możnateżrobićmaksymalnedrzeworozpinające w ten samsposób

  23. Maksymalnyprzepływi minimalnecięcie [maximum flow and the minimum cut] • Sformułowanie:Jaki jest maksymalnyprzepływpomiędzydanymwierzchołkiem a jakimśinnymwierzchołkiem w sieci? • Na przykład: Znajdźmaksymalnyprzepływsamochodów z parkingupodziemnego w centrum miasta do wyjazdunaautostradę? • Każdemyłukowiprzyporządkowujemymaksymalnymożliwyjednoczesnyprzepływpomiędzydwomawierzchołkami, które ten łukłączy. • Przepływmożesięróżnic w zależności od kierunku (np. jednokierunkoweulice) 4 samochodynaminutęnatrasie A-D-E-G 3 samochodynaminutęnatrasie A-B-E-G {jednoczesnyprzepływnałuku E-G wynositeraz 7} 4 samochodynaminutęnatrasie A-C-F-G Przepływłączny 11 samochodównaminutę z A do G

  24. Maksymalnyprzepływi minimalnecięcie [maximum flow and the minimum cut] • Algorytm: Ford and Fulkerson (Canadian Journal of Mathematics 1956) http://optlab-server.sce.carleton.ca/POAnimations2007/MaxFlow.html

  25. Maksymalnyprzepływi minimalnecięcie [maximum flow and the minimum cut] • Dlaczegopotrzebadodawaćprzepływy w odwrotnymkierunku? • Konwencjarachunków, abyzaznaczyćprzepływ, który, jeślitrzeba, możnacofnąć.

  26. Maksymalnyprzepływ i minimalnecięcie[maximum flow and the minimum cut] • Maksymalnyprzepływ jest związany z minimalnymcięciem: • Cięcie [cut] to każdyzbiórskierowanychłukówzawierającyprzynajmniejjedenłuk w każdejścieżcezeźródła do zlewu (przeznaczenia). Jeśliusuniemyłuki z danegocięcia, to przepływ jest zupełnieodcięty. • Wartośćcięcia[cut value] to sumawszystkichzdolnościprzepływowych w kierunku od źródła do przeznaczeniadlawszystkichłuków w cięciu. • Możliwecięcia z zaznaczonymiwartościamitychcięć

  27. Twierdzenie Max-flow/min-cut • Twierdzenie: Dlakażdejsieci z jednymźródłem i jednymzlewem, maksymalnymożliwyprzepływzeźródła do przeznaczeniarównasięminimalnejwartościcięciadlawszystkichcięć w tejsieci. • Intuicja: • Maksymalnyprzepływprzezserięrur, równy jest ograniczonyprzezwąskiegardło. • Minimalnecięcie to rodzajrozłożonegowąskiegogardła, czyliwąskiegogardładlacałejsieci w przeciwieństwie do wąskiegogardładlaseriirur. • Czyli do znalezieniaminimalnegocięciamożnaposłużyćsięrównieżalgorytmemForda-Fulkersona. • Jakjużzakończydziałaniealgorytm, zaznaczłuki, któreciągnąprzepływrównyichmaksymalnejmożliwościprzepływu. Wtedyposzukajcięcia, któreskładasiętylko z zaznaczonychłukówi żadnychinnych.

  28. Maksymalnyprzepływ i minimalnecięcie[maximum flow and the minimum cut] • Minimalnecięciez wartością w kierunku do przodurówną 14. • 4 drogi B-E, D-E, F-E oraz F-G to wąskiegardłosieci i powinnosię je poszerzyć w pierwszejkolejności • Ale możeszniedostać 1 jednostkipowiększeniaprzepływunakażdąjednostkędodanejzdolnościprzepływowej w łuku z minimalnegocięcia. • Taksiędzieje, ponieważzwiększonyprzepływprzez ten łukmożeaktywowaćnowewąskiegardło w górzebądź w dole rzekilicząc od tegołuku. • Zdolnościprzepływumogąoznaczaćkoszty. Wówczasminimalnecięcieoznaczaminimalnykosztzablokowaniaprzepływu w całejrzece.

  29. Programowanie przepływów sieciowych [Network flowprogramming] • Formułowanie i rozwiązywanie problemów sieciowych poprzez programowanie liniowe nazywamy programowaniem przepływów sieciowych. • Każdy problem przepływów sieciowych może być przedstawiony jako program przepływów sieciowych minimalnego kosztu [Minimum-costnetworkflow program]: • Zmienne: nieznane przepływy przyporządkowane łukom • Zachowanie przepływu w wierzchołkach: • Źródło [source] lub zlew [sink] :

  30. Programowanie przepływów sieciowych [Network flowprogramming] • Ograniczenia przepływów na łukach: mogą być dolne (np. minimalny wskaźnik produkcji w fabryce) {bazowa wartość 0} bądź górne (np. maksymalny przepływ przez rurę) {bazowa wartość +∞} • przepływy nie powinny być ujemne (traci się przejrzystość przedstawienia sieci) • Koszt jednostki przepływu {wartość bazowa 0}: (jeśli ujemny to jest to przychód) • Funkcja celu: • Są trzy parametry dla każdego łuku: [l, u, c] • Ograniczenie dolne l • Ograniczenie górne u • Koszt jednostki przepływu c

  31. Diagram a program liniowy Relacja 1:1 Od teraz odpowiednio oznaczony diagram uważać będziemy za równoważny sformułowaniu programu liniowego.

  32. Właściwości • Współczynniki przy zmiennych występujących po lewej stronie ograniczeń przyjmują wartości -1,0 lub 1 • Wszystkie operacje pivot w algorytmie simplex składają się li tylko z dodawania i odejmowania (nie ma potrzeby mnożenia) • Jeszcze lepiej: operacje dodawania i odejmowania mogą być zastąpione poprzez operacje logiczne w sieciowym algorytmie sympleks [Network simplexalgorithm] • Jeśli po prawej stronie wszystkich ograniczeń są liczby całkowite i wszystkie operacje pivot są operacjami dodawania i odejmowania, to zmienne decyzyjne w optymalnym rozwiązaniu też będą całkowite – właściwość unimodularności[unimodularity property] • Bardzo użyteczne w rozwiązywaniu wielu zadań programowania całkowitoliczbowego, np. zadań przyporządkowania [assignment problem]

  33. Problem transportowy • Prosty, ale bardzo przydatny w praktyce • Składa się ze zbioru źródeł produktów (np. fabryki), które są bezpośrednio połączone z punktami przeznaczenia (np. rynki w różnych miastach). Każdemu połączeniu przyporządkowany jest koszt na jednostkę przepływu • Podaż nie większa niż zdolność danej fabryki • Popyt dokładnie równy dostarczonym produktom • Każdy łuk ma bazowe dolne i górne ograniczenie i koszt (w nawiasie)

  34. Problem przyporządkowania [assignment problem] • Pojawia się również jako problem programowania całkowitoliczbowego. • Przyporządkowanie zbioru ludzi do zbioru zadań tak, aby zminimalizować łączny czas wykonania zadań. • Każda osoba potrzebuje pewną ilość czasu na wykonanie danego zadania albo nie jest w stanie w ogóle tego zadania wykonać. • Każda osoba może być przyporządkowana do dokładnie jednego zadania.

  35. Problem przyporządkowania [assignment problem] • Problem przyporządkowania może być sformułowany w postaci sieci transportowej: • Każda osoba to wierzchołek źródłowy, który wprowadza dokładnie jedną jednostkę przepływu do sieci (jeśli jest więcej osób niż zadań: nie więcej niż jedną jednostkę) • Każde zadanie to wierzchołek przeznaczenia, który usuwa z sieci dokładnie jedną jednostkę przepływu • Koszt przepływu na każdym łuku to ilość minut danej osoby/dane zadanie • Optymalne przepływy w łukach będą równe dokładnie 0 lub dokładnie 1 • Z powodu własności unimodularności będą liczbami całkowitymi • Ponieważ źródła i punkty przeznaczenia mają przypływy i odpływy równe dokładnie 1

  36. Problem transportowy z przeładunkami [transshipment problem] • Tak jak problem transportowy, ale dodatkowo: • są wierzchołki, które zachowują przepływ [flowconservingnodes] – punkty przeładunku • wierzchołki źródłowe i przeznaczenia mogą również służyć za punkty przeładunku • B jest jednocześnie źródłem i punktem przeładunku • G jest jednocześnie punktem przeznaczenia i punktem przeładunku • D i E są tylko punktami przeładunku

  37. Problem najkrótszej trasy [shortestroute problem] • Zamiast algorytmu Dijkstra można rozwiązać programowaniem sieciowym • Postępowanie jest następujące: • Stwórz diagram sieciowy • Zapisz etykiety łuków: ograniczenie dolne 0, ograniczenie górne +∞, koszt = długość łuku, np. [0, ∞,12] • Punkt początkowy jest wierzchołkiem źródłowym z dokładnie jedną jednostką przepływu bez kosztu za jednostkę przepływu, zatem [1,1,0] • Punkt końcowy jest wierzchołkiem przeznaczenia z dokładnie jedną jednostką przepływu bez kosztu za jednostkę przepływu, a więc [1,1,0] • Łuki z dodatnim przepływem będą na najkrótszej trasie. • Dzięki własności unimodularności przepływ na łuku będzie 0 albo 1.

  38. Problem drzewa najkrótszej trasy [shortestroutetree problem] • Tak samo jak problem najkrótszej trasy tylko, że wierzchołków przeznaczenia może być wiele (jeśli nie wszystkie) • Problem to znalezienie najkrótszej trasy z punktu początkowego do każdego punktu końcowego • Można rozwiązać wiele problemów najkrótszej trasy zmieniając punkt końcowy, ale prostszy sposób to rozwiązać to za pomocą jednego problemu. • Załóżmy, że jest n wierzchołków przeznaczenia. Postępowanie: • Stwórz diagram sieciowy • Zapisz etykiety łuków: ograniczenie dolne 0, ograniczenie górne +∞, koszt = długość łuku, np. [0, ∞,12] • Punkt początkowy jest wierzchołkiem źródłowym z dokładnie n jednostkami przepływu bez kosztu za jednostkę przepływu, zatem [n,n,0] • Punkt końcowy jest wierzchołkiem przeznaczenia z dokładnie jedną jednostką przepływu bez kosztu za jednostkę przepływu, a więc [1,1,0] • W optimum tylko całkowite przepływy (unimodularność). Należy zaznaczyć wszystkie łuki, które mają dodatni przepływ. Najkrótszą trasę znajdujemy od tyłu. Począwszy od danego wierzchołka końcowego poruszamy się zaznaczonymi łukami w kierunku wierzchołka początkowego.

  39. Maksymalny przepływ / Minimalne cięcie [Max flow / Min cut problem] • Zamiast algorytmu Forda-Fulkersona możemy zastosować programowanie sieciowe – problem przepływu sieciowego o minimalnym koszcie. • Postępowanie jest następujące: • Stwórz diagram sieciowy • Stwórz etykiety dla każdego łuku: dolne ograniczenie 0, górne ograniczenie równe maksymalnemu przepływowi dla tego łuku i koszt przepływu 0, np. [0,25,0] • Stwórz wierzchołek początkowy z bardzo wysokim górnym ograniczeniem bez kosztu za przepływ, a więc [0,M,0], gdzie M jest bardzo dużą liczbą • Niech każdy wierzchołek końcowy będzie potencjalnym odpływem [sink node] z bardzo wysoką zdolnością przepływową i z kosztem na jednostkę przepływu równym -1, a więc [0,M,-1], gdzie M jest bardzo dużą liczbą • W optimum: rozważmy wierzchołek przeznaczenia. Ma on koszt na jednostkę -1. Funkcja celu to minimalizacja kosztu, zatem program będzie chciał przepuścić jak najwięcej przez ten wierzchołek. W wierzchołku źródłowym będzie również chciał przepuścić jak najwięcej. Ograniczeniem będzie przepustowość sieci (czyli jej poszczególnych łuków)

  40. Maksymalny przepływ / Minimalne cięcie [Max flow / Min cut problem] • Rozwiązanie problemu przepływu o najniższym koszcie dostarczy następujących informacji: • Odpływ z sieci w wierzchołku przeznaczenia równa się maksymalnemu przepływowi sieci • Przepływy w poszczególnych łukach tworzą schemat przepływów w maksymalnym przepływie sieci • Minimalne cięcie znajdujemy tak samo, jak po skończeniu algorytmu Forda-Fulkersona: Zaznacz łuki, które wykorzystują całą swoją zdolność przepływu. Znajdź cięcie wykorzystujące wyłącznie zaznaczone łuki. • Jaka jest dobra wartość M? • Nie za mała – musi być na pewno większa niż maksymalny przepływ, którego szukamy • Nie za duża – żeby uniknąć problemów numerycznych • Dobra propozycja – wartość przypadkowego cięcia w sieci, ponieważ wiemy z twierdzenia max flow/min cut, że wartość cięcia będzie nie mniejsza niż wartość maksymalnego przepływu w sieci

  41. Sieci uogólnione [generalized networks], sieci z ograniczeniami pomocniczymi [network withsideconstraints] oraz sieci procesowe [processing networks] • W sieci uogólnionej, łuki mają współczynniki przyrostu [gainfactors]: czyli liczby, które wymnaża się przepływ wchodzący do danego łuku, aby uzyskać przepływ wychodzący z łuku • Np. współczynnik przyrostu (a raczej obniżenia) 0,9 może oznaczać nieszczelny rurociąg • Np. współczynnik przyrostu 1,1 może oznaczać wzrost wartości obiektu w sieci transportowej z wartością obiektu jako przepływami • Sieci z ograniczeniami pomocniczymi – może zajść potrzeba dodania dodatkowego ograniczenia, które nie jest sieciowe (współczynniki przy zmiennych -1, 0 i 1), np. • Specjalistyczne algorytmy dla sieci z ograniczeniami pomocniczymi (część sieciowa rozwiązywana za pomocą szybkiego algorytmu sieciowego a reszta normalnie i potem te rozwiązania są łączone) • Sieci procesowe – bardzo przydatne do modelowania systemów inżynierskich bądź firm, takie sieci mają dodatkowo wierzchołki procesujące [processingnodes], w których przepływy w sąsiadujących łukach muszą występować w ściśle określonych proporcjach względem siebie

  42. Model z 1963 roku • Mamy dwie fabryki (Seattle i San Diego) i trzy rynki zbytu (New York, Chicago i Topeka) • Uwzględniając popyt rynków zbytu oraz podaż fabryk celem jest minimalizacja kosztów transportu homogenicznego towaru pomiędzy fabrykami a rynkami zbytu

  43. Cel: minimalizacja całkowitego kosztu transportu • Decyzja: jak dużo przewieźć z fabryki A do rynku zbytu B • Subskrypty: • i: fabryki • j: rynki zbytu • Dane: • Podaż towaru w fabryce i (w skrzyniach): • Popyt na towar na rynku j (w skrzyniach): • Koszt na przewozu jednej skrzyni z fabryki i do rynku j: • Zmienne decyzyjne – liczba skrzyń przewożonych pomiędzy i a j • Ograniczenia • Ograniczona podaż: • Trzeba zaspokoić popyt:

  44. 1) Echo Print

  45. 1) Echo Printcd. 2) ErrorMessages normalnie są tutaj i tutaj się kończy wtedy 3) Equation Listing

  46. 3) Equation Listing cd.

More Related