ASD Ćwiczenia 12: Różnice pomiędzy wersjami
Linia 41: | Linia 41: | ||
---- | ---- | ||
b) Zaprojektuj algorytm, który w czasie liniowym policzy wszystkie dwuspójne składowe danego (przez listy sąsiedztw), spójnego grafu. | b) Zaprojektuj algorytm, który w czasie liniowym policzy wszystkie dwuspójne składowe danego (przez listy sąsiedztw), spójnego grafu, tzn. podzieli zbiór wszystkich krawędzi na podzbiory odpowiadające poszczególnym dwuspójnym składowym. | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"> | ||
Linia 48: | Linia 48: | ||
<div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible-content" style="display:none"> | ||
Zaadoptuj algorytm do wykrywania wierzchołków rozdzielających. Każdą nowo odwiedzaną krawędź <math>u-v</math> odkładaj na stos. Bez straty ogólności przyjmijmy, że <math>u</math> jest przodkiem <math>v</math> w drzewie. Jeśli <math>u-v</math> jest krawędzią drzewową, to odkładamy ją na stos będąc w wierzchołku <math>u</math>, natomiast jeśli jest to krawędź niedrzewowa, to będąc w wierzchołku <math>v</math>. | Zaadoptuj algorytm do wykrywania wierzchołków rozdzielających. Każdą nowo odwiedzaną krawędź <math>u-v</math> odkładaj na stos. Bez straty ogólności przyjmijmy, że <math>u</math> jest przodkiem <math>v</math> w drzewie. Jeśli <math>u-v</math> jest krawędzią drzewową, to odkładamy ją na stos będąc w wierzchołku <math>u</math>, natomiast jeśli jest to krawędź niedrzewowa, to będąc w wierzchołku <math>v</math>. Po wykryciu każdego wierzchołka rozdzielającego <math>v</math> wypisz wszystkie krawędzie ze stosu kończąc na krawędzi drzewowej <math>v-u</math> takiej, że <math>low[u] \ge nr[v] </math>. | ||
</div> | </div> | ||
</div> | </div> |
Wersja z 10:20, 29 wrz 2006
Zadanie 1
Pokaż, w jaki sposób sprawdzić w czasie liniowym, czy graf jest grafem dwudzielnym
a) za pomocą przeszukiwania wszerz,
b) z wykorzystaniem przeszukiwania w głąb.
Wskazówka
Zadanie 2
Niech będzie grafem spójnym. Wierzchołkiem rozdzielającym w grafie nazywamy każdy wierzchołek, którego usunięcie rozspójnia . Zaadoptuj algorytm wykrywania mostów grafie do znajdowania wszystkich wierzchołków rozdzielających.
Wskazówka
Zadanie 3
Graf spójny bez wierzchołków rozdzielających nazywamy grafem dwuspójnym. Dwuspójną składową grafu G nazywam każdy jego maksymalny (w sensie zawierania), dwuspójny podgraf.
a) Udowodnij, że każda krawędź grafu należy do dokładnie jednej dwuspójnej składowej.
b) Zaprojektuj algorytm, który w czasie liniowym policzy wszystkie dwuspójne składowe danego (przez listy sąsiedztw), spójnego grafu, tzn. podzieli zbiór wszystkich krawędzi na podzbiory odpowiadające poszczególnym dwuspójnym składowym.
Wskazówka