Wstęp do programowania

Podobne dokumenty
Wstęp do programowania

Wstęp do programowania

Podstawy Informatyki. Sprawność algorytmów

Wstęp do programowania

Sortowanie przez scalanie

Wykład 2. Poprawność algorytmów

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Efektywność Procedur Obliczeniowych. wykład 5

Algorytmy i struktury danych.

Wstęp do programowania

Wprowadzenie do złożoności obliczeniowej

Zaawansowane algorytmy i struktury danych

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

TEORETYCZNE PODSTAWY INFORMATYKI

Teoria obliczeń i złożoność obliczeniowa

Informatyka 1. Złożoność obliczeniowa

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Algorytmy i Struktury Danych.

Poprawność semantyczna

Zasady analizy algorytmów

Programowanie w VB Proste algorytmy sortowania

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Sortowanie przez wstawianie

Podstawowe algorytmy i ich implementacje w C. Wykład 9

TEORETYCZNE PODSTAWY INFORMATYKI

Podstawy Programowania. Złożoność obliczeniowa

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Zaawansowane algorytmy i struktury danych

Struktura danych. Sposób uporządkowania informacji w komputerze.

Matematyczne Podstawy Informatyki

Algorytm selekcji Hoare a. Łukasz Miemus

Analiza algorytmów zadania podstawowe

Strategia "dziel i zwyciężaj"

Algorytmy i Struktury Danych, 2. ćwiczenia

Wyszukiwanie. Wyszukiwanie binarne

Złożoność algorytmów. Wstęp do Informatyki

Algorytm. Krótka historia algorytmów

Wstęp do Programowania potok funkcyjny

Złożoność obliczeniowa zadania, zestaw 2

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Struktury danych i złożoność obliczeniowa Wykład 6. Prof. dr hab. inż. Jan Magott

Technologie Informacyjne

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmy i Struktury Danych.

Zaawansowane algorytmy. Wojciech Horzelski

Algorytm i złożoność obliczeniowa algorytmu

Wstęp do programowania

Sortowanie - wybrane algorytmy

Podstawy Informatyki. Algorytmy i ich poprawność

Teoretyczne podstawy informatyki

Kontrola przebiegu programu

Technologie informacyjne Wykład VII-IX

1 Wprowadzenie do algorytmiki

Podstawy programowania. Podstawy C# Przykłady algorytmów

Algorytmy. Programowanie Proceduralne 1

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytmy w teorii liczb

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Definicje. Algorytm to:

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Złożoność Obliczeniowa Algorytmów

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Wyszukiwanie binarne

Wstęp do programowania

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Teoretyczne podstawy informatyki

Struktury danych i złożoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Algorytmy. Programowanie Proceduralne 1

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Paradygmaty programowania

Podstawy Programowania

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Podstawy Programowania. Złożoność obliczeniowa

Wstęp do programowania

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Typy algorytmów losowych. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Algorytm. Krótka historia algorytmów

Lista 6 Problemy NP-zupełne

Algorytmy i Struktury Danych

Algorytm. a programowanie -

Wstęp do programowania

Algorytmy i struktury danych Matematyka III sem.

Projektowanie i Analiza Algorytmów

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Struktury Danych i Złożoność Obliczeniowa

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Wstęp do programowania

Informatyka A. Algorytmy

Tomasz M. Gwizdałła 2012/13

PRZEWODNIK PO PRZEDMIOCIE

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Zapis algorytmów: schematy blokowe i pseudokod 1

Transkrypt:

Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20

Złożoność obliczeniowa Problem Ile czasu zajmuje wykonanie programu/algorytmu? Czas zależy od zastosowanego algorytmu jakości implementacji danych wejściowych języka programowania, kompilatora/interpretera wydajności maszyny Co właściwie należy mierzyć, aby miarodajnie porównywać algorytmy? P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 2 / 20

Złożoność obliczeniowa Załóżmy, że maszyna wykonuje operacje O 1, O 2,..., O k, a t i to czas wykonania pojedynczej operacji. Czas pracy programu na danych D: T (D) = N 1 (D)t 1 + N 2 (D)t 2 + + N k (D)t k Warto przyjąć pewne uproszczenia. Niech T będzie funkcją rozmiaru danych (n = s(d)). Mamy wtedy różne rodzaje złożoności obliczeniowej (D(n) zbiór zestawów danych wejściowych o rozmiarze n): pesymistyczna T (n) = max D D(n) T (D) średnia (oczekiwana) T (n) = 1 D(n) D D(n) T (D) P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 3 / 20

Notacja asymptotyczna Wydajność procesorów podwaja się co półtora roku (prawo Moore a). Czasy wykonywania pojedynczych operacji nie mają istotnego znaczenia. Przykłady f (n) = O(g(n)) c>0 f (n) cg(n) 2n = O(n) 3n 2 + n + 3 = O(n 2 ) log k n = O(log 2 n) P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 4 / 20

Notacja asymptotyczna caveat emptor Dla małych n algorytm asymptotycznie bardziej kosztowny może być wydajniejszy. Przykład n + 20 = O(n 2 ) ale: 2 + 20 > 2 2 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 5 / 20

Przykład wyszukiwanie Liniowe Należy przebiec kolejno wszystkie elementy, aż do znalezienia wymaganego. złożoność pesymistyczna n = O(n) ostatni element jest poszukiwanym złożoność średnia n 2 = O(n) przy założeniu, że poszukiwany element może być z jednakowym prawdopodobieństwem na każdej pozycji Binarne Złożoność dana równaniem rekurencyjnym: T (n) = 1 + T (n/2) T (n) = O(log n) P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 6 / 20

Przykład sortowanie BubbleSort QuickSort HeapSort P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 7 / 20

Poprawność programów Program jest częściowo poprawny, jeżeli daje poprawne wyniki, o ile się kończy. Program jest w pełni poprawny, jeżeli jest częściowo poprawny i obliczenie kończy się dla dowolnych danych. Uwaga Program while True : s k i p jest częściowo poprawny niezależnie od rozwiązywanego problemu. P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 8 / 20

Dowodzenie/badanie poprawności Sposoby dowód poprawności algorytmu formalny dowód poprawności programu testy (eksperyment) To widać! poprawność algorytmu wynika wprost (niemal wprost) z twierdzenia matematycznego metoda z niezmiennikiem i warunkiem końca pętli logika Hoare a P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 9 / 20

Przykład liczby Fibbonaciego d ef f i b ( n ) : i f n<=1: r e t u r n n r e t u r n f i b ( n 1)+ f i b ( n 2) P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 10 / 20

Przykład liczby Fibbonaciego d ef f i b ( n ) : i f n<=1: r e t u r n n r e t u r n f i b ( n 1)+ f i b ( n 2) To widać! P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 10 / 20

Przykład problem plecakowy Złodziej dysponuje workiem, który może pomieścić przedmioty o łącznej wadze w. W jaki sposób może zmaksymalizować wartość łupu, jeżeli ma do wyboru n rodzajów przedmiotów o wagach i wartościach zadanych ciągami w i, v i. Liczba dostępnych przedmiotów każdego rodzaju jest nieograniczona. K(w) maksymalny łup osiągalny przy pomocy plecaka o pojemności w Twierdzenie K(w) = max i:w i w K(w w i) + v i Program obliczający K(w) dla kolejnych liczba naturalnych jest banalnie łatwo napisać. P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 11 / 20

Przykład flaga polska l =[random. r a n d i n t ( 0, 1 ) f o r i i n r a n g e ( 1 0 ) ] a=0 b=l e n ( l ) 1 w h i l e a<b : i f l [ a ]==0: a+=1 e l i f l [ b]==1: b =1 e l s e : l [ a ], l [ b]= l [ b ], l [ a ] Niezmiennik pętli (N) i<a l[i] = 0 i>b l[i] = 1 a b N (a < b) = tablica uporządkowana P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 12 / 20

Przykład flaga polska l =[random. r a n d i n t ( 0, 1 ) f o r i i n r a n g e ( 1 0 ) ] a=0 b=l e n ( l ) 1 w h i l e a<b : i f l [ a ]==0: a+=1 e l i f l [ b]==1: b =1 e l s e : l [ a ], l [ b]= l [ b ], l [ a ] Niezmiennik pętli (N) i<a l[i] = 0 i>b l[i] = 1 a b N (a < b) = tablica uporządkowana To jest dowód częściowej poprawności. P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 12 / 20

Logika Hoare a {P} C {Q} P warunek wstępny Q warunek końcowy C instrukcja Powyższy zapis jest formułą logiczną oznaczającą, że jeżeli przed wykonaniem instrukcji C jest spełniony warunek P, to po jej wykonaniu spełniony jest warunek Q. Wnioskowanie przesłanki oddzielone przecinkami wniosek P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 13 / 20

Instrukcja pusta {P} skip {P} Przypisanie {P[E/x]} x E {P} P[E/x] oznacza warunek P, w którym wszystkie wystąpienia x zostały zastąpione przez E. Przykłady {x + 1 = 24} y x + 1 {y = 24} {x + 1 N} x x + 1 {x N} P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 14 / 20

Instrukcja złożona {P} S {Q}, {Q} T {R} {P} S; T {R} Instrukcja warunkowa {B P} S {Q}, { B P} T {Q} {P} if B then S else T {Q} Pętla {P B} S {P} {P} while B do S { B P} Ta reguła pozwala wnioskować wyłącznie poprawność częściową. P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 15 / 20

Pętla pełna poprawność < jest dobrze ufundowanym porządkiem na D, P B = t D t nie jest elementem minimalnym, [P B t = z] S [P t < z] [P] while B do S [ B P] t jest licznikiem pętli. W przykładzie z flagą polską można wziąć t = b a. P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 16 / 20

Problem stopu Rozstrzygnąć czy program P zatrzymuje się dla dowolnych danych wejściowych. P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 17 / 20

Problem stopu Rozstrzygnąć czy program P zatrzymuje się dla dowolnych danych wejściowych. Nie istnieje algorytm rozwiązujący problem stopu. P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 17 / 20

Problem stopu Dowód Załóżmy, że istnieje w pełni poprawny program S, który dla dowolnego programu P i danych D rozstrzyga, czy P uruchomiony na danych D zatrzymuje się. Weźmy program T : T(P) 1 if S(P, P) = true 2 then loop 3 else stop Jaki jest rezultat uruchomienia T (T )? P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 18 / 20

Klasy złożoności obliczeniowej Dwa rodzaje problemów Problem decyzyjny odpowiedź na pytanie Czy? Problem optymalizacyjny odpowiedź na pytanie Ile? W analizie złożoności obliczeniowej zazwyczaj wystarczy zajmować się problemami decyzyjnymi. Klasa złożoności wielomianowej (P) Istnieje algorytm o złożoności obliczeniowej O(n k ) dla pewnego k. Klasa niedeterministycznej złożoności wielomianowej (NP) Istnieje algorytm o złożoności obliczeniowej O(n k ) dla pewnego k, który wymaga podania dodatkowej informacji z wyroczni. W praktyce: da się w czasie wielomianowym sprawdzić, czy rozwiązanie jest poprawne, o ile się je zna. P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 19 / 20

Strona wykładu http://bioexploratorium.pl/wiki/wstęp_do_programowania 2013z P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 20 / 20