wyszukiwanieWGłąb() {
for każdy wierzchołek v num(v)=0;
krawędzie = null;
i=1;
while istnieje v taki, że num(v)==0 DFS(v);
wyświetl krawędzie;
}
DFS(v)
{ num(v)=i++;
for wszystkich wierzchołków u sąsiadujących z v if num(u)==0
{dołącz krawędź do krawędzie;
DFS(u);
} }
WyszukiwanieWszerz() {
for każdy wierzchołek v num(v)=0;
krawędzie = null;
i=1;
while istnieje v taki, że num(v)==0 { num(v)=i++;
umieść w kolejce v;
while kolejka nie jest pusta {v= pobierz z kolejki();
for wszystkich wierzchołków u sasiadujacych z v if num(u)==0
{num(u)=i++;
umieść w kolejce u;
dołącz krawędź (vu) do krawędzie;
} }
}
wyświetl krawędzie;
}
AlgorytmDijkstry (ważony graf, wierzchołek pierwszy) { for wszystkich wierzchołków v
aktOdl(v)=inf;
aktOdl(pierwszy)=0;
doSpr = wszystkie wierzchołki;
while doSpr nie jest pusty
{v= wierzchołek z doSpr o minimalnej aktOdl(v);
usuń v z doSpr;
for wszystkich sąsiadów u wierzchołka v będących w doSpr
{if aktOdl(u)>aktOdl(v)+waga(krawędź(vu) {aktOdl(u)=aktOdl(v)+waga(krawędź(vu);
poprzednik(u)=v;
} }
}
algorytmForda(ważony graf, wierzchołek pierwszy) {
for wszystkich wierzchołków v aktOdl(v)=inf;
aktOdl(pierwszy)=0;
while istnieje krawędź(vu) taka, że
aktOdl(u)>aktOdl(v)+waga(krawędź(vu) aktOdl(u)=aktOdl(v)+waga(krawędź(vu);
}
Algorytm Floyda
algorytmF(macierz waga) {
for i=0 do n-1
for j=0 do n-1
for k=0 do n-1
if waga[j][k]>waga[j][i]+waga[i][k]
waga[j][k]=waga[j][i]+waga[i][k]
}
algorytmKruskala( ważony spójny nieskierowany graf ) {
drzewo=null;
krawędzie= sekwencja wszystkich krawędzi uporządkowana według wag;
for (i=1; i<=k i rozmiar(drzewo)<n-1; i++)
if (krawędź[i] nie tworzy cyklu z krawędziami w drzewo)
dodaj krawędź[i] do drzewo;
}
algorytmPrima( ważony spójny nieskierowany graf ) {
drzewo=null;
krawędzie= sekwencja wszystkich krawędzi uporządkowana według wag;
for i=1 do n-1 for j=1 do k
if (krawędź[i] nie tworzy cyklu z krawędziami w drzewo i jest
incydentna z pewnym wierzchołkiem z drzewo)
{
dodaj krawędź[i] do drzewo;
break;
} }