SlideShare a Scribd company logo
1 of 10
ALGORYTM DIJKSTRY
 Edsger Wybe Dijkstra ( 1930 – 2002) był
to holenderski informatyk, zajmujący się
głównie teorią programowania (np.
algorytmika, języki programowania). W
roku 1972 otrzymał Nagrodę Turinga.
Zapamiętany został głównie jako twórca
algorytmu nazwanego swoim
nazwiskiem (który jest głównym
tematem tej prezentacji) oraz
problemowi ucztujących filozofów.
Umarł 6 sierpnia 2002 roku ( w wieku 72
lat) po długiej walce z nowotworem.
Zdjęcie po prawej pochodzi z tegoż roku.
 Algorytm ten jest wykorzystywany do
znajdywania najkrótszej drogi z
pojedynczego źródła w grafie. Należy
zauważyć, że aby działał, żadna krawędź
grafu nie może mieć ujemnej wagi. Jest
bardzo użyteczny podczas rozwiązywania
zadań opierających się na grafach.
 Co należy kolejno zrobić, to:
 Przez S oznaczamy wierzchołek źródłowy, w(i, j) to waga krawędzi (i,j) w
grafie.
 Stwórz tablicę d odległości od źródła dla wszystkich wierzchołków grafu.
Na początku d[s]=0, zaś d[v]=nieskończoność dla wszystkich
pozostałych wierzchołków.
 Utwórz kolejkę priorytetową Q wszystkich wierzchołków grafu.
Priorytetem kolejki jest aktualnie wyliczona odległość od wierzchołka
źródłowego S.
 Dopóki kolejka nie jest pusta:
 Usuń z kolejki wierzchołek u o najniższym priorytecie (wierzchołek najbliższy
źródła, który nie został jeszcze rozważony)
 Dla każdego sąsiada v wierzchołka u dokonaj relaksacji poprzez : jeśli d[u] +
w(u,v) < d[v] (poprzez u da się dojść do v szybciej niż dotychczasową
ścieżką), to d[v] := d[u] + w(u,v).
 Na końcu tablica d zawiera najkrótsze odległości do wszystkich
wierzchołków.
 public class Dijkstra
{
public const int INF = 1000000;
public int[,] Graph { get; set; }
public Dijkstra(int[,] graph)
{
Graph = graph;
}
public int[] GetPath(int SRC, int DEST)
{
int graphSize = Graph.GetLength(0);
int[] dist = new int[graphSize];
int[] prev = new int[graphSize];
int[] nodes = new int[graphSize];
for (int i = 0; i < dist.Length; i++)
{
dist[i] = prev[i] = INF;
nodes[i] = i;
}
dist[SRC] = 0;
do
{
int smallest = nodes[0];
int smallestIndex = 0;
for (int i = 1; i < graphSize; i++)
{
if (dist[nodes[i]] < dist[smallest])
{
smallest = nodes[i];
smallestIndex = i;
}
}
 graphSize--;
            nodes[smallestIndex] = nodes[graphSize];
            if (dist[smallest] == INF || smallest == DEST)
                break;
            for (int i = 0; i < graphSize; i++)
            {
                int v = nodes[i];
                int newDist = dist[smallest] + Graph[smallest, v];
                if (newDist < dist[v])
                {
                    dist[v] = newDist;
                    prev[v] = smallest;
                }
            }
        } while (graphSize > 0);
        return ReconstructPath(prev, SRC, DEST);
    }
} 
 Algorytm Dijkstry nie działa, jeśli w grafie występują 
krawędzie z ujemnymi wagami – w tym wypadku używa 
się wolniejszego, lecz bardziej ogólnego algorytmu 
Bellmana-Forda. Jeśli graf nie jest ważony (wszystkie wagi 
mają wielkość 1), zamiast algorytmu Dijkstry wystarczy 
algorytm przeszukiwania grafu wszerz.
 Algorytm A* jest pewnym uogólnieniem algorytmu 
Dijkstry, które pozwala przeszukiwać tylko część grafu, 
jednak wymaga dodatkowej wstępnej informacji 
(heurystyki) o odległościach wierzchołków.
 Algorytm Prima znajdowania minimalnego drzewa 
rozpinającego oparty jest o bardzo podobny pomysł co 
algorytm Dijkstry.
Algorytm dijkstry
Algorytm dijkstry

More Related Content

Viewers also liked

презентация забазайченко о.п.
презентация забазайченко о.п.презентация забазайченко о.п.
презентация забазайченко о.п.
Oks25
 
Functional vision loss table 2
Functional vision loss table 2Functional vision loss table 2
Functional vision loss table 2
Arash Eslami
 
презентация
презентацияпрезентация
презентация
kutkova
 
презентация забазайченко о.п.
презентация забазайченко о.п.презентация забазайченко о.п.
презентация забазайченко о.п.
Oks25
 
งานนำเสนอ
งานนำเสนองานนำเสนอ
งานนำเสนอ
tongkesmanee
 
Alamo river california trails and greenways conference presentation 050913
Alamo river california trails and greenways conference presentation 050913Alamo river california trails and greenways conference presentation 050913
Alamo river california trails and greenways conference presentation 050913
Alexander P. Meyerhoff, AICP
 
Modultheoremapythagorasmulyati 111218200849-phpapp02
Modultheoremapythagorasmulyati 111218200849-phpapp02Modultheoremapythagorasmulyati 111218200849-phpapp02
Modultheoremapythagorasmulyati 111218200849-phpapp02
Delita Nusantara
 
The divine of succession
The divine of successionThe divine of succession
The divine of succession
JM Ferrer
 

Viewers also liked (19)

AmeraTex Energy | The American Oil & Gas Industry Is Rescuing The Obama Economy
AmeraTex Energy | The American Oil & Gas Industry Is Rescuing The Obama EconomyAmeraTex Energy | The American Oil & Gas Industry Is Rescuing The Obama Economy
AmeraTex Energy | The American Oil & Gas Industry Is Rescuing The Obama Economy
 
презентация забазайченко о.п.
презентация забазайченко о.п.презентация забазайченко о.п.
презентация забазайченко о.п.
 
English gr 7 learners matls (q1&2)
English gr 7 learners matls (q1&2)English gr 7 learners matls (q1&2)
English gr 7 learners matls (q1&2)
 
Functional vision loss table 2
Functional vision loss table 2Functional vision loss table 2
Functional vision loss table 2
 
презентация
презентацияпрезентация
презентация
 
โครงงานกระตุ้นชุมชน เพิ่มจิตอาสาพัฒนาวัดบ้านกุดนางทุย
โครงงานกระตุ้นชุมชน เพิ่มจิตอาสาพัฒนาวัดบ้านกุดนางทุยโครงงานกระตุ้นชุมชน เพิ่มจิตอาสาพัฒนาวัดบ้านกุดนางทุย
โครงงานกระตุ้นชุมชน เพิ่มจิตอาสาพัฒนาวัดบ้านกุดนางทุย
 
ภาพบรรยาการการทำงาน
ภาพบรรยาการการทำงานภาพบรรยาการการทำงาน
ภาพบรรยาการการทำงาน
 
Access
AccessAccess
Access
 
Library camp wales presentation
Library camp wales presentationLibrary camp wales presentation
Library camp wales presentation
 
презентация забазайченко о.п.
презентация забазайченко о.п.презентация забазайченко о.п.
презентация забазайченко о.п.
 
Urbanismo janela-otero-deber
Urbanismo janela-otero-deberUrbanismo janela-otero-deber
Urbanismo janela-otero-deber
 
งานนำเสนอ
งานนำเสนองานนำเสนอ
งานนำเสนอ
 
Caregivers of Stroke Survivors
Caregivers of Stroke SurvivorsCaregivers of Stroke Survivors
Caregivers of Stroke Survivors
 
Giving back with GitHub - Putting the Open Source back in iOS
Giving back with GitHub - Putting the Open Source back in iOSGiving back with GitHub - Putting the Open Source back in iOS
Giving back with GitHub - Putting the Open Source back in iOS
 
Alamo river california trails and greenways conference presentation 050913
Alamo river california trails and greenways conference presentation 050913Alamo river california trails and greenways conference presentation 050913
Alamo river california trails and greenways conference presentation 050913
 
Modultheoremapythagorasmulyati 111218200849-phpapp02
Modultheoremapythagorasmulyati 111218200849-phpapp02Modultheoremapythagorasmulyati 111218200849-phpapp02
Modultheoremapythagorasmulyati 111218200849-phpapp02
 
The divine of succession
The divine of successionThe divine of succession
The divine of succession
 
โครงงาน
โครงงานโครงงาน
โครงงาน
 
Avaliação matemática-e-língua-portuguesa-2º-ano
Avaliação matemática-e-língua-portuguesa-2º-anoAvaliação matemática-e-língua-portuguesa-2º-ano
Avaliação matemática-e-língua-portuguesa-2º-ano
 

Algorytm dijkstry