Narysuj drzewo o podanym kodzie Prüfera

Permutacje. Kombinacje. Wariacje. Rozmieszczanie kul w urnach. Silnie i symbole Newtona. Przeliczanie zbiorów. Funkcje tworzące. Teoria grafów.
mmsmm
Użytkownik
Użytkownik
Posty: 23
Rejestracja: 5 kwie 2009, o 20:53
Płeć: Mężczyzna
Podziękował: 5 razy

Narysuj drzewo o podanym kodzie Prüfera

Post autor: mmsmm »

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ł
BettyBoo
Użytkownik
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

Post autor: BettyBoo »

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.
ODPOWIEDZ