Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność...

112
Podstawy Programowania Wyklad X Zlożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80–20, ocena efektywności algo- rytmów, ocena zlożoności obliczeniowej, rzeczywista a teoretycz- na zlożoność obliczeniowa, porównanie metod sortowania, efek- tywność w praktyce, sfera problemów algorytmicznych, problemy nieobliczalne. Copyright c 2007–2014 Robert Muszyński Niniejszy dokument zawiera materialy do wykladu na temat podstaw programowania w językach wysokiego poziomu. Jest on udostępniony pod warunkiem wykorzystania wylącznie do wlasnych, prywatnych potrzeb i może być kopiowany wylącznie w calości, razem ze stroną tytulową. – Sklad Foil T E X

Transcript of Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność...

Page 1: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Podstawy ProgramowaniaWykład X

Złożoność obliczeniowa

Robert MuszyńskiKatedra Cybernetyki i Robotyki, PWr

Zagadnienia: efektywność programów/algorytmów, sposoby zwiększaniaefektywności algorytmów, zasada 80–20, ocena efektywności algo-rytmów, ocena złożoności obliczeniowej, rzeczywista a teoretycz-na złożoność obliczeniowa, porównanie metod sortowania, efek-tywność w praktyce, sfera problemów algorytmicznych, problemynieobliczalne.

Copyright c© 2007–2014 Robert Muszyński

Niniejszy dokument zawiera materiały do wykładu na temat podstaw programowania w językach wysokiego poziomu. Jest onudostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może być kopiowany wyłącznie w całości,razem ze stroną tytułową.

– Skład FoilTEX –

Page 2: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 1

Sprawność programów (algorytmów)

Jakość programów (algorytmów):

• poprawność/niezawodność

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 3: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 1

Sprawność programów (algorytmów)

Jakość programów (algorytmów):

• poprawność/niezawodność• przenośność

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 4: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 1

Sprawność programów (algorytmów)

Jakość programów (algorytmów):

• poprawność/niezawodność• przenośność• łatwość utrzymania

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 5: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 1

Sprawność programów (algorytmów)

Jakość programów (algorytmów):

• poprawność/niezawodność• przenośność• łatwość utrzymania• efektywność

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 6: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 1

Sprawność programów (algorytmów)

Jakość programów (algorytmów):

• poprawność/niezawodność• przenośność• łatwość utrzymania• efektywność

kompromis? szybkość działania? wielkość

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 7: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 1

Sprawność programów (algorytmów)

Jakość programów (algorytmów):

• poprawność/niezawodność• przenośność• łatwość utrzymania• efektywność

kompromis? szybkość działania? wielkość∗ objętość kodu∗ wielkość struktur danych

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 8: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 2

Sposoby zwiększania efektywności programów

• na etapie planowania programu (np. dobór algorytmu)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 9: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 2

Sposoby zwiększania efektywności programów

• na etapie planowania programu (np. dobór algorytmu)

• na etapie uruchamiania programu (np. wpisanie procedury w miejscewywołania)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 10: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 2

Sposoby zwiększania efektywności programów

• na etapie planowania programu (np. dobór algorytmu)

• na etapie uruchamiania programu (np. wpisanie procedury w miejscewywołania)

Zasada 80–20Program spędza 80% czasu w 20% swojego kodu.

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 11: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 3

Poprawa efektywności — przykład

STOP

Lista[i] = Lista[i]*100/max

i = 1

Element i

ostatni?Nie

Tak

i = i + 1

START

Normalizacja listy ocen

Wstaw do max element

maksymalny listy

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 12: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 3

Poprawa efektywności — przykład

STOP

Lista[i] = Lista[i]*100/max

i = 1

Element i

ostatni?Nie

Tak

i = i + 1

START

Normalizacja listy ocen

Wstaw do max element

maksymalny listy

START

Normalizacja listy ocen

STOP

Lista[i] = Lista[i]*czynnik

i = 1

czynnik = 100/max

Element i

ostatni?Nie

Wstaw do max element

maksymalny listy

Tak

i = i + 1

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 13: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 4

Poprawa efektywności — inny przykład

STARTPoszukiwanie wzorca wœród

elementów tablicy jednowymiarowej

od elementu min do max

STOP

Tab[min] = wzorzec

lub

min = max?

Nie min = min + 1

Tak

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 14: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 4

Poprawa efektywności — inny przykład

STARTPoszukiwanie wzorca wœród

elementów tablicy jednowymiarowej

od elementu min do max

STOP

Tab[min] = wzorzec

lub

min = max?

Nie min = min + 1

Tak

STARTPoszukiwanie ze stra¿nikiem wzorca

wœród elementów tablicy

jednowymiarowej

STOP

Tab[min] = wzorzec ? Nie min = min + 1

Tak

Tab[max+1] = wzorzec

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 15: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 5

Ocena efektywności programów (algorytmów)

• Funkcja wielkości zbioru danych wejściowych

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 16: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 5

Ocena efektywności programów (algorytmów)

• Funkcja wielkości zbioru danych wejściowych• Wyrażona liczbą elementarnych operacji/jednostek pamięci —

złożoność obliczeniowa (czasowa)/pamięciowa

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 17: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 5

Ocena efektywności programów (algorytmów)

• Funkcja wielkości zbioru danych wejściowych• Wyrażona liczbą elementarnych operacji/jednostek pamięci —

złożoność obliczeniowa (czasowa)/pamięciowa• Przypadki: najgorszy, najlepszy, średni

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 18: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 5

Ocena efektywności programów (algorytmów)

• Funkcja wielkości zbioru danych wejściowych• Wyrażona liczbą elementarnych operacji/jednostek pamięci —

złożoność obliczeniowa (czasowa)/pamięciowa• Przypadki: najgorszy, najlepszy, średni niezależna• Rodzaj komputera

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 19: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 5

Ocena efektywności programów (algorytmów)

• Funkcja wielkości zbioru danych wejściowych• Wyrażona liczbą elementarnych operacji/jednostek pamięci —

złożoność obliczeniowa (czasowa)/pamięciowa• Przypadki: najgorszy, najlepszy, średni niezależna• Rodzaj komputera• Język programowania

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 20: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 5

Ocena efektywności programów (algorytmów)

• Funkcja wielkości zbioru danych wejściowych• Wyrażona liczbą elementarnych operacji/jednostek pamięci —

złożoność obliczeniowa (czasowa)/pamięciowa• Przypadki: najgorszy, najlepszy, średni niezależna• Rodzaj komputera• Język programowania• Rodzaj kompilatora

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 21: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 5

Ocena efektywności programów (algorytmów)

• Funkcja wielkości zbioru danych wejściowych• Wyrażona liczbą elementarnych operacji/jednostek pamięci —

złożoność obliczeniowa (czasowa)/pamięciowa• Przypadki: najgorszy, najlepszy, średni niezależna• Rodzaj komputera• Język programowania• Rodzaj kompilatora• Zbiór danych wejściowych

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 22: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 6

Rodzaj komputera

Przykładowe czasy sortowania

8170 liczbTyp komputera Czas

komputer osobisty 51.915s

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 23: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 6

Rodzaj komputera

Przykładowe czasy sortowania

8170 liczbTyp komputera Czas

komputer osobisty 51.915sstacja robocza 11.508s

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 24: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 6

Rodzaj komputera

Przykładowe czasy sortowania

8170 liczbTyp komputera Czas

komputer osobisty 51.915sstacja robocza 11.508sminikomputer 2.382smainframe 0.431ssuperkomputer 0.087s

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 25: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 6

Rodzaj komputera

Przykładowe czasy sortowania

8170 liczb n liczbTyp komputera Czas

komputer osobisty 51.915sstacja robocza 11.508sminikomputer 2.382smainframe 0.431ssuperkomputer 0.087s

n k. osobisty s. robocza125 12.5ms 2.8ms250 49.3ms 11.0ms500 195.8ms 43.4ms

1000 780.3ms 172.9ms2000 3114.9ms 690.5ms

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 26: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 6

Rodzaj komputera

Przykładowe czasy sortowania

8170 liczb n liczbTyp komputera Czas

komputer osobisty 51.915sstacja robocza 11.508sminikomputer 2.382smainframe 0.431ssuperkomputer 0.087s

n k. osobisty s. robocza125 12.5ms 2.8ms250 49.3ms 11.0ms500 195.8ms 43.4ms

1000 780.3ms 172.9ms2000 3114.9ms 690.5ms

↑ ↑parabole

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 27: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 7

Zbiór danych wejściowych

Działanie algorytmów przeszukiwania dla n elementówliniowo binarnie

n= 7 13 14 7 13 14

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 28: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 7

Zbiór danych wejściowych

Działanie algorytmów przeszukiwania dla n elementówelement liniowo binarnieszukany n= 7 13 14 7 13 14

1-szy 1 1 1 3 3 3

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 29: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 7

Zbiór danych wejściowych

Działanie algorytmów przeszukiwania dla n elementówelement liniowo binarnieszukany n= 7 13 14 7 13 14

1-szy 1 1 1 3 3 3n-ty 7 13 14 3 4 4

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 30: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 7

Zbiór danych wejściowych

Działanie algorytmów przeszukiwania dla n elementówelement liniowo binarnieszukany n= 7 13 14 7 13 14

1-szy 1 1 1 3 3 3n-ty 7 13 14 3 4 4

[n/2]+1 4 7 8 1 1 4[n/2] 3 6 7 3 4 1

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 31: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 7

Zbiór danych wejściowych

Działanie algorytmów przeszukiwania dla n elementówelement liniowo binarnieszukany n= 7 13 14 7 13 14

1-szy 1 1 1 3 3 3n-ty 7 13 14 3 4 4

[n/2]+1 4 7 8 1 1 4[n/2] 3 6 7 3 4 1

Przypadki: najgorszy, najlepszy, średni

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 32: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 8

Zbiór danych wejściowych

Jak poprzednio, inne kryterium układu tabeliprzypadek liniowo binarnie

n= 7 13 n 7 13 nnajgorszy 7 13 n 3 4 [log2 n+1]

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 33: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 8

Zbiór danych wejściowych

Jak poprzednio, inne kryterium układu tabeliprzypadek liniowo binarnie

n= 7 13 n 7 13 nnajgorszy 7 13 n 3 4 [log2 n+1]najlepszy 1 1 1 1 1 1

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 34: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 8

Zbiór danych wejściowych

Jak poprzednio, inne kryterium układu tabeliprzypadek liniowo binarnie

n= 7 13 n 7 13 nnajgorszy 7 13 n 3 4 [log2 n+1]najlepszy 1 1 1 1 1 1

średni 3.5 6.5 n/2 2.8 3.7 log2 n

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 35: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 8

Zbiór danych wejściowych

Jak poprzednio, inne kryterium układu tabeliprzypadek liniowo binarnie

n= 7 13 n 7 13 nnajgorszy 7 13 n 3 4 [log2 n+1]najlepszy 1 1 1 1 1 1

średni 3.5 6.5 n/2 2.8 3.7 log2 n

Dla n=109 wartość [log2 n+1] wynosi 30.

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 36: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 9

Porównanie metod sortowaniaLiczba porównań (Po) i przesunięć (Pr) obiektów w metodach sortowania

algorytm\przypadek najgorszy najlepszy średniproste wstawianie Po= (n2−n)/2−1 n−1 (n2+n−2)/4

Pr= (n2+3n−4)/2 2(n−1) (n2−9n−10)/4proste wybieranie Po= (n2−n)/2 (n2−n)/2 (n2−n)/2

Pr= n2/4+3(n−1) 3(n−1) n(lnn+0.57)sortowanie bąbelkowe Po= (n2−n)/2 (n2−n)/2 (n2−n)/2

Pr= 3(n2−n)/2 0 3(n2−n)/4

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 37: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 9

Porównanie metod sortowaniaLiczba porównań (Po) i przesunięć (Pr) obiektów w metodach sortowania

algorytm\przypadek najgorszy najlepszy średniproste wstawianie Po= (n2−n)/2−1 n−1 (n2+n−2)/4

Pr= (n2+3n−4)/2 2(n−1) (n2−9n−10)/4proste wybieranie Po= (n2−n)/2 (n2−n)/2 (n2−n)/2

Pr= n2/4+3(n−1) 3(n−1) n(lnn+0.57)sortowanie bąbelkowe Po= (n2−n)/2 (n2−n)/2 (n2−n)/2

Pr= 3(n2−n)/2 0 3(n2−n)/4

Wady przedstawionego sposobu porównywania algorytmów:

• niedokładne (pominięte np. sterowanie wykonywaniem pętli)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 38: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 9

Porównanie metod sortowaniaLiczba porównań (Po) i przesunięć (Pr) obiektów w metodach sortowania

algorytm\przypadek najgorszy najlepszy średniproste wstawianie Po= (n2−n)/2−1 n−1 (n2+n−2)/4

Pr= (n2+3n−4)/2 2(n−1) (n2−9n−10)/4proste wybieranie Po= (n2−n)/2 (n2−n)/2 (n2−n)/2

Pr= n2/4+3(n−1) 3(n−1) n(lnn+0.57)sortowanie bąbelkowe Po= (n2−n)/2 (n2−n)/2 (n2−n)/2

Pr= 3(n2−n)/2 0 3(n2−n)/4

Wady przedstawionego sposobu porównywania algorytmów:

• niedokładne (pominięte np. sterowanie wykonywaniem pętli)• niemożliwe do przeprowadzenia dla wielu z algorytmów

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 39: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 10

Złożoność obliczeniowa i jej ocena

• proporcjonalna do liczby operacji elementarnych

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 40: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 10

Złożoność obliczeniowa i jej ocena

• proporcjonalna do liczby operacji elementarnych• istotny składnik najszybciej rosnący ze wzrostem rozmiaru pro-

blemu.

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 41: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 10

Złożoność obliczeniowa i jej ocena

• proporcjonalna do liczby operacji elementarnych• istotny składnik najszybciej rosnący ze wzrostem rozmiaru pro-

blemu. Stąd klasy złożoności obliczeniowej algorytmów:? logarytmiczne — O(log2 n)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 42: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 10

Złożoność obliczeniowa i jej ocena

• proporcjonalna do liczby operacji elementarnych• istotny składnik najszybciej rosnący ze wzrostem rozmiaru pro-

blemu. Stąd klasy złożoności obliczeniowej algorytmów:? logarytmiczne — O(log2 n)? liniowe — O(n)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 43: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 10

Złożoność obliczeniowa i jej ocena

• proporcjonalna do liczby operacji elementarnych• istotny składnik najszybciej rosnący ze wzrostem rozmiaru pro-

blemu. Stąd klasy złożoności obliczeniowej algorytmów:? logarytmiczne — O(log2 n)? liniowe — O(n)? wielomianowe — O(n2), O(n3), O(n4). . .

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 44: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 10

Złożoność obliczeniowa i jej ocena

• proporcjonalna do liczby operacji elementarnych• istotny składnik najszybciej rosnący ze wzrostem rozmiaru pro-

blemu. Stąd klasy złożoności obliczeniowej algorytmów:? logarytmiczne — O(log2 n)? liniowe — O(n)? wielomianowe — O(n2), O(n3), O(n4). . .? wykładnicze — O(2n),

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 45: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 10

Złożoność obliczeniowa i jej ocena

• proporcjonalna do liczby operacji elementarnych• istotny składnik najszybciej rosnący ze wzrostem rozmiaru pro-

blemu. Stąd klasy złożoności obliczeniowej algorytmów:? logarytmiczne — O(log2 n)? liniowe — O(n)? wielomianowe — O(n2), O(n3), O(n4). . .? wykładnicze — O(2n),? inne — O(nlog2 n), O(n1.2), O(n!), O(nn), O

(nnn)

. . .

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 46: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 11

5 10 15 20

2000

4000

6000

8000

10000nn 2n

n3

n2

nPrzykładowe przebiegi funkcji.

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 47: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 48: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

[log2 n] 3 5 6 8 9

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 49: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

[log2 n] 3 5 6 8 9n2 100 2 500 10 000 90 000 1 000 000

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 50: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

[log2 n] 3 5 6 8 9n2 100 2 500 10 000 90 000 1 000 000n3 1 000 125 000 (7 cyfr) (8 cyfr) (10 cyfr)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 51: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

[log2 n] 3 5 6 8 9n2 100 2 500 10 000 90 000 1 000 000n3 1 000 125 000 (7 cyfr) (8 cyfr) (10 cyfr)2n 1024 (16 cyfr) (31 cyfr) (91 cyfr) (302 cyfry)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 52: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

[log2 n] 3 5 6 8 9n2 100 2 500 10 000 90 000 1 000 000n3 1 000 125 000 (7 cyfr) (8 cyfr) (10 cyfr)2n 1024 (16 cyfr) (31 cyfr) (91 cyfr) (302 cyfry)n! (7 cyfr) (65 cyfr ) (161 cyfr) (623 cyfry) niewyobrażalnann (11 cyfr) (85 cyfr) (201 cyfr) (744 cyfry) niewyobrażalna

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 53: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

[log2 n] 3 5 6 8 9n2 100 2 500 10 000 90 000 1 000 000n3 1 000 125 000 (7 cyfr) (8 cyfr) (10 cyfr)2n 1024 (16 cyfr) (31 cyfr) (91 cyfr) (302 cyfry)n! (7 cyfr) (65 cyfr ) (161 cyfr) (623 cyfry) niewyobrażalnann (11 cyfr) (85 cyfr) (201 cyfr) (744 cyfry) niewyobrażalna

liczba protonów w znanym wszechświecie ma 126 cyfrliczba mikrosekund od „wielkiego wybuchu” ma 24 cyfry

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 54: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

[log2 n] 3 5 6 8 9n2 100 2 500 10 000 90 000 1 000 000n3 1 000 125 000 (7 cyfr) (8 cyfr) (10 cyfr)2n 1024 (16 cyfr) (31 cyfr) (91 cyfr) (302 cyfry)n! (7 cyfr) (65 cyfr ) (161 cyfr) (623 cyfry) niewyobrażalnann (11 cyfr) (85 cyfr) (201 cyfr) (744 cyfry) niewyobrażalna

liczba protonów w znanym wszechświecie ma 126 cyfrliczba mikrosekund od „wielkiego wybuchu” ma 24 cyfry

Zapotrzebowanie na czas dla wybranych algorytmów(przy prędkości 1 MIPS)

n 10 20 50 100 300O(n2) 1/10000 s 1/2500 s 1/400 s 1/100 s 9/100 s

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 55: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

[log2 n] 3 5 6 8 9n2 100 2 500 10 000 90 000 1 000 000n3 1 000 125 000 (7 cyfr) (8 cyfr) (10 cyfr)2n 1024 (16 cyfr) (31 cyfr) (91 cyfr) (302 cyfry)n! (7 cyfr) (65 cyfr ) (161 cyfr) (623 cyfry) niewyobrażalnann (11 cyfr) (85 cyfr) (201 cyfr) (744 cyfry) niewyobrażalna

liczba protonów w znanym wszechświecie ma 126 cyfrliczba mikrosekund od „wielkiego wybuchu” ma 24 cyfry

Zapotrzebowanie na czas dla wybranych algorytmów(przy prędkości 1 MIPS)

n 10 20 50 100 300O(n2) 1/10000 s 1/2500 s 1/400 s 1/100 s 9/100 sO(n5) 1/10 s 3.2 s 5.2 min 2.8 h 28.1 dnia

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 56: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

[log2 n] 3 5 6 8 9n2 100 2 500 10 000 90 000 1 000 000n3 1 000 125 000 (7 cyfr) (8 cyfr) (10 cyfr)2n 1024 (16 cyfr) (31 cyfr) (91 cyfr) (302 cyfry)n! (7 cyfr) (65 cyfr ) (161 cyfr) (623 cyfry) niewyobrażalnann (11 cyfr) (85 cyfr) (201 cyfr) (744 cyfry) niewyobrażalna

liczba protonów w znanym wszechświecie ma 126 cyfrliczba mikrosekund od „wielkiego wybuchu” ma 24 cyfry

Zapotrzebowanie na czas dla wybranych algorytmów(przy prędkości 1 MIPS)

n 10 20 50 100 300O(n2) 1/10000 s 1/2500 s 1/400 s 1/100 s 9/100 sO(n5) 1/10 s 3.2 s 5.2 min 2.8 h 28.1 dniaO(2n) 1/1000 s 1 s 35.7 lat 4×1016 lat 1077 lat

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 57: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 12

Tempo wzrostu wybranych funkcjin 10 50 100 300 1 000

[log2 n] 3 5 6 8 9n2 100 2 500 10 000 90 000 1 000 000n3 1 000 125 000 (7 cyfr) (8 cyfr) (10 cyfr)2n 1024 (16 cyfr) (31 cyfr) (91 cyfr) (302 cyfry)n! (7 cyfr) (65 cyfr ) (161 cyfr) (623 cyfry) niewyobrażalnann (11 cyfr) (85 cyfr) (201 cyfr) (744 cyfry) niewyobrażalna

liczba protonów w znanym wszechświecie ma 126 cyfrliczba mikrosekund od „wielkiego wybuchu” ma 24 cyfry

Zapotrzebowanie na czas dla wybranych algorytmów(przy prędkości 1 MIPS)

n 10 20 50 100 300O(n2) 1/10000 s 1/2500 s 1/400 s 1/100 s 9/100 sO(n5) 1/10 s 3.2 s 5.2 min 2.8 h 28.1 dniaO(2n) 1/1000 s 1 s 35.7 lat 4×1016 lat 1077 lat

„wielki wybuch” był w przybliżeniu 1.5×1010 lat temusłońce wypali się za około 5×109 lat

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 58: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 13

Szacowanie złożoności obliczeniowejDo oszacowania złożoności obliczeniowej wystarczy policzyć licz-bę porównań występujących w programie.

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 59: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 13

Szacowanie złożoności obliczeniowejDo oszacowania złożoności obliczeniowej wystarczy policzyć licz-bę porównań występujących w programie.Dlaczego?

STARTPoszukiwanie wzorca wœród

elementów tablicy jednowymiarowej

od elementu min do max

STOP

Tab[min] = wzorzec

lub

min = max?

Nie min = min + 1

Tak(2)

(1)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 60: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 13

Szacowanie złożoności obliczeniowejDo oszacowania złożoności obliczeniowej wystarczy policzyć licz-bę porównań występujących w programie.Dlaczego?

STARTPoszukiwanie wzorca wœród

elementów tablicy jednowymiarowej

od elementu min do max

STOP

Tab[min] = wzorzec

lub

min = max?

Nie min = min + 1

Tak(2)

(1)

Koszt = n ∗ K11 + K12

n — liczba przejść pętli równa liczbie porównańKij – koszt przejścia z punktu kontrolnego i do j (stały!)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 61: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 14

START Sortowanie tablicy

b¹belkowe

STOP

j = 1

Zamieñ Tab[i]

z Tab[i+1]

Tak j = j + 1

Nie

Tak

i = 1

i = i + 1

j < n - 1?

Tab[i] > Tab[i+1]? Tak

Nie

Nie

Czy

element i-ty jest

przedostatni?

(1)

(2)

(3)

(4)

(5)

(6)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 62: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 14

START Sortowanie tablicy

b¹belkowe

STOP

j = 1

Zamieñ Tab[i]

z Tab[i+1]

Tak j = j + 1

Nie

Tak

i = 1

i = i + 1

j < n - 1?

Tab[i] > Tab[i+1]? Tak

Nie

Nie

Czy

element i-ty jest

przedostatni?

(1)

(2)

(3)

(4)

(5)

(6)

Koszt = K12

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 63: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 14

START Sortowanie tablicy

b¹belkowe

STOP

j = 1

Zamieñ Tab[i]

z Tab[i+1]

Tak j = j + 1

Nie

Tak

i = 1

i = i + 1

j < n - 1?

Tab[i] > Tab[i+1]? Tak

Nie

Nie

Czy

element i-ty jest

przedostatni?

(1)

(2)

(3)

(4)

(5)

(6)

Koszt = K12 + (n−1)K22

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 64: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 14

START Sortowanie tablicy

b¹belkowe

STOP

j = 1

Zamieñ Tab[i]

z Tab[i+1]

Tak j = j + 1

Nie

Tak

i = 1

i = i + 1

j < n - 1?

Tab[i] > Tab[i+1]? Tak

Nie

Nie

Czy

element i-ty jest

przedostatni?

(1)

(2)

(3)

(4)

(5)

(6)

Koszt = K12 + (n−1)K22 + K56

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 65: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 14

START Sortowanie tablicy

b¹belkowe

STOP

j = 1

Zamieñ Tab[i]

z Tab[i+1]

Tak j = j + 1

Nie

Tak

i = 1

i = i + 1

j < n - 1?

Tab[i] > Tab[i+1]? Tak

Nie

Nie

Czy

element i-ty jest

przedostatni?

(1)

(2)

(3)

(4)

(5)

(6)

Koszt = K12 + (n−1)K22 + K56 =

= K12+(n−1)(K23+(n−1)(K34+K43)+K45)+K56

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 66: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 14

START Sortowanie tablicy

b¹belkowe

STOP

j = 1

Zamieñ Tab[i]

z Tab[i+1]

Tak j = j + 1

Nie

Tak

i = 1

i = i + 1

j < n - 1?

Tab[i] > Tab[i+1]? Tak

Nie

Nie

Czy

element i-ty jest

przedostatni?

(1)

(2)

(3)

(4)

(5)

(6)

Koszt = K12 + (n−1)K22 + K56 =

= K12+(n−1)(K23+(n−1)(K34+K43)+K45)+K56 =

= (K34 + K43)n2

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 67: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 14

START Sortowanie tablicy

b¹belkowe

STOP

j = 1

Zamieñ Tab[i]

z Tab[i+1]

Tak j = j + 1

Nie

Tak

i = 1

i = i + 1

j < n - 1?

Tab[i] > Tab[i+1]? Tak

Nie

Nie

Czy

element i-ty jest

przedostatni?

(1)

(2)

(3)

(4)

(5)

(6)

Koszt = K12 + (n−1)K22 + K56 =

= K12+(n−1)(K23+(n−1)(K34+K43)+K45)+K56 =

= (K34 + K43)n2 ++ (K23−2K34−2K43+K45)n ++ K12−K23+K34+K43−K45+K56

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 68: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 14

START Sortowanie tablicy

b¹belkowe

STOP

j = 1

Zamieñ Tab[i]

z Tab[i+1]

Tak j = j + 1

Nie

Tak

i = 1

i = i + 1

j < n - 1?

Tab[i] > Tab[i+1]? Tak

Nie

Nie

Czy

element i-ty jest

przedostatni?

(1)

(2)

(3)

(4)

(5)

(6)

Koszt = K12 + (n−1)K22 + K56 =

= K12+(n−1)(K23+(n−1)(K34+K43)+K45)+K56 =

= (K34 + K43)n2 ++ (K23−2K34−2K43+K45)n ++ K12−K23+K34+K43−K45+K56

Złożoność – O(n2)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 69: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 15

Teoria a praktykaRzeczywiste czasy wykonania programów sortowania

Same klucze Tablica uporządkowana losowa odwrotnie uporządkowanan = 256 512 256 512 256 512

proste wstawianie 12 23 366 1444 704 2836wstawianie połówkowe 56 125 373 1327 662 2490proste wybieranie 489 1907 509 1956 695 2675sortowanie drzewiaste 116 253 110 241 104 226sortowanie bąbelkowe 540 2165 1026 4054 1492 5931sortowanie szybkie 31 69 60 146 37 79

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 70: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 15

Teoria a praktykaRzeczywiste czasy wykonania programów sortowania

Same klucze Tablica uporządkowana losowa odwrotnie uporządkowanan = 256 512 256 512 256 512

proste wstawianie 12 23 366 1444 704 2836wstawianie połówkowe 56 125 373 1327 662 2490proste wybieranie 489 1907 509 1956 695 2675sortowanie drzewiaste 116 253 110 241 104 226sortowanie bąbelkowe 540 2165 1026 4054 1492 5931sortowanie szybkie 31 69 60 146 37 79

• Usprawnienie wstawiania połówkowego nie ma praktycznie żadnegoznaczenia

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 71: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 15

Teoria a praktykaRzeczywiste czasy wykonania programów sortowania

Same klucze Tablica uporządkowana losowa odwrotnie uporządkowanan = 256 512 256 512 256 512

proste wstawianie 12 23 366 1444 704 2836wstawianie połówkowe 56 125 373 1327 662 2490proste wybieranie 489 1907 509 1956 695 2675sortowanie drzewiaste 116 253 110 241 104 226sortowanie bąbelkowe 540 2165 1026 4054 1492 5931sortowanie szybkie 31 69 60 146 37 79

• Usprawnienie wstawiania połówkowego nie ma praktycznie żadnegoznaczenia• Sortowanie bąbelkowe jest zdecydowanie najgorszą ze wszystkich metod

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 72: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 15

Teoria a praktykaRzeczywiste czasy wykonania programów sortowania

Same klucze Tablica uporządkowana losowa odwrotnie uporządkowanan = 256 512 256 512 256 512

proste wstawianie 12 23 366 1444 704 2836wstawianie połówkowe 56 125 373 1327 662 2490proste wybieranie 489 1907 509 1956 695 2675sortowanie drzewiaste 116 253 110 241 104 226sortowanie bąbelkowe 540 2165 1026 4054 1492 5931sortowanie szybkie 31 69 60 146 37 79

• Usprawnienie wstawiania połówkowego nie ma praktycznie żadnegoznaczenia• Sortowanie bąbelkowe jest zdecydowanie najgorszą ze wszystkich metod• Sortowanie szybkie jest rzeczywiście szybkie

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 73: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 16

Klucze + dane Tablica uporządkowana losowa odwrotnie uporząd.+ dane NIE TAK NIE TAK NIE TAK

proste wstawianie 12 46 366 1129 704 2150wstawianie połówkowe 56 76 373 1105 662 2070proste wybieranie 489 547 509 607 695 1430sortowanie drzewiaste 116 264 110 246 104 227sortowanie bąbelkowe 540 610 1026 3212 1492 5599sortowanie szybkie 31 55 60 137 37 75

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 74: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 16

Klucze + dane Tablica uporządkowana losowa odwrotnie uporząd.+ dane NIE TAK NIE TAK NIE TAK

proste wstawianie 12 46 366 1129 704 2150wstawianie połówkowe 56 76 373 1105 662 2070proste wybieranie 489 547 509 607 695 1430sortowanie drzewiaste 116 264 110 246 104 227sortowanie bąbelkowe 540 610 1026 3212 1492 5599sortowanie szybkie 31 55 60 137 37 75

• Metoda prostego wyboru znacznie zyskała wśród metod prostych

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 75: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 16

Klucze + dane Tablica uporządkowana losowa odwrotnie uporząd.+ dane NIE TAK NIE TAK NIE TAK

proste wstawianie 12 46 366 1129 704 2150wstawianie połówkowe 56 76 373 1105 662 2070proste wybieranie 489 547 509 607 695 1430sortowanie drzewiaste 116 264 110 246 104 227sortowanie bąbelkowe 540 610 1026 3212 1492 5599sortowanie szybkie 31 55 60 137 37 75

• Metoda prostego wyboru znacznie zyskała wśród metod prostych• Sortowanie bąbelkowe jest dalej zdecydowanie najgorsze (straciło znaczenie)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 76: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 16

Klucze + dane Tablica uporządkowana losowa odwrotnie uporząd.+ dane NIE TAK NIE TAK NIE TAK

proste wstawianie 12 46 366 1129 704 2150wstawianie połówkowe 56 76 373 1105 662 2070proste wybieranie 489 547 509 607 695 1430sortowanie drzewiaste 116 264 110 246 104 227sortowanie bąbelkowe 540 610 1026 3212 1492 5599sortowanie szybkie 31 55 60 137 37 75

• Metoda prostego wyboru znacznie zyskała wśród metod prostych• Sortowanie bąbelkowe jest dalej zdecydowanie najgorsze (straciło znaczenie)• Sortowanie szybkie umocniło nawet swoją pozycję

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 77: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 16

Klucze + dane Tablica uporządkowana losowa odwrotnie uporząd.+ dane NIE TAK NIE TAK NIE TAK

proste wstawianie 12 46 366 1129 704 2150wstawianie połówkowe 56 76 373 1105 662 2070proste wybieranie 489 547 509 607 695 1430sortowanie drzewiaste 116 264 110 246 104 227sortowanie bąbelkowe 540 610 1026 3212 1492 5599sortowanie szybkie 31 55 60 137 37 75

• Metoda prostego wyboru znacznie zyskała wśród metod prostych• Sortowanie bąbelkowe jest dalej zdecydowanie najgorsze (straciło znaczenie)• Sortowanie szybkie umocniło nawet swoją pozycję

Generalnie wyróżniamy metody sortowania prymitywne (złożo-ność O(n2)) oraz nowoczesne — „logarytmiczne” (złożonośćO(nlog n))

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 78: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 17

Efektywność algorytmów w praktyce

• Dla małych zbiorów danych można pominąć zagadnienia efektywnościalgorytmów

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 79: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 17

Efektywność algorytmów w praktyce

• Dla małych zbiorów danych można pominąć zagadnienia efektywnościalgorytmów• Dla bardzo dużych zbiorów danych najważniejsza jest klasa złożoności ob-

liczeniowej algorytmu (wpływ czynników stałych pominiętych w notacji duże-O możeokazać się dominujący przy małych i średnich wielkościach zbiorów)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 80: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 17

Efektywność algorytmów w praktyce

• Dla małych zbiorów danych można pominąć zagadnienia efektywnościalgorytmów• Dla bardzo dużych zbiorów danych najważniejsza jest klasa złożoności ob-

liczeniowej algorytmu (wpływ czynników stałych pominiętych w notacji duże-O możeokazać się dominujący przy małych i średnich wielkościach zbiorów)• Często ważniejsze od wyboru algorytmu o dobrej klasie złożoności jest tzw.

„lokalna optymalizacja” — usprawnienie fragmentów programu stanowiącychtzw. „wąskie gardła” (zasada 80–20, lub nawet 90–10)

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 81: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 17

Efektywność algorytmów w praktyce

• Dla małych zbiorów danych można pominąć zagadnienia efektywnościalgorytmów• Dla bardzo dużych zbiorów danych najważniejsza jest klasa złożoności ob-

liczeniowej algorytmu (wpływ czynników stałych pominiętych w notacji duże-O możeokazać się dominujący przy małych i średnich wielkościach zbiorów)• Często ważniejsze od wyboru algorytmu o dobrej klasie złożoności jest tzw.

„lokalna optymalizacja” — usprawnienie fragmentów programu stanowiącychtzw. „wąskie gardła” (zasada 80–20, lub nawet 90–10)• Malejące koszty sprzętu komputerowego i równocześnie rosnące koszty two-

rzenia oprogramowania prowadzą do zaniedbywania analizy efektywnościoprogramowania — wówczas najważniejsze są zasady stylu programowania

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 82: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 17

Efektywność algorytmów w praktyce

• Dla małych zbiorów danych można pominąć zagadnienia efektywnościalgorytmów• Dla bardzo dużych zbiorów danych najważniejsza jest klasa złożoności ob-

liczeniowej algorytmu (wpływ czynników stałych pominiętych w notacji duże-O możeokazać się dominujący przy małych i średnich wielkościach zbiorów)• Często ważniejsze od wyboru algorytmu o dobrej klasie złożoności jest tzw.

„lokalna optymalizacja” — usprawnienie fragmentów programu stanowiącychtzw. „wąskie gardła” (zasada 80–20, lub nawet 90–10)• Malejące koszty sprzętu komputerowego i równocześnie rosnące koszty two-

rzenia oprogramowania prowadzą do zaniedbywania analizy efektywnościoprogramowania — wówczas najważniejsze są zasady stylu programowania• Często algorytmy o mniejszej złożoności obliczeniowej charakteryzują się

większą złożonością pamięciową

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 83: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 18

Sfera problemów algorytmicznych

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 84: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 18

Sfera problemów algorytmicznych

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 85: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 18

Sfera problemów algorytmicznych

Problemy łatworozwiązywalne

(wielomianowe) algorytmyProblemy mające rozsądne

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 86: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 18

Sfera problemów algorytmicznych

Problemy łatworozwiązywalne

(wielomianowe) algorytmyProblemy mające rozsądne

rozwiązywalneProblemy trudno

rozsądnych algorytmówProblemy nie mające

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 87: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 18

Sfera problemów algorytmicznych

Problemy łatworozwiązywalne

(wielomianowe) algorytmyProblemy mające rozsądne

rozwiązywalneProblemy trudno

rozsądnych algorytmówProblemy nie mające

nierozstrzygalneProblemy

(lub nieobliczalne)

mające algorytmówProblemy w ogóle nie

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 88: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 19

Przykład problemu nieobliczalnego —problem domina

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 89: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 19

Przykład problemu nieobliczalnego —problem domina

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 90: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 19

Przykład problemu nieobliczalnego —problem domina

Da się!!!

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 91: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 19

Przykład problemu nieobliczalnego —problem domina

Da się!!!

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 92: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 19

Przykład problemu nieobliczalnego —problem domina

Da się!!!

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 93: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 19

Przykład problemu nieobliczalnego —problem domina

?!

Da się!!!

Nie da się:(

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 94: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 20

Problem domina — twierdzenie

Twierdzenie 1Dla każdego algorytmu (zapisanego w dającym się efektywnie wy-konać języku programowania), który byłby przeznaczony do roz-strzygnięcia problemu domina, istnieje nieskończenie wiele do-puszczalnych zestawów danych wejściowych, dla których algorytmten będzie działał w nieskończoność lub poda błędną odpowiedź.

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 95: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 20

Problem domina — twierdzenie

Twierdzenie 1Dla każdego algorytmu (zapisanego w dającym się efektywnie wy-konać języku programowania), który byłby przeznaczony do roz-strzygnięcia problemu domina, istnieje nieskończenie wiele do-puszczalnych zestawów danych wejściowych, dla których algorytmten będzie działał w nieskończoność lub poda błędną odpowiedź.

Wniosek 1Problem domina jest problemem nierozstrzygalnym.

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 96: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 21

Problem stopu

Mając jako dane wejściowe tekst poprawnego programu za-pisanego w pewnym języku, zbudować algorytm, który bysprawdzał, czy program zatrzyma się dla pewnych dopusz-czalnych dla niego danych.

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 97: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 21

Problem stopu

Mając jako dane wejściowe tekst poprawnego programu za-pisanego w pewnym języku, zbudować algorytm, który bysprawdzał, czy program zatrzyma się dla pewnych dopusz-czalnych dla niego danych.

'

&

$

%

X ∈ N

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 98: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 21

Problem stopu

Mając jako dane wejściowe tekst poprawnego programu za-pisanego w pewnym języku, zbudować algorytm, który bysprawdzał, czy program zatrzyma się dla pewnych dopusz-czalnych dla niego danych.

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj

X ← X − 2

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 99: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 21

Problem stopu

Mając jako dane wejściowe tekst poprawnego programu za-pisanego w pewnym języku, zbudować algorytm, który bysprawdzał, czy program zatrzyma się dla pewnych dopusz-czalnych dla niego danych.

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj

X ← X − 2

2. zatrzymaj obliczenia

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 100: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 21

Problem stopu

Mając jako dane wejściowe tekst poprawnego programu za-pisanego w pewnym języku, zbudować algorytm, który bysprawdzał, czy program zatrzyma się dla pewnych dopusz-czalnych dla niego danych.

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj

X ← X − 2

2. zatrzymaj obliczenia

• algorytm zatrzymuje się dla X

nieparzystych• nie zatrzymuje się dla X parzy-

stych

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 101: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 21

Problem stopu

Mając jako dane wejściowe tekst poprawnego programu za-pisanego w pewnym języku, zbudować algorytm, który bysprawdzał, czy program zatrzyma się dla pewnych dopusz-czalnych dla niego danych.

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj

X ← X − 2

2. zatrzymaj obliczenia

• algorytm zatrzymuje się dla X

nieparzystych• nie zatrzymuje się dla X parzy-

stych

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj:

1.1. dla X parzystego X ← X/2

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 102: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 21

Problem stopu

Mając jako dane wejściowe tekst poprawnego programu za-pisanego w pewnym języku, zbudować algorytm, który bysprawdzał, czy program zatrzyma się dla pewnych dopusz-czalnych dla niego danych.

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj

X ← X − 2

2. zatrzymaj obliczenia

• algorytm zatrzymuje się dla X

nieparzystych• nie zatrzymuje się dla X parzy-

stych

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj:

1.1. dla X parzystego X ← X/2

1.2. dla X nieparzystego X ← 3 ∗X + 1

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 103: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 21

Problem stopu

Mając jako dane wejściowe tekst poprawnego programu za-pisanego w pewnym języku, zbudować algorytm, który bysprawdzał, czy program zatrzyma się dla pewnych dopusz-czalnych dla niego danych.

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj

X ← X − 2

2. zatrzymaj obliczenia

• algorytm zatrzymuje się dla X

nieparzystych• nie zatrzymuje się dla X parzy-

stych

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj:

1.1. dla X parzystego X ← X/2

1.2. dla X nieparzystego X ← 3 ∗X + 12. zatrzymaj obliczenia

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 104: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 21

Problem stopu

Mając jako dane wejściowe tekst poprawnego programu za-pisanego w pewnym języku, zbudować algorytm, który bysprawdzał, czy program zatrzyma się dla pewnych dopusz-czalnych dla niego danych.

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj

X ← X − 2

2. zatrzymaj obliczenia

• algorytm zatrzymuje się dla X

nieparzystych• nie zatrzymuje się dla X parzy-

stych

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj:

1.1. dla X parzystego X ← X/2

1.2. dla X nieparzystego X ← 3 ∗X + 12. zatrzymaj obliczenia

• dla wszystkich sprawdzonych liczb algorytm za-trzymał się

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 105: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 21

Problem stopu

Mając jako dane wejściowe tekst poprawnego programu za-pisanego w pewnym języku, zbudować algorytm, który bysprawdzał, czy program zatrzyma się dla pewnych dopusz-czalnych dla niego danych.

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj

X ← X − 2

2. zatrzymaj obliczenia

• algorytm zatrzymuje się dla X

nieparzystych• nie zatrzymuje się dla X parzy-

stych

'

&

$

%

X ∈ N1. dopóki X 6= 1 wykonuj:

1.1. dla X parzystego X ← X/2

1.2. dla X nieparzystego X ← 3 ∗X + 12. zatrzymaj obliczenia

• dla wszystkich sprawdzonych liczb algorytm za-trzymał się

• nie udowodniono, że zatrzymuje się dla dowolnejliczby naturalnej

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 106: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 22

Problem stopu — rozwiązanie

R X

program

algorytmdopuszczalne

danelub

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 107: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 22

Problem stopu — rozwiązanie

R X

program

algorytmdopuszczalne

danelub

TAK NIE

dla danych X?zatrzyma się

Czy program R

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 108: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 22

Problem stopu — rozwiązanie

R X

program

algorytmdopuszczalne

danelub

TAK NIE

dla danych X?zatrzyma się

Czy program R Czy istniejetaki program?

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 109: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 23

Więcej w. . .

• Michael Sipser, „Wprowadzenie do teorii obliczeń”, WNT 2016• Christos H. Papadimitriou, „Złożoność obliczeniowa”, Helion 2012• Paul Beynon-Davies, „Inżynieria systemów informacyjnych”, WNT 2004

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 110: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 24

Podsumowanie• Zagadnienia podstawowe

1. Wymień najważniejsze cechy dobrego oprogramowania.2. Jakie podstawowe czynniki należy uwzględnić przy ocenie efektywności algorytmów.3. Uporządkuj według rosnącej złożoności obliczeniowej O(n), O(log n), O(n2), O(2n),

O(n!), O(nn), O(n log n), O(nnn)

4. W jaki sposób można sprawdzić złożoność obliczeniową?5. Dlaczego do oszacowania złożoności obliczeniowej algorytmu wystarczy policzyć liczbę

wyliczanych w trakcie jego wykonania porównań?6. Jaki jest sens poszukiwania nowych algorytmów, jeśli są już dostępne rozwiązania da-

nego problemu?7. Czym się różnią algorytmy o rozsądnym i nierozsądnym czasie działania?8. Co to znaczy, że problem jest nierozstrzygalny?9. Dlaczego problem domina jest przykładem problemu nieobliczalnego?

10. Jaka jest definicja problemu stopu?

• Zagadnienia rozszerzające1. Podaj przykłady, kiedy algorytm (np. sortowania) o mniejszej złożoności obliczeniowej

będzie działał wolniej od algorytmu o większej złożoności.

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 111: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa ← → 25

2. Zapoznaj się z klasyfikacją problemów algorytmicznych. Czym są problemy P, NP i NP-zupełne?

3. Czym są, do czego służą i czym się różnią notacje “O” (duże O), “Ω” (duże omega) i “Θ”(teta)? A notacje “o” (małe o) i “ω” (małe omega)?

4. Jakie są inne niż podane na wykładzie problemy nierozstrzygalne?5. Jakie są sposoby rozwiązywania problemów nieobliczanych?6. Czy przegląd zupełny może posłużyć do określenia rozstrzygalności instancji (przykładu)

danego problemu?7. Czy dla każdego problemu jesteśmy w stanie zaproponować algorytm o wykładniczej

klasie złożoności obliczeniowej?

• Zadania1. Oszacuj złożoność obliczeniową programu na przecięcia zera.2. Oszacuj złożoność obliczeniową i pamięciową funkcji napisanego przez Ciebie programu

na przetwarzanie obrazów.3. Przejrzyj napisany przez Ciebie program na przetwarzanie obrazów i popraw jego efek-

tywność tam, gdzie jest to możliwe.4. Wyznacz złożoność obliczeniową w najlepszym i najgorszym przypadku algorytmu sor-

towania szybkiego.5. Znajdź algorytmy na wyliczanie liczb pierwszych i dowiedz się, jaka jest ich złożoność

obliczeniowa.

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019

Page 112: Podstawy programowaniakcir.pwr.edu.pl/~mucha/PProg/wyklad10_prezentacja.pdfZłożoność obliczeniowa -,! 6 Rodzaj komputera Przykładowe czasy sortowania 8170 liczb n liczb Typ komputera

Złożoność obliczeniowa 26

Indeks• Sprawność programów (algorytmów)• Sposoby zwiększania efektywności programów• Poprawa efektywności — przykład• Poprawa efektywności — inny przykład• Ocena efektywności programów (algorytmów)• Rodzaj komputera• Zbiór danych wejściowych• Porównanie metod sortowania• Złożoność obliczeniowa i jej ocena• Szacowanie złożoności obliczeniowej• Teoria a praktyka• Efektywność algorytmów w praktyce• Sfera problemów algorytmicznych• Przykład problemu nieobliczalnego — problem domina• Problem domina — twierdzenie• Problem stopu• Problem stopu — rozwiązanie

– Skład FoilTEX – Indeks c© R. Muszyński, 14 stycznia 2019