• Nie Znaleziono Wyników

Algorytmy najkrótszych ścieżek

N/A
N/A
Protected

Academic year: 2021

Share "Algorytmy najkrótszych ścieżek"

Copied!
26
0
0

Pełen tekst

(1)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Grafy i Zastosowania

6: Najkrótsze ±cie»ki c Marcin Sydow

(2)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Spis zagadnie«

Problem najkrótszych ±cie»ek z jednym ¹ródªem Rozwi¡zanie sznurkowe

Warianty

Relaksacja kraw¦dzi Wariant 1: DAG

Wariant 2: nieujemne kraw¦dzie (Dijkstra) Wariant 3: dowolny graf (Bellman-Ford) Najkrótsze ±cie»ki dla wszystkich par

Zmiana wag grafu na nieujemne przez potencjaªy Algorytm Johnsona

(3)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Problem najkrótszych ±cie»ek

Wej±cie: skierowany graf G = (V , E) z wagami na kraw¦dziach, danymi przez funkcje w : E → R, i wierzchoªek startowy s ∈ V Wyj±cie: dla ka»dego wierzchoªka v ∈ V

dªugo±¢ najkrótszej ±cie»ki µ(s, v) z s do v, je±li istnieje rodzic w drzewie najkrótszych ±cie»ek (je±li istnieje), pozwalaj¡cy zrekonstruowa¢ najkrótsze ±cie»ki z s Najkrótsza ±cie»ka mo»e nie istnie¢ z dwóch powodów:

v mo»e nie by¢ osi¡galny z s

w grae mog¡ istnie¢ ujemne cykle (wtedy mo»e nie by¢ dolnego ograniczenia na dªugo±¢ ±cie»ki)

(4)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Warianty

Przy projektowaniu optymalnego algorytmu, mo»na wzi¡¢ pod uwag¦ pewne specjalne wªasno±ci grafu, np.:

graf jest skierowany, albo nieskierowany

graf jest acykliczny (wtedy mo»na zastosowa¢ najszybszy algorytm)

wagi s¡ nieujemne (wtedy mo»na zastosowa¢ szybszy algorytm)1

Pokazane zostan¡ ró»ne warianty w zale»no±ci od wªasno±ci wej±ciowego grafu

(5)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Najkrótsze ±cie»ki - wªasno±ci

Zaªó»my dla grafu G = (V , E) i wierzchoªków s, v ∈ V nast¦puj¡c¡ konwencj¦: µ(s, v) oznacza dªugo±¢ najkrótszej ±cie»ki z s do v w G, czasami, je±li s jest znane z kontekstu, b¦dziemy pisali krócej µ(v):

µ(s, v) = +∞ (kiedy nie ma ±cie»ki z s do v)

µ(s, v) = −∞ (kiedy istnieje ±cie»ka z s do v zawieraj¡ca ujemny cykl)

µ(s, v) = d ∈ R (w pozostaªych przypadkach) Lemat:

(6)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Obliczanie najkrótszych ±cie»ek: idea

Ogólny pomysª jest podobny do BFS (ze ¹ródªa s). Z ka»dym wierzchoªkiem v zwi¡zujemy 2 atrybuty:

v.distance: przechowuje najkrótsz¡ (obecnie znan¡) odlegªo±¢ z s do v

v.parent: przechowuje poprzednika (rodzica) v na najkrótszej ±cie»ce (obecnie znanej) z s

inicjalizacja: s.distance = 0, s.parent = s, a wszystkie pozostaªe wierzchoªki maj¡ atrybut distance ustawiony na +∞oraz parent na null.

Uaktualnienia tych atrybutów s¡ nast¦pnie propagowane przez kraw¦dzie: nazywane jest to relaksacj¡ kraw¦dzi

(7)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Relaksacja kraw¦dzi

%% relax((u,v)) # (u,v) jest kraw¦dzi¡ w grafie

if u.distance + w(u,v) < v.distance v.distance = u.distance + w(u,v) v.parent = u

Algorytmy dokonuj¡ kolejnych relaksacji dopóki najkrótsze ±cie»ki nie zostan¡ obliczone lub ujemny cykl wykryty. Relaksacje maj¡ pewne wa»ne wªasno±ci, np:

(zaªo»ywszy uprzednie dokonanie opisanej inicjalizacji) - po dowolnym ci¡gu relaksacji ∀v ∈ V v.distance ≥ µ(v) czyli, »e warto±¢ distance odkryta przez relaksacje nie mo»e spa±¢ poni»ej prawdziwej warto±ci odlegªo±ci (dowód przez indukcj¦ po liczbie relaksacji kraw¦dzi)

(8)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Poprawno±¢ relaksacji

Lemma

Po dokonaniu ci¡gu R relaksacji takiego, »e zawiera on (jako podci¡g) najkrótsz¡ ±cie»k¦ p = (e1, ...,ek) z s do v, zachodzi,

»e: v.distance = µ(s, v) (czyli, »e najkrótsza ±cie»ka zostanie odkryta).

Dowód: Poniewa» p jest najkrótsz¡ ±cie»ka, wi¦c mamy

µ(v) = P1≤j≤kw(ej). Niech vi oznacza koniec kraw¦dzi ei, dla 0 < i ≤ k (v0=s). Poka»emy przez indukcj¦, »e po i-tej relaksacji

zachodzi vi.distance ≤ P1≤j≤iw(ej). Jest to prawda na pocz¡tku

(s.distance == 0). Nast¦pnie, po i-tej relaksacji,

vi.distance ≤ vi−1.distance + w(ei) ≤P1≤j≤iw(ej)(z dencji

relaksacji i na mocy indukcji). Wi¦c po k-tej relaksacji zachodzi: v.distance ≤ µ(v). Ale v.distance nie mo»e by¢ ni»sze ni¢ µ(v) (poprzedni lemat), a wi¦c zachodzi v.distance == µ(v).

(9)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

1: Najkrótsze ±cie»ki w grae acyklicznym (DAG)

Je±li graf jest skierowanym grafem acyklicznym (DAG), to stanowi to bardzo prosty przypadek dla problemu najkrótszych ±cie»ek ze ¹ródªa s.

Ka»dy DAG mo»e by¢ topologicznie posortowany (np. przez DFS) w czasie O(m + n) , co daje ci¡g wierzchoªków (v1, ...,vn). Nast¦pnie, zakªadaj¡c, »e s = vj, dla pewnego 0 < j ≤ n,

mo»na dokona¢ relaksacji wszystkich kraw¦dzi wychodz¡cych z vj, a nast¦pnie wychodz¡cych z vj+1 i tak dalej a» do vn.

W ten sposób ka»da kraw¦d¹ poddana jest relaksacji co najwy»ej raz a ka»da najkrótsza ±cie»ka jest odkryta jako podci¡g ci¡gu dokonanych relaksacji. Poniewa» zªo»ono±¢ czasowa relaksacji jest staªa, wi¦c algorytm ma ª¡czn¡ zªo»ono±¢ O(m + n) w tym przypadku.

UWAGA: wierzchoªki wyst¦puj¡ce przed s w posortowanym ci¡gu s¡ nieosi¡galne z s.

(10)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

2: Algorytm Dijkstry (wagi nieujemne)

Zauwa»my, »e je±li nie ma kraw¦dzi o ujemnych wagach, to nie ma te» ujemnych cykli. Natomiast cykle mog¡ istnie¢, wi¦c nie mo»na zaªo»y¢ wykonalno±ci sortowania topologicznego.

Pomysª algorytmu w tym przypadku polega na dokonywaniu relaksacji w kolejno±ci niemalej¡cych najkrótszych odlegªo±ci od ¹ródªa. Dzi¦ki nieujemno±ci wag, ka»da najkrótsza ±cie»ka zostanie w ten sposób odkryta.

Uwaga: »eby osi¡gn¡¢ powy»sz¡ kolejno±¢, w algorytmie stosowana jest kolejka priorytetowa przechowuj¡ca kolejne wierzchoªki do odwiedzenia (priorytetem jest warto±¢ atrybutu distance)

Przykªad (sznurki z w¦z¦ªkami):

Jest to analogiczne do podnoszenia ze stoªu sznurków

powi¡zanych za pomoc¡ w¦z¦ªków (kolejne podnoszone ze stoªu w¦z¦ªki odpowiadaj¡ wierzchoªkom).

(11)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Algorytm (Dijkstra)

(pq - kolejka priorytetowa z operacj¡ decreaseKey, priorytetem jest warto±¢ atrybutu distance)

s.distance = 0 pq.insert(s) s.parent = s for-each v in V except s: v.distance = INFINITY v.parent = null while(!pq.isEmpty()) scannedNode = pq.delMin() for-each v in scannedNode.adjList:

if (v.distance > scannedNode.distance + w(scannedNode, v)) v.distance = scannedNode.distance + w(scannedNode, v) v.parent = scannedNode

if (pq.contains(v)) pq.decreaseKey(v) else pq.insert(v)

(»eby efektywnie zaimplementowa¢ operacje contains i decreaseKey musimy u»y¢ tzw. adresowalnej kolejki priortytowej, czyli wyposa»onej w dodatkowy sªownik mapuj¡cy wierzchoªki do ich pozycji w kolejce priorytetowej)

(12)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Analiza pesymistczyna algortymu Dijkstry

rozmiar danych: n = |V|, m = |E|

operacja dominuj¡ca: porównanie priorytetów (równie» wewn¡trz kolejki priorytetowej), aktualizacja atrybutów Zªo»ono±¢ gªównej p¦tli zale»y od u»ytej implementacji kolejki priorytetowej.

inicjalizacja: O(n)

p¦tla: O(n × (delMin + insert) + m × decreaseKey) O(nlogn) + O(mlogn) = O((n + m)logn) (dla kopca binarnego)

(13)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Analiza c.d.

Powy»sza analiza dotyczy przypadku pesymistycznego. Mo»na pokaza¢, »e w przypadku przeci¦tnym liczba operacji

decreaseKey wynosi O(nlog(m/n)), co daje przeci¦tn¡ zªo»ono±¢ czasow¡ O(m + nlog(m/n)logn).

Przy dostatecznie g¦stym grae (gdy pierwszy czynnik dominuje nad drugim) otrzymujemy liniowy czas przeci¦tny.

Ponadto, mo»na u»y¢ kopca Fibonacciego, który ma amortyzowany koszt staªy operacji decreaseKey i wtedy otrzymujemy czas pesymistyczny (jednak kopiec Fibonacciego ma ukryt¡ wy»sz¡ staª¡ multiplikatywn¡):

O(m + nlogn)

Ponadto, je±li wagi s¡ caªkowite i ograniczone przez staª¡ C, mo»na zredukowa¢ zªo»ono±¢ pesymistyczn¡ do:

O(m + nC)

(14)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

3: Algorytm Bellmana-Forda (dowolne wagi)

W poprzednich przypadkach wystarczaªo conajwy»ej m relaksacji.

Zawsze jednak wystarcza dokona¢ O(nm) relaksacji, aby odkry¢ ka»d¡ najkrótsz¡ ±cie»k¦ (jako podci¡g). Jest to rodzaj

podej±cia siªowego, które dziaªa dla ka»dego grafu.

Poniewa» dowolna najkrótsza ±cie»ka mo»e zawiera¢ conajwy»ej n − 1 kraw¦dzi spo±ród m, wi¦c wystarczy dokona¢ (n − 1)-krotnej

relaksacji wszystkich m kraw¦dzi ustawionych w ustalony ci¡g, aby ci¡g kraw¦dzi ka»dej najkrótszej ±cie»ki byª w nim zawarty jako podci¡g (i w ten sposób wykry¢ wszystkie dobrze okre±lone najkrótsze ±cie»ki). Dla wierzchoªków nieosi¡galnych b¦dzie v.d == ∞. Aby nast¦pnie wykry¢ jakiekolwiek ujemne cykle, wystarczy nast¦pnie jeszcze raz dokona¢ m relaksacji (te, dla których atrybut d wci¡» maleje, le»¡ na ±cie»kach zawieraj¡cych ujemny cykl) i nast¦pnie w czasie liniowym przypisa¢ wierzchoªkom osi¡galnym z tego cyklu warto±¢ v.d == ∞

(15)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Bellman-Ford's Algorithm

%% (initialise as in Dijkstra) for(i = 1; i <= (n-1); i++) for each e in E relax(e) for each e=(u,v) in E

if (u.distance + w(u,v) < v.distance) identifyNegativeCycle(v)

***

identifyNegativeCycle(v) if (v.distance > -infinity)

v.distance = -infinity for each w in v.adjList

(16)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Najkrótsze ±cie»ki dla wszystkich par

Problem: wej±cie: dany jest graf skierowany z wagami na kraw¦dziach.

wyj±cie: najkrótsze ±cie»ki pomi¦dzy wszystkimi parami wierzchoªków

Rozwi¡zanie 1: wykona¢ Bellmana-Forda ze wszystkich wierzchoªków (O(n2m))

Rozwi¡zanie 2 (szybsze): odpowiednio zamieni¢ wagi na nieujemne (zachowuj¡c najkrótsze ±cie»ki) i wykona¢ algorytm Dijkstry ze wszystkich wierzchoªków (O(n(m + nlogn))) Uwaga: rozwi¡zanie 2 da si¦ wykona¢ tylko je±li nie ma cykli ujemnych.

(17)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Zmiana wag na nieujemne

Aby móc zastosowa« algorytm Dijkstry, w grae zostaj¡ zmienione wagi na nieujemne, tak aby zachowa¢ najkrótsze ±cie»ki. Mianowicie, ka»dej kraw¦dzi e = (v, w) o

dotychczasowej wadze w(e) przypisywana jest nowa waga: w0(e) = w(e) + pot(v) − pot(w),

gdzie pot() jest pewn¡ funkcj¡ nieujemn¡ maj¡c¡ pewne po»¡dane wªasno±ci:

wszystkie nowe wagi s¡ nieujemne

najkrótsze ±cie»ki przy nowych wagach s¡ takie same jak przy starych

sumy wag na cyklach nie ulegaj¡ zmianie

Funkcj¦ speªniaj¡c¡ te warunki nazywamy potencjaªem wierzchoªka.

(18)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Potencjaª wierzchoªka

Aby funkcja pot() speªniaªa powy»sze warunki wyznaczamy j¡ nast¦puj¡co:

dodajemy do grafu pewien sztuczny wierzchoªek s oraz ª¡czymy go kraw¦dziami (skierowanymi) z wagami 0 do wszystkich wierzchoªków grafu

obliczamy najkrótsze odlegªo±ci µ(v) z s do ka»dego wierzchoªka v grafu

(19)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Nowe wagi zachowuj¡ najkrótsze ±cie»ki

Lemat 1:

Je±li p, q s¡ ±cie»kami z v do w, a c(p) oznacza koszt tej ±cie»ki przy oryginalnych wagach, a c0(p) przy nowych wagach, to:

1 c0(p) = pot(v) + c(p) − pot(w)

2 c0(p) ≤ c0(q) wtw c(p) ≤ c(q) (zachowuje porz¡dek

kosztów ±cie»ek)

3 najkrótsze ±cie»ki przy nowych kosztach s¡ takie same jak

przy starych

Dowód: Niech p = (e1, . . . ,ek−1), ei = (vi,vi+1), v = v0 i w = vk. Wtedy:

c0(p) = Pk−1

i=0 w0(ei) =P

0≤i<k(pot(vi) +w(ei) −pot(vi+1)) = pot(v0) +P

0≤i<kw(ei) −pot(vk) =pot(v0) +c(p) − pot(vk)

(a wi¦c zmiana kosztu ±cie»ki zale»y tylko od wierzchoªków ko«cowych) Wynika z tego punkt 2 i 3 Lematu.

Wniosek:

(20)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Nowe wagi s¡ nieujemne

Lemat 2:

Je±li graf nie ma ujemnych cykli i wszystkie wierzchoªki s¡ osi¡galne z s, to przy zdeniowaniu potencjaªu pot(v) = µ(v) (jako dªugo±ci najkrótszej ±cie»ki z s) nowe wagi s¡ nieujemne dla wszystkich kraw¦dzi.

Dowód:

Poniewa» nie ma ujemnych cykli, to wszystkie warto±ci pot(v) s¡ dobrze zdeniowane. Rozwa»my dowoln¡ kraw¦d¹ e = (v, w). Mamy tedy: µ(v) + w(e) ≥ µ(w) (gdy» najkrótsze ±cie»ki speªniaj¡

nierówno±¢ trójk¡ta) a wi¦c: w0(e) = µ(v) + w(e) − µ(w) ≥ 0

Uwaga: czy wag nie mo»na po prostu zwi¦kszy¢ o staª¡ warto±¢, tak aby byªy nieujemne? (podaj odpowiedni kontrprzykªad)

(21)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Pomysª algorytmu Johnsona

Z powy»szych dwóch lematów wynika, »e nowe wagi zachowuj¡ najkrótsze ±cie»ki i pozwalaj¡ zastosowa¢ algorytm Dijkstry. Aby obliczy¢ nowe wagi, nale»y najpierw wykona¢ algorytm Bellmana-Forda z wierzchoªka s aby obliczy¢ warto±¢ µ(v) dla ka»dego wierzchoªka v (przy okazji pozwala on wykry¢

ewentualne ujemne cykle).

Nast¦pnie wykona¢ algorytm Dijkstry z ka»dego wierzchoªka i przywróci¢ poprzednie wagi.

Taki algorytm ma zªo»ono±¢: O(mn) (BF) + O(n(m + nlogn)) (n razy Dijkstra, przy u»yciu kopca Fibonacciego), czyli ª¡cznie: O(nm + n2logn)

(22)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Algorytm Johnsona

%% algorytmJohnsona(){

dodaj wierzchoªek s z kraw¦dziami o zerowej wadze do wszystkich wierzchoªków v wykonaj Bellman-Ford aby obliczy¢ najkrótsze ±cie»ki z s

for each node v:

przypisz pot(v) jako odlegªo±¢ od s for each node v:

wykonaj Dijkstra z v na zmienionych wagach (bo s¡ nieujemne)

for each edge e=(u,v):

przywró¢ poprzednie wagi (**)

(poniewa» najkrótsze ±cie»ki s¡ te same) }

(23)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Przykªad: oszacowanie ±rednicy grafu (diam(G))

(przypomnienie: maksymalna odlegªo±¢ pomi¦dzy par¡ wierzchoªków w grae)

Mo»na prosto oszacowa¢ ±rednic¦ grafu nie licz¡c wszystkich par odlegªo±ci na podstawie poni»szej obserwacji:

Lemat:

Niech D0(s) = max

u∈Vµ(s, u), dla pewnego wierzchoªka s

(ekscentryczno±¢ wierzchoªka s).

Je±li graf jest nieskierowany, to zachodzi D0(s) ≤ diam(G) ≤ 2D0(s).

Je±li graf jest skierowany, to powy»sza nierówno±¢ nie zachodzi, ale zachodzi max(D0(s), D00(s)) ≤ D ≤ D0(s) + D00(s), gdzie

D00(s) = max

u∈Vµ(u, s).

Czyli ±rednic¦ mo»na oszacowa¢ przez ekscentryczno±¢ dowolnego wierzchoªka (czyli zªo»ono±¢ liniowa zamiast kwadratowej)

(24)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Podsumowanie

Problem najkrótszych ±cie»ek z jednym ¹ródªem Rozwi¡zanie sznurkowe

Warianty

Relaksacja kraw¦dzi Wariant 1: DAG

Wariant 2: nieujemne kraw¦dzie (Dijkstra) Wariant 3: dowolny graf (Bellman-Ford) Najkrótsze ±cie»ki dla wszystkich par

Zmiana wag grafu na nieujemne przez potencjaªy Algorytm Johnsona

(25)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie

Przykªadowe Zadania

wykonaj efektywny algorytm obliczania najkrótszych ±cie»ek z podanego ¹ródªa dla podanego grafu (najpierw zaklasykuj graf do odpowiedniego przypadku)

dokonaj zmiany wag podanego grafu na nieujemne zachowuj¡c najkrótsze ±cie»ki, zgodnie z przedstawion¡ technik¡ potencjaªów

wykonaj algorytm Johnsona dla podanego grafu oszacuj ±rednic¦ podanego grafu (nieskierowanego lub skierowanego) za pomoc¡ przedstawionej techniki.

(26)

Grafy i Zas-tosowania c Marcin Sydow Najkrótsze ‘cie»ki Warianty Relaksacja DAG Algorytm Dijkstry Bellman-Ford Wszystkie pary Podsumowanie Dzi¦kuj¦ za uwag¦

Cytaty

Powiązane dokumenty

Niech dla grafu G stopnia k, zbiór S(G) będzie zawierał wszystkie jego wierzchołki źródłowe.. Jeśli graf nie posiada koła, wówczas w kolejnych krokach będziemy usuwali z grafu

Problem komiwojażera polega na znalezieniu minimalnego cyklu Hamiltona (cyklu, w którym przez każdy wierzchołek przechodzimy dokładnie raz) w grafie ważonym (najczęściej rozważa

G= {V, E}, gdzie V jest zbiorem wierzchołków (węzłów) i E zbiorem krawędzi BIALY – kolor nadawany nie odwiedzonym wierzchołkom.. SZARY – kolor nadawany

powyższy graf jest eulerowski, ale jeśli spróbujemy wygenerować cykl Eulera startując z wierzchołka B i wybierając kolejno krawędzie:..

Air travels over the sea surface in the form of wind, and water in the form of sea currents and tides as well as waves (however the movement of water particles

In addition, due to the steadily deteriorating quality of fuel oils and catalytic additives (Cat- fines) used in the refining processes of crude oil, the

Do m niej znanych lat należy okres królew iecki, zw łaszcza udział w pow staniu styczniow ym.. K ętrzyński został sekretarzem naukow ym Zakładu N aukow ego

Sections 2.1, 2.1 and 2.3 discuss the different maintenance concepts, the demand these concepts try to fulfill and the relationship between the latter two. It was showed that