• Nie Znaleziono Wyników

I.

1 Utwórz listę krawędzi biorąc na jej początek krawędzie incydentne z dowolnie wybranym wierzchołkiem v: e1, e2, . . . , ed (v), ed (v)+1, . . . , em

2 Dla każdego wierzchołka v ∈ V (G ), r (v ) := v ; p(v ) := NONE .

3 k := 1 – wskaźnik wykorzystywany przy przeglądaniu krawędzi;

4 END := d (v) + 1 – będzie określał zakończenie działania algorytmu;

5 i := 0 – licznik, ile dodano krawędzi do drzewa;

6 Tree(1) := None – nie zaczęliśmy budować drzewa.

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

I.

1 Utwórz listę krawędzi biorąc na jej początek krawędzie incydentne z dowolnie wybranym wierzchołkiem v: e1, e2, . . . , ed (v), ed (v)+1, . . . , em

2 Dla każdego wierzchołka v ∈ V (G ), r (v ) := v ; p(v ) := NONE .

3 k := 1 – wskaźnik wykorzystywany przy przeglądaniu krawędzi;

4 END := d (v) + 1 – będzie określał zakończenie działania algorytmu;

5 i := 0 – licznik, ile dodano krawędzi do drzewa;

6 Tree(1) := None – nie zaczęliśmy budować drzewa.

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

I.

1 Utwórz listę krawędzi biorąc na jej początek krawędzie incydentne z dowolnie wybranym wierzchołkiem v: e1, e2, . . . , ed (v), ed (v)+1, . . . , em

2 Dla każdego wierzchołka v ∈ V (G ), r (v ) := v ; p(v ) := NONE .

3 k := 1 – wskaźnik wykorzystywany przy przeglądaniu krawędzi;

4 END := d (v) + 1 – będzie określał zakończenie działania algorytmu;

5 i := 0 – licznik, ile dodano krawędzi do drzewa;

6 Tree(1) := None – nie zaczęliśmy budować drzewa.

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

I.

1 Utwórz listę krawędzi biorąc na jej początek krawędzie incydentne z dowolnie wybranym wierzchołkiem v: e1, e2, . . . , ed (v), ed (v)+1, . . . , em

2 Dla każdego wierzchołka v ∈ V (G ), r (v ) := v ; p(v ) := NONE .

3 k := 1 – wskaźnik wykorzystywany przy przeglądaniu krawędzi;

4 END := d (v) + 1 – będzie określał zakończenie działania algorytmu;

5 i := 0 – licznik, ile dodano krawędzi do drzewa;

6 Tree(1) := None – nie zaczęliśmy budować drzewa.

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

I.

1 Utwórz listę krawędzi biorąc na jej początek krawędzie incydentne z dowolnie wybranym wierzchołkiem v: e1, e2, . . . , ed (v), ed (v)+1, . . . , em

2 Dla każdego wierzchołka v ∈ V (G ), r (v ) := v ; p(v ) := NONE .

3 k := 1 – wskaźnik wykorzystywany przy przeglądaniu krawędzi;

4 END := d (v) + 1 – będzie określał zakończenie działania algorytmu;

5 i := 0 – licznik, ile dodano krawędzi do drzewa;

6 Tree(1) := None – nie zaczęliśmy budować drzewa.

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

I.

1 Utwórz listę krawędzi biorąc na jej początek krawędzie incydentne z dowolnie wybranym wierzchołkiem v: e1, e2, . . . , ed (v), ed (v)+1, . . . , em

2 Dla każdego wierzchołka v ∈ V (G ), r (v ) := v ; p(v ) := NONE .

3 k := 1 – wskaźnik wykorzystywany przy przeglądaniu krawędzi;

4 END := d (v) + 1 – będzie określał zakończenie działania algorytmu;

5 i := 0 – licznik, ile dodano krawędzi do drzewa;

6 Tree(1) := None – nie zaczęliśmy budować drzewa.

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

II. Powtarzamy (Rozpatrujemy w pewnej kolejności, z nawracaniem, krawędzie ek= (uk, vk) zaczynając od e1= (u1, v1), bo k = 1 na początku)

1 Pobierz z listy ek= (uk, vk).

2 Jeśli r (uk) 6= r (vk) , to

dodajemy ek za pomocą AddEdge(ek); i := i + 1;

Tree(i ) := k .

3 Jeśli Tree(1) = END, to STOP

4 Jeśli i = |V (G )| − 1, to wydajemy krawędzie zbudowanego drzewa

5 Jeśli i = |V (G )| − 1 lub k = |E (G )| (Jeśli zbudowaliśmy drzewo lub skończyły się krawędzie), to

1 Jeśli Tree(i ) = |E (G )| , to

usuwamy ją za pomocą DeleteEdge(e|E (G )|) i := i − 1

2 Usuwamy eTree(i )za pomocą DeleteEdge(eTree(i )).

3 k := Tree(i ) + 1

4 i := i − 1

W przeciwnym przypadku k := k + 1

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

II. Powtarzamy

1 Pobierz z listy ek= (uk, vk).

2 Jeśli r (uk) 6= r (vk)

(Jeśli rozpatrywana krawędź ek łączy dwa różne drzewa), to dodajemy ek za pomocą AddEdge(ek);

i := i + 1; (zapisujemy, że dodaliśmy w sumie i kraw. do drzewa)

Tree(i ) := k (zapisujemy indeks nowo dodanej krawędzi do drzewa).

3 Jeśli Tree(1) = END, to STOP

4 Jeśli i = |V (G )| − 1, to wydajemy krawędzie zbudowanego drzewa

5 Jeśli i = |V (G )| − 1 lub k = |E (G )| (Jeśli zbudowaliśmy drzewo lub skończyły się krawędzie), to

1 Jeśli Tree(i ) = |E (G )| , to

usuwamy ją za pomocą DeleteEdge(e|E (G )|) i := i − 1

2 Usuwamy eTree(i )za pomocą DeleteEdge(eTree(i )).

3 k := Tree(i ) + 1

4 i := i − 1

W przeciwnym przypadku k := k + 1

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

II. Powtarzamy

1 Pobierz z listy ek= (uk, vk).

2 Jeśli r (uk) 6= r (vk) , to

dodajemy ek za pomocą AddEdge(ek);

i := i + 1;

Tree(i ) := k .

3 Jeśli Tree(1) = END, to STOP

(Wszystkie krawędzie incydentne z vzostały rozpatrzone)

4 Jeśli i = |V (G )| − 1, to wydajemy krawędzie zbudowanego drzewa

5 Jeśli i = |V (G )| − 1 lub k = |E (G )| (Jeśli zbudowaliśmy drzewo lub skończyły się krawędzie), to

1 Jeśli Tree(i ) = |E (G )| , to

usuwamy ją za pomocą DeleteEdge(e|E (G )|) i := i − 1

2 Usuwamy eTree(i )za pomocą DeleteEdge(eTree(i )).

3 k := Tree(i ) + 1

4 i := i − 1

W przeciwnym przypadku k := k + 1

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

II. Powtarzamy

1 Pobierz z listy ek= (uk, vk).

2 Jeśli r (uk) 6= r (vk) , to

dodajemy ek za pomocą AddEdge(ek);

i := i + 1;

Tree(i ) := k .

3 Jeśli Tree(1) = END, to STOP

4 Jeśli i = |V (G )| − 1, to wydajemy krawędzie zbudowanego drzewa (Skończyliśmy budować kolejne drzewo. Wypisać jego krawędzie można np. bazując na poprzednikach (p(·)) lub na indeksach z Tree)

5 Jeśli i = |V (G )| − 1 lub k = |E (G )| (Jeśli zbudowaliśmy drzewo lub skończyły się krawędzie), to

1 Jeśli Tree(i ) = |E (G )| , to

usuwamy ją za pomocą DeleteEdge(e|E (G )|) i := i − 1

2 Usuwamy eTree(i )za pomocą DeleteEdge(eTree(i )).

3 k := Tree(i ) + 1

4 i := i − 1

W przeciwnym przypadku k := k + 1

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

II. Powtarzamy

1 Pobierz z listy ek= (uk, vk).

2 Jeśli r (uk) 6= r (vk) , to

dodajemy ek za pomocą AddEdge(ek);

i := i + 1;

Tree(i ) := k .

3 Jeśli Tree(1) = END, to STOP

4 Jeśli i = |V (G )| − 1, to wydajemy krawędzie zbudowanego drzewa

5 Jeśli i = |V (G )| − 1 lub k = |E (G )| (Jeśli zbudowaliśmy drzewo lub skończyły się krawędzie), to

1 Jeśli Tree(i ) = |E (G )| (Jeśli ostatnio dodana krawędź jest ostatnia na liście krawędzi), to

usuwamy ją za pomocą DeleteEdge(e|E (G )|)

i := i − 1 (Będziemy zaraz rozpatrywać krawędź, która przed nią została dodana do drzewa)

2 Usuwamy eTree(i )za pomocą DeleteEdge(eTree(i )).

3 k := Tree(i ) + 1

4 i := i − 1

W przeciwnym przypadku k := k + 1

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

II. Powtarzamy

1 Pobierz z listy ek= (uk, vk).

2 Jeśli r (uk) 6= r (vk) , to

dodajemy ek za pomocą AddEdge(ek);

i := i + 1;

Tree(i ) := k .

3 Jeśli Tree(1) = END, to STOP

4 Jeśli i = |V (G )| − 1, to wydajemy krawędzie zbudowanego drzewa

5 Jeśli i = |V (G )| − 1 lub k = |E (G )| (Jeśli zbudowaliśmy drzewo lub skończyły się krawędzie), to

1 Jeśli Tree(i ) = |E (G )| , to

usuwamy ją za pomocą DeleteEdge(e|E (G )|) i := i − 1

2 Usuwamy eTree(i )za pomocą DeleteEdge(eTree(i )).

3 k := Tree(i ) + 1 (w kolejnej turze rozpatrzymy krawędź znajdującą się na liście krawędzi zaraz po usuniętej)

4 i := i − 1 (zmieniamy licznik liczby krawędzi aktualnie dodanych do drzewa)

W przeciwnym przypadku k := k + 1

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

II. Powtarzamy

1 Pobierz z listy ek= (uk, vk).

2 Jeśli r (uk) 6= r (vk) , to

dodajemy ek za pomocą AddEdge(ek);

i := i + 1;

Tree(i ) := k .

3 Jeśli Tree(1) = END, to STOP

4 Jeśli i = |V (G )| − 1, to wydajemy krawędzie zbudowanego drzewa

5 Jeśli i = |V (G )| − 1 lub k = |E (G )| (Jeśli zbudowaliśmy drzewo lub skończyły się krawędzie), to

1 Jeśli Tree(i ) = |E (G )| , to

usuwamy ją za pomocą DeleteEdge(e|E (G )|) i := i − 1

2 Usuwamy eTree(i )za pomocą DeleteEdge(eTree(i )).

3 k := Tree(i ) + 1

4 i := i − 1

W przeciwnym przypadku k := k + 1 (w kolejnej turze weźmiemy kolejną krawędź z listy krawędzi)

Liczba drzew rozpiętych grafu Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący wszystkie drzewa rozpięte

Algorytm generujący drzewa – opis

II. Powtarzamy

1 Pobierz z listy ek= (uk, vk).

2 Jeśli r (uk) 6= r (vk) , to

dodajemy ek za pomocą AddEdge(ek);

i := i + 1;

Tree(i ) := k .

3 Jeśli Tree(1) = END, to STOP

4 Jeśli i = |V (G )| − 1, to wydajemy krawędzie zbudowanego drzewa

5 Jeśli i = |V (G )| − 1 lub k = |E (G )| (Jeśli zbudowaliśmy drzewo lub skończyły się krawędzie), to

1 Jeśli Tree(i ) = |E (G )| , to

usuwamy ją za pomocą DeleteEdge(e|E (G )|) i := i − 1

2 Usuwamy eTree(i )za pomocą DeleteEdge(eTree(i )).

3 k := Tree(i ) + 1

4 i := i − 1

W przeciwnym przypadku k := k + 1

Powiązane dokumenty