Uniwersytet Warszawski - Centralny System UwierzytelnianiaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Algorytmika

Informacje ogólne

Kod przedmiotu: 1000-2N00ALG Kod Erasmus / ISCED: 11.302 / (0612) Database and network design and administration
Nazwa przedmiotu: Algorytmika
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty monograficzne dla III - V roku informatyki
Przedmioty obieralne dla informatyki
Przedmioty obieralne stałe dla informatyki
Punkty ECTS i inne: 6.00
zobacz reguły punktacji
Język prowadzenia: polski
Rodzaj przedmiotu:

fakultatywne

Założenia (lista przedmiotów):

Algorytmy i struktury danych 1000-213aASD

Skrócony opis:

Wykład jest kontynuacją wykładu "Algorytmy i struktury danych". Celem zajęć jest zaznajomienie studentów z technikami konstrukcji efektywnych algorytmów dla różnych rodzajów problemów kombinatorycznych.

Wymagania wstępne: Algorytmy i struktury danych

Pełny opis:

1. Problemy ścieżkowe w grafach:

- algorytm Bellmana-Forda

- problemy ścieżkowe i mnożenie macierzy

- algorytm Floyda-Warshalla

- algorytm Johnsona

2. Problemy przepływowe.

- twierdzenie o minimalnym przekroju i maksymalnym przepływie

- algorytmy Forda-Fulkersona, Edmondsa-Karpa, Dinica, trzech Hindusów

- problem przepływu o najmniejszym koszcie, algorytm najtańszej ścieżki powiększającej

- redukcje do problemów przepływu

3. Klasy zlozonosci P, NP, dowodzenie NP-trudnosci

4. Programowanie liniowe

- geometria programów liniowych,

- algorytm simplex, dualność

5. Algorytmy aproksymacyjne

- algorytm 2-aproksymacyjny dla pokrycia wierzchołkowego

- nieaproksymowalność problemu komiwojażera

- algorytm Christofidesa dla metrycznego problemu komiwojażera

- zastosowania programowania liniowego w aproksymacji

6. Algotytmy parametryzowane

- definicje klas złożoności FPT, XP

- algorytmy przez rozgałęzianie,

- kernelizacja: liniowe jądro dla problemu pokrycia wierzchołkowego

- pojęcia szerokości ścieżkowej i drzewowej

- programowanie dynamiczne po dekompozycji drzewowej

7. Randomizacja

- algorytmy Monte Carlo i Las Vegas

- technika color coding

- algorytm Monte-Carlo dla problemu największych skojarzeń w grafach

8. Szybka transformata Fouriera i szybkie mnożenie macierzy (algorytm Strassena)

9. (opcjonalnie) Algorytm Edmondsa dla skojarzeń w grafach dowolnych

Literatura:

1. Wprowadzenie do algorytmów, T.H. Cormen, C. E. Leiserson, R.L.Rivest, WNT 1998, 2004.

2. Algorytmy aproksymacyjne, V. V. Vazirani, WNT 2005.

3. Metody probabilistyczne i obliczenia, M. Mitzenmacher, E. Upfal, WNT 2009.

4. The Design and Analysis of Algorithms, D. C. Kozen, Springer 1991.

5. Parameterized Algorithms, Cygan, Fomin, Kowalik, Lokshtanov, Marx, Pilipczuk, Pilipczuk, Saurabh, Springer 2015

Efekty uczenia się:

Wiedza

1. Zna najważniejsze problemy optymalizacji kombinatorycznej

2. Zna pojęcia klas złożoności P i NP, pojęcie problemów NP-trudnych

3. Zna efektywne algorytmy dla najważniejszych problemów optymalizacji kombinatorycznej z klasy P (problemy ścieżkowe, przepływy, programowanie liniowe)

4. Zna najważniejsze problemy NP-trudne.

5. Zna pojęcie algorytmu aproksymacyjnego oraz przykłady takich algorytmów używające podejścia kombinatoryczne oraz oparte o teorię programowania liniowego

6. Zna pojęcie algorytmu parametryzowanego oraz przykłady różnych parametryzacji. Zna pojęcie kernelizacji.

7. Zna pojęcie szerokości drzewowej i technikę programowania dynamicznego po dekompozycji drzewowej

8. Zna przykłady algorytmów randomizowanych typu Monte-Carlo i Las-Vegas

9. Wie o istnieniu algorytmów szybkiej transformaty Fouriera i szybkiego mnożenia macierzy.

Umiejętności:

1. Potrafi sprowadzać nowe problemy do znanych problemów przepływowych, ścieżkowych, programowania liniowego

2. Potrafi przeprowadzać dowody NP-trudności

3. Potrafi projektować algorytmy aproksymacyjne i analizować jakość aproksymacji

4. Potrafi wskazać naturalne parametryzowane wersje problemów oraz stosuje techniki takie jak: rozgałęzianie, kernelizacja, programowanie dynamiczne po dekompozycji drzewowej.

5. Potrafi stosować podstawowe techniki randomizacyjne (zaokrąglanie randomizowane, lemat Zippela-Schwartza, color coding) oraz umie stosować derandomizację metodą warunkowej wartości oczekiwanej

6. Potrafi sprowadzać nowe problemy algorytmiczne do mnożenia macierzy lub wielomianów.

Metody i kryteria oceniania:

W trakcie semestru ogłaszane są 2-3 prace domowe. Ich poprawne wykonanie (uzyskanie co najmniej 50% punktów) uprawnia do zdawania egzaminu w I terminie. Egzamin składa się z 1.5-godzinnej części testowej sprawdzającej wiedzę oraz twórcze jej wykorzystanie oraz 2.5-godzinnej części zadaniowej, sprawdzającej umiejętność rozwiązywania zadań. Zadania polegają na zaprojektowaniu algorytmu i uzasadnieniu jego własności (poprawność, czas, ew. współczynnik aproksymacji) lub na przeprowadzeniu dowodu NP-trudności.

Zajęcia w cyklu "Semestr letni 2018/19" (zakończony)

Okres: 2019-02-16 - 2019-06-08
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Łukasz Kowalik, Marcin Pilipczuk
Prowadzący grup: Łukasz Kowalik, Jakub Pawlewicz, Marcin Pilipczuk, Anna Zych-Pawlewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin

Zajęcia w cyklu "Semestr letni 2019/20" (jeszcze nie rozpoczęty)

Okres: 2020-02-17 - 2020-06-10
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Łukasz Kowalik, Marcin Pilipczuk
Prowadzący grup: Łukasz Kowalik, Marcin Pilipczuk, Juliusz Straszyński, Anna Zych-Pawlewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.