Złożoność obliczeniowa: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
m Zastępowanie tekstu - "\textsc{" na "\text{" |
|||
(Nie pokazano 52 wersji utworzonych przez 8 użytkowników) | |||
Linia 3: | Linia 3: | ||
== Opis == | == Opis == | ||
Złożoność obliczeniowa to dziedzina informatyki teoretycznej zajmująca się klasyfikacją języków formalnych ze względu na ilość zasobu | 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 == | == Sylabus == | ||
Linia 9: | Linia 9: | ||
=== Autorzy === | === Autorzy === | ||
*Maciej Ślusarek | *Maciej Ślusarek - Uniwersytet Jagielloński | ||
*Przemysław Broniek | *Przemysław Broniek - Uniwersytet Jagielloński | ||
*Grzegorz Gutowski | *Grzegorz Gutowski - Uniwersytet Jagielloński | ||
*Jan Jeżabek | *Jan Jeżabek - Uniwersytet Jagielloński | ||
===Wymagania wstępne=== | ===Wymagania wstępne=== | ||
Matematyka dyskretna | * Matematyka dyskretna | ||
* Algorytmy i struktury danych | |||
* Języki, automaty i obliczenia. | |||
=== Zawartość === | === Zawartość === | ||
*Złożoność obliczeniowa w modelu | *Złożoność obliczeniowa w modelu maszyny Turinga: | ||
**zasoby obliczeniowe | |||
**warianty modelu: off-line, wielotaśmowa, niedeterministyczna | |||
*Inne modele dla złożoności: | *Inne modele dla złożoności: | ||
**maszyna RAM | **maszyna RAM, kryterium jednostajne i logarytmiczne | ||
**obwody logiczne | **obwody logiczne | ||
**zależności między funkcjami złożoności w | **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 obliczeniowej: | ||
**klasy złożoności czasowej i pamięciowej | **klasy złożoności czasowej i pamięciowej | ||
**twierdzenia o liniowym przyspieszaniu i kompresji pamięci | **twierdzenia o liniowym przyspieszaniu i kompresji pamięci | ||
**relacje między klasami, twierdzenie Savitcha i dopełnienia klas | **relacje między klasami, twierdzenie Savitcha i dopełnienia klas | ||
**twierdzenia o hierarchii czasowej i pamięciowej | **twierdzenia o hierarchii czasowej i pamięciowej | ||
* | *Redukcje i zupełność: | ||
**rodzaje redukcji: wielomianowa, logarytmiczna, Turinga | |||
**rodzaje: wielomianowa, logarytmiczna, Turinga | |||
**pojęcie zupełności | **pojęcie zupełności | ||
**klasa NP, NP-zupełność, twierdzenie Cooka-Levina | **klasa NP, NP-zupełność, twierdzenie Cooka-Levina | ||
**charakteryzacja klasy NP w języku logiki | |||
*Dowody NP-zupełności | *Dowody NP-zupełności i analiza złożoności problemu: | ||
**techniki konstrukcji | **przykłady redukcji i techniki ich konstrukcji | ||
**analiza złożoności podproblemów | **analiza złożoności podproblemów | ||
**problemy liczbowe i silna NP-zupełność | **problemy liczbowe i silna NP-zupełność | ||
*Algorytmy aproksymacyjne | *Algorytmy aproksymacyjne: | ||
**wersje optymalizacyjne problemów decyzyjnych | |||
**przykłady algorytmów aproksymacyjnych | |||
**schematy aproksymacyjne | |||
*Dolne ograniczenia na aproksymowalność | *Dolne ograniczenia na aproksymowalność: | ||
**L-redukcje | **L-redukcje | ||
**klasa MAXSNP, problemy MAXSNP-zupełne | **klasa MAXSNP, problemy MAXSNP-zupełne | ||
**charakteryzacja klasy NP przez weryfikatory | **charakteryzacja klasy NP przez weryfikatory | ||
**twierdzenie PCP i przykłady zastosowania | **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 <math>\oplus\text{P}</math> | |||
* | *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ść | *Kryptografia a złożoność: | ||
**funkcje jednokierunkowe | **funkcje jednokierunkowe | ||
**protokoły interaktywne | **protokoły interaktywne | ||
**IP=PSPACE | **IP=PSPACE | ||
===Literatura=== | ===Literatura=== | ||
# ''Złożoność obliczeniowa'' | # C.H. Papadimitriou, ''Złożoność obliczeniowa'', Wydawnictwa Naukowo-Techniczne, Warszawa 2002. | ||
# ''Wprowadzenie do teorii automatów, języków i obliczeń'' | # J.E. Hopcroft, J.D. Ullman, ''Wprowadzenie do teorii automatów, języków i obliczeń'', Wydawnictwo Naukowe PWN, Warszawa 1994. | ||
# ''Computers and Intractability A Guide to the Theory of NP-completeness'' | # M.R. Garey, D.S. Johnson, ''Computers and Intractability A Guide to the Theory of NP-completeness'', Freeman, 1979. | ||
# ''Introduction to the Theory of Computation'' | # M. Sipser, ''Introduction to the Theory of Computation'', PWS Publishing Company, 1997. | ||
== Moduły == | == Moduły == | ||
# [[Złożoność obliczeniowa/Wykład 1: Obliczenia w modelu maszyny Turinga|Obliczenia w modelu maszyny Turinga]] ([[Złożoność obliczeniowa/Test 1: Obliczenia w modelu maszyny Turinga|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 2: Inne modele dla złożoności|Inne modele dla złożności]] ([[Złożoność obliczeniowa/Test 2: Inne modele dla złożoności|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 3: Klasy złożoności obliczeniowej|Klasy złożoności obliczeniowej]] ([[Złożoność obliczeniowa/Test 3: Klasy złożoności obliczeniowej|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 4: Redukcje i zupełność|Redukcje i zupełność]] ([[Złożoność obliczeniowa/Test 4: Redukcje i zupełność|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 5: Problemy NP-zupełne|Problemy NP-zupełne]] ([[Złożoność obliczeniowa/Test 5: Problemy NP-zupełne|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 6: NP-zupełność jako narzędzie analizy problemu|NP-zupełność jako narzędzie analizy problemu]] ([[Złożoność obliczeniowa/Test 6: NP-zupełność jako narzędzie analizy problemu|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 7: Algorytmy aproksymacyjne|Algorytmy aproksymacyjne]] ([[Złożoność obliczeniowa/Test 7: Algorytmy aproksymacyjne|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 8: Schematy aproksymacji i klasa MAXSNP|Schematy aproksymacji i klasa MAXSNP]] ([[Złożoność obliczeniowa/Test 8: Schematy aproksymacji i klasa MAXSNP|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 9: Twierdzenie PCP i nieaproksymowalność|Twierdzenie PCP i nieaproksymowalność]] ([[Złożoność obliczeniowa/Test 9: Twierdzenie PCP i nieaproksymowalność|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 10: Algorytmy probabilistyczne|Algorytmy probabilistyczne]] ([[Złożoność obliczeniowa/Test 10: Algorytmy probabilistyczne|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 11: Obliczenia równoległe|Obliczenia równoległe]] ([[Złożoność obliczeniowa/Test 11: Obliczenia równoległe|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 12: Problemy funkcyjne i złożoność zliczania|Problemy funkcyjne i złożoność zliczania]] ([[Złożoność obliczeniowa/Test 12: Problemy funkcyjne i złożoność zliczania|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 13: Pamięć logarytmiczna i hierarchia wielomianowa|Pamięć logarytmiczna i hierarchia wielomianowa]] ([[Złożoność obliczeniowa/Test 13: Pamięć logarytmiczna i hierarchia wielomianowa|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 14: Pamięć wielomianowa i złożoność wykładnicza|Pamięć wielomianowa i złożoność wykładnicza]] ([[Złożoność obliczeniowa/Test 14: Pamięć wielomianowa i złożoność wykładnicza|test]]) | |||
# [[Złożoność obliczeniowa/Wykład 15: Kryptografia a złożoność|Kryptografia a złożoność]] ([[Złożoność obliczeniowa/Test 15: Kryptografia a złożoność|test]]) |
Aktualna wersja na dzień 21:45, 11 cze 2020
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)