Przyk ladowe Kolokwium z Algorytmów i Struktur Danych (Zad. obu kolokwiach)

Podobne dokumenty
Równoleg le sortowanie przez scalanie

Zagadnienie Dualne Zadania Programowania Liniowego. Seminarium Szkoleniowe Edyta Mrówka

Metoda Simplex bez użycia tabel simplex 29 kwietnia 2010

Wykład 2. Poprawność algorytmów

Programowanie w VB Proste algorytmy sortowania

Wyk lad 9 Baza i wymiar przestrzeni liniowej

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Algorytmy i Struktury Danych

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

ci agi i szeregi funkcji Javier de Lucas Ćwiczenie 1. Zbadać zbieżność (punktow a i jednostajn a) ci agu funkcji nx 2 + x

Wyk lad 7 Metoda eliminacji Gaussa. Wzory Cramera

Zasady analizy algorytmów

Statystyka w analizie i planowaniu eksperymentu

Statystyka w analizie i planowaniu eksperymentu

w = w i ξ i. (1) i=1 w 1 w 2 :

Drzewa podstawowe poj

Sterowalność liniowych uk ladów sterowania

Drzewa AVL definicje

Analiza algorytmów zadania podstawowe

Zestaw nr 7 Ekstremum funkcji jednej zmiennej. Punkty przegiȩcia wykresu. Asymptoty

Laboratorium nr 7 Sortowanie

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

ANALIZA II 15 marca 2014 Semestr letni. Ćwiczenie 1. Czy dan a funkcjȩ da siȩ dookreślić w punkcie (0, 0) tak, żeby otrzymana funkcja by la ci ag la?

Rozdzia l 3. Laboratorium 3. danych zawierajac

4.2 Sposób korzystania z l acza

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Niesimpleksowe metody rozwia zywania zadań PL. Seminarium Szkoleniowe Edyta Mrówka

Wyk lad 4 Dzia lania na macierzach. Określenie wyznacznika

Algorytmy i Struktury Danych.

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

Teoretyczne podstawy informatyki

Niech X bȩdzie dowolnym zbiorem. Dobry porz adek to relacja P X X (bȩdziemy pisać x y zamiast x, y P ) o w lasnościach:

MATEMATYKA DYSKRETNA - wyk lad 1 dr inż Krzysztof Bryś. Wprowadzenie

Algorytmy i Struktury Danych, 2. ćwiczenia

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Wyk lad 8 macierzy i twierdzenie Kroneckera-Capellego

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

LOGIKA ALGORYTMICZNA

Sterowanie optymalne dla uk ladów nieliniowych. Zasada maksimum Pontriagina.

Sortowanie przez scalanie

Rozdzia l 2. Najważniejsze typy algebr stosowane w logice

Pierwsze kolokwium z Matematyki I 4. listopada 2013 r. J. de Lucas

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Po wprowadzeniu zmiennych uzupe lniaj acych otrzymamy równoważny mu problem w postaci kanonicznej:

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014. Forma studiów: Stacjonarne Kod kierunku: 06.

1 Wprowadzenie do algorytmiki

Struktury Danych i Złożoność Obliczeniowa

Sortowanie - wybrane algorytmy

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013. Forma studiów: Stacjonarne Kod kierunku: 06.

POCHODNA KIERUNKOWA. DEFINICJA Jeśli istnieje granica lim. to granica ta nazywa siȩ pochodn a kierunkow a funkcji f(m) w kierunku osi l i oznaczamy

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Wyk lad 9 Przekszta lcenia liniowe i ich zastosowania

Liczby naturalne i ca lkowite

Wyk lad 9 Baza i wymiar przestrzeni liniowej

Podstawy Informatyki. Sprawność algorytmów

Sortowanie przez wstawianie

Zaawansowane algorytmy. Wojciech Horzelski

FUNKCJE LICZBOWE. x 1

Złożoność obliczeniowa zadania, zestaw 2

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Geometria odwzorowań inżynierskich Zadania 01

Wyk lad 5. Analiza dla informatyków 1 DANI LI1 Pawe l Domański szkicowe notatki do wyk ladu. 1. Granice niew laściwe

MATEMATYKA W SZKOLE HELIANTUS LICZBY NATURALNE I CA LKOWITE

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Suma i przeciȩcie podprzestrzeń, suma prosta, przestrzeń ilorazowa Javier de Lucas

Geometria odwzorowań inżynierskich Zadania 02

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Wstęp do programowania

0-0000, , , itd

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Elementy logiki i teorii mnogości Wyk lad 1: Rachunek zdań

Zad. 3: Układ równań liniowych

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Paradygmaty programowania. Paradygmaty programowania

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Wstęp do programowania

Zadanie 1. Doskonała inaczej (6 pkt) Poniższy algorytm wyznacza wszystkie dzielniki liczby naturalnej n 1, mniejsze od n.

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 90 minut

Analiza algorytmów zadania podstawowe

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Forma studiów: Stacjonarne Kod kierunku: 11.

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Wyk lad 9 Podpierścienie, elementy odwracalne, dzielniki zera

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Wstęp do programowania

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2014/2015. Forma studiów: Niestacjonarne Kod kierunku: 06.

Algorytmy i struktury danych. wykład 5

Analiza dla informatyków 1 DANI LI1 Pawe l Domański szkicowe notatki do wyk ladu

Metody Numeryczne Wykład 4 Wykład 5. Interpolacja wielomianowa

Struktury danych: stos, kolejka, lista, drzewo

KOLOKWIUM PODSTAWY PROGRAMOWANIA

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Forma studiów: Stacjonarne Kod kierunku: 16.

Algorytmy i struktury danych Matematyka III sem.

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Transkrypt:

Dr hab. Andreas Zastrow, Prof. UG Sem. Zim. 2017/18 Przyk ladowe Kolokwium z Algorytmów i Struktur Danych (Zad. obu kolokwiach) Dla wszystkich zadań: Proszȩ uzasadnić wszystkie odpowiedzi. Proszȩ albo uzasadnić przekszta lcenia wzorów albo zaprezentować przekszta lcenia wzorów z tak a szczegó lowości a, aby zasady przekszta lceń by ly jasne. Podczas kolokwium nie wolno korzystać z komputerów, kalkulatorów, ksiażek, tablic matematycznych ani z osobistych notatek z wykladu lub ćwiczeń. Aby uzasadnić odpowiedzi mog a państwo nie tylko korzystać z naszych ćwiczeń i wyk ladów, ale z ca lego z a p a m i ȩ t a n e g o materia lu nauki nabytego w trakcie studiów i szkol ly aż do stanu znajomości państwa jako studentów drugiego roku.!!! Nie wolno cytować wyników konkretnych przypadków, trzeba je na nowo obliczyć!!! Z a d a n i a: I/1) Uzasadnij, czy prawdziwe s a równości a) f(n) = O(g(n)), b) f(n) = Θ(g(n)), c) f(n) = Ω(g(n)) (n N) dla f(n) = 3 7 n+6 (5 n+4) 8 (ln(3 n n4 +2)) 9 i dla wszystkich g {n a n n m (log(n)) k a 1, k,m 0} := W I/2) Przypuśćmy, że zastȩpujemy fragment algorytmu INSERTION-SORT ( sortowanie przez wstawenie ) wstawiaj acy w odpowiedniej pozycji element A[k] w posortowan a listȩ (A[1],...,A[k 1]) przez inny fragment podany poniżej (k 3): IF (A[k] A[k 1]) THEN Wstaw A[k] po A[k 1] GOTO (**) ELSE-IF (A[k] A[1]) THEN Wstaw A[k] przed A[1] GOTO (**) d := 1 g := k 1 (*) j := (d+g)/2 IF (A[k] > A[j]) d := j IF (A[k] A[j]) g := j IF (g d 2) GOTO (*) Wstaw A[k] bezpośrednio przed A[g] (**)... Druck am 7. 10. 2018 um 17:1 Uhr 1 Datei: Poprawke WS17/18

Za lóżmy, że trzymamy dane w takich strukturach, że polecania typu"wstaw... przed/ po..." s a wykonalne w sta lym czasie c niezależnym od d lugości listy. Proszȩ odpowiedzieć na nastȩpuj ace pytania: (a) Jaki jest optymistyczny i pesymistyczny czas dzia lania powyżej podanej podprocedury? Proszȩ podać wynik w formie Ω(f 0 (k)) lub odp. O(g 0 (k)), gdzie f 0 i g 0 s a najlepszymi możliwymi oszacowaniami przez typowe funkcje wrostu (t.zn. przez funkcje zawarte w zbiorze W z Zad.I/1). (b) Jaki jest optymistyczny i pesymistyczny czas dzia lania algorytmu sortowania listy o n elementach, jeśli algorytm różni siȩ od algorytmu INSERTION-SORT, w sposób podane powyżej? Proszȩ podać wynik w formie Ω(f(n)) lub odp. O(g(n)), gdzie f i g s a najlepszymi możliwymi oszacowaniami przez typowe funkcji wrostu. I/3.) Dany jest nastȩpuj acy ci ag liczb: [76,78,64,62,73,61,71,68] Dla podanego ci agu zdecyduj, które z poniżej podanych operacji s a dopuszczalne, jeśli a) nasz ci ag jest podany w stosie. b) nasz ci ag jest podany w kolejce. Pokaż jak zmienia siȩ nasz ci ag liczb w trakcie dzia lania ci agu dopuszczalnych operacji. A1.) wstaw "67" miȩdzy czwartym a pi atym elementem, A2.) dodaj "66" jako element, A3.) dodaj "73" do końca ci agu, A4.) dodaj "77" na pocz atku ci agu, A5.) dodaj "72" jako element, A6.) usuń jeden element, A7.) usuń szósty element, A8.) usuń jeden element na pocz atku ci agu. c) Wykonaj te operacje interpretuj ac podany powyżej ci ag jako listȩ dwukierunkow a. Proszȩ też dopisać, jak zmienaj a siȩ wskaźniki w ci agu dopuszczalnych operacji. Niejednoznacznie zdefiniowane operacji maj a być zignorowane. I/4a) Traktuj ac podany ci ag [55,45,50,56,52,51,46,42,41,43,59] jak kopiec, wykonej nastȩpuj acy ci ag tych operacji, które s a dopuszczalne i jednoznacznie zdefiniowane: B1) dodaj liść z wartości a "58", B2) dodaj liść z wartości a "57" do liścia o najniższym numerze, B3) dodaj liść z wartości a "48" do wȩzl/a nr.6, B4) dodaj liść z wartości a "47" do wȩzl/a z wartości a "51", B5) usuń wȩzel/ z nr.6 i pol/ acz jego dzieci z jego rodzicem, B6) dodaj liść z wartości a "40" do wȩzl/a nr.4, B7) Usuń najbardzej skrajny na lewo liść. B8) Pol/ acz krawȩdzi a wȩzl/y nr.5 i nr.3. Druck am 7. 10. 2018 um 17:1 Uhr 2 Datei: Poprawke WS17/18

Czy wyniki dla a) zmieni a siȩ, jeśli próbujemy wykonywać operacje B1) B8) dla tych samych danych wejściowych b) na drzewach ogólnych, c) na drzewach binarnych. Jeśli tak, to proszȩ powiedzieć w jaki sposób one siȩ zmieniaj a. Przedstaw wszystkie odpowiedzi tego zadania rysunkowo na drzewach. I/5.) Rozpatrujemy zwyk le wyrażenia matematyczne typu [ 17 ] 13 (a b)k (c 5) m + (a 2 k b 2 k) /(c 2 m d 2 m) = 1 k=1 o nieznanej d lugości n. Chcemy sprawdzić programem poprawność budowania takich wyrażeń. Wyrażenie jest trzymane jako ci ag znaków w kolejce. Program ma pamiȩc robocz a o ma lej ustalonej ilości miesc, i ma jako dodatkow a pamiȩc jeden pocz atkowo pusty stos. Dostȩp do danach trzymanych w kolejce i w stosie jest ograniczone regu lami definuj acymi kolejkȩ lub odpowiednio stos. a) Czy to zadanie jest wykonalne w czasie O(n)? b) Czy państwo uważaj a, że powyższe wyrażenie jest formalnie poprawnie zbudowane? Jeśli Tak, to czy powyższe wyrażenie zawiera aspekt, który lepiej unikać w pracach matematycznych? Dod1) Dane s a kolejka i pocz atkowo pusty stos. Elementami kolejki s a bloki. Każdy pojedynczy blok jest tak duży, że nie mieście siȩ w pamiȩci roboczej, i że należy unikać ich podwajania. Opisz s lowami lub w pseudokodzie lub w diagramie m adre dzia lanie programu, który sortuje bloki w kolejce. Program może czytać jedynie pierwszy blok w kolejki, oraz pierwsze blok stosu. O blokach w kolejce wiadomo, że nie wystȩpuje w nich określone kombinacje danych. II/1) Nastȩpuj acy program drukuje kilka linii typu FROM (x 0,y 0 ) TO (x 1,y 1 ), które stanowi a iston a czȩść polecenia dla programu graficznego rysuj acego fraktal. Znaczeniem każdego z poleceń jest narysowanie odcinka miȩdzy wspó lrzȩdniami (x 0,y 0 ) i (x 1,y 1 ). a) Proszȩ opisać dzia lanie tego programu, w szczególności pokazać jak rozwija siȩ stos iterowanych wywo lań procedury rekurencyjnej zawartej w tym kodzie. b) Proszȩ naszkicować wynik dzia lania programu. PROGRAM DRAW x := 0.5 y := 0.5 v := (1,0) l := 0.4 CALL DRAWNEXT(x,y,v,l) v := v CALL DRAWNEXT(x, y, v, l) END (PROGRAM) -------------------------------------------------- Druck am 7. 10. 2018 um 17:1 Uhr 3 Datei: Poprawke WS17/18

PROCEDURA DRAWNEXT(x, y, v, l) IF (l < 0.1) GOTO (**) x 0 := x y 0 := y x 1 := x + v(1) * l y 1 := y + v(2) * l PRINT FROM (, x 0,,, y 0, ) TO (, x 1,,, y 1, ) l 2 := l * 0.5 v 2 := ( ) ( 0 1 v(1) 1 0 v(2)) wed lug zasad mnożenia macierzy CALL DRAWNEXT(x 1,y 1,v 2,l 2 ) (**) END(PROCEDURA) Wskazówek: W Archiwum, jako AStD/C/Przkl/.1, illustracja dzial/ania tego programu jest podana. II/2a) Dane jest tabela TAB posiadaj acy m wierszy i n kolumn (n,m 2), w którym element stoj acy w i-tym wierzu i j-tej kolumny oznaczamy przez TAB[i, j]. Proszȩ podać formalny dowód poprawności dzia lania podanego poniżej algorytmu, którego celem jest znalezienie kolumny w tabeli liczb TAB, że maksimum spośród liczb tej kolumny jest nie wiȩksze niż analogiczne maksima innych kolumn. PROGRAM FIND-MINodMAXs C := 1 FOR j FROM 1 TO n B := TAB[1,j] A := 1 FOR i FROM 2 TO m IF (TAB[i,j] > B) THEN A := i B := TAB[1,j] END(FOR) IF (j=1) THEN D := A E := B ELSE IF (E > B) THEN E := B C := j D := A END(FOR) PRINT... END(PROGRAM) Druck am 7. 10. 2018 um 17:1 Uhr 4 Datei: Poprawke WS17/18

b) W powyższym pseudokodzie linia "PRINT" przedstawiaj aca końcowy wynik nie jest uzupe lniona. Proszȩ uzupe lnić t a liniȩ, tak, aby wynik (wartość najmniejszego maksimum wśród wszystkich kolumn, i jego pozycjȩ) by l podany w wygodnej dla użytkownika postaci. [Dla prawdziwych kolokwiach nastȩpuj ace zadanie bȩdzie raczej podane dla konkretnych omówionych algorytmów. Z natury przykl/adowego kolokwium wynika, że tutaj wybral/em też algorytm podany w pseudokodzie:] II/3a) Opisz s lownie dzia lanie algorytmu, który jest wersj a algorytmu BUBLESORT, ale dla danych zawartych w liście o nieznanej d lugości (wiȩc aby wykonywać parȩ z poniższych poleceń, trzeba wywo lywać lub wywo lywać iterowanie procedurȩ LIST SEACH). Nastȩpnie zilustruj dzia lanie podanej wersji BUBLESORT na przyk ladzie listy [2,4,3,1]. PROGRAM SORT LISTA (*) "aktualny element" staje siȩ ostatnym elementem listy. i := 0 (**) IF (aktualny element jest pierwszym elementem listy) THEN IF (i = 1) GOTO (*) IF (i = 0) THEN PRINT Lista posortowana skończ program poprawnie ELSE skończ program z b lȩdem IF (aktualny element jest mniejsze niż poprzedni element) THEN zamien kolejność obu elementów w liscie i := 1 aktualny element staje siȩ poprzednim elementem listy GOTO (**) END(PROGRAM) Wskazówek: W Archiwum, jako AStD/C/Przkl/.2, illustracja dzial/ania tego programu jest podana. II/4.) Dany jest kopiec [29,25,36,26,37,22,34,33,28,31,39,35,23,24] a) Proszȩ pokazać jak zmienia siȩ dany kopiec w trakcie dzia lania procedury BUILD MAX HEAP. b) Kopiec, który jest wynikiem dzia lania procedury z podpunktu (a) zostaje wykorzystany jako kolejka priorytetowa. Zdecyduj, które z poniżej podanych operacji s a Druck am 7. 10. 2018 um 17:1 Uhr 5 Datei: Poprawke WS17/18

dopuszczalne na kolejkach priorytetowych. Pokaż jak zmienia siȩ kopiec w trakcie dzia lania ci agu dopuszczalnych operacji. C1) Zmień priorytet wȩzl/a nr.12 na "21". C2) Podaj wartość korzenia. C3) Zmień priorytet "22" na nowy równy "38" C4) dodaj liść z priorytetem "20" do wȩzl/a nr.7 C5) dodaj liść z priorytetem "30" do liścia z priorytetem "25" C6) dodaj element z priorytetem 27 do kolejki. C7) Zmień priorytet wȩzl/a nr.11 na 32. C8) Usuń najbardzej skrajny na lewo liść. C9) Podaj maksimum i usuń je. C10) Usuń liść z najmniejszym priorytetem. C11) Podaj minimum. C12) Usuń liść z priorytetem 24. Przedstaw rozwi azanie rysunkowo na drzewach. II/5a) W zadaniu II/3 wystȩpuje wersja algorytmu BUBBLESORT zaadoptowana dla danych trzymanych na liście. Podaj aspekty zastosowania tej wersji algorytmu, gdzie on wystȩpuje istotnie różnie niż w standardowej wersji, omówionej na ćwiczeniach. b) Rozważ czy w aspektach podanych w punkcie (a) dzia lanie algorytmu zwalnia czy przyśpiesza w porównaniu z wersj a standardow a. Czy tak siȩ dzieje zawsze czy jedynie dla pewnych danych? Oszacuj w jakim stopniu to zachodzi. c) Rozważmy sytuacjȩ, gdy lista z zadania II/3 jest umieszczona na dysku konkretnego typu. Bior ac pod uwagȩ aspekty zwalniaj ace algorytm BUBBLESORT podane w punkcie (a), rozważ czy można ulepszyć standardow a wersjȩ tego algorytmu dla danych na liście aby unikn ać takiego spowolnienia programu. Opisz s lowami jak to zrobić. Spróbuj w ten sposób rownież ulepszyć pseudokod z zadania II/3. Dod2a) W zadaniu I/2 wystȩpuje wersja algorytmu INSERTION-SORT zaadoptowana dla struktur danaych, które dopuszczaj a proste operacje typu "wstaw...przed/po...". Proszȩ opisać przeszkody w realizacji tego pomys lu przyspieszenia czas dzia lania obliczonego w rozwi azaniu zadania I/2, jeśli dane s a trzymane (i) w stosie, (ii) w kolejce, (iii) w liście dwukierunkowej, (iv) w kopcu typu max. b) Jaki rodzaj struktur danych umówionych na wyk ladzie nadaje siȩ nalepiej aby zrealizować pomys l przyspieszenia algorytm INSERTION-SORT, o którym by la mowa w Zad. I/2 oraz w czȩṡci a). Druck am 7. 10. 2018 um 17:1 Uhr 6 Datei: Poprawke WS17/18