Teoria grafów: zadania z rozwiązaniami krok po kroku

Darmowe zadania z tematu Teoria grafów z rysunkami, podpowiedziami i pełnymi rozwiązaniami. Za każdym razem nowe wartości, na trzech poziomach: stopnie i krawędzie, ścieżki Eulera i drzewa, najkrótsze ścieżki i drzewa rozpinające.

Darmowe zadanieŁatwy

Liczba wierzchołków drzewa: 12. Ile krawędzi |E| ma to drzewo?

|V| = 12

Dokładna odpowiedź: liczba całkowita, bez zaokrąglania.

Następne zadanie →

Co ćwiczysz

  1. Łatwystopnie i krawędzie
  2. Średniścieżki Eulera i drzewa
  3. Trudnynajkrótsze ścieżki i drzewa rozpinające

Jak rozwiązywać zadania: Teoria grafów

  1. Zapisz stopień każdego wierzchołka; suma stopni jest równa dwukrotności liczby krawędzi.
  2. W zadaniach o grafach eulerowskich sprawdź, czy graf jest spójny, i policz wierzchołki o nieparzystym stopniu.
  3. Dla drzew użyj n − 1 krawędzi i lematu o uściskach dłoni.
  4. W algorytmie Dijkstry prowadź tabelę tymczasowych odległości i w każdej rundzie zatwierdzaj niezatwierdzony wierzchołek o najmniejszej odległości.
  5. Dla minimalnego drzewa rozpinającego posortuj krawędzie według wagi i pomijaj każdą krawędź zamykającą cykl (Kruskal) albo rozbudowuj jedno drzewo od wierzchołka startowego (Prim).

Typowe błędy

  • Zapomnienie o podzieleniu sumy stopni przez 2.
  • Uznanie grafu za eulerowski bez sprawdzenia spójności.
  • Zatwierdzenie wierzchołka w algorytmie Dijkstry, zanim jego odległość będzie najmniejsza.
  • Branie najlżejszych krawędzi bez sprawdzania cykli.
  • Liczenie cykli Hamiltona w Kn jako n! zamiast (n − 1)!/2.

Najważniejsze wzory

Lemat o uściskach dłoni
Σ deg(v) = 2|E|
Grafy pełne
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
Graf regularny
|E| = n·k/2
Drzewo i las
|E| = n − 1, |E| = n − c
Liście drzewa
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
Euler
cykl: wszystkie stopnie parzyste; ścieżka: dokładnie 2 stopnie nieparzyste
Cykle Hamiltona w Kn
(n − 1)!/2
Aktualizacja w algorytmie Dijkstry
d(v) = min(d(v), d(u) + w(u, v))
Marsze o długości L
(Mᴸ)ij

Naucz się tematu Teoria grafów od zera

Wcześniej: Zbiory, relacje i funkcje

1Wierzchołki, krawędzie i stopnie

Graf składa się z wierzchołków (punktów) i krawędzi (linii łączących dwa wierzchołki). W grafie prostym nie ma pętli ani krawędzi wielokrotnych.

Stopień wierzchołka to liczba krawędzi, które się w nim stykają. Każda krawędź ma dwa końce, więc dodaje 1 do stopnia każdego z nich. Daje to lemat o uściskach dłoni:

Σ deg(v) = 2·|E|

Dwa wnioski: suma stopni jest zawsze parzysta, a liczba wierzchołków o nieparzystym stopniu też jest parzysta.

  • Graf pełny Kn łączy każdą parę: n(n − 1)/2 krawędzi.
  • Pełny graf dwudzielny Km,n łączy każdy wierzchołek jednej strony z każdym wierzchołkiem drugiej: m·n krawędzi.
  • Graf k-regularny o n wierzchołkach ma n·k/2 krawędzi.

Macierz sąsiedztwa ma 1 na pozycji (i, j), gdy i oraz j są połączone. Dla grafu nieskierowanego jest symetryczna, suma wiersza to stopień, a element (i, j) macierzy Mᴸ zlicza marsze o długości L z i do j.

Samosprawdzenie Graf ma stopnie 3, 3, 2, 2, 2. Ile ma krawędzi?
  1. 10
  2. 12
  3. 5
  4. 6

Odpowiedź: 6. Stopnie sumują się do 12, a każda krawędź jest liczona dwa razy, więc krawędzi jest 12/2 = 6. Liczba 5 to liczba wierzchołków.

2Euler i Hamilton

Cykl Eulera przechodzi każdą krawędź dokładnie raz i wraca do początku. Ścieżka Eulera przechodzi każdą krawędź raz, ale może skończyć się gdzie indziej. Dla grafu spójnego:

  • wszystkie stopnie parzyste: istnieje cykl Eulera;
  • dokładnie dwa stopnie nieparzyste: istnieje ścieżka Eulera, od jednego wierzchołka nieparzystego do drugiego;
  • więcej niż dwa stopnie nieparzyste: ani jedno, ani drugie.

Cykl Hamiltona odwiedza każdy wierzchołek dokładnie raz. Nie ma prostego testu stopni dla niego. W Kn jest (n − 1)!/2 różnych cykli Hamiltona: ustal początek, uporządkuj pozostałe n − 1 wierzchołków i podziel przez 2 ze względu na dwa kierunki.

Samosprawdzenie Graf spójny ma stopnie 2, 3, 4, 3, 2. Co posiada?
  1. Cykl Eulera
  2. Zarówno cykl Eulera, jak i ścieżkę Eulera, która nie jest cyklem
  3. Ścieżkę Eulera, ale nie cykl Eulera
  4. Żadne z nich

Odpowiedź: Ścieżkę Eulera, ale nie cykl Eulera. Dokładnie dwa wierzchołki mają stopień nieparzysty (dwie trójki), więc istnieje ścieżka Eulera między nimi, ale nie cykl.

3Drzewa

Drzewo to graf spójny bez cykli. Każde drzewo o n wierzchołkach ma dokładnie n − 1 krawędzi. Dodanie dowolnej krawędzi tworzy cykl; usunięcie dowolnej krawędzi rozspójnia graf.

Las złożony z c drzew o n wierzchołkach ma n − c krawędzi. Graf spójny o m krawędziach zachowuje drzewo rozpinające po usunięciu m − n + 1 krawędzi.

Lemat o uściskach dłoni zlicza liście: Σ deg = 2(n − 1). Krótka postać to L = 2 + Σ (d − 2) po wierzchołkach o stopniu d ≥ 3. Drzewo z dwoma wierzchołkami stopnia 3 i resztą liści ma 2 + 1 + 1 = 4 liście.

4Dijkstra i minimalne drzewa rozpinające

Algorytm Dijkstry znajduje najkrótsze odległości od wierzchołka startowego w grafie z wagami nieujemnymi.

  1. Nadaj wierzchołkowi startowemu odległość 0, a każdemu innemu ∞.
  2. Zatwierdź niezatwierdzony wierzchołek o najmniejszej odległości; jego odległość jest już ostateczna.
  3. Dla każdego sąsiada v zaktualizuj d(v) = min(d(v), d(u) + w(u, v)).
  4. Powtarzaj, aż wierzchołek docelowy zostanie zatwierdzony.

Minimalne drzewo rozpinające łączy wszystkie wierzchołki przy najmniejszej łącznej wadze. Kruskal sortuje krawędzie od lekkich do ciężkich i bierze każdą, chyba że zamyka cykl. Prim rozbudowuje jedno drzewo od wierzchołka startowego, zawsze dodając najlżejszą krawędź wychodzącą z niego. Oba kończą po n − 1 krawędziach.

Przykład krok po kroku

Znajdź najkrótszą odległość z A do E w poniższym grafie.

1

Start

412581ABCDE

d(A) = 0. Jego sąsiedzi dostają d(B) = 4 i d(C) = 1.

2

Zatwierdź C (1)

Przez C: d(B) = min(4, 1 + 2) = 3 oraz d(E) = 1 + 8 = 9.

3

Zatwierdź B (3)

Przez B: d(D) = 3 + 5 = 8.

4

Zatwierdź D (8)

Przez D: d(E) = min(9, 8 + 1) = 9. Brak poprawy, remis.

5

Zatwierdź E (9)

E jest zatwierdzony: jego odległość jest ostateczna.

Odpowiedź

Najkrótsza odległość to d(E) = 9, wzdłuż A → C → E. Trasa A → C → B → D → E ma tę samą długość, 1 + 2 + 5 + 1 = 9.

Samosprawdzenie Algorytm Kruskala wziął krawędzie o wagach 1, 2 i 3. Następna najlżejsza krawędź, o wadze 4, łączy dwa wierzchołki, które są już połączone. Co się dzieje?
  1. Algorytm się zatrzymuje
  2. Zamiast niej usuwana jest krawędź o wadze 3
  3. Zostaje pominięta, bo zamknęłaby cykl
  4. Zostaje wzięta, bo jest najlżejsza z pozostałych

Odpowiedź: Zostaje pominięta, bo zamknęłaby cykl. Kruskal nigdy nie zamyka cyklu: krawędź między dwoma wierzchołkami tej samej składowej jest pomijana, a algorytm przechodzi do następnej krawędzi.

5Typowe błędy

  • Zapomnienie o podzieleniu sumy stopni przez 2, by dostać liczbę krawędzi.
  • Sprawdzanie istnienia cyklu Eulera bez upewnienia się, że graf jest spójny.
  • Zatwierdzenie wierzchołka w algorytmie Dijkstry, zanim ma najmniejszą tymczasową odległość.
  • Branie n − 1 najlżejszych krawędzi bez sprawdzania cykli.
  • Liczenie cykli Hamiltona w Kn jako n! zamiast (n − 1)!/2.

6Jak wyglądają zadania egzaminacyjne

  • Łatwe: stopnie i krawędzie. Używasz lematu o uściskach dłoni, liczysz krawędzie grafów Kn, Km,n, regularnych i drzew, odczytujesz macierz sąsiedztwa albo klikasz wierzchołek o danym stopniu.
  • Średnie: ścieżki Eulera i drzewa. Rozstrzygasz, czy graf ma cykl lub ścieżkę Eulera, liczysz liście drzewa, liczysz krawędzie do usunięcia dla drzewa rozpinającego albo liczysz cykle Hamiltona w Kn.
  • Trudne: najkrótsze ścieżki i drzewa rozpinające. Wykonujesz algorytm Dijkstry, znajdujesz wierzchołek zatwierdzony w danej rundzie, wyznaczasz wagę minimalnego drzewa rozpinającego, klikasz krawędź, którą Kruskal lub Prim doda jako następną, albo liczysz marsze za pomocą macierzy sąsiedztwa.

Ucz się krok po kroku w aplikacjiUcz się krok po kroku w aplikacji

Przykłady z rozwiązaniami

Przykład 1Łatwy
AABBCCDDEE0010000001100010000101110

Pokazano macierz sąsiedztwa grafu prostego nieskierowanego. Ile krawędzi |E| ma ten graf?

Oblicz |E|

Pokaż podpowiedzi
  1. Element (i, j) jest równy 1, gdy wierzchołki i oraz j są połączone krawędzią.
  2. Każda krawędź {i, j} daje dwie jedynki: jedną w (i, j) i jedną w (j, i).
  3. Liczba jedynek w macierzy: 8.
Pokaż odpowiedź i rozwiązanie krok po kroku

Stopnie: stopień wierzchołka to liczba krawędzi, które się w nim stykają. Każda krawędź ma dwa końce, więc stopnie sumują się do dwukrotności liczby krawędzi: Σ deg(v) = 2|E| (lemat o uściskach dłoni). Liczba wierzchołków o nieparzystym stopniu jest zatem parzysta. Kn ma n(n − 1)/2 krawędzi, graf k-regularny o n wierzchołkach ma nk/2, a drzewo o n wierzchołkach ma n − 1 krawędzi.

Policz jedynki

sumy wierszy: 1 + 1 + 2 + 1 + 3 = 8
|E| = 8/2 = 4

Odpowiedź

|E| = 4
Przykład 2Średni
ABCDEFGCykl EuleraŚcieżka Eulera, bez cykluani jedno, ani drugie

Czy graf spójny ma cykl Eulera, ścieżkę Eulera, która nie jest cyklem, czy żadne z nich? Kliknij odpowiedź.

|V| = 7|E| = 10
  1. 1Cykl Eulera
  2. 2Ścieżka Eulera, bez cyklu
  3. 3ani jedno, ani drugie
Pokaż podpowiedzi
  1. Twierdzenie Eulera potrzebuje tylko stopni wierzchołków (graf jest spójny).
  2. Wszystkie stopnie parzyste: cykl Eulera. Dokładnie dwa stopnie nieparzyste: ścieżka Eulera między nimi. Więcej: żadne z nich.
  3. Policz wierzchołki o nieparzystym stopniu.
Pokaż odpowiedź i wyjaśnienie

Euler, Hamilton i drzewa: graf spójny ma cykl Eulera (każda krawędź raz, powrót do startu), gdy każdy wierzchołek ma stopień parzysty, oraz ścieżkę Eulera, która nie jest cyklem, gdy dokładnie dwa wierzchołki mają stopień nieparzysty; ścieżka biegnie wtedy od jednego wierzchołka nieparzystego do drugiego. Cykl Hamiltona odwiedza każdy wierzchołek raz; Kn ma ich (n − 1)!/2. Drzewo o n wierzchołkach ma n − 1 krawędzi, a graf spójny o m krawędziach zachowuje drzewo rozpinające po usunięciu m − n + 1 krawędzi.

Stopnie

deg(A) = 1, deg(B) = 4, deg(C) = 2, deg(D) = 4, deg(E) = 4, deg(F) = 2, deg(G) = 3

Wierzchołki nieparzyste

A, G → 2
Ścieżka Eulera, bez cyklu

Odpowiedź

Ścieżka Eulera, bez cyklu

Ścieżka Eulera zaczyna się w jednym wierzchołku nieparzystym i kończy w drugim.

Przykład 3Trudny
ABCDEF

Ile jest marszów zamkniętych o długości 3, które zaczynają się i kończą w E? Marsz może powtarzać wierzchołki i krawędzie. Nazwij tę liczbę N.

M = macierz sąsiedztwaL = 3

Oblicz N

Pokaż podpowiedzi
  1. Przy macierzy sąsiedztwa M liczba marszów o długości L z i do j to element (i, j) macierzy Mᴸ.
  2. Najpierw policz marsze o długości 2 z E do każdego wierzchołka, potem zrób jeszcze jeden krok.
  3. Marsze o długości 2 z E: A: 2, B: 1, C: 0, D: 2, E: 4, F: 1.
Pokaż odpowiedź i rozwiązanie krok po kroku

Stopnie: stopień wierzchołka to liczba krawędzi, które się w nim stykają. Każda krawędź ma dwa końce, więc stopnie sumują się do dwukrotności liczby krawędzi: Σ deg(v) = 2|E| (lemat o uściskach dłoni). Liczba wierzchołków o nieparzystym stopniu jest zatem parzysta. Kn ma n(n − 1)/2 krawędzi, graf k-regularny o n wierzchołkach ma nk/2, a drzewo o n wierzchołkach ma n − 1 krawędzi.

Macierz sąsiedztwa

A: 0 1 1 0 0 0
B: 1 0 0 1 1 0
C: 1 0 0 0 1 0
D: 0 1 0 0 1 1
E: 0 1 1 1 0 1
F: 0 0 0 1 1 0

Jeszcze jeden krok

(M³)EE = 2·0 + 1·1 + 0·1 + 2·1 + 4·0 + 1·1 = 4

Odpowiedź

N = 4

Pytania i odpowiedzi

Teoria grafów: co to jest?

Dwa wnioski: suma stopni jest zawsze parzysta, a liczba wierzchołków o nieparzystym stopniu też jest parzysta.

Teoria grafów: jak rozwiązywać zadania krok po kroku?
  1. Zapisz stopień każdego wierzchołka; suma stopni jest równa dwukrotności liczby krawędzi.
  2. W zadaniach o grafach eulerowskich sprawdź, czy graf jest spójny, i policz wierzchołki o nieparzystym stopniu.
  3. Dla drzew użyj n − 1 krawędzi i lematu o uściskach dłoni.
  4. W algorytmie Dijkstry prowadź tabelę tymczasowych odległości i w każdej rundzie zatwierdzaj niezatwierdzony wierzchołek o najmniejszej odległości.
  5. Dla minimalnego drzewa rozpinającego posortuj krawędzie według wagi i pomijaj każdą krawędź zamykającą cykl (Kruskal) albo rozbudowuj jedno drzewo od wierzchołka startowego (Prim).
Teoria grafów: jakie błędy są najczęstsze?
  • Zapomnienie o podzieleniu sumy stopni przez 2.
  • Uznanie grafu za eulerowski bez sprawdzenia spójności.
  • Zatwierdzenie wierzchołka w algorytmie Dijkstry, zanim jego odległość będzie najmniejsza.
  • Branie najlżejszych krawędzi bez sprawdzania cykli.
  • Liczenie cykli Hamiltona w Kn jako n! zamiast (n − 1)!/2.
Teoria grafów: co ćwiczysz?
  • Łatwy: stopnie i krawędzie
  • Średni: ścieżki Eulera i drzewa
  • Trudny: najkrótsze ścieżki i drzewa rozpinające

Każde zadanie ma nowe wartości, więc uczysz się metody, a nie odpowiedzi. Utknąłeś? Najpierw otwórz małą podpowiedź, a pełne wyjaśnienie dopiero wtedy, gdy go potrzebujesz.

Jak wygląda ćwiczenie

  • Każde zadanie ma nowe wartości, więc uczysz się metody, a nie odpowiedzi.
  • Utknąłeś? Najpierw otwórz małą podpowiedź, a pełne wyjaśnienie dopiero wtedy, gdy go potrzebujesz.
  • Twoje postępy, błędy i zapisane zadania są zachowywane, więc możesz je powtórzyć przed egzaminem.

Tematy przed tym i po nim

Najpierw naucz się

Przedmioty z tym tematem

Więcej tematów: Matematyka i statystyka

Karta pracy do druku