Złożoność obliczeniowa
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Forma zajęć
Wykład (30 godzin) + ćwiczenia (30 godzin)
Opis
Złożoność obliczeniowa to dziedzina informatyki teoretycznej zajmująca się klasyfikacją języków formalnych ze względu na ilość zasobu — czasu i pamięci — potrzebnego do rozpoznawania języka. Ponieważ język formalny jest abstrakcyjnym odpowiednikiem problemu algorytmicznego, teoria ta dostarcza narzędzi do szacowania trudności obliczeniowej takich problemów. Niniejszy kurs zapoznaje uczestników z najważniejszymi rezultatami badań dotyczącymi klas złożoności, ich własności i wzajemnych zależności a także omawia wynikające z tych faktów wnioski dotyczące praktycznych problemów algorytmicznych.
Sylabus
Autorzy
- Maciej Ślusarek - Uniwersytet Jagielloński
- Przemysław Broniek - Uniwersytet Jagielloński
- Grzegorz Gutowski - Uniwersytet Jagielloński
- Jan Jeżabek - Uniwersytet Jagielloński
Wymagania wstępne
- Matematyka dyskretna
- Algorytmy i struktury danych
- Języki, automaty i obliczenia.
Zawartość
- Złożoność obliczeniowa w modelu maszyny Turinga:
- zasoby obliczeniowe
- warianty modelu: off-line, wielotaśmowa, niedeterministyczna
- Inne modele dla złożoności:
- maszyna RAM, kryterium jednostajne i logarytmiczne
- obwody logiczne
- zależności między funkcjami złożoności w różnych modelach
- Klasy złożoności obliczeniowej:
- klasy złożoności czasowej i pamięciowej
- twierdzenia o liniowym przyspieszaniu i kompresji pamięci
- relacje między klasami, twierdzenie Savitcha i dopełnienia klas
- twierdzenia o hierarchii czasowej i pamięciowej
- Redukcje i zupełność:
- rodzaje redukcji: wielomianowa, logarytmiczna, Turinga
- pojęcie zupełności
- klasa NP, NP-zupełność, twierdzenie Cooka-Levina
- charakteryzacja klasy NP w języku logiki
- Dowody NP-zupełności i analiza złożoności problemu:
- przykłady redukcji i techniki ich konstrukcji
- analiza złożoności podproblemów
- problemy liczbowe i silna NP-zupełność
- Algorytmy aproksymacyjne:
- wersje optymalizacyjne problemów decyzyjnych
- przykłady algorytmów aproksymacyjnych
- schematy aproksymacyjne
- Dolne ograniczenia na aproksymowalność:
- L-redukcje
- klasa MAXSNP, problemy MAXSNP-zupełne
- charakteryzacja klasy NP przez weryfikatory
- twierdzenie PCP i przykłady jego zastosowania
- Algorytmy probabilistyczne:
- probabilistyczne klasy złożoności
- rozpoznawanie liczb pierwszych
- generowanie bitów losowych
- Obliczenia równoległe:
- modele obliczeń równoległych
- klasy złożoności równoległej
- P-zupełność
- równoległość i randomizacja
- Problemy funkcyjne i złożoność zliczania:
- klasy FP, FNP, TFNP
- klasa #P i twierdzenie Valianta
- klasa
- Pamięć logarytmiczna i hierarchia wielomianowa:
- klasy L, NL i coNL
- twierdzenie Immermana-Szelepcsényi'ego
- klasy coNP i DP
- maszyny alternujące
- hierarchia wielomianowa
- Pamięć wielomianowa:
- klasa PSPACE, problemy zupełne
- gry
- problemy zwięzłe i złożoność wykładnicza
- Kryptografia a złożoność:
- funkcje jednokierunkowe
- protokoły interaktywne
- IP=PSPACE
Literatura
- C.H. Papadimitriou, Złożoność obliczeniowa, Wydawnictwa Naukowo-Techniczne, Warszawa 2002.
- J.E. Hopcroft, J.D. Ullman, Wprowadzenie do teorii automatów, języków i obliczeń, Wydawnictwo Naukowe PWN, Warszawa 1994.
- M.R. Garey, D.S. Johnson, Computers and Intractability A Guide to the Theory of NP-completeness, Freeman, 1979.
- M. Sipser, Introduction to the Theory of Computation, PWS Publishing Company, 1997.
Moduły
- Obliczenia w modelu maszyny Turinga (test)
- Inne modele dla złożności (test)
- Klasy złożoności obliczeniowej (test)
- Redukcje i zupełność (test)
- Problemy NP-zupełne (test)
- NP-zupełność jako narzędzie analizy problemu (test)
- Algorytmy aproksymacyjne (test)
- Schematy aproksymacji i klasa MAXSNP (test)
- Twierdzenie PCP i nieaproksymowalność (test)
- Algorytmy probabilistyczne (test)
- Obliczenia równoległe (test)
- Problemy funkcyjne i złożoność zliczania (test)
- Pamięć logarytmiczna i hierarchia wielomianowa (test)
- Pamięć wielomianowa i złożoność wykładnicza (test)
- Kryptografia a złożoność (test)