1 Zadania przykładowe do kolokwium z AA2 Zadanie 1 Dla tekstu ALA MA KOTA ALE ON MA ALERGIĘ zilustruj działanie algorytmów: a) LZ77, b) LZ78, c) LZSS. Załóż, że maksymalna długość dopasowania to 4, rozmiar okna to 8. Zadanie 2 Odczytaj tekst 010100111100011010000 zakodowany kodem Huffmana wiedząc, że częstość występowania symboliwtekściejestnastępująca:a(3),b(1),k(1),r(4),m(1).gdybywtrakciebudowydrzewa Huffmana miała miejsce sytuacja, że do wyboru są więcej niż dwa węzły, wybierz węzły opisane literami najwcześniejszymi w porządku alfabetycznym. Zadanie 3 Wygeneruj wszystkie możliwe kody Huffmana dla tekstu ABRACADABRA. Zadanie 4 Poznany kod Huffmana jest kodem binarnym. Możliwe, i czasami stosowane w praktyce, są jednak także niebinarne kody Huffmana. Kod taki tworzy się w analogiczny sposób jak binarny kod Huffmana. Zamiast łączeniawęzłówwparyłączysięjewgrupypokwęzłóworazopisujekrawędziesymbolamiod0dok 1 otrzymując drzewa k-arne. Utwórz w ten sposób: trójkowy kod Huffmana dla tekstu ABRACADABRA, czwórkowy kod Huffmana dla tekstu KALORYFEROWNIA. Zadanie 5 Przy założeniu, że maksymalna długość dopasowania wynosi 256, rozmiar okna to 65536, a rozmiar alfabetu to 4 oszacuj dla algorytmu LZSS minimalny współczynnik kompresji(wyrażony w bps). Dla uproszczenia załóż, że kodowany tekst jest bardzo długi i nie bierz jego rozmiaru pod uwagę. Przez minimalny rozumiemy taki współczynnik kompresji, który ma miejsce w sytuacji, kiedy tekst kompresuje się najgorzej jak to jest możliwe. Zadanie 6 Podaj przykład tekstu długości 6(wliczając wartownika), dla którego łączna liczba symboli opisujących krawędzie w drzewie sufiksów jest maksymalna. Podaj regułę tworzenia takich najgorszych tekstów.
2 Zadanie 7 Zbuduj drzewa sufiksów dla tekstów: mississippi, katarakta. Zadanie 8 Zbuduj uogólnione drzewo sufiksów dla zbioru tekstów: {Ola, Ala, Ania, Asia}. Zadanie 9 Zbuduj uogólnione drzewo sufiksów dla tekstów {tekstowy, rajstopy} i znajdź za jego pomocą najdłuższe wspólne podsłowo tych tekstów. Zadanie 10 Zilustruj proces wyszukiwania najdłuższego podsłowa, którego wersja zapisana od końca także występuje w tekście abarcdrabde. W tym celu: zbuduj uogólnione drzewo sufiksów, wyznacz węzeł o największej głębokości, odczytaj pozycję znalezionego podsłowa. Zadanie 11 Zaproponuj liniowy algorytm znajdujący najdłuższe powtarzające się podsłowo w tekście. Przykładowo dla tekstu abracadabra wynikiem ma być abra. Zastanów się nad dwoma wersjami tego problemu: podsłowa nie mogą na siebie nachodzić, podsłowa mogą na siecie nachodzić. Zadanie 12 Zbuduj tablice sufiksów dla tekstów: mississippi, katarakta. Zadanie 13 Federacja kolarska musi utworzyć reprezentację na Wielki Wyścig Tandemów. W trakcie dobierania zawodnikówwparydoszłodokonfliktu,gdyżokazałosię,żeczęśćzawodnikówniechcewystąpićzesobąwjednej parze. Aby rozwiązać problem rozesłano wśród zawodników ankiety, w których każdy miał się wypowiedzieć,
3 zkimmożeutworzyćparę.jeżelizawodnicyonumerachxiymogąutworzyćjednąparę,tofakttenzapisujemywnastępującysposób:x Y.Mającdanewynikiankietynależydobraćzawodnikówwparytak,aby liczba utworzonych par była maksymalna i oczywiście każdy zawodnik był przypisany tylko do jednej pary. Zaproponuj algorytm(zapisz jego pseudokod) umożliwiający rozwiązanie powyższego problemu. Wykonaj algorytm(przedstaw kolejne etapy działania) dla listy podanej poniżej: 1 6 2 7 3 6 4 5 5 2 6 4 7 1 8 3 9 1 Zadanie 14 Zaproponuj modyfikację procedury FWUC(rys. 1), która umożliwi wyznaczenie ujemnego cyklu, a nie tylko jego wykrycie. Zapisz treść zmodyfikowanej procedury FWUC. Zadanie 15 Bankring polega na przełamywaniu prawno-technicznych zabezpieczeń związanych z funkcjonowaniem banków nie naruszając ich regulaminów. Wiele banków za zdeponowanie pieniędzy wypłaca prowizję. Tak więc przelewając pieniądze z banku X do banku Y ponosimy z jednej strony koszty związanie z opłatą za przelew bankowy, z drugiej strony za zdeponowane pieniądze bank przelewa nam prowizję. Cała operacja kosztuje nas kwotę jaką stanowi różnica pomiędzy opłatą za przelew, a prowizją. Zakładając, że mamy założone konta w różnych bankach można wyobrazić sobie sytuację, w której po wprowadzeniu w obieg stałej kwoty, stan kontbędzieciąglewzrastał.jeśliprzelewzbankuxdobankuy kosztujenaskzłotych,tofakttenzapisujemy:x YK,np.zapis:BankA BankB10oznacza,żeprzelewzBankuAdoBankuBbędzienas kosztował 10 złotych(różnica między opłatą, a prowizją). Zaproponuj algorytm(podaj pseudokod), który dla zadanej listy opisującej przelewy i ich koszty wyznaczy ciąg banków, który będzie generował wzrost stanu na koncie. Wykonaj algorytm(przedstaw kolejne etapy działania) dla listy podanej poniżej: Bank1 Bank2 2 Bank1 Bank3 4 Bank1 Bank5 3 Bank2 Bank1 2 Bank2 Bank3 8 Bank2 Bank5 1 Bank3 Bank1 6 Bank3 Bank2 2 Bank3 Bank4 4 Bank3 Bank5 3 Bank4 Bank1 1 Bank4 Bank5 5 Bank5 Bank4 1 Zadanie 16 Mrówki postanowiły dokonać zapasów na najbliższą zimę. Mapa mrowiska została przedstawiona na poniższym rysunku.
4 1 {Wejście: macierz D będąca macierzą wag łuków} 2 {Wyjście: informacja o występowaniu w grafie ujemnego cyklu} 3 procedure FWUC(D); 4 begin 5 uc:=false;k:=1; 6 fori:=1tondo {wyznaczeniemacierzyd 0 } 7 d[i,i]:=0; 8 end for; 9 whilenotucandk ndo 10 i:=1; 11 whilenotucandi ndo {wyznaczeniemacierzyd k } 12 ifd[i,k] then 13 ifd[i,k]+d[k,i]<0then {znalezionoujemnycykl} 14 uc:= true; 15 else 16 forj:=1tondo 17 d[i,j]:=min{d[i,j],d[i,k]+d[k,j]}; 18 end for; 19 end if; 20 end if; 21 i:=i+1; 22 end while; 23 k:=k+1; 24 end while; 25 end. Rys. 1. Algorytm wykrywania ujemnego cyklu za pomocą algorytmu Floyda Warshalla 2 5 6 9 2 4 10 3 7 4 7 15 6 5 1 6 Mrowisko ma dwa wejścia znajdujące się odpowiednio w punktach 1 i 2, a także jedną spiżarnię znajdującą się w punkcie 7. Mrówki transportują pokarm z wejść do spiżarni, przy czym korytarzem łączącym dwa punkty mogą w ciągu jednego dnia przenieść ograniczoną ilość pokarmu(na rysunku zaznaczono ile maksymalnie pokarmu są w stanie przenieść mrówki). Stosując jeden z algorytmów przedstawionych na zajęciach, wyznacz maksymalną ilość pokarmu jaką są w stanie przenieść mrówki z wejść do spiżarni w ciągu jednego dnia. Nazwij zastosowany algorytm i przedstaw kolejne etapy jego działania. Zadanie 17
5 StosującalgorytmForda-Fulkersonawyznaczmaksymalnyprzepływwsiecizeźródłas=1doujśćt 1 =6 it 2 =7.Przedstawkolejnekrokiwyznaczaniarozwiązania.Przywyznaczaniuścieżkipowiększającejdo ścieżki jest zawsze włączany wierzchołek o jak najmniejszym numerze. 2 4 6 4 6 9 1 3 5 8 10 8 3 2 5 7 Zadanie 18 Bajtolini zamierza otworzyć swoją firmę programistyczną, niestety zamieszkuje on krainę gdzie panuje ogromna biurokracja. Przed założeniem firmy należy odwiedzić szereg urzędów gdzie należy pobrać odpowiednie druki, które z kolei należy złożyć w innych urzędach. Czasem nie jest możliwe pobranie druków z urzędu jeżeli wcześniej nie zostały w nim złożone druki pobrane z innego urzędu. Jeżeli w urzędzie X należy pobrać druk,którymabyćzłożonywurzędziey,tofakttakizapisujemywnastępującysposób:x Y.Dlatak podanego opisu składania druków w urzędach należy zaproponować algorytm, który umożliwi odpowiedź na pytanie, w jakiej kolejności należy odwiedzać poszczególne urzędy aby założyć firmę(należy skorzystać z jednego z algorytmów, które zostały przedstawione w trakcie zajęć). Zaproponowany algorytm należy wykonać dla następujących danych: 1 5 1 6 2 1 3 1 3 2 3 5 4 1 7 1 Zadanie 19 Wykonać algorytm Johnsona dla grafu składającego się z czterech wierzchołków, opisanego macierzą wag. 1 2 3 4 1 5 1 2 2 3-3 4-4 2 Zadanie 20 Wykaż, że jeżeli graf nie zawiera cykli o ujemnej długości, to po wykonaniu algorytmu Bellmana-Forda dlakażdegołuku(u,v)spełnionajestzależność:d[v] d[u]+w(u,v),gdzied[v]id[u]sąrównedługości
6 najkrótszej ścieżki z ustalonego wierzchołka źródłowego do wierzchołków odpowiednio v i u, a w(u, v) jest wagąłuku(u,v). Zadanie 21 Zilustruj działanie operatora krzyżowania PMX dla genomów(reprezentacja ścieżkowa): 15348627oraz31528647jeślipunktycięciato:2i5, 32154876oraz12345678jeślipunktycięciato:3i5. Zadanie 22 Zilustruj działanie algorytmu krzyżowania jednopunktowego genomów(reprezentacja ścieżkowa): 15348627 oraz 31528647 jeśli punkty cięcia to: 2, 32154876 oraz 12345678 jeśli punkty cięcia to: 4. Zadanie 23 Zilustruj działanie algorytmu krzyżowania dwupunktowego genomów(reprezentacja ścieżkowa): 15348627oraz31528647jeślipunktycięciato:2i5, 32154876oraz12345678jeślipunktycięciato:3i5. Zadanie 24 Zilustruj działanie algorytmu krzyżowania jednopunktowego genomów(reprezentacja binarna): 0110101011 oraz 1101010110 jeśli punkty cięcia to: 5, 0110101101 oraz 0010001010 jeśli punkty cięcia to: 4. Zadanie 25 Zilustruj działanie algorytmu krzyżowania dwupunktowego genomów(reprezentacja binarna): 0110101011oraz1101010110jeślipunktycięciato:2i5, 0110101101oraz0010001010jeślipunktycięciato:4i7. Zadanie 26 Celem jest znalezienie ciągu bitowego zawierającego same jedynki. Wobec tego funkcja oceny zwraca wartość będącą liczbą jedynek w genomie. Populacja początkowa składa się z następujących osobników:
7 0101001011, 0110110110, 1010111010, 0101000110, 0000110100, 1110100111. Stosując metodę ruletki wyznacz osobniki do krzyżowania zakładając, że generator liczb losowych generuje następujący ciąg liczb z zakresu[0, 100): 15, 12, 58, 35, 47, 91. Następnie wykonaj krzyżowanie jednopunktowe przy założeniu punktów cięcia: 3, 5, 7 oraz oceń uzyskane osobniki. Podaj średnią wartość funkcji przystosowania w populacji początkowej oraz populacji otrzymanej. Zadanie 27 Dany jest problem komiwojażera dla 7 miast. Odległości pomiędzy miastami definiuje poniższa tabela. A B C D E F G A 3 5 4 3 12 8 B 3 7 11 8 15 4 C 5 7 22 4 10 8 D 4 11 22 8 9 7 E 3 8 4 8 13 6 F 12 15 10 9 13 4 G 8 4 8 7 6 4 Zilustruj 10 etapów algorytmu symulowanego wyżarzania rozwiązującego ten problem przy następujących założeniach: początkowe rozwiązanie to ABCDEFG, przez ruch należy rozumieć zamianę kolejności dwóch miast sąsiadujących z sobą w aktualnej trasie, kolejnetemperaturywschemacieschładzaniato:10,9,8,7,6,5,4,3,2,1, kolejneliczbylosowezzakresu[0,1)generowaneprzezgeneratorto:0.3,0.4,0.9,0.2,0.4,0.5,0.9,0.1, 0.3, 0.8, wkolejnychetapachlosowanesąnastępująceruchy:1 2,3 4,4 5,5 6,1 2,7 1,3 4,2 3,1 2,5 6.