Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

Podobne dokumenty
Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

Szukanie najkrótszych dróg z jednym ródłem

oraz spełnia warunki: (*) dla wszystkich wierzchołków

Temat: Problem minimalnego drzewa Steinera. Definicja problemu. Zastosowania. Algorytm dokładny Hakimi. Algorytmy aproksymacyjne.

Wstp. Warto przepływu to

12: Znajdowanie najkrótszych ±cie»ek w grafach

Temat: Algorytmy zachłanne

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

Digraf. 13 maja 2017

Przeszukiwanie przestrzeni stanów. Wprowadzenie do Sztucznej Inteligencji. Podstawowe problemy teorii przeszukiwania przestrzeni stanów

Skojarzenia. Najliczniejsze skojarzenia: Dokładne skojarzenia o maksymalnej sumie wag w obcionych pełnych grafach dwudzielnych.

Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2

Minimalne drzewa rozpinaj ce

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Grafy i Zastosowania. 6: Najkrótsze ±cie»ki. c Marcin Sydow. Najkrótsze cie»ki. Warianty. Relaksacja DAG. Algorytm Dijkstry.

Temat: Algorytmy aproksymacyjne (przyblione) cz. I. Majc do rozwizania trudny obliczeniowo problem, moemy wybra jedno z dwóch nastpujcych podej:

Temat: Algorytmy aproksymacyjne dla wybranych NP-trudnych problemów grafowych

Wektor o pocztku i kocu odpowiednio w punktach. Prosta zawierajca punkty p i q: pq Półprosta zaczynajca si w punkcie p i zawierajca punkt q:.

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

Sortowanie topologiczne skierowanych grafów acyklicznych

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

Temat: Geometria obliczeniowa cz II. Para najmniej odległych punktów. Sprawdzenie, czy istnieje para przecinajcych si odcinków.

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Kolorowanie wierzchołków

Matematyczne Podstawy Informatyki

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Ogólne wiadomości o grafach

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

I Powiatowy Konkurs Matematyka, Fizyka i Informatyka w Technice Etap finałowy 10 kwietnia 2013 grupa elektryczno-elektroniczna

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Zagadnienie najkrótszej drogi w sieci

Algorytmy i Struktury Danych.

Programowanie w VB Proste algorytmy sortowania

TEORETYCZNE PODSTAWY INFORMATYKI

Projektowanie algorytmów rekurencyjnych

Algorytmy i Struktury Danych.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Grafy i Zastosowania. 5: Drzewa Rozpinające. c Marcin Sydow. Drzewa rozpinające. Cykle i rozcięcia fundamentalne. Zastosowania

Gramatyki regularne i automaty skoczone

Najkrótsze drogi w grafach z wagami

Programowanie i struktury danych 1 / 44

Programowanie dynamiczne

Spis treści. Przykład. Przykład 1 Przykład 2. Twórcy Informacje wstępne Pseudokod Przykład. 1 Grafy skierowane z wagami - przypomnienie

Algorytmy i Struktury Danych, 2. ćwiczenia

Sieć (graf skierowany)

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Algorytmy kodowania predykcyjnego

Cash flow projektu zakładajcego posiadanie własnego magazynu oraz posiłkowanie si magazynem obcym w przypadku sezonowych zwyek

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Projektowanie i analiza zadaniowa interfejsu na przykładzie okna dialogowego.

Poprawa efektywnoci metody wstecznej propagacji bdu. Jacek Bartman

Lab. 02: Algorytm Schrage

MATERIAŁ WICZENIOWY Z MATEMATYKI

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Problem decyzyjny naley do klasy NP. (Polynomial), jeeli moe by rozwizany w czasie conajwyej wielomianowym przez algorytm A dla DTM.

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Wykład 7. Algorytmy grafowe

Najkrótsze drogi w grafach z wagami

Programowanie wspóªbie»ne

Wykład 6. Wyszukiwanie wzorca w tekście

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Zaawansowane algorytmy i struktury danych

Interpolacja funkcjami sklejanymi

Wprowadzenie do algorytmów. START

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Problem 1 prec f max. Algorytm Lawlera dla problemu 1 prec f max. 1 procesor. n zadań T 1,..., T n (ich zbiór oznaczamy przez T )

Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation)

Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w

Algorytmy i Struktury Danych.

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Ustalenie optymalnego układu lokalizacyjnodystrybucyjnego

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

Wprowadzenie do Sztucznej Inteligencji

Listy i operacje pytania

Podejście zachłanne, a programowanie dynamiczne

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Wprowadzenie do Sztucznej Inteligencji

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Nieklasyczne modele kolorowania grafów

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

Programowanie dynamiczne

Pojcie grafu. { {v 1, v 2 }, {v 2, v 3 }, {v 3, v 4 }, {v 4, v 1 },{v 2, v 4 } } )

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

5. Najkrótsze ścieżki

Dynamiczne struktury danych

Algorytmy i Struktury Danych, 2. ćwiczenia

stopie szaro ci piksela ( x, y)

TEORIA GRAFÓW. Graf skierowany dla ka»dej kraw dzi (oznaczanej tutaj jako ªuk) para wierzchoªków incydentnych jest par uporz dkowan {u, v}.

Planowanie adresacji IP dla przedsibiorstwa.

Wprowadzenie do Sztucznej Inteligencji

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Transkrypt:

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.. Oznaczenia i załoenia Oznaczenia G = <V, E, c> - graf skierowany z funkcj wagi s wierzchołek ródłowy t wierzchołek docelowy Załoenia Wagi krawdzi to liczby całkowite: c: E C Graf zawiera skierowane cieki z s do kadego innego wierzchołka Graf nie zawiera ujemnych cykli. Róne typy problemu najkrótszych cieek. Znalezienie najkrótszych cieek z ustalonego s do pozostałych wierzchołków, zakładajc, e wszystkie krawdzie grafu maj nieujemne wagi.. Znalezienie najkrótszych cieek z ustalonego s do pozostałych wierzchołków, zakładajc, e wagi krawdzi mog by dowolne (take ujemne).. Znalezienie najkrótszych cieek midzy dowoln par wierzchołków grafu. 4. Róne uogólnienia problemu najkrótszych cieek

. Algorytmy ciekowe typu label - setting i label - correcting Zarówno metoda label setting jak i label - correcting to metody iteracyjne, które modyfikuj (optymalizuj) odległoci do wierzchołków grafu w kadym kroku algorytmu. Metody róni si sposobem ustalania etykiet odległoci w poszczególnych iteracjach. W algorytmach typu label - setting wybierany jest w kadym kroku jeden optymalny wierzchołek (z najmniejsz etykiet odległoci) i jego etykiet odległoci uznaje si za optymaln we wszystkich nastpnych iteracjach. W algorytmach typu label correcting etykiety odległoci nadane wierzchołkom s tymczasowe, mog si zmieni w kolejnych iteracjach, a ich ostateczne (opytmalne) wartoci ustalaj si dopiero na kocu realizacji algorytmu. Metoda label setting moe by zastosowana do rozwizania problemu najkrótszych cieek w grafach acyklicznych z dowolnymi wartociami wag albo w grafach z nieujemnymi wagami. 4. Przykład zastosowania problemu najkrótszych cieek: Alokacja punktów kontrolnych w systemie linii produkcyjnej Linia produkcyjna składa si z uporzdkowanego cigu n faz produkcyjnych. W kadej fazie realizuje si pewien fragment procesu wytwarzania, który moe by poddany ewentualnej kontroli. Produkt wchodzi w faz numer produkcji w partiach złoonych z B elementów. Kady z elementów partii moe ulec defektowi w fazie produkcji i z prawdopodobiestwem α i. Zakładamy, e wszystkie defekty s nie do naprawienia, wic jeeli po jakiej fazie produkcji kontrola wykae defekt jakiego elementu partii, to ten element jest niszczony (nie przechodzi przez kolejne fazy produkcji ani kontroli). Problem polega na zalezieniu optymalnego planu kontroli, który ustali, po których fazach

produkcji ustawi punkty kontrolne tak, aby zminimalizowa łczny (we wszystkich fazach produkcji) koszt produkcji i kontroli. Oczywicie ustawienie mniejszej liczby punktów kontrolnych zmniejszy koszt łczny kontroli, ale moe spowodowa zwikszenie łcznego kosztu produkcji partii elementów, bo zbyt póno zostan wyeliminowane elementy z defektem. Dane wejciowe: p i koszt produkcji jednego elementu w fazie i f ij koszt kontroli partii po fazie j, zakładajc, e poprzednia kontrola miała miejsce po fazie i g ij koszt kontroli jednego elementu po fazie j, zakładajc, e poprzednia kontrola tego elementu miała miejsce w fazie i Koszt kontroli po danej fazie j zaley od tego kiedy miała miejsce ostatnia kontrola (po której z poprzednich faz), poniewa jeeli zaszła ona po fazie i, to kontroler musi szuka defektów, które mogły powsta nie tylko w fazie j, ale take w fazach i+, i+,, j-. Powyszy problem mona sformułowa jako problem znalezienia najkrótszej cieki w grafie acyklicznym. Wierzchołki grafu to fazy produkcji z dodatkow faz 0. Krawdzie grafu s zdefiniowane midzy kad par wierzchołków (i, j) tak, e i < j. 0 4

Wagi krawdzi c ij s sum: kosztu kontroli partii f ij, kosztu kontroli elementów, które nie uległy defektowi do fazy i włcznie. Warto B(i)g ij, gdzie B(i)=B(-α )(-α ) (-α i ). kosztu produkcji elementów, które nie uległy defektowi do fazy i włcznie i były przetwarzane w fazach i+, i+,, j. Ogólnie Warto B( i) = c ij = j k = i+ f ij p k. + B( i) g ij + B( i) j k = i+ Jeeli najkrótsza cieka w grafie zdefiniowanym wyej przechodzi przez wierzchołki 0--4, to naley ustawi dwa punkty kontrolne, za faz numer oraz 4, aby łczny koszt produkcji i kontroli w całej linii był moliwie najniszy. 5. Najkrótsze cieki w grafie acyklicznym Wejcie: Graf G - acykliczny, zorientowany, z dowolnymi wagami zapamitanymi w tablicy c i z ustalonym wierzchołkiem startowym s Wyjcie: Najkrótsze cieki z s do pozostałych wierzchołków: d - tabela odległoci minimalnych z s do pozostałych wierzchołków, prev tabela poprzedników na ciece Algorytm Acyclic_SP; G =sortowanie_topologiczne(g); for (i = ; i<=n; i++) if (i == s) d[i]=0; else d[i]=c [s, i]; for (i = ; i<=n; i++) if (i == s) prev[i]=0; else if (c [s, i]!= ) prev[i]=s; for (i = ; i<=n; i++) p k 4

if (i!= s) for ( j Adj(i)) if (d[j]> d[i]+c [i, j])) d[j]=d[i]+c [i, j]; prev[j]=i; Przykład 5 s - 4 4 6 Powyszy graf jest posortowany topologicznie. Po inicjalizacji: d: [0 ] prev: [0 - - -] Po I kroku: i = d: [0 ] prev: [0 - -] Po II kroku: i = d: 0 0 4 prev: [0 -] Po III kroku: i = 4 d: 0 0 4 4 prev: 0 4 Po ostatnim kroku i = 5, 6 d: 0 0 4 4 prev: 0 4 5

Koszt czasowy: O(n+m), gdy graf nie spełnia warunku uporzdkowania topologicznego, O(m) gdy graf G jest posortowany topologicznie. 6. Algorytm Dijkstra Wejcie: Graf G zorientowany, z nieujemnymi wagami, zapamitanymi w tablicy c i ustalonym wierzchołkiem startowym s Wyjcie: Najkrótsze cieki z s do pozostałych wierzchołków: d - tabela odległoci minimalnych z s do pozostałych wierzchołków, prev tabela poprzedników na ciece Algorytm Dijkstra; T =,,..., n; for (i = ; i<=n; i++) if (i == s) d[i]=0; else d[i]=c[s,i]; for (i = ; i<=n; i++) if (i == s) prev[i]=0; else if (c[s, i]!= ) prev[i]=s; T=,,..., n-s; while (T!= ) u="dowolny wierzchołek r T taki, e d[r]=mind[p]:p T"; T=T-u; for (v = ; v<=n; v++) if v T then if (d[v]>d[u]+c[u,v]) d[v]=d[u]+c[u,v]; prev[v]=u; 6

Przykład 7 6 5 s 4 5 Stan zbioru T oraz tablic d oraz prev po kolejnych iteracjach: Po inicjalizacji T =,, 4, 5, 6, d = [0 ], prev = [0 - - - -] Po I krok u=, T =, 4, 5, 6, d = [0 6 8], prev = [0 - ] Po II krok ptli u= 4, T=, 5, 6, d = [0 4 7 8], prev = [0 4 4 ] Po III krok ptli u=, T= 5, 6, d = [0 4 7 5], prev = [0 4 4 ] Po IV krok ptli u= 6, T=5, d= [0,, 4,, 6, 5], prev = [0 4 6 ] Po V krok ptli u=5, T=, d= [0,, 4,, 6, 5], prev = [0 4 6 ] 4 7

Złoono czasowa: O(n ) gdy struktur danych dla zbioru T jest struktura liniowa (lista, tablica), O(mlogn) gdy struktur dla zbioru T kopiec binarny, O(m + nlogn) gdy T jest zaimplementowany jako kopiec Fibonacciego. 7. Odwrotny algorytm Dijkstra Wejcie: Graf G zorientowany, z nieujemnymi wagami, zapamitanymi w tablicy c i ustalonym wierzchołkiem docelowym t Wyjcie: Najkrótsze cieki do t z pozostałych wierzchołków grafu: d - tabela odległoci minimalnych z dowolnego wierzchołka do t, next tabela nastpników na ciece Algorytm Reverse_Dijkstra; T =,,..., n; for (i = ; i<=n; i++) if (i == t) d[i]=0; else d[i]=c[i, t]; for (i = ; i<=n; i++) if (i == t) next[i]=0; else if (c[i, t]!= ) next[i]=t; T=,,..., n-t; while (T!= ) u="dowolny wierzchołek r T taki, e d[r]=mind[p]:p T"; T=T-u; for (v = ; v<=n; v++) if v T then if (d[v]>d[u]+c[v, u]) d[v]=d[u]+c[v, u]; next[u]=v; 8

Przykład 4 4 6 t 5 5 Po inicjalizacji: Stan zbioru T oraz tablic d oraz next po kolejnych iteracjach: T =,,, 4, 5, d = [ 5 0], next = [- - - 6 6 0] Po I krok u= 4, T =,,, 5, d = [ 6 4 5 0], next = [- 4 4 6 6 0] Po II krok ptli u=, T=,, 5, d = [6 6 4 5 0], next = [ 4 4 6 6 0] Po III krok ptli u= 5, T=,, d = [6 6 4 5 0], next = [ 4 4 6 6 0] Po IV krok ptli u=, T=, d = [6 6 4 5 0], next = [ 4 4 6 6 0] Po V krok ptli u=, T=, d = [6 6 4 5 0], next = [ 4 4 6 6 0] Złoono czasowa: Jak dla algorytmu Dijkstra. 9

8. Dwukierunkowy algorytm Dijkstra Wejcie: Graf G zorientowany, z nieujemnymi wagami, zapamitanymi w tablicy c i ustalonymi wierzchołkami s oraz t Wyjcie: Najkrótsza cieka z s do t: d - tabela odległoci minimalnych z s do pozostałych wierzchołów, d - tabela odległoci minimalnych do t z pozostałych wierzchołów, next tabela nastpników na ciece, prev tabela poprzedników w ciece Algorytm Bidirectional_Dijkstra; T s =,,..., n; T t =,,..., n; for (i = ; i<=n; i++) if (i == s) d[i]=0; else d[i]=c[s, i]; for (i = ; i<=n; i++) if (i == s) prev[i]=0; else if (c[s, i]!= ) prev[i]=s; for (i = ; i<=n; i++) if (i == t) d[i]=0; else d[i]=c[i, t]; for (i = ; i<=n; i++) if (i == t) next[i]=0; else if (c[i, t]!= ) next[i]=t; T s =,,..., n-s; T t =,,..., n-t; i = s; j = t; while (i!= j) i="dowolny wierzchołek r T s taki, e d[r]=mind[p]:p T s "; T s =T s -i; for (v = ; v<=n; v++) if v T s then if (d[v]>d[i]+c[i,v]) 0

d[v]=d[i]+c[i,v]; prev[v]=i; j="dowolny wierzchołek r T t taki, e d[r]=mind[p]:p T t "; T t =T t -j; for (v = ; v<=n; v++) if v T t then if (d[v]>d[j]+c[v, j]) d[v]=d[i]+c[v, j]; next[j]=v; // - konkatenacja cieek (*) m=d[i]+d[i]; path=prev(s i) next(i t); (**) for (u, v) E takich, e u!=v, u T s oraz v T t w=d[u]+c uv +d[v]; if (m>w) m = w; path = prev(s u) (u, v) next(v t); Przykład 4 s 4 5 5 6 t

Po inicjalizacji: Stan zbiorów T s i T t oraz tablic d, d oraz next i prev po kolejnych iteracjach: T s =,, 4, 5, 6, d = [0 ], prev = [0 - - -] T t =,,, 4, 5, d = [ 5 0], next = [- - - 6 6 0] Po I krok i=, T s =, 4, 5, 6, d = [0 4 ], prev = [0 - -] j= 4, T t =,,, 5, d = [ 6 4 5 0], next = [- 4 4 6 6 0] Po II krok ptli i=, T s = 4, 5, 6, d = [0 4 ], prev = [0 -] j=, T t =,, 5, d = [6 6 4 5 0], next = [ 4 4 6 6 0] Po (*) m=d[i]+d[i]= d[]+d[]=+4=6 path = prev(s i) + next(i t) = prev( ) + next( 6)=--4-6 W (**) rozwaana jest tylko jedna krawd: (4, 5) w=d[u]+c uv +d[v] = d[4]+c 45 +d[5] = +4 +5 = Ostatecznie : najkrótsza cieka z do 6 ma długo 6 i jest nastpujca: --4-6 Koszt czasowy : pesymistyczny taki jak dla algorytmu Dijkstra, ale redni sporo niszy, gdy moemy bardzo szybko trafi na ten sam wierzchołek i rozpatrywany w ciekach z s do i oraz z i do t