ASD Ćwiczenia 10: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Tprybick (dyskusja | edycje)
Nie podano opisu zmian
Tprybick (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
Zadanie 1
Zadanie 1
Podaj przykład ciągu <math>O(n)</math> operacji MakeSet, Find i Union w implementacji listowej bez łączenia z wyważaniem, których łączny koszt to <math>\Theta(n^2)</math>.
Podaj przykład ciągu <math>O(n)</math> operacji MakeSet, Find i Union w implementacji listowej bez łączenia z wyważaniem, których łączny koszt to <math>\Theta(n^2)</math>.


Linia 12: Linia 13:


Zadanie 2
Zadanie 2
Udowodnij, że w implementacji listowej z heurystyką łączenia z wyważaniem koszt wykonania $m$ operacji MakeSet, Find i Union, sposród których n to MakeSet, wynosi <math>O(m+n\log n)</math>.
Udowodnij, że w implementacji listowej z heurystyką łączenia z wyważaniem koszt wykonania $m$ operacji MakeSet, Find i Union, sposród których n to MakeSet, wynosi <math>O(m+n\log n)</math>.


Linia 22: Linia 24:


Zadanie 3
Zadanie 3
Udowodnij, że w implementacji drzewiastej z łączeniem według wysokości wysokość drzewa zawierającego n węzłów jest mniejsza bądź równa <math>\lfloor\log n\rfloor</math>.
Udowodnij, że w implementacji drzewiastej z łączeniem według wysokości wysokość drzewa zawierającego n węzłów jest mniejsza bądź równa <math>\lfloor\log n\rfloor</math>.


Linia 31: Linia 34:


Zadanie 4  
Zadanie 4  
Napisz pseudokod operacji MakeSet, Union i Find w implementacji drzewiastej z łączeniem według rangi i kompresją ścieżki.
Napisz pseudokod operacji MakeSet, Union i Find w implementacji drzewiastej z łączeniem według rangi i kompresją ścieżki.


Linia 57: Linia 61:


Zadanie 5
Zadanie 5
Udowodnij Lemat 1.
Udowodnij Lemat 1.


Linia 65: Linia 70:


Zadanie 6
Zadanie 6
Udowodnij, że jeśli w implementacji drzewiastej z lączeniem wedlug rangi i kompresją ściezki najpierw wykonujemy wszystkie operacje Union, a dopiero potem wszystkie operacje Find, to zamortyzowany koszt operacji Find jest stały.
Udowodnij, że jeśli w implementacji drzewiastej z lączeniem wedlug rangi i kompresją ściezki najpierw wykonujemy wszystkie operacje Union, a dopiero potem wszystkie operacje Find, to zamortyzowany koszt operacji Find jest stały.


Linia 73: Linia 79:


Zadanie 7  
Zadanie 7  
Algorytm Kruskala znajdowania minimalnego drzewa rozpinającego w grafie <math>G = (V,E)</math> z wagami na krawędziach działa następująco: krawędzie są przeglądane w kolejności od najlżejszej do najcięższej. Aktualnie rozważaną krawędź dodajemy do budowanego drzewa, o ile tylko nie powoduje to powstania cyklu. Jak efektywnie zaimplementować ten algorytm? Jaki jest jego czas działania?
Algorytm Kruskala znajdowania minimalnego drzewa rozpinającego w grafie <math>G = (V,E)</math> z wagami na krawędziach działa następująco: krawędzie są przeglądane w kolejności od najlżejszej do najcięższej. Aktualnie rozważaną krawędź dodajemy do budowanego drzewa, o ile tylko nie powoduje to powstania cyklu. Jak efektywnie zaimplementować ten algorytm? Jaki jest jego czas działania?


Linia 93: Linia 100:


Zadanie 8
Zadanie 8
Napisz program generujący labirynt następująca metodą: Na początku każda komnata jest otoczona ścianami. W każdym kroku wybieramy losowo ścianę i usuwamy ją, jeśli komnaty po jej obu stronach nie są jeszcze połączone żadną drogą.
Napisz program generujący labirynt następująca metodą: Na początku każda komnata jest otoczona ścianami. W każdym kroku wybieramy losowo ścianę i usuwamy ją, jeśli komnaty po jej obu stronach nie są jeszcze połączone żadną drogą.


Linia 101: Linia 109:


Zadanie 9  
Zadanie 9  
Plansza do gry w Hex ma kształt rombu zbudowanego z sześciokątnych pól. Dwaj gracze wykonują na przemian ruchy polegające na dostawieniu pionka na jedno pole. Celem pierwszego gracza jest zbudowanie z białych pionków drogi łączącej lewy dolny brzeg planszy z prawym górnym, natomiast celem drugiego jest zbudowanie z czarnych pionków drogi łączącej lewy górny brzeg planszy z prawym dolnym.
Plansza do gry w Hex ma kształt rombu zbudowanego z sześciokątnych pól. Dwaj gracze wykonują na przemian ruchy polegające na dostawieniu pionka na jedno pole. Celem pierwszego gracza jest zbudowanie z białych pionków drogi łączącej lewy dolny brzeg planszy z prawym górnym, natomiast celem drugiego jest zbudowanie z czarnych pionków drogi łączącej lewy górny brzeg planszy z prawym dolnym.



Wersja z 10:50, 16 sie 2006

Zadanie 1

Podaj przykład ciągu O(n) operacji MakeSet, Find i Union w implementacji listowej bez łączenia z wyważaniem, których łączny koszt to Θ(n2).

Rozwiązanie


Zadanie 2

Udowodnij, że w implementacji listowej z heurystyką łączenia z wyważaniem koszt wykonania $m$ operacji MakeSet, Find i Union, sposród których n to MakeSet, wynosi O(m+nlogn).

Rozwiązanie


Zadanie 3

Udowodnij, że w implementacji drzewiastej z łączeniem według wysokości wysokość drzewa zawierającego n węzłów jest mniejsza bądź równa logn.

Rozwiązanie


Zadanie 4

Napisz pseudokod operacji MakeSet, Union i Find w implementacji drzewiastej z łączeniem według rangi i kompresją ścieżki.

Rozwiązanie


Zadanie 5

Udowodnij Lemat 1.

Rozwiązanie


Zadanie 6

Udowodnij, że jeśli w implementacji drzewiastej z lączeniem wedlug rangi i kompresją ściezki najpierw wykonujemy wszystkie operacje Union, a dopiero potem wszystkie operacje Find, to zamortyzowany koszt operacji Find jest stały.

Rozwiązanie


Zadanie 7

Algorytm Kruskala znajdowania minimalnego drzewa rozpinającego w grafie G=(V,E) z wagami na krawędziach działa następująco: krawędzie są przeglądane w kolejności od najlżejszej do najcięższej. Aktualnie rozważaną krawędź dodajemy do budowanego drzewa, o ile tylko nie powoduje to powstania cyklu. Jak efektywnie zaimplementować ten algorytm? Jaki jest jego czas działania?

Rozwiązanie


Zadanie 8

Napisz program generujący labirynt następująca metodą: Na początku każda komnata jest otoczona ścianami. W każdym kroku wybieramy losowo ścianę i usuwamy ją, jeśli komnaty po jej obu stronach nie są jeszcze połączone żadną drogą.

Rozwiązanie


Zadanie 9

Plansza do gry w Hex ma kształt rombu zbudowanego z sześciokątnych pól. Dwaj gracze wykonują na przemian ruchy polegające na dostawieniu pionka na jedno pole. Celem pierwszego gracza jest zbudowanie z białych pionków drogi łączącej lewy dolny brzeg planszy z prawym górnym, natomiast celem drugiego jest zbudowanie z czarnych pionków drogi łączącej lewy górny brzeg planszy z prawym dolnym.

                            • rysunek ****************************

Zaprojektuj algorytm, który po każdym ruchu sprawdza, czy nastąpiła wygrana któregoś z graczy.

Rozwiązanie