Professional Documents
Culture Documents
Grafovi-2del V2006ok
Grafovi-2del V2006ok
1
Доц. д-р Трајковиќ Владимир за интерна употреба
2
Доц. д-р Трајковиќ Владимир за интерна употреба
опаѓа за еден. Во моментот кога тој број ќе стане еднаков на нула, се добива
теме кандидат за отстранување од графот. Податочната репрезентација на
почетниот граф од примерот опишан во слика 12.2 е даден на слика 12.3
3
Доц. д-р Трајковиќ Владимир за интерна употреба
4
Доц. д-р Трајковиќ Владимир за интерна употреба
За даден неориентиран граф G = (V, E), каде врските дадени со (u, v) E, имаат
тежина (weight) w(u, v) минималното стебло претставник на графот G е дадено
со T E така што неговата вкупна тежина
w(T ) = ∑ w(u, v)
( u ,v )∈T
5
Доц. д-р Трајковиќ Владимир за интерна употреба
GENERIC-MST(G, w)
1 A ← ∅
2 while A ne formira steblo pretstavnik
3 do najdi ja vrskata (u, v) koja e bezbedna za A
4 A ← A {(u, v)}
5 return A
Алгоритмот на Крускал
Во пристапот (алгоритмот) на Крускал, минималното стебло претставник се
гради со вметнување на врска по врска. Врските кандидати за вметнување во
минималното стебло претставник се сите врски кои се споени со темињата на
врските кои го сочинуваат стеблото. Врските кои можат да се вметнат во
предходно изграденото минимално стебло се проверуваат според неопаѓачкиот
редослед на нивните тежини. Проверката на врските се сведува на проверка
дали таа врска води кон теме кое веќе постои во минималното стебло
претставник. Доколку темето кон кое таа врска води, не постои во минималното
стебло претставник, таа врска се вметнува во минималното стебло претставник.
Алгоритмот завршува кога сите темиња од графот ќе постојат во стеблото,
односно кога проверката ќе даде неповолен резултат за сите кандидат врски.
Стеблото почнува да се гради со врската од графот која има најмала тежина.
6
Доц. д-р Трајковиќ Владимир за интерна употреба
7
Доц. д-р Трајковиќ Владимир за интерна употреба
8
Доц. д-р Трајковиќ Владимир за интерна употреба
1 T ← ∅
2 while T pomalku od n - 1 vrski and E ne e prazno do
3 izberi vrska (v,w) od E so najmala cena;
4 izbrisi (v,w) od E;
5 if (v,w) ne sozdava jamka vo T
6 then dodadi (v,w) vo T
7 else otstrani (v,w)
8 end
9 if T sodrzi povekje od n - 1 vrski then print (' nema steblo
pretstavnik ')
Алгоритмот на Прим
Алгоритмот на Прим се разликува од алгоритмот на Крускал затоа што тој во
секоја итерација гради едно стебло. Откако ќе се избере произволно почетно
теме, кон него се додаваат врски од множеството на врски на темињата кои се
споени со него. Во следните итерации се разгледуваат сите врски кои не
припаѓаат на веќе изграденото стебло, но излегуваат од темиња што припаѓаат
на него. Врската (односно темето) што се придодава кон минималното стебло
претставник на графот е онаа врска што го задоволува условот да не се спојува
со теме што веќе припаѓа на минималното стебло (како кај Крускал) и има
најмала тежина (според максималистичкиот архетип). Графичка илустрација на
овој алгоритам е дадена на слика 12.7. Темињата (и врските) означени со темна
боја се темињата (и врските) кои во даден чекор влегуваат во минималното
стебло претставник на графот. Во случај кога постои избор на повеќе врски со
иста тежина кои би можеле да влезат во минималното стебло претставник на
графот, изборот е произволен.
9
Доц. д-р Трајковиќ Владимир за интерна употреба
10
Доц. д-р Трајковиќ Владимир за интерна употреба
MST-PRIM(G, w, r)
1 Q ← V[G]
2 for sekoe u ∈ Q
3 do key[u] ← ∞
4 key [r] ← 0
5 [r] ← NIL
6 while Q ≠ ∅
7 do u ← EXTRACT-MIN(Q)
8 for sekoe v ∈ Adj[u]
9 do if v ∈ Q and w (u, v) < key[v]
10 then [v] ← u
11 key[v] ← w(u, v)
11
Доц. д-р Трајковиќ Владимир за интерна употреба
слика 12.8 (a) Пример ориентиран тежински граф (б) најкратки патеки до
сите можни темиња од темето Vo
12
Доц. д-р Трајковиќ Владимир за интерна употреба
слика 12.9 (a) Насочен тежински граф (б) Пример стебло на најкратки
патеки од јазелот 0 (в) Различно стебло на најкратки патеки од истиот јазел
13
Доц. д-р Трајковиќ Владимир за интерна употреба
INITIALIZE-SINGLE-SOURCE(G,s)
1 for sekoe teme v ∈ V[G]
2 do d[v] ← ∞
3 [v] ← NIL
4 d[s] ← 0
RELAX(u, v, w)
1 if d[v] > d[u] + w(u,v)
2 then d[v] ← d[u] + w(u,v)
3 [v] ← u
Алгоритам на Џикстра
Алгоритмот на Џикстра работи под претпоставка дека за даден тежински
ориентиран граф G = (V, E) за секоја врска (u, v) E важи дека нејзината тежина
w(u, v) 0.
DIJKSTRA(G,w,s)
1 INITIALIZE-SINGLE-SOURCE (G,s)
2 S ← ∅
3 Q ← V[G]
4 while Q ≠ ∅
5 do u ← EXTRACT-MIN(Q)
6 S ← S {u}
7 for sekoe teme v ∈ Adj[u]
8 do RELAX (u,v,w)
14
Доц. д-р Трајковиќ Владимир за интерна употреба
Треба да се нагласи дека поради тоа што во редот се наоѓаат сите темиња од
графот, кои се вадат и се обработуваат, циклусот се извршува V пати. Во
принцип EXTRACT-MIN може да се изврши во O(V) време, а бидејќи таа операција
се извршува V пати (поради тоа што толку елементи има во редот Q), вкупниот
придонес на таа операција е O(V2). Секое теме се обработува само еднаш при
што се третираат сите негови излезни врски (линии 7 и 8 од алгоритмот) од што
следи дека се третираат сите излезни врски од сите темиња, односно сите врски
во графот. Од тука следи дека for јамката се извршува E пати односно целиот
алгоритам се извршува со временска комплексност O(V2 + E). Бидејќи бројот на
врските во еден граф е обично помал од бројот на темиња, можеме да кажеме
дека временската комплексност на алгоритмот на Џикстра е O(V2).
15