Lista zada«. Nr 4. 9 kwietnia 2016 IIUWr. II rok informatyki. Algorytmy i Struktury Danych 1. (0pkt) Rozwi» wszystkie zadania dodatkowe. 2. (1pkt) Uªó» algorytm znajduj cy najta«sz drog przej±cia przez tablic, w którym oprócz ruchów dopuszczalnych w wersji problemu prezentowanej na wykªadzie, dozwolone s tak»e ruchy w gór i w dóª tablicy. 3. (2pkt) Rozwa»my nast puj ce operacje na ci gach: insert(x,i,a) - wstawienie a pomi dzy i-tym i (i + 1)-szym elementem x-a; delete(x,i) - usuni cie i-tego elementu x-a; replace(x,i,a) - zast pienie i-tego elementu x-a przez a. Jak ªatwo zauwa»y, dla ka»dych dwóch ci gów x i y istniej sekwencje powy»szych operacji przeksztaªcaj ce x w y. Je±li ka»dej operacji przypiszemy koszt (nieujemn liczb rzeczywist ) mo»emy mówi o minimalnym koszcie przeksztaªcenia x w y (koszt ten nazywa si odlegªo±ci edycyjn ci gów x i y). Uªó» algorytm, który dla danych dwóch ci gów znajdzie ich odlegªo± edycyjn. 4. (1pkt) Zbiór I V zbioru wierzchoªkow w grae G = (V, E) nazywamy zbiorem niezale»nym, je±li»adne dwa wierzchoªki z I nie s poª czone kraw dzi. Uªó» algorytm, który dla zadanego drzewa T znajduje najliczniejszy zbiór niezale»ny jego wierzchoªków. 5. (2pkt) Na trzyelementowym zbiorze A = {a, b, c} okre±lono operacj. Nie jest ona ani przemienna ani ª czna. Uªó» algorytm, który dla danego ci gu x 1 x 2... x n, gdzie x i s symbolami ze zbioru A, rozstrzyga, czy mo»na w nim tak rozstawi nawiasy, by warto± otrzymago wyra»enia wynosiªa a. 6. (2pkt) Dany jest graf peªny G = (V, E) z nieujemnymi wagami na kraw dziach oraz ci g wszystkich jego wierzchoªków C = v 1,..., v n. Pocz tkowo w wierzchoªku v 1 znajduj si dwa pionki. W kolejnych ruchach masz przesun pionki wedªug nast puj cych zasad: w ka»dym ruchu przesuwasz jeden pionek, pionek stoj cy w wierzchoªku v i mo»esz by przesun do wierzchoªka v j jedynie wtedy, gdy j > i (czyli do wierzchoªka znajduj cego si dalej w ci gu C), wszystkie wierzchoªki grafu musz by odwiedzone przez co najmniej jeden pionek, po ostatnim ruchu obydwa pionki znajduj si w wierzchoªku v n. Uªó» algorytm obliczaj cy ci g ruchów pionków minimalizuj cy sum dªugo±ci dróg przebytych przez pionki (przez dªugo± drogi rozumiemy sum wag jej kraw dzi). 7. (1pkt) Rozwa»my nast puj cy problem 3-podziaªu. Dla danych liczb caªkowitych a 1,..., a n C..C chcemy stwierdzi, czy mo»na podzieli zbiór {1, 2,..., n} na trzy rozª czne podzbiory I, J, K, takie,»e a i = a j = a k. i I j J k K 8. (1pkt) Na ka»dym polu szachownicy o wymiarach 4 n znajduje si jedna liczba naturalna. Uªó» algorytm, który umieszcza na szachownicy kamyki w taki sposób,»e: 1
na ka»dym polu znajduje si co najwy»ej jeden kamie«, je±li na polu P znajduje si kamyk, to na polach maj cych wspólny bok z P nie ma kamyków, suma liczb z pól, na których le» kamyki jest maksymalna. 9. (2pkt) Nad pewn rzek pªyn c ze wschodu na zachód zamieszkaªy bobry: na poªudniowym brzegu - panowie; na póªnocnym - panie. Tak si zªo»yªo,»e panów bobrów jest tyle samo co pa«i ponadto ka»dy pan zapaªaª uczuciem do jednej pani (szcz ±liwie ka»dy do innej). Ka»dy z panów chce zbudowa grobl prowadz c z jego»eremia do»eremia wybranki. Problem w tym,»e groble nie mog si krzy»owa. Rada starszych postanowiªa ustali, ile maksymalnie grobli mo»e powsta. Uªó» algorytm, który wykona to zadanie. 10. (2pkt) Uªó» algorytm rozwi zuj cy poni»szy problem triangulacji wielok ta wypukªego: Problem: Dane: Zadanie: ci g par liczb rzeczywistych (x 1, y 1 ),..., (x n, y n ), okre±laj cych kolejne wierzchoªki n-k ta wypukªego P Zaªo»enie: dane s okre±lone poprawnie. Znale¹ zbiór S nieprzecinaj cych si przek tnych, które dziel P na trójk ty, taki,»e dªugo± najdªu»szej przek tnej w S jest mo»liwie najmniejsza. 2
Zadania dodatkowe do rozwi zania samodzielnego lub podczas repetytorium 1. (1pkt) Uzupeªnij podany na wykªadzie algorytm sprawdzaj cy przynale»no± sªowa do j zyka generowanego przez bezkontekstow gramatyk w normalnej postaci Chomsky'ego tak, by w przypadku pozytywnej odpowiedzi wypisywaª jego wyprowadzenie. 2. (1pkt) Jak zmieni si zªo»ono± problemu przynale»no± sªowa do j zyka generowanego przez bezkontekstow gramatyk w normalnej postaci Chomsky'ego, je±li gramatyka tak»e b dzie dan wej±ciow? 3. (2pkt) Gramatyk liniow nazywamy gramatyk bezkontekstow, w której prawe strony produkcji zawieraj co najwy»ej jeden symbol nieterminalny. Uªó» algorytm sprawdzaj cy przynale»no± sªowa do j zyka liniowego, który wykorzystuje pami rozmiaru O(n). 4. (2pkt) Dana jest szachownica n n i pozycje pionów na niej (mo»e by ich nawet O(n 2 )). Uªó» algorytm znajduj cy prostok tny fragment szachownicy o najwi kszym polu, na którym nie znajduje si ani jeden pion. Twój algorytm powinien dziaªa w czasie O(n 2 ). 5. (2pkt) Napisz w pseudopascalu lub pseudoc++ dwie procedury: (a) drukuj c ci g nazw macierzy wraz z poprawnie rozstawionymi nawiasami wyznaczaj cymi optymaln kolejno± mno»enia macierzy, (b) drukuj c ci g instrukcji postaci A B C, prowadz cych do obliczenia w optymalny sposób iloczynu macierzy (A jest nazw macierzy roboczej, a B i C - s nazwami macierzy wej±ciowych lub wcze±niej obliczonych macierzy roboczych). 6. (1pkt) Udowodnij,»e liczba wywoªa«rekurencyjnych w poni»szej procedurze obliczaj cej minimalny koszt pomno»enia macierzy jest Θ(3 n ). function minmat(i, j) if i = j then return 0 ans for k i to j 1 do ans min(ans, d i 1 d k d j + minmat(i, k) + minmat(k + 1, j)) return ans 7. (2pkt) Jak wiesz, liczba wszystkich poprawnych rozstawie«n par nawiasów (a wi c i sposobów pomno»enia n macierzy) jest równa n-tej liczbie Catalana. Wyka»,»e liczba ta ro±nie szybciej ni» 3 n. Czy potrasz wskaza poprawne rozstawienie nawiasów, które nie jest rozwa»ane przez procedur minmat? 8. (2pkt) Dany jest zbiór n przedmiotów A = {a 1,..., a n }. Dla ka»dego przedmiotu znamy jego wag w(a i ) oraz jego cen c(a i ); obie te liczby s naturalne a c(a i )) jest nie wi ksze od n 2. Dana jest ponadto liczba naturalna P. Uªó» algorytm znajduj cy podzbiór S zbioru przedmiotów, taki,»e suma wag przedmiotów z S nie przekracza P, a suma ich cen jest mo»liwie najwi ksza. W jakim czasie dziaªa Twój algorytm? 9. (1pkt) Poka» jak obliczy dªugo± elementów LCS u»ywaj c jedynie 2 min(m, n)-elementowej tablicy c plus O(1) dodatkowej pami ci. Nast pnie poka», jak to zrobi u»ywaj c min(m, n)- elementowej tablicy c plus O(1) dodatkowej pami ci 10. (2pkt) Zmodykuj algorytm znajduj cy najdªu»szy wspólny podci g dwóch ci gów n elementowych, tak by dziaªaª w czasie O(n 2 ) i u»ywaª O(n) pami ci. 3
11. (1pkt) Zmie«podany na wykªadzie algorytm znajduj cy najta«sz drog przej±cia przez tablic tak, by znajdowaª drog o drugim co do wielko±ci koszcie. 12. (2pkt) Podwójn drabin rozmiaru n nazywamy graf przedstawiony na poni»szym rysunku. Uogólnij na podwójne drabiny podany na wykªadzie algorytm znajduj cy liczb drzew rozpinaj cych o k kraw dziach wyró»nionych. Krzysztof Lory± 4
Rysunek 1: Podwójna drabina n-elementowa 5