Obliczalność i złożoność obliczeniowa

Slides:



Advertisements
Podobne prezentacje
Systemy czasu rzeczywistego
Advertisements

Wprowadzenie do informatyki Wykład 6
Informatyka jako dziedzina wiedzy
Wprowadzenie do optymalizacji wielokryterialnej.
Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Systemy czasu rzeczywistego Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Na Etapie Inżynierii Wymagań
Przetwarzanie tekstów i AWK Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Informatyka jako dziedzina wiedzy Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie.
Imperatywne modele obliczeń Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Procesy współbieżne Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Przetwarzanie tekstów i AWK Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Zarządzanie konfiguracją Doskonalenie Procesów Programowych Wykład 6 Copyright, 2001 © Jerzy.
Informatyka jako dziedzina wiedzy
Copyright © Jerzy R. Nawrocki Standardy serii ISO Inżynieria oprogramowania II Wykład.
Budowa komputera Wstęp do informatyki Wykład 15
Copyright © Jerzy R. Nawrocki Zbieranie wymagań Analiza systemów informatycznych Wykład.
Testy akceptacyjne Analiza systemów informatycznych Wykład 9
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Metody numeryczne Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Bazy danych Wprowadzenie do informatyki Wykład 9
Informatyka jako dziedzina wiedzy Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Wprowadzenie do teoretycznych podstaw informatyki
Przetwarzanie tekstów i AWK Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 7
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Przetwarzanie tekstów i AWK
Programowanie imperatywne i język C
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Informatyka jako dziedzina wiedzy Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Przetwarzanie tekstów i AWK Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 5
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Przetwarzanie tekstów i AWK Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 7
Komputerowe systemy sterowania Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Metody formalne Copyright, 2005 © Jerzy R. Nawrocki Analiza systemów informatycznych.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Testowanie oprogramowania
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Wyrażenia regularne i język AWK
Komunikacja poprzez Internet
Dokumenty i prezentacje Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do.
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Algorytmy i struktury danych
Modele obliczeń i granice obliczalności Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Jerzy F. Kotowski1 Informatyka I Wykład 15 PIERWSZE KROKI.
Informatyka jako dziedzina wiedzy
Informatyka jako dziedzina wiedzy
Translatory Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11.
Gramatyki i translatory
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Informatyka jako dziedzina wiedzy Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Dokumenty elektroniczne Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do.
Budowa komputera Wstęp do informatyki Wykład 6 IBM PC XT (1983)
Przetwarzanie tekstów i AWK Copyright, 2007 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 5
Języki formalne i gramatyki Copyright, 2005 © Jerzy R. Nawrocki Teoretyczne podstawy.
Analiza ryzyka Analiza systemów inf. Wykład 14
Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Wprowadzenie do teoretycznych podstaw informatyki Copyright, 2004 © Jerzy R. Nawrocki
Od algebry Boole’a do komputera Copyright, 2007 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Procesy współbieżne Copyright, 2007 © Jerzy R. Nawrocki Wstęp do informatyki Wykład.
Zdefiniować problem Jaki jest problem? Jakie są główne założenia? Jak chcesz śledzić przebieg funkcjonowania projektu ? metody ewaluacji Budżet Jakie źródła.
Inżynieria oprogramowania
Wprowadzenie do teoretycznych podstaw informatyki
Zapis prezentacji:

Obliczalność i złożoność obliczeniowa (c) Jerzy Nawrocki Wykł. 8 Wprowadzenie do informatyki Wykład 11 Obliczalność i złożoność obliczeniowa Jerzy.Nawrocki@put.poznan.pl http://www.cs.put.poznan.pl/jnawrocki/wsb-wdi/ Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do informatyki

J.Nawrocki, Obliczalność i złożoność .. (c) Jerzy Nawrocki Plan wykładu Wykł. 8 Problem stopu Problemy optymalizacyjne i problem plecakowy Problemy decyzyjne i problem podziału zbioru Podział zbioru z użyciem brutalnej siły Złożoność czasowa brutalnej siły NP-zupełność problemów decyzyjnych NP-trudność problemów optymalizacyjnych J.Nawrocki, Obliczalność i złożoność .. Wprowadzenie do informatyki

J.Nawrocki, Obliczalność i złożoność .. (c) Jerzy Nawrocki Plan wykładu Wykł. 8 Problem stopu Problemy optymalizacyjne i problem plecakowy Problemy decyzyjne i problem podziału zbioru Podział zbioru z użyciem brutalnej siły Złożoność czasowa brutalnej siły NP-zupełność problemów decyzyjnych NP-trudność problemów optymalizacyjnych J.Nawrocki, Obliczalność i złożoność .. Wprowadzenie do informatyki

J.Nawrocki, Obliczalność i złożoność .. Problem stopu Dany jest podprogram X. Czy ten podprogram skończy obliczenia w skończonym czasie? J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. Problem stopu int ZatrzymaSię(podprogram X){ ??? } void Złośliwy(){ while (ZatrzymaSię(Złośliwy) == True){ ; return; J.Nawrocki, Obliczalność i złożoność ..

ZatrzymaSię(Złośliwy) Problem stopu Złośliwy Wniosek: Problem stopu jest nierozstrzygalny Nie ZatrzymaSię(Złośliwy) Tak Koniec J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. (c) Jerzy Nawrocki Plan wykładu Wykł. 8 Problem stopu Problemy optymalizacyjne i problem plecakowy Problemy decyzyjne i problem podziału zbioru Podział zbioru z użyciem brutalnej siły Złożoność czasowa brutalnej siły NP-zupełność problemów decyzyjnych NP-trudność problemów optymalizacyjnych J.Nawrocki, Obliczalność i złożoność .. Wprowadzenie do informatyki

Problemy optymalizacyjne a decyzyjne Pytanie: Jaka jest maksymalna (minimalna) wartość ... Odpowiedź: liczba Pytanie: Czy ... Odpowiedź: Tak / Nie J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. Problem plecakowy Knapsack problem 10 9 11 12 8 15 sizei vali Capacity max  vali pod warunkiem, że  sizei  Capacity J.Nawrocki, Obliczalność i złożoność ..

Zastosowania problemu plecakowego Problem wyboru kredytu: val = Zarobek na kredycie size = Kwota kredytu Capacity = Dostępny kapitał Problem hurtowni: val = Zarobek na towarze size = Cena towaru Capacity = Dostępny kapitał J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. (c) Jerzy Nawrocki Plan wykładu Wykł. 8 Problem stopu Problemy optymalizacyjne i problem plecakowy Problemy decyzyjne i problem podziału zbioru Podział zbioru z użyciem brutalnej siły Złożoność czasowa brutalnej siły NP-zupełność problemów decyzyjnych NP-trudność problemów optymalizacyjnych J.Nawrocki, Obliczalność i złożoność .. Wprowadzenie do informatyki

Problem podziału zbioru Dana jest torba A zawierająca n liczb całkowitych dodatnich. Czy można ją podzielić na takie dwie torby B, C, że suma liczba w torbie B jest równa sumie liczb w torbie C? 123 132 112 134 114 J.Nawrocki, Obliczalność i złożoność ..

Problem podziału zbioru Dana jest torba A zawierająca n liczb całkowitych dodatnich. Czy można ją podzielić na takie dwie torby B, C, że suma liczba w torbie B jest równa sumie liczb w torbie C? 112 123 134 132 123 114 J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. (c) Jerzy Nawrocki Plan wykładu Wykł. 8 Problem stopu Problemy optymalizacyjne i problem plecakowy Problemy decyzyjne i problem podziału zbioru Podział zbioru z użyciem brutalnej siły Złożoność czasowa brutalnej siły NP-zupełność problemów decyzyjnych NP-trudność problemów optymalizacyjnych J.Nawrocki, Obliczalność i złożoność .. Wprowadzenie do informatyki

Podział zbioru z użyciem brutalnej siły (1) #define set unsigned long int // Set = Zbior elementow z uniwersum. // Zbior jest reprezentowany przez liczbe. int Card; // Cardinality = Liczba elementow w zbiorze // Card > 0 #define MaxCard 31 // Card <= MaxCard set All (int c){ // c = Liczba elementow w uniwersum. // 0 < c <= MaxCard set res; res=1; // Odpowiada tylko jednemu elementowi w zbiorze. while (c > 1){ res= 2*res + 1; // Dodajemy kolejny element. c--; } return res; #define Empty 0 J.Nawrocki, Obliczalność i złożoność ..

Podział zbioru z użyciem brutalnej siły (2) int Total (set z, int v[], int c){ // z = Zbior elementow z uniwersum // v = Wartosci elementow uniwersum // c = Liczba elementow w uniwersum // Zal.: Elementy uniwersum sa ponumerowane 0..c-1. int sum, el; sum=0; for(el=0; el <= c; el++){ if (z%2 == 1){ // Jesli el nalezy do z sum+= v[el]; // do sum dodaj wartosc el. } z/= 2; // Sprawdz nastepny element uniwersum. return sum; J.Nawrocki, Obliczalność i złożoność ..

Podział zbioru z użyciem brutalnej siły (3) void PrintSet(set z, int v[], int c){ int el; for(el=0; el <= c; el++){ if (z%2 == 1){ printf("%d ", v[el]); } z/=2; printf("\n"); return; J.Nawrocki, Obliczalność i złożoność ..

Podział zbioru z użyciem brutalnej siły (4) int Val[MaxCard]; // Value = Wartosci poszczegolnych elementow #define Bool int #define False 0 #define True 1 J.Nawrocki, Obliczalność i złożoność ..

Podział zbioru z użyciem brutalnej siły (5) int Val[MaxCard]; // Value = Wartosci poszczegolnych elementow set GetASet(int T, int v[], int c){ // T = Wymagana laczna wartosc elementow // v = Wartosci poszczegolnych elementow uniwersum // c = Liczba elementow uniwersum // Czy istnieje w tym uniwersum zbior o wartosci T? set z, Opt; Opt= Empty; for(z= Empty; z <= All(c); z++){ if (Total(z, v, c) == T){ Opt= z; break; } return Opt; J.Nawrocki, Obliczalność i złożoność ..

Podział zbioru z użyciem brutalnej siły (6) void main(){ int e; // Element = Kolejny element zbioru int Half; // Polowa lacznej wartosci elementow uniwersum. set z; // Znaleziony zbior. scanf("%d", &Card); if (Card <= MaxCard){ for(e= 0; e < Card; e++){ scanf("%d", &Val[e]); } ... }else{ printf("%d elementow to za duzo!\n", Card); return; J.Nawrocki, Obliczalność i złożoność ..

Podział zbioru z użyciem brutalnej siły (7) void main(){ ... if(Total(All(Card), Val, Card)%2 == 0){ Half= Total(All(Card), Val, Card) / 2; z= GetASet(Half, Val, Card); printf("Polowa= %d\n", Half); if (z != Empty){ PrintSet(z, Val, Card); }else{ printf("Nie ma takiego podzbioru\n"); } printf("Laczny rozmiar jest nieparzysty!\n"); J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. (c) Jerzy Nawrocki Plan wykładu Wykł. 8 Problem stopu Problemy optymalizacyjne i problem plecakowy Problemy decyzyjne i problem podziału zbioru Podział zbioru z użyciem brutalnej siły Złożoność czasowa brutalnej siły NP-zupełność problemów decyzyjnych NP-trudność problemów optymalizacyjnych J.Nawrocki, Obliczalność i złożoność .. Wprowadzenie do informatyki

Złożoność czasowa brutalnej siły Card Czas [s] 20 7 21 16 22 36 23 80 24 182 25 410 Card Czas [s] 26 923 27 2 076 28 4 671 29 10 510 30 23 647 31 53 206 Czas(20+n) = 7 x 2.25n [s] Czas(k+n) = Czas(k) x Cn J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. (c) Jerzy Nawrocki Plan wykładu Wykł. 8 Problem stopu Problemy optymalizacyjne i problem plecakowy Problemy decyzyjne i problem podziału zbioru Podział zbioru z użyciem brutalnej siły Złożoność czasowa brutalnej siły NP-zupełność problemów decyzyjnych NP-trudność problemów optymalizacyjnych J.Nawrocki, Obliczalność i złożoność .. Wprowadzenie do informatyki

NP-zupełność problemów decyzyjnych Wszystkie problemy Problemy NP-zupełne J.Nawrocki, Obliczalność i złożoność ..

NP-zupełność problemów decyzyjnych Dowód NP-zupełności: I. Pokazać, że rozwiązanie jest weryfikowalne w czasie wielomianowym. II. Pokazać transformację wielomianową (czyli realizowaną w wielomianowym czasie) z jakiegoś problemu NP-zupełnego do badanego. J.Nawrocki, Obliczalność i złożoność ..

Problem plecakowy „z progiem” Knapsack problem 10 9 11 12 8 15 sizei vali Capacity  vali >= Value pod warunkiem, że  sizei  Capacity J.Nawrocki, Obliczalność i złożoność ..

Twierdzenie do udowodnienia Problem plecakowy „z progiem” jest NP-zupełny. I. Weryfikacja rozwiązania opisanego zbiorem {i1, i2, .., ik}: 1. Sprawdź, czy val(i1) + val(i2) + .. + val(ik) >= Value 2. Sprawdź, czy size(i1) + size(i2) + .. + size(ik) <= Capacity Każdy z tych kroków można wykonać w wielomianowym czasie (dodawanie k elementów wymaga jedynie k kroków). J.Nawrocki, Obliczalność i złożoność ..

Twierdzenie do udowodnienia Problem plecakowy „z progiem” jest NP-zupełny. II. Transformacja wielomianowa z jakiegoś problemu, o którym wiadomo, że jest NP-zupełny Dane problemu znanego (np. podział zbioru) Transfor-macja wielomian. Dane problemu badanego (plecakowego) Program rozwiązujący badany problem Odpowiedź (Tak / Nie) Wiadomo, że problem podziału zbioru (PZ) w wersji „z progiem” jest NP-zupełny. Parametry problemu PZ: a(1), a(2), .., a(n) – rozmiary elementów. J.Nawrocki, Obliczalność i złożoność ..

Problem podziału zbioru Dana jest torba A zawierająca n liczb całkowitych dodatnich. Czy można ją podzielić na takie dwie torby B, C, że suma liczba w torbie B jest równa sumie liczb w torbie C? a(2) a(3) a(1) a(6) a(5) a(4) J.Nawrocki, Obliczalność i złożoność ..

Twierdzenie do udowodnienia Problem plecakowy „z progiem” jest NP-zupełny. II. Transformacja wielomianowa z problemu PZ: val(i) = a(i) size(i) = a(i) Value = 0.5 a(i) Capacity = 0.5 a(i) Jak na to wpaść? Te obliczenia można wykonać w wielomianowym czasie J.Nawrocki, Obliczalność i złożoność ..

Twierdzenie do udowodnienia Problem plecakowy „z progiem” jest NP-zupełny. Transformacja ma zachowywać równoważność problemów Załóżmy, że odpowiedź dla PZ jest TAK. Wówczas i1, i2, .., ik  a(i1) + a(i2) + .. + a(ik) = 0.5 a(i) zatem po przetransformowaniu wg reguł: val(i) = a(i)  size(i) = a(i)  Value = 0.5 a(i)  Capacity = 0.5 a(i) mamy: val(i1) + val(i2) + .. + val(ik)  Value size(i1) + size(i2) + .. + size(ik)  Capacity czyli odpowiedź dla plecakowego „z progiem” będzie TAK. J.Nawrocki, Obliczalność i złożoność ..

Twierdzenie do udowodnienia Problem plecakowy „z progiem” jest NP-zupełny. Transformacja ma zachowywać równoważność problemów Załóżmy, że odpowiedź dla plecakowego jest TAK. Wówczas i1, i2, .., ik  val(i1) + val(i2) + .. + val(ik)  Value  size(i1) + size(i2) + .. + size(ik)  Capacity Ponieważ: val(i) = a(i)  size(i) = a(i)  Value = Capacity = 0.5 a(i) więc i1, i2, .., ik  a(i1) + a(i2) + .. + a(ik)  0.5 a(i)  a(i1) + a(i2) + .. + a(ik)  0.5 a(i) zatem i1, i2, .., ik  a(i1) + a(i2) + .. + a(ik) = 0.5 a(i) czyli odpowiedź dla PZ będzie TAK. J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. (c) Jerzy Nawrocki Plan wykładu Wykł. 8 Problem stopu Problemy optymalizacyjne i problem plecakowy Problemy decyzyjne i problem podziału zbioru Podział zbioru z użyciem brutalnej siły Złożoność czasowa brutalnej siły NP-zupełność problemów decyzyjnych NP-trudność problemów optymalizacyjnych J.Nawrocki, Obliczalność i złożoność .. Wprowadzenie do informatyki

Problem plecakowy w wersji optymalizacyjnej Knapsack problem 10 9 11 12 8 15 sizei vali Capacity max  vali pod warunkiem, że  sizei  Capacity J.Nawrocki, Obliczalność i złożoność ..

Problem plecakowy w wersji decyzyjnej Knapsack problem 10 9 11 12 8 15 sizei vali Capacity  vali >= Value pod warunkiem, że  sizei  Capacity J.Nawrocki, Obliczalność i złożoność ..

NP-trudność problemów optymalizacyjnych Jeśli wersja decyzyjna problemu optymalizacyjnego jest NP-zupełna, to taki problem optymalizacyjny jest NP-trudny J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. Podsumowanie Problem stopu jest nierozstrzygalny Problemy decyzyjne, optymalizacyjne i poszukiwania Podział zbioru metodą brutalnej siły Złożoność wykładnicza: a x Cn NP-zupełność i NP-trudność Wreszcie! J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. Ocena wykładu 1. Wrażenie ogólne? (1 - 6) 2. Tempo (wolniej, OK., szybciej)? 3. Czy dowiedziałeś się czegoś ważnego? 4. Co poprawić i jak? J.Nawrocki, Obliczalność i złożoność ..

J.Nawrocki, Obliczalność i złożoność .. (c) Jerzy Nawrocki Plan wykładu Wykł. 8 Problem stopu Problemy optymalizacyjne i problem plecakowy Problemy decyzyjne i problem podziału zbioru Podział zbioru z użyciem brutalnej siły Złożoność czasowa brutalnej siły NP-zupełność problemów decyzyjnych NP-trudność problemów optymalizacyjnych J.Nawrocki, Obliczalność i złożoność .. Wprowadzenie do informatyki