Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Obliczalność i złożoność obliczeniowa Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.

Podobne prezentacje


Prezentacja na temat: "Obliczalność i złożoność obliczeniowa Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie."— Zapis prezentacji:

1 Obliczalność i złożoność obliczeniowa Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11

2 J.Nawrocki, Obliczalność i złożoność.. Plan wykładu 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

3 J.Nawrocki, Obliczalność i złożoność.. Plan wykładu 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

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

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

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

7 J.Nawrocki, Obliczalność i złożoność.. Plan wykładu 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

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

9 J.Nawrocki, Obliczalność i złożoność.. Problem plecakowy max val i pod warunkiem, że size i Capacity Knapsack problem size i val i Capacity

10 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ł

11 J.Nawrocki, Obliczalność i złożoność.. Plan wykładu 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

12 J.Nawrocki, Obliczalność i złożoność.. Problem podziału zbioru

13 J.Nawrocki, Obliczalność i złożoność.. Problem podziału zbioru

14 J.Nawrocki, Obliczalność i złożoność.. Plan wykładu 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

15 J.Nawrocki, Obliczalność i złożoność.. 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

16 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; }

17 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; }

18 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

19 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; }

20 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; }

21 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"); } }else{ printf("Laczny rozmiar jest nieparzysty!\n"); }... }

22 J.Nawrocki, Obliczalność i złożoność.. Plan wykładu 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

23 J.Nawrocki, Obliczalność i złożoność.. Złożoność czasowa brutalnej siły Card Czas [s] Card Czas(20+n) = 7 x 2.25 n [s] Czas(k+n) = Czas(k) x C n

24 J.Nawrocki, Obliczalność i złożoność.. Plan wykładu 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

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

26 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.

27 J.Nawrocki, Obliczalność i złożoność.. Problem plecakowy z progiem val i >= Value pod warunkiem, że size i Capacity Knapsack problem size i val i Capacity

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

29 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 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. Dane problemu badanego (plecakowego) Transfor- macja wielomian. Dane problemu znanego (np. podział zbioru) Program rozwiązujący badany problem

30 J.Nawrocki, Obliczalność i złożoność.. Problem podziału zbioru a(2) a(3) a(1) a(6) a(5) a(4)

31 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) Te obliczenia można wykonać w wielomianowym czasie Jak na to wpaść?

32 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 PZ Załóżmy, że odpowiedź dla PZ jest TAK. Wówczas i1, i2,.., i k a(i1) + a(i2) a(i k ) = 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(i k ) Value size(i1) + size(i2) size(i k ) Capacity czyli odpowiedź dla plecakowego z progiem będzie TAK.

33 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 plecakowego Załóżmy, że odpowiedź dla plecakowego jest TAK. Wówczas i1, i2,.., i k val(i1) + val(i2) val(i k ) Value size(i1) + size(i2) size(i k ) Capacity Ponieważ: val(i) = a(i) size(i) = a(i) Value = Capacity = 0.5 a(i) więc i1, i2,.., i k a(i1) + a(i2) a(i k ) 0.5 a(i) a(i1) + a(i2) a(i k ) 0.5 a(i) zatem i1, i2,.., i k a(i1) + a(i2) a(i k ) = 0.5 a(i) czyli odpowiedź dla PZ będzie TAK.

34 J.Nawrocki, Obliczalność i złożoność.. Plan wykładu 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

35 J.Nawrocki, Obliczalność i złożoność.. Problem plecakowy w wersji optymalizacyjnej max val i pod warunkiem, że size i Capacity Knapsack problem size i val i Capacity

36 J.Nawrocki, Obliczalność i złożoność.. Problem plecakowy w wersji decyzyjnej val i >= Value pod warunkiem, że size i Capacity Knapsack problem size i val i Capacity

37 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

38 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 C n NP-zupełność i NP-trudność Wreszcie!

39 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?

40 J.Nawrocki, Obliczalność i złożoność.. Plan wykładu 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


Pobierz ppt "Obliczalność i złożoność obliczeniowa Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie."

Podobne prezentacje


Reklamy Google