wstęp do informatyki i programowania część testowa (10 pyt. / 30 min.)
Transkrypt
wstęp do informatyki i programowania część testowa (10 pyt. / 30 min.)
kolokwium 3 27 stycznia 2017 r. wstęp do informatyki i programowania część testowa (10 pyt. / 30 min.) Instytut Informatyki Uniwersytetu Wrocławskiego Paweł Rzechonek imię, nazwisko i nr indeksu: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Udziel krótkich ale precyzyjnych odpowiedzi na wszystkie pytania zamieszczone poniżej. Zadanie 1 (1.5 pkt.) Skonstruuj automat skończony akceptujący tylko niepuste słowa zbudowane nad alfabetem Σ = {a, b}, w których nie sąsiadują ze sobą trzy takie same litery (słowa nie zawierają podsłów aaa ani bbb). Zadanie 2 (1.0 pkt.) Napisz wyrażenie regularne, do którego dopasuje się poprawnie zapisana godzina z dokładnością do minut albo sekund; godziny, minuty i ewentualnie sekundy zapisujemy zawsze w formie dwucyfrowej. Przykłady: 14:51, 00:15, 17:03:59. Zadanie 3 (1.5 pkt.) Napisz w notacji BNF formuły definiujące liczbę całkowitą zapisana w systemie dziesiętnym bez zer wiodących (tylko zero rozpoczyna się od cyfry 0). Przykłady: 123, 0, -9. Zadanie 4 (0.5 pkt.) Na czym polega różnica pomiędzy listą jednokierunkową a dwukierunkową? 1 Zadanie 5 (1.0 pkt.) Do początkowo pustego drzewa BST wstawiamy kolejno liczby: 7, 3, 5, 2, 4, 8. Narysuj powstałe drzewo. Zadanie 6 (1.0 pkt.) Jaką wysokość ma drzewo zupełne zawierające 20 węzłów? Odpowiedź uzasadnij. Zadanie 7 (0.5 pkt.) Jaki jest czas działania operacji extract–max na kopcu w zależności od rozmiaru danych n? Zadanie 8 (1.5 pkt.) Narysuj kopiec dwumianowy zawierający 19 różnych liczb naturalnych. Zadanie 9 (0.5 pkt.) Na czym polega rotacja w węźle drzewa BST? Wykonaj schematyczny rysunek. Zadanie 10 (1.0 pkt.) Zbiory rozłączne pamiętamy w strukturze drzewiastej z kompresją ścieżek. Jeden ze zbiorów ma postać: a →b →c →d →e →f. Co będzie wynikiem operacji find(c)? Jak będzie wyglądał ten zbiór po wykonaniu tej operacji? Wykonaj schematyczny rysunek. 2 kolokwium 3 27 stycznia 2017 r. wstęp do informatyki i programowania część zadaniowa (1 zad. / 30 min.) Instytut Informatyki Uniwersytetu Wrocławskiego Paweł Rzechonek imię, nazwisko i nr indeksu: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wybierz jedno z poniższych zadań i napisz jego rozwiązanie. Nr zadania: . . . . . . . . . . Zadanie 1 (5 pkt.) Dana jest lista jednokierunkowa z wartownikiem. Należy wyznaczyć środkowy element w tej liście bez obliczania jej długości. Zaprojektuj algorytm rozwiązujący ten problem: przedstaw ideę rozwiązania, zapisz w pseudokodzie swój algorytm a na koniec oszacuj jego złożoność obliczeniową (czasową i pamięciową). Wskazówka: użyj dwóch iteratorów (wskaźników) poruszających się po liście z różnymi prędkościami. Zadanie 2 (5 pkt.) Dane jest drzewo binarne. Należy wyznaczyć długość najdłuższej ścieżki w tym drzewie (licząc krawędzie). Zaprojektuj algorym rozwiązujący ten problem: przedstaw ideę rozwiązania, zapisz w pseudokodzie swój algorytm a na koniec oszacuj jego złożoność obliczeniową (czasową i pamięciową). Wskazówka: narysuj najpierw drzewo, w którym najdłuższa ścieżka przechodzi przez korzeń a potem inne drzewo, w którym najdłuższa ścieżka nie przechodzi przez korzeń. Zadanie 3 (5 pkt.) Dane jest drzewo BST i wartość x, o której wiemy, że znajduje się w tym drzewie. Należy tak przekształcić to drzewo, aby wartość x znalazła się w korzeniu tego drzewa. Zaprojektuj algorym rozwiązujący ten problem: przedstaw ideę rozwiązania, zapisz w pseudokodzie swój algorytm a na koniec oszacuj jego złożoność obliczeniową. Wskazówka: rozważ przypadek, gdy x jest lewym albo prawym synem korzenia. Zadanie 4 (5 pkt.) Zaprojektuj strukturę danych, która będzie efektywnie realizowała operacje insert (wstawienie nowego elementu do zbioru) oraz extract–median (usunięcie ze zbioru elementu środkowego co do wielkości, czyli mediany). Opisz dokładnie działanie tych operacji i oszacuj złożoność obliczeniową każdej z nich. Wskazówka: podziel zbiór na dwie równe ±1 części. 3