Kurs Wybranego Języka Programowania (ADA)

Transkrypt

Kurs Wybranego Języka Programowania (ADA)
Kurs Wybranego Języka
Programowania (ADA)
Lista 0.5
(podstawy języka)
Przemysław Kobylański
Wstęp
Drzewem binarnym nazywać będziemy strukturę dynamiczną, której każdy węzeł
jest rekordem o dwóch polach zawierających odpowiednio wskazanie na lewe i prawe
poddrzewo. Wskazaniem na drzewo binarne jest wskazanie na węzeł znajdujący się w
jego korzeniu.
Pustym drzewem binarnym jest struktura niezawierająca żadnego węzła i wskazaniem na puste drzewo binarne jest null.
Przykład drzewa binarnego o czterech węzłach:
null
null
null
null
null
Rozpatrzmy następujące trzy sposoby generowania losowych drzew binarnych o
n węzłach:
• początkowo drzewo jest puste a następnie n-krotnie powtarza operację polegającą na wyborze, z jednostajnym prawdopodobieństwem, pola zawierającego
wskazanie null i zastąpieniu go wskazaniem na poddrzewo z dokładnie jednym węzłem, przy czym za każdym razem każde pole zawierające null ma
to samo prawdopodobieństwo wyboru (w przykładowym drzewie są już cztery węzły zawierające łącznie pięć pól ze wskaźnikami null więc pole takie
zacznie wskazywać nowy węzeł z prawdopodobieństwem 1/5).
• początkowo drzewo jest puste a następnie n-krotnie powtarza się operację polegającą na losowym błądzeniu w drzewie od korzenia w dół do wskazania
na puste poddrzewo, przy czym wybór między lewym a prawym poddrzewem odbywa się z jednakowym prawdopodobieństwem 1/2, i zastąpienie go
wskazaniem na nowe poddrzewo złożone z jednego węzła (w tym przypadku prawdopodobieństwo wyboru pola zawierającego null nie jest jednakowe i
zależy od głębokości węzła).
1
• generuje się losową permutację liczb od 1 do n a następnie tworzy się drzewo
binarne o strukturze odpowiadającej binarnemu drzewu poszukiwania uzyskanemu przez wstawianie do niego kolejnych liczb losowej permutacji (w przykładowym drzewie struktura odpowiada drzewu przeszukiwania dla permutacji
h2, 1, 4, 3i).
Zadanie
Napisz w języka Ada pakiet dostarczający typy, procedury i funkcje umożliwiające, między innymi, tworzenie losowych drzew binarnych oraz liczenie ich wysokości.
Wykorzystaj stworzony pakiet do eksperymentalnego badania jak wysokość losowo zbudowanego drzewa zależy od liczby jego elementów przy różnych sposobach
konstrukcji.
Przeprowadź odpowiednie eksperymenty i przygotuj wykres zależności oczekiwanej wysokości losowo zbudowanego drzewa binarnego w zależności od liczby jego
węzłów (od 10 do 1000 co 10) i sposobu jego generowania.
Zaprezentuj swój program (dostarcz dokumentację w HTML wygenerowaną programem GPS) i przedstaw wyniki eksperymentów.
2

Podobne dokumenty