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

Podobne dokumenty