Zadania przygotowawcze do egzaminu z Teorii Algorytm´ ow i Oblicze´ n II
1. Zaprojektuj efektywny algorytm zach lanny, kt´ory dla zadanego zbioru punkt´ow {x1, x2, . . . xn} na osi liczbowej znajduje najmniejszy zbi´or domkni¸etych odcink´ow jednostkowej d lugo´sci, kt´ory zawiera wszystkie zadane punkty. Poka˙z, ˙ze ten algorytm jest poprawny.
2. Z lodziej rabuje sklep, w kt´orym znajduje si¸e n artyku l´ow a1, a2, . . . an. Artyku l ai wart jest ci PLN i wa˙zy wi kg. Celem z lodzieja jest zrabowanie artyku l´ow o jak najwi¸ekszej sumie warto´sci. Jego plecak mo˙ze jednak pomie´sci´c tylko artyku ly, kt´orych suma wag nie przekracza W kg. Z lodziej nie zna teorii algorytm´ow i stosuje algorytm zach lanny.
Napisz taki algorytm i wyka˙z, ˙ze jego stosowanie nie zawsze daje z lodziejowi najwi¸ekszy zysk.
3. Podaj optymalny kod Huffmana dla pewnego ci¸agu znak´ow, je´sli cz¸e- stotliwo´sci wyst¸epowania poszczeg´olnych symboli s¸a nast¸epuj¸ace:
a : 1, b : 1, c : 2, d : 3, e : 5, f : 8, g : 13, h : 21,
tzn. s¸a pierwszymi o´smioma wyrazami ci¸agu Fibonacciego. Znajd´z taki kod, kiedy cz¸estotliwo´sci s¸a pierwszymi n wyrazami ci¸agu Fibonacciego.
4. Rozwa˙zmy funkcj¸e S(n, k), gdzie n ≥ k ≥ 1, zdefiniowan¸a a rekuren- cyjnie nast¸epuj¸aco: S(n, k) = 1, je´sli k = 1 lub k = n oraz S(n, k) = kS(n − 1, k) + S(n − 1, k − 1), je´sli 1 < k < n.
(a) Napisz rekurencyjn¸a a procedur¸e obliczaj¸ac¸a S(n, k). Jaka jest z lo˙zono´s´c obliczeniowa tej procedury w zale˙zno´sci od k i n?
(b) Podaj algorytm programowania dynamicznego do obliczania S(n, k).
Jaka jest jego z lo˙zono´s´c obliczeniowa w zale˙zno´sci od k i n?
5. Korzystaj¸ac z algorytmu programowania dynamicznego znajd´z takie rozmieszczenie nawias´ow w iloczynie macierzy rozmiar´ow kolejno 10 × 5, 5 × 3, 3 × 15, 15 × 10, 10 × 20, 20 × 9, aby liczba potrzebnych mno˙ze´n element´ow by l a minimalna.
1
6. Z lo˙zono´s´c obliczeniowa T (n) pewnego algorytmu typu ”dziel i zwyci¸e˙zaj”
spe lnia r´ownanie rekurencyjne
T (n) = 2T (n/3) + n3/2.
Znajd´z asymptotyczne zachowanie si¸e funkcji T (n) ”w terminach Θ(·)”.
7. Niech X b¸edzie zbiorem n punkt´ow na p laszczy´znie, kt´ore le˙z¸a na dw´och r´ownoleg lych do siebie prostych. Zaadoptuj podany na wyk ladzie algorytm typu ”dziel i zwyci¸e˙zaj” do znalezienia pary najbli˙zszych punkt´ow w zbiorze X tak, aby dzia la l w czasie O(n).
8. Za l´o˙zmy, ˙ze znaki we wzorcu P s¸a parami r´o˙zne. Zmodyfikuj naiwny algorytm wyszukiwania wzorca w tek´scie T tak, aby dzia la l w czasie O(n), gdzie n jest d lugo´sci¸a a tekstu T .
9. Skonstruuj automat, kt´ory akceptuje s lowa zawieraj¸ace wzorzec P = baabab. Om´ow jego dzia lanie dla tekstu T = abbabaabaababaabba.
10. Napisz algorytm zach lanny znajduj¸acy minimalne pokrycie wierzcho lkowe dla dowolnego drzewa nieskierowanego, dzia laj¸acy w cza- sie wielomianowym. Udowodnij, ˙ze zaproponowany algorytm zawsze znajduje optymalne pokrycie.
2