przykładowe zadania na kolokwium
Transkrypt
przykładowe zadania na kolokwium
Imię i nazwisko: ........................................................................................... 00 Algorytmy i struktury danych 2015 (przykładowe zadania na kolokwium) Kolokwium będzie się składać z 5 pytań testowych i 3 zadań otwartych. Punktacja pytań testowych: 4 poprawne odpowiedzi 100 pkt, 3 – 10 pkt, 2 – 2 pkt, 1 – 1 pkt. Punktacja zadań otwartych: do 500 pkt (wielokrotność 50pkt). Ocena z kolokwium 0-800 pkt – ndst; 801-1000 – dst; 1001-1200 – dst+; 1201-1400 – db; 1401-1600 – db+; 1601-1800 – bdb; 1801-2000 – bdb+. Przykłady pytań testowych Co oznacza, że górne ograniczenie na czas rozTak/Nie wiązania problemu wynosi T ? Istnieje algorytm A, który dla każdego wejścia I, działa na I w czasie najwyżej T . Dla każdego algorytmu A, istnieje wejście I, takie że A działa na I w czasie najwyżej T . Istnieje wejście I, takie, że każdy algorytm A działa na wejściu I w czasie najwyżej T . Dla każdego wejścia I, istnieje algorytm A, który działa na I w czasie najwyżej T . Dla pewnego problemu mamy rozwiązanie, które działa w czasie T (n) = T (n/2) + cn Tak/Nie i T (1) = 1. Jaki jest czas działania tego rozwiązania? Θ(n) Θ(n log n) Θ(n2 ) Θ(2n ) Co oznacza, że dolne ograniczenie na czas rozTak/Nie wiązania problemu wynosi T ? Istnieje algorytm A, który dla każdego wejścia I, działa na I w czasie przynajmniej T . Dla każdego algorytmu A, istnieje wejście I, takie że A działa na I w czasie przynajmniej T. Istnieje wejście I, takie, że każdy algorytm A działa na wejściu I w czasie przynajmniej T . Dla każdego wejścia I, istnieje algorytm A, który działa na I w czasie przynajmniej T . Jakiej struktury danych należy użyć do wykonania przejścia grafu wszerz bez używania re- Tak/Nie kurencji? kopiec kolejka (FIFO) stos (LIFO) nie potrzeba dodatkowej struktury danych Jakiej struktury danych należy użyć do wykonania przejścia grafu w głąb bez używania re- Tak/Nie kurencji? kopiec kolejka (FIFO) stos (LIFO) nie potrzeba dodatkowej struktury danych Ile wynosi dolne ograniczenie na sortowanie n Tak/Nie elementów w modelu z porównaniami? Θ(log n) Θ(n) Θ(n log n) Θ(n2 ) Które algorytmy działają w czasie optymalnym asymptotycznie dla problemu sortowania Tak/Nie w modelu z porównaniami? sortowanie przez wstawianie (insertsort) sortowanie przez scalanie (mergesort) sortowanie kopcowe (heapsort) sortowanie bąbelkowe (bubblesort) Drzewo o n wierzchołkach jako graf ma n krawędzi nie ma cykli jest spójne rozspójnia się po usunięciu dowolnej krawędzi Tak/Nie Dla pewnego problemu mamy rozwiązanie, które działa w czasie T (n) = 2T (n/2) + cn Tak/Nie i T (1) = 1. Jaki jest czas działania tego rozwiązania? Θ(n) Θ(n log n) Θ(n2 ) Θ(2n ) Cykl prosty o n wierzchołkach jako graf ma n krawędzi ma dokładnie jedną prostą ścieżkę pomiędzy dowolnymi dwoma wierzchołkami jest spójny rozspójnia się po usunięciu dowolnej krawędzi Tak/Nie 1 Algorytm Kruskala dla grafu G = (V, E) jest algorytmem typu dziel i rządź jest algorytmem zachłannym ma złożoność Θ(|V | + |E|) ma złożoność Θ((|E| log |E|) + |V |) Maksymalne skojarzenie w grafie dwudzielnym G = (V1 ∪ V2 , E), gdzie V1 ∩ V2 = ∅ i Tak/Nie E ⊆ V1 × V2 i |V1 | = |V2 | = n można policzyć w czasie O(n3 ) można policzyć w czasie O(n log n) może być wielkości 2n może kojarzyć wszystkie wierzchołki w grafie Tak/Nie Algorytm Dijkstry dla grafu G = (V, E) z użyTak/Nie ciem kolejki priorytetowej jest algorytmem typu dziel i rządź jest algorytmem zachłannym ma złożoność Θ(|V | + |E|) ma złożoność Θ((|E| + |V |) log |V |) Algorytm Edmondsa-Karpa znajduje w grafie minimalne drzewo rozpinające znajduje w grafie maksymalny przepływ używa przeglądania grafu wszerz ma złożoność Θ(|V | + |E|) Algorytm Forda-Fulkersona znajduje w grafie minimalne drzewo rozpinające znajduje w grafie maksymalny przepływ złożoność algorytmu zależy od wartości rozwiązania ma złożoność Θ(|V | · |E|) Tak/Nie Tak/Nie Maksymalne skojarzenie w grafie dwudzielnym G = (V1 ∪ V2 , E), gdzie V1 ∩ V2 = ∅ i Tak/Nie E ⊆ V1 × V2 i |V1 | = 6 |V2 | można policzyć w czasie O((|V1 | + |V2 |) · |E|) można policzyć w czasie O(|V1 | + |V2 | + |E|) może być wielkości min(|V1 |, |V2 |) może być wielkości max(|V1 |, |V2 |) Które problemy są NP-trudne Maximum Independent Set Euler Cycle Maximum Graph Flow Minimum Hamilton Cycle Tak/Nie Które problemy nie są NP-trudne Minimum Vertex Cover Minimum Spanning Tree Maximum Matching Hamilton Cycle Tak/Nie Algorytmy aproksymacyjne działają zawsze w czasie wielomianowym zwracają rozwiązania przybliżone zwracane rozwiązania mogą być dowolnie odległe od optymalnego nie istnieje metoda dowiedzenia bliskości otrzymanego rozwiązania względem optymalnego Tak/Nie Algorytmy metaheurystyczne działają zawsze w czasie wielomianowym zwracają rozwiązania przybliżone zwracane rozwiązania mogą być dowolnie odległe od optymalnego nie istnieje metoda dowiedzenia bliskości otrzymanego rozwiązania względem optymalnego Tak/Nie Przykłady zadań otwartych Zadanie 1 Mamy dane dwie posortowane listy A i B. Pokaż algorytm, który usuwa z listy A wszystkie elementy, które nie należą do listy B. Zadanie 2 Kolejka dwustronna pozwala na wstawianie i usuwanie elementów na dowolnym jej końcu. Pokaż, jak zaimplementować kolejkę dwustronną za pomocą tablic tak, żeby czas zamortyzowany każdej operacji wstawienia i każdej operacji usunięcia był stały. Zadanie 3 Rozważmy problem cyklu komiwojażera dla grafów z wierzchołkami na płaszczyźnie i wagą krawędzi w postaci odległości euklidesowej między wierzchołkami. Pokaż, że optymalne rozwiązanie tego problemu nie ma krzyżujących się krawędzi (jest cyklem prostym). Zadanie 4 Pokaż, jak zaimplementować kolejkę za pomocą dwóch stosów tak, żeby czas zamortyzowany każdej operacji wstawienia i każdej operacji usunięcia był stały. Zadanie 5 Mamy dane dwie posortowane listy A i B. Pokaż algorytm pracujący w czasie liniowym, który scala te listy w posortowaną listę C zawierającą tylko elementy które nie były wspólne dla list A i B. 2