Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Obliczalność i złożoność obliczeniowa
(c) Jerzy Nawrocki Wykł. 8 Wprowadzenie do informatyki Wykład 11 Obliczalność i złożoność obliczeniowa Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do informatyki
2
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
3
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
4
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ść ..
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; J.Nawrocki, Obliczalność i złożoność ..
6
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ść ..
7
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
8
Problemy optymalizacyjne a decyzyjne
Pytanie: Jaka jest maksymalna (minimalna) wartość ... Odpowiedź: liczba Pytanie: Czy ... Odpowiedź: Tak / Nie J.Nawrocki, Obliczalność i złożoność ..
9
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ść ..
10
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ść ..
11
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
12
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ść ..
13
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ść ..
14
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
15
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ść ..
16
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ść ..
17
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ść ..
18
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ść ..
19
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ść ..
20
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ść ..
21
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ść ..
22
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
23
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ść ..
24
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
25
NP-zupełność problemów decyzyjnych
Wszystkie problemy Problemy NP-zupełne J.Nawrocki, Obliczalność i złożoność ..
26
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ść ..
27
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ść ..
28
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ść ..
29
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ść ..
30
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ść ..
31
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ść ..
32
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ść ..
33
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ść ..
34
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
35
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ść ..
36
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ść ..
37
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ść ..
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 Cn NP-zupełność i NP-trudność Wreszcie! J.Nawrocki, Obliczalność i złożoność ..
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? J.Nawrocki, Obliczalność i złożoność ..
40
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
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.