• Nie Znaleziono Wyników

Struktury danych i złożoność obliczeniowa

N/A
N/A
Protected

Academic year: 2021

Share "Struktury danych i złożoność obliczeniowa"

Copied!
77
0
0

Pełen tekst

(1)

Struktury danych

i złożoność obliczeniowa

Prof. dr hab. inż. Jan Magott

(2)

Formy zajęć:

• Wykład 1 godz.,

• Ćwiczenia 2 godz.,

• Projekt 1 godz. . Strona kursu:

http://www.zio.iiar.pwr.wroc.pl/sdizo.html

(3)

Struktury danych wchodzące w zakres kursu:

• Tablice,

• Listy,

• Kolejki,

• Stosy,

• Kopce,

• Grafy,

• Drzewa binarne,

• Tablice haszujące.

(4)

Plan 1. wykładu:

1. Podstawowe zasady analizy algorytmów:

poprawność, skończoność,

2. Złożoność obliczeniowa (klasy złożoności czasowej i pamięciowej),

3. Koszt zamortyzowany,

4. Polskie Ramy Kwalifikacyjne przedmiotu,

Literatura.

(5)

Podstawowe zasady analizy algorytmów:

poprawność, skończoność

Algorytm to procedura do rozwiązywania problemu.

Algorytm może być wyrażony w:

• Języku naturalnym,

• Języku formalnym,

• Języku zawierającym konstrukcje języka naturalnego i formalnego,

• Schematem blokowym,

• Diagramem aktywności (czynności) języka UML,

• Pseudokodzie,

• Języku programowania.

(6)

Podstawowe zasady analizy algorytmów:

poprawność, skończoność

Algorytm rozwiązywania danego problemu oblicze-

niowego jest poprawny, jeśli dla każdej instancji

(egzemplarza) tego problemu zatrzymuje się i daje

dobry wynik.

(7)

Podstawowe zasady analizy algorytmów:

poprawność, skończoność

(8)

Podstawowe zasady analizy algorytmów:

poprawność, skończoność

(9)

Podstawowe zasady analizy algorytmów:

poprawność, skończoność

Poprawność algorytmów

Niezmiennik (ang. invariant) pętli jest warunkiem, który:

Inicjowanie: Jest prawdziwy przed pierwszą iteracją pętli, Niezmienniczość: Jeśli jest prawdziwy przed pewną

iteracją pętli, to jest prawdziwy przed następną iteracją, Kończenie: Po zakończeniu pętli, z niezmiennika można udowodnić poprawność algorytmu.

Własność stopu: dla poprawnych danych wejściowych

algorytm zatrzymuje się w skończonym czasie.

(10)

Podstawowe zasady analizy algorytmów:

poprawność, skończoność

(11)

Podstawowe zasady analizy algorytmów:

poprawność, skończoność

Algorytm sortowania bąbelkowego niemalejąco w kodzie C

void bubblesort(int table[], int size) {

int i, j, temp;

for (i = 0; i<size; i++) {

for (j=0; j<size-1-i; j++) {

if (table[j] > table[j+1]) {

temp = table[j+1];

table[j+1] = table[j];

table[j] = temp;

} }

} }

(12)

Podstawowe zasady analizy algorytmów:

poprawność, skończoność

(13)

Podstawowe zasady analizy algorytmów:

poprawność, skończoność

1 12 3 9 8 2 … 11 9 15 17 23 29

nieposortowane posortowane

(14)

Złożoność obliczeniowa czasowa

Problemy rozstrzygalne i nierozstrzygalne

Problem rozstrzygalny (rozwiązywalny) to problem, dla którego istnieje algorytm znajdujący rozwiązanie w

skończonej liczbie kroków.

Problem nierozstrzygalny (nierozwiązywalny) to problem, dla którego udowodniono, że nie istnieje algorytm

znajdujący rozwiązanie w skończonej liczbie kroków.

Złożoność obliczeniową badamy dla problemów

rozstrzygalnych.

(15)

Złożoność obliczeniowa czasowa

(16)

Złożoność obliczeniowa czasowa

Przykłady problemów o więcej niż jednym rozmiarze danych:

Problem mnożenia macierzy nie kwadratowych – 3 rozmiary,

Problemy grafowe – rozmiarami mogą być: liczba

wierzchołków, liczba łuków.

(17)

Złożoność obliczeniowa czasowa

Wg teorii złożoności obliczeniowej efektywnym jest algorytm o złożoności czasowej ograniczonej od góry przez wielomian od rozmiarów problemu.

Algorytmy o wykładniczej złożoności obliczeniowej

uważane są za nieefektywne.

(18)

Złożoność obliczeniowa czasowa

(19)

Złożoność obliczeniowa czasowa

(20)

Dwie galaktyki z efektami

soczewkowania grawitacyjnego

[Zdjęcie wykonane teleskopem Hubble’a]

(21)

Złożoność obliczeniowa czasowa

(22)

Złożoność obliczeniowa czasowa

(23)

Złożoność obliczeniowa czasowa

(24)

Złożoność obliczeniowa czasowa

(25)

Złożoność obliczeniowa czasowa

(26)

Złożoność obliczeniowa czasowa

(27)

Złożoność obliczeniowa czasowa

(28)

Złożoność obliczeniowa czasowa

(29)

Złożoność obliczeniowa czasowa

Algorytm sortowania bąbelkowego w kodzie C

void bubblesort(int table[], int size) {

int i, j, temp;

for (i = 0; i<size; i++) {

for (j=0; j<size-1-i; j++) {

if (table[j] > table[j+1]) {

temp = table[j+1];

table[j+1] = table[j];

table[j] = temp;

} }

} }

(30)

Złożoność obliczeniowa czasowa

(31)

Złożoność obliczeniowa czasowa

(32)

Złożoność obliczeniowa czasowa

Problem:

Czy istnieje algorytm wielomianowy dla

problemu podziału zbioru?

(33)

Złożoność obliczeniowa czasowa i pamię-

ciowa

(34)

Złożoność obliczeniowa czasowa

Problem:

Czy istnieje algorytm wielomianowy dla problemu podziału zbioru?

Udowodniono:

Problem podziału zbioru jest tzw. Problemem NP-

zupełnym, tzn. z jego rozwiązania można wyznaczyć rozwiązanie każdego problemu klasy NP.

Dla problemów NP-zupełnych wydaje się prawie

pewne, że algorytmu wielomianowego nie uda się

zbudować.

(35)

Złożoność obliczeniowa czasowa

(36)

Złożoność obliczeniowa czasowa

Czy rozwiązanie jednego z dwu problemów:

Decyzyjnego problemu szeregowania zadań niezależnych na dwu maszynach

i

Problemu podziału zbioru

można wyznaczyć na postawie rozwiązania drugiego?

Powyższe pytanie dotyczy redukcji (transformacji) jednego problemu do drugiego.

(37)

Złożoność obliczeniowa czasowa

(38)

Złożoność obliczeniowa czasowa

Czy rozwiązanie jednego z dwu problemów:

Decyzyjnego problemu szeregowania zadań niezależnych na dwu maszynach

i

Problemu podziału zbioru

można wyznaczyć na postawie rozwiązania drugiego?

Powyższe pytanie dotyczy redukcji (transformacji) jednego problemu do drugiego.

Jakie ograniczenie narzucilibyśmy na złożoność obliczeniową transformacji?

(39)

Złożoność obliczeniowa czasowa

Problem charakteryzowany jest poprzez

Dane (dane wejściowe) i Zadanie do wykonania (np. Prob. opt.) lub

Dane (dane wejściowe) i Pytanie (Prob. dec.).

(40)

Złożoność obliczeniowa czasowa

(41)

Złożoność obliczeniowa czasowa i pamię- ciowa

Złożoność obliczeniowa algorytmu a złożoność problemu

Algorytm rozwiązujący problem może mieć czasową lub pamięciową złożo- ność obliczeniową logarytmiczną, liniową, wielomianową, wykładniczą lub wiele innych.

Złożoność obliczeniowa problemu określa wymagania czasowe lub pamięciowe na algorytm rozwiązujący ten problem.

Jeśli problem jest NP-zupełny, to prawie na pewno nie zostanie znaleziony wielomianowy algorytm rozwiązujący.

Lepiej nie mówić: Dla problemu NP-zupełnego najprawdopodobniej nie

zostanie znaleziony wielomianowy algorytm rozwiązujący.

(42)

Złożoność obliczeniowa czasowa i pamię- ciowa

P – klasa problemów, dla których rozwiązania wymagany jest czas ograniczony od góry przez wielomian od

rozmiarów problemu,

PSPACE – klasa problemów, dla których rozwiązania

wymagana jest pamięć ograniczona przez wielomian od rozmiarów problemu,

EXPTIME – klasa problemów, dla których rozwiązania

wymagany jest czas ograniczony przez funkcję wykładniczą od rozmiarów problemu,

EXPSPACE – klasa problemów, dla których rozwiązania wymagana jest pamięć ograniczona przez funkcję

wykładniczą od rozmiarów problemu,

(43)

Złożoność obliczeniowa czasowa i pamię-

ciowa

(44)

Złożoność obliczeniowa czasowa i pamię-

ciowa

(45)

Złożoność obliczeniowa czasowa i pamię- ciowa

P ⊊ EXPTIME, PSPACE ⊊ EXPSPACE

[Źródło Wikipedia]

(46)

Koszt zamortyzowany

(47)

Koszt zamortyzowany

• Assumption

Execution times of operations, actions or statements are given by a real number.

Linear program Pr where A, B, C, D are operations, actions or statements

- execution time of A

• Execution time of the program Pr

[J. Magott, Information Systems Analysis]

Start A B C D End

R

) A

(

 (Pr)   ( ) A   ( ) B   ( ) C   ( ) D

(Pr)( )A ( )B ( )C ( )D

(48)

Koszt zamortyzowany

A program with decision

– execution time of decision D

P – probability of an event that after the decision D, the B action is executed If then execution time of the program depends on the decision.

Start A End

B

C D

P

1-P

 ( ) D

( )B

( )C

(49)

Koszt zamortyzowany

Execution time estimation methods

1. The worst case method

- execution time estimation of the worst case

Application: real-time systems.

w(Pr)  ( )A  ( )D  max{ ( ), ( )} BC

Start A End

B

C D

P

1-P

w(Pr)

(50)

Koszt zamortyzowany

2. The most probable path method

If P>1-P then

If P<1-P then

Start A End

B

C D

P

1-P

g

(Pr)   ( ) A   ( ) D   ( ) B

g

(Pr)   ( ) A   ( ) D   ( ) C

(51)

Koszt zamortyzowany

Start A End

B

C D

P

1-P

a    

A D B C

(Pr)  ( ) ( ) ( ) ( ) 2

m(Pr) 

( )A

( )D  P

( )B  (1 P)

( )C

(52)

Koszt zamortyzowany

Czasowa złożoność obliczeniowa średniego przypadku

Struktury sterowania:

• Kompozycja sekwencyjna,

• Alternatywa,

• Instrukcje pętli: for, while, do while,

• Instrukcja przełączania switch.

m(Pr) 

( )A

( )D  P

( )B  (1 P)

( )C

Start A End

B

C D

P

1-P

(53)

Koszt zamortyzowany

Czasowa złożoność obliczeniowa średniego przypadku

Metody wyznaczania:

• Analityczna – na podstawie prawdopodobieństw

rozgałęzień i rozkładów czasów wykonania instrukcji,

• Symulacyjna – metoda Monte Carlo na podstawie analogicznych danych.

m(Pr) 

( )A

( )D  P

( )B  (1 P)

( )C

Start A End

B

C D

P

1-P

(54)

Koszt zamortyzowany

(Notacja asymptotyczna)

(55)

Koszt zamortyzowany

(Notacja asymptotyczna)

(56)

Koszt zamortyzowany

(Notacja asymptotyczna)

(57)

Koszt zamortyzowany

(Notacja asymptotyczna)

(58)

Koszt zamortyzowany

(Notacja asymptotyczna)

(59)

Koszt zamortyzowany

Operacja 1 Operacja 2

Operacja n

(60)

Koszt zamortyzowany

Cel:

Znalezienie jak najmniejszego pesymistycznego kosztu wykonania algorytmu.

Sposób osiągnięcia:

Wyznaczenie kosztu zamortyzowanego algorytmu –

co nie wymaga wyznaczania wielkości probabilistycznych.

(61)

Koszt zamortyzowany

Metody analizy kosztu zamortyzowanego:

• Kosztu sumarycznego,

• Księgowania,

• Potencjału.

(62)

Koszt zamortyzowany

(Metoda kosztu sumarycznego)

(63)

Koszt zamortyzowany

(Metoda kosztu sumarycznego)

(64)

Koszt zamortyzowany

(Metoda kosztu sumarycznego)

(65)

Koszt zamortyzowany

(Metoda kosztu sumarycznego)

22 15 19 20 7 11

3 7

11 3

MULTIPOP(S,4) MULTIPOP(S,8)

Pusty stos S

(66)

Koszt zamortyzowany

(Metoda kosztu sumarycznego)

(67)

Koszt zamortyzowany

(Metoda księgowania)

(68)

Koszt zamortyzowany

(Metoda księgowania)

(69)

Koszt zamortyzowany

(Metoda księgowania)

(70)

Koszt zamortyzowany

(Metoda księgowania)

(71)

Trzy następujące slajdy pochodzą

z Polskich Ram Kwalifikacyjnych kursu

Struktury danych i złożoność obliczeniowa

(72)

Forma zajęć - wykład Wy1

Podstawowe zasady analizy algorytmów: poprawność, złożoność obliczeniowa (klasy złożoności czasowej i pamięciowej), koszt zamortyzowany.

Polskie Ramy Kwalifikacyjne przedmiotu. Literatura.

2

Wy2 Podstawowe techniki: metoda dziel i zwyciężaj, metoda

zachłanna, transformacyjna konstrukcja algorytmu. 1 Wy3 Podstawowe struktury: stosy, kolejki, listy, kopce. 1 Wy4 Kodowanie dziesiętne, dwójkowe i jedynkowe danych

wejściowych problemu. „Rozsądna” reguła kodowania. 1

Wy5

Problemy „ łatwe” i „trudne”. Problemy optymalizacyjne i decyzyjne.

Funkcja czasowej złożoności obliczeniowej algorytmu.

Deterministyczna jednotaśmowa maszyna Turinga.

Przykładowy program dla deterministycznej maszyny Turinga.

2

Wy6

Program dla k-taśmowej deterministycznej maszyny Turinga.

Dodawanie liczb dwójkowych na deterministycznych

maszynach Turinga. Model obliczeń RAM. Algorytmy wielomia- nowy i ponadwielomianowy.

2

Wy7

Niedeterministyczna maszyna Turinga. Twierdzenie o relacji między Niedeterministyczną a Deterministyczną Maszyną Turinga. Klasy P i NP problemów decyzyjnych. Transformacja wielomianowa. Problem NP-zupełny. Dowodzenie NP-zupeł- ności problemów decyzyjnych.

2

(73)

Polskie Ramy Kwalifikacyjne przedmiotu. Literatura.

Wy2 Podstawowe techniki: metoda dziel i zwyciężaj, metoda

zachłanna, transformacyjna konstrukcja algorytmu. 1 Wy3 Podstawowe struktury: stosy, kolejki, listy, kopce. 1 Wy4 Kodowanie dziesiętne, dwójkowe i jedynkowe danych

wejściowych problemu. „Rozsądna” reguła kodowania. 1

Wy5

Problemy „ łatwe” i „trudne”. Problemy optymalizacyjne i decyzyjne.

Funkcja czasowej złożoności obliczeniowej algorytmu.

Deterministyczna jednotaśmowa maszyna Turinga.

Przykładowy program dla deterministycznej maszyny Turinga.

2

Wy6

Program dla k-taśmowej deterministycznej maszyny Turinga.

Dodawanie liczb dwójkowych na deterministycznych

maszynach Turinga. Model obliczeń RAM. Algorytmy wielomia- nowy i ponadwielomianowy.

2

Wy7

Niedeterministyczna maszyna Turinga. Twierdzenie o relacji między Niedeterministyczną a Deterministyczną Maszyną Turinga. Klasy P i NP problemów decyzyjnych. Transformacja wielomianowa. Problem NP-zupełny. Dowodzenie NP-zupeł- ności problemów decyzyjnych.

2

Wy8 Dowody NP-zupełności wybranych problemów 2

Wy9 Kolokwium 2

Suma godzin 15

(74)

Forma zajęć - ćwiczenia

Liczba godzin Ćw1 Zajęcia wprowadzające. Omówienie programu, podanie

wymagań. 1

Ćw2 Podstawowe zasady analizy algorytmów 2

Ćw3 Podstawowe struktury danych: kolejki, listy, stosy, kopce 3 Ćw4 Struktury drzewiaste: BST, AVL, B-R, B-drzewo 5 Ćw5 Algorytmy sortowania np. Insertion-, Quick-, Merge-,

Heap-, Radix- 3

Ćw6 Tablice haszujące 2

Ćw7 Algorytmy selekcji: Hoare’a, magicznych piątek 1 Ćw8

Algorytmy grafowe: reprezentacja grafów, metody przeszukiwania, minimalne drzewa rozpinające, problemy ścieżkowe

6 Ćw9 Wybrane problemy złożoności obliczeniowej: model

maszyny Turinga (DTM, NDTM), redukcja wielomianowa 5

Ćw10 Kolokwium 2

Suma godzin 30

(75)

Forma zajęć – projekt

Liczba godzin Pr1 Sprawy organizacyjne, omówienie zadań projektowych,

wymagań oraz warunków zaliczenia. 2

Pr2 Badanie efektywności operacji na danych w podstawo-

wych strukturach danych. 5

Pr3

Badanie efektywności wybranych algorytmów grafowych np. w zależności od rozmiaru, struktury czy sposobu reprezentacji grafu.

8

Suma godzin 15

(76)

Oceny (F – formująca (w trakcie semestru), P – podsumowująca (na koniec semestru)

Sposób oceny osiągnięcia

efektu kształcenia

F1

Odpowiedzi ustne, Wyniki kolokwiów cząstkowych.

F2 Wyniki realizacji zadań

projektowych

F3 Kolokwium pisemne

(77)

Literatura

[1] T. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein,

„Wprowadzenie do algorytmów”, WNT 2007.

[2] J. Błażewicz, „Problemy optymalizacji kombinatorycznej”, PWN, Warszawa 1996.

[3] M. Garey, D. Johnson, Computers and Intractability: A Guide to the Theory of NP-

Completeness, W. H. Freeman and Co., New York,

1979.

Cytaty

Powiązane dokumenty

• Dla funkcji wymagających dostępu do dużej liczby danych zmienne global- ne mogą okazać się wygodniejsze i bardziej skuteczne.6. Zmienne globalne a lokalne,

są równoważne w tym sensie, że jeśli dany problem jest rozwiązywany przez jeden model w czasie ograniczonym od góry przez wielomian zależny od rozmiarów problemu, to przy

są równoważne w tym sensie, że jeśli dany problem jest rozwiązywany przez jeden model w czasie ograniczonym od góry przez wielomian zależny od rozmiarów problemu, to przy

Dodawanie dwu liczb dwójkowych tej samej długości, znajdujących się na Taśmach 1 i 2, których najstarsze pozycje znajdują się w komórkach o numerze 1.. Wynik tworzony jest

Klasa

Problem

Na pierwszej stronie sprawozdania MUSZĄ być podane następujące informacje: imię, nazwisko i numer indeksu autora (lub autorów) oraz przynależność do

 Złożoność obliczeniowa algorytmów dokładnych i przybliżonych, ze szczególnym uwzględnieniem złożoności wielomianowej i wykład- niczej. 