Zadanie 1 Zadanie 2 Zadanie 3 Zadanie 4 Zadanie 5 Zadanie 6

Transkrypt

Zadanie 1 Zadanie 2 Zadanie 3 Zadanie 4 Zadanie 5 Zadanie 6
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
symboli w tekście jest następująca: A (3), B (1), K (1), R (4), M (1). Gdyby w trakcie budowy drzewa
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
łączenia węzłów w pary łączy się je w grupy po k węzłów oraz opisuje krawędzie symbolami od 0 do k − 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ów w pary doszło do konfliktu, gdyż okazało się, że część zawodników nie chce wystąpić ze sobą w jednej
parze. Aby rozwiązać problem rozesłano wśród zawodników ankiety, w których każdy miał się wypowiedzieć,
3
z kim może utworzyć parę. Jeżeli zawodnicy o numerach X i Y mogą utworzyć jedną parę, to fakt ten zapisujemy w następujący sposób: X – Y . Mając dane wyniki ankiety należy dobrać zawodników w pary tak, 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
2
3
4
5
6
7
8
9
–
–
–
–
–
–
–
–
–
6
7
6
5
2
4
1
3
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
kont będzie ciągle wzrastał. Jeśli przelew z banku X do banku Y kosztuje nas K złotych, to fakt ten zapisujemy: X → Y K, np. zapis: Bank A → Bank B 10 oznacza, że przelew z Banku A do Banku B będzie nas
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:
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
1
1
1
2
2
2
3
3
3
3
4
4
5
→
→
→
→
→
→
→
→
→
→
→
→
→
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
2
3
5
1
3
5
1
2
4
5
1
5
4
2
4
−3
2
8
1
6
−2
4
3
1
5
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{Wejście: macierz D będąca macierzą wag łuków}
{Wyjście: informacja o występowaniu w grafie ujemnego cyklu}
procedure FWUC(D);
begin
uc := false; k := 1;
for i := 1 to n do
{wyznaczenie macierzy D0 }
d[i, i] := 0;
end for;
while not uc and k ¬ n do
i := 1;
while not uc and i ¬ n do
{wyznaczenie macierzy Dk }
if d[i, k] 6= ∞ then
if d[i, k] + d[k, i] < 0 then
{znaleziono ujemny cykl}
uc := true;
else
for j := 1 to n do
d[i, j] := min{d[i, j], d[i, k] + d[k, j]};
end for;
end if;
end if;
i := i + 1;
end while;
k := k + 1;
end while;
end.
Rys. 1. Algorytm wykrywania ujemnego cyklu za pomocą algorytmu Floyda–Warshalla
5
2
*
HH
@
9
HH4
6@
2
HH
?
R @
j
10 7
- 7
4
3
H
*
HH
15
6 HH 5
j H
6
1
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ąc algorytm Forda-Fulkersona wyznacz maksymalny przepływ w sieci ze źródła s = 1 do ujść t1 = 6
i t2 = 7. Przedstaw kolejne kroki wyznaczania rozwiązania. Przy wyznaczaniu ścieżki powiększającej do
ścieżki jest zawsze włączany wierzchołek o jak najmniejszym numerze.
- 4
- 6
2
4
6
@
9
@
@
3@
5
8
1
@
@
@
10 @
?
@
R
R 8
@
2
- 5
- 7
3
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óry ma być złożony w urzędzie Y , to fakt taki zapisujemy w następujący sposób: X → Y . Dla tak
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
1
2
3
3
3
4
7
→
→
→
→
→
→
→
→
5
6
1
1
2
5
1
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
dla każdego łuku (u, v) spełniona jest zależność: d[v] ¬ d[u] + w(u, v), gdzie d[v] i d[u] są równe dł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):
• 15348627 oraz 31528647 jeśli punkty cięcia to: 2 i 5,
• 32154876 oraz 12345678 jeśli punkty cięcia to: 3 i 5.
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):
• 15348627 oraz 31528647 jeśli punkty cięcia to: 2 i 5,
• 32154876 oraz 12345678 jeśli punkty cięcia to: 3 i 5.
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):
• 0110101011 oraz 1101010110 jeśli punkty cięcia to: 2 i 5,
• 0110101101 oraz 0010001010 jeśli punkty cięcia to: 4 i 7.
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,
• kolejne temperatury w schemacie schładzania to: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
• kolejne liczby losowe z zakresu [0, 1) generowane przez generator to: 0.3, 0.4, 0.9, 0.2, 0.4, 0.5, 0.9, 0.1,
0.3, 0.8,
• w kolejnych etapach losowane są następujące ruchy: 1–2, 3–4, 4–5, 5–6, 1–2, 7–1, 3–4, 2–3, 1–2, 5–6.

Podobne dokumenty