Witam!
Trafiłem na takie zadanie, żeby narysować drzewo o kodzie Pruefera 53223. Trafiłem już kiedyś kilka takich zadań ale jakoś zawsze potrafiłem wydedukować jakie to są drzewa, a przy tym nie mogę.
Czy jest jakiś algorytm rysowania tych drzew czy trzeba się domyślać?
Pozdrawiam
Michał
Narysuj drzewo o podanym kodzie Prüfera
-
- Użytkownik
- Posty: 5356
- Rejestracja: 10 kwie 2009, o 10:22
- Płeć: Kobieta
- Lokalizacja: Gliwice
- Pomógł: 1381 razy
Narysuj drzewo o podanym kodzie Prüfera
Drzewo wygląda tak:
1
|
5
|
2-3-4
| |
6 7
Duńskiego nie znam, ale na podstawie przykładu zamieszczonego (na duńskiej wikipedii) oraz ze sposobu tworzenia samego kodu wnioskuję, że szukany algorytm wygląda tak:
Mamy dany kod Prüfera długości n. Generujemy drzewo o n+2 wierzchołkach numerowanych kolejnymi liczbami 1,2,..,n+2.
Krok 1 Zapisz obok siebie kod Prüfera oraz listę wierzchołków w szukanym przez Ciebie drzewie.
Krok 2 Niech pierwszą (od lewej) cyfrą w kodzie Prüfera będzie x. Na liście wierzchołków znajdź wierzchołek o najmniejszym numerze, który nie występuje w kodzie - niech to będzie y. Wówczas jedną z krawędzi w szukanym drzewie jest xy.
Krok 3 Usuń z kodu pierwszą cyfrę (x), a z listy wierzchołków usuń wierzchołek o numerze y.
Krok 4 Powtórz Kroki 2-3 dla skróconej listy i skróconego kodu. Kontynuuj do momentu usunięcia ostatniej cyfry w kodzie. Numery wierzchołków, które pozostaną na liście wierzchołków są połączone krawędzią.
Krok 5 Narysuj drzewo
Pozdrawiam.
1
|
5
|
2-3-4
| |
6 7
Duńskiego nie znam, ale na podstawie przykładu zamieszczonego (na duńskiej wikipedii) oraz ze sposobu tworzenia samego kodu wnioskuję, że szukany algorytm wygląda tak:
Mamy dany kod Prüfera długości n. Generujemy drzewo o n+2 wierzchołkach numerowanych kolejnymi liczbami 1,2,..,n+2.
Krok 1 Zapisz obok siebie kod Prüfera oraz listę wierzchołków w szukanym przez Ciebie drzewie.
Krok 2 Niech pierwszą (od lewej) cyfrą w kodzie Prüfera będzie x. Na liście wierzchołków znajdź wierzchołek o najmniejszym numerze, który nie występuje w kodzie - niech to będzie y. Wówczas jedną z krawędzi w szukanym drzewie jest xy.
Krok 3 Usuń z kodu pierwszą cyfrę (x), a z listy wierzchołków usuń wierzchołek o numerze y.
Krok 4 Powtórz Kroki 2-3 dla skróconej listy i skróconego kodu. Kontynuuj do momentu usunięcia ostatniej cyfry w kodzie. Numery wierzchołków, które pozostaną na liście wierzchołków są połączone krawędzią.
Krok 5 Narysuj drzewo
Pozdrawiam.