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