Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Algorytmy dr Anna Kwiatkowska Instytut Informatyki.

Podobne prezentacje


Prezentacja na temat: "Algorytmy dr Anna Kwiatkowska Instytut Informatyki."— Zapis prezentacji:

1 Algorytmy dr Anna Kwiatkowska Instytut Informatyki

2 أبو عبد الله محمد بن موسى الخوارزمي Słowo algorytm pochodzi od nazwiska arabskiego matematyka Abu Jafar Mohammad ibn Musa al- Chorezmi, który żył na przełomie VIII i IX wieku na terenach obecnego Uzbekistanu

3 Algorytmy Jego nazwisko pisane po łacinie przyjęło postać: Algorismus Jest on uznawany za prekursora metod obliczeniowych w matematyce Jeden z najstarszych algorytmów, algorytm Euklidesa znajdowania największego wspólnego podzielnika dwóch liczb ma ponad 2000 lat

4 Algorytm Euklidesa Co ciekawe algorytmu nie wymyślił Euklides, a Eudoksos z Knidos w IV wiek p.n.e. Euklides jedynie algorytm ten zawarł i udowodnił jego poprawność w swoim dziele Elementy Największy Wspólny Dzielnik (NWD) dwóch liczb jest największą liczbą naturalną spośród tych, które dzielą obie te liczby bez reszty W codziennej praktyce NWD służy nam do skracania ułamków do postaci właściwej

5 Algorytm Euklidesa Dane: n, m – dwie liczby naturalne. Dane wyjściowe liczba naturalna będąca największym wspólnym dzielnikiem liczb n i m. W pierwszej sekcji algorytmu sprawdzamy czy m>n i jeżeli tak jest to zamieniamy miejscami wartości zmiennych m i n, aby był spełniony wymagany warunek m<=n

6 Algorytm Euklidesa 1. Sprawdzamy, czy m0, jeśli tak, to następne czynności wykonujemy aż do momentu gdy m=0 a.rob = n - ( n DIV m) *m b.n = m c.m = rob 2. DIV jest operatorem dzielenia całkowitego 3. Wynik jest w zmiennej n

7 Algorytm Euklidesa rob = n - ( n DIV m) *m n = m m = rob jeśli m 0 obliczaj: jeśli m>n to przestawić m z n m n rob ? ? ? (18div12)* (12div6)*6 12-2*6 0 0 m>n NWD = 6

8 Algorytm Algorytm jest to sformalizowany ciąg logicznie powiązanych instrukcji (poleceń, rozkazów), których wykonanie pozwoli na przetworzenie informacji wejściowych (danych) w informacje wyjściowe (wyniki) w skończonej liczbie kroków

9 Przepisy kucharskie Zapis nutowy muzyki. Instrukcje montażu Opisy dojazdu

10 wśród prekursorów algorytmów komputerowych ważną rolę odegrała Ada Augusta, hrabina Lovelace, córka Byrona, która żyła w latach 1815 – 1852, uważa się ją za pierwszą programistkę

11 analiza treści zadania wykaz danych wejściowych; wiadomych i niewiadomych oraz relacji między nimi sprawdzenie czy zadanie posiada jednoznaczne rozwiązanie wybór metody rozwiązania zadania opis czynności, które należy wykonać z danymi wejściowymi przy zastosowaniu wybranej metody rozwiązania sporządzenie i przedstawienie wyników rozwiązania zadania Rozwiązanie zadania

12 Użyteczność algorytmu Algorytm jako pewna określona procedura obliczeniowa posiada cechy, które określają jej użyteczność: 1) poprawność 2) złożoność obliczeniowa 3) złożoność czasowa

13 Formuła częściowej poprawności programu Trójka to formuła logiczna, która jest prawdziwa wtedy i tylko wtedy, gdy zachodzi następujący warunek: Dla każdego stanu spełniającego, jeżeli program zakończy swoje działanie, to stan końcowy będzie spełniał formułę

14 Formuła częściowej poprawności programu Takie formuły nazywamy trójkami Hoare'a albo formułami częściowej poprawności programu Zostały wprowadzone przez jednego z największych informatyków, Anthony'ego Hoare'a, w połowie lat 60

15 Zauważmy, że o poprawności formuły Hoare'a możemy mówić w dwóch przypadkach: Kiedy dla danych spełniających program się zatrzyma i dane po zatrzymaniu się programu spełniają Kiedy dla danych spełniających program się nie zatrzyma

16 Przykład Udowodnijmy, że jeśli k>0, to po instrukcji j:=k+1 mamy j>0 Ponieważ mamy po prawej stronie instrukcji przypisania wyrażenie k+1, więc musimy warunek początkowy zapisać w równoważnej formie, w której miejsce zmiennej k zajmuje wyrażenie k+1 Zatem jest k>0 równoważne k+1>1 i stosując regułę dla instrukcji przypisania otrzymujemy, że j>1 co akurat w przypadku zmiennych całkowitych jest równoważne j>0

17 Poprawność algorytmów Jeśli program jest częściowo poprawny i ma własność stopu jest gwarancja uzyskania żądanego wyniku Jak zatem wywnioskować, czy program się zatrzyma Metoda opracowana przez Roberta Floyda w latach sześćdziesiątych korzysta z zasady indukcji Chodzi o pokazanie, że pewna wartość, maleje w każdym obrocie pętli, a zmniejszanie to nie może się ciągnąć w nieskończoność

18 Złożoność algorytmów Złożoność obliczeniowa algorytmu jest określana ilością zasobów systemu liczącego potrzebnych do jego wykonania Podstawowymi zasobami są: czas procesora i obszar pamięci, czyli czas działania algorytmu oraz ilość zajętej pamięci Parametry te mają największy wpływ na złożoność obliczeniową

19 Złożoność algorytmów Wyróżniana jest –złożoność czasowa –złożoność pamięciowa Złożoność czasowa zależy od wszystkich jednostkowych czynności wykonywanych podczas realizacji algorytmu Jedne czynności wykonywane są wolniej inne szybciej

20 Czynności jednostkowe Zazwyczaj jako czynności jednostkowe przyjmuje się: wykonanie operacji arytmetycznej (dodawanie, odejmowanie, mnożenie, dzielenie i in.); nadanie wartości zmiennej; zbadanie relacji lub wykonanie operacji logicznej; wprowadzenie danej; i in.

21 Przykład Określ czynności jednostkowe obliczania wartości wyrażenia w(x) określonego wzorem: dla danej wartości x.

22 Rozwiązanie Wersja I (nieoptymalna). w = 3*x*x*x*x*x*x + 2*x*x*x*x + 5*x*x +10 Liczba operacji jednostkowych: - 1 przypisanie - 3 dodawania - 12 mnożeń. Razem 16 operacji jednostkowych

23 Wersja II. w = x * x w = ((3*w + 2)*w + 5)*w + 10 Liczba operacji jednostkowych: - 2 przypisania - 3 dodawania - 3 mnożenia. Razem 8 operacji jednostkowych.

24 Złożoność algorytmów często dokładne zliczanie operacji jednostkowych jest bardzo trudne lub niemożliwe i w związku z tym wyróżnia się tzw. operacje dominujące za operacje dominujące w danym algorytmie uważa się te, których liczba jest proporcjonalna do liczby wykonań wszystkich operacji jednostkowych w dowolnej komputerowej realizacji tego algorytmu za jednostkę złożoności czasowej przyjmuje się wykonanie jednej operacji dominującej

25 Złożoność algorytmów Złożoność pamięciowa określa zapotrzebowanie algorytmu na pamięć Za jednostkę złożoności pamięciowej przyjmuje się zwykle słowo pamięci komputera

26 Złożoność algorytmów Dla większości algorytmów trudno jest określić dokładnie złożoność obliczeniową, która między innymi w większości przypadków zależy od liczby danych wejściowych (rozmiaru danych) W takich przypadkach bywa wyróżniana złożoność pesymistyczna oraz złożoność oczekiwana algorytmu

27 Pesymistyczna złożoność czasowa Pesymistyczna złożoność czasowa algorytmu określana jest funkcją w(n): gdzie: n – rozmiar danych sup – kres górny zbioru t(d) – liczba operacji dominujących dla zestawu danych wejściowych d D n – zbiór zestawów danych wejściowych o rozmiarze n.

28 Oczekiwana złożoność czasowa Oczekiwana złożoność czasowa algorytmu określana jest funkcją A(n): gdzie: A(n) – wartość oczekiwana zmiennej losowej Xn Xn - wartością tej zmiennej losowej jest liczba operacji dominujących dla zestawu danych wejściowych d D n p nk – prawdopodobieństwo, że dla danych o rozmiarze n algorytm wykona k operacji dominujących.

29 Przykład Określ złożoność czasową algorytmu wyszukiwania elementu a w N elementowym ciągu L Rozwiązanie. Dane początkowe: N – liczba naturalna (N 0) a – poszukiwany element L – ciąg elementów { l j }, j=1,...,N

30 Założenia: N - rozmiar danych wejściowych (n=N), X n - zmienna losowa określająca prawdopodobieństwo wystąpienia a na danym miejscu w ciągu L. Element równy a może wystąpić na każdym miejscu jednakowym prawdopodobieństwem – rozkład jednostajny. Zatem p nk =1/N. Wynikiem algorytmu jest wartość logiczna q określona następująco: q = 0 (fałsz) gdy żaden z elementów l 1,..., l N nie jest równy a q 0 (prawda) gdy w ciągu L występuje element równy a

31 Przykład Operacja dominująca: l j a Rozwiązanie. Pesymistyczna złożoność czasowa: w(N)=N+1 Oczekiwana złożoność czasowa:. Z powyższych obliczeń wynika, że funkcja złożoności czasowej jest funkcją liniową operacji dominujących.

32 Własności poprawnie sformułowanego algorytmu 1) uniwersalność – pozwala na rozwiązanie całej klasy zadań; 2) ścisłość – zarówno czynności algorytmu, jak i kolejność ich wykonania jest opisana dostatecznie jasno i wyraźnie; 3) jednoznaczność – wielokrotne wykonywanie algorytmu dla identycznych danych prowadzi do takich samych wyników;

33 Własności poprawnie sformułowanego algorytmu 4) kompletność – algorytm uwzględnia wszystkie możliwe przypadki zdarzeń, jakie mogą wystąpić podczas jego wykonania; 5) skończoność – rozwiązanie zadania otrzymamy po skończonej ilości czynności (kroków algorytmu).

34 Przykład Znany algorytm wyznaczenia pierwiastków rzeczywistych trójmianu kwadratowego o współczynnikach rzeczywistych ma cechy poprawnego algorytmu, gdyż charakteryzują go : uniwersalność – algorytm rozwiązuje dowolne równanie kwadratowe określone przez trójkę liczb a, b, c gdzie a 0 oraz a,b,c ; a x 2 + b x + c = 0

35 Przykład ścisłość – opisany wzorem matematycznym sposób obliczenia delty jako pierwszy krok, badanie znaku delty i w zależności od uzyskanej odpowiedzi wyznaczenie pierwiastków przy pomocy wzorów matematycznych skończoność – po kilku krokach algorytmu otrzymamy wynik.

36 Przykład jednoznaczność – zawsze dla tych samych współczynników uzyskamy te same odpowiedzi, gwarantują nam to wzory matematyczne kompletność – wszystkie przypadki, czyli delta>0, delta=0 oraz delta<0 są uwzględnione

37 Sposoby zapisu algorytmu opis słowny zapis przy pomocy pseudo-kodu zapis graficzny (schematy) zapis w języku programowania

38 Opis słowny Opis słowny jest to zapis kolejnych kroków algorytmu w języku naturalnym np. polskim wyszczególniamy, jakie czynności należy wykonać zaznaczamy, kiedy powinien nastąpić koniec algorytmu

39 Przykład Dany jest: punkt płaszczyzny P(xp,yp) środek S(a,b) długość promienia r okręgu o równaniu (x-a) 2 +(y-b) 2 =r 2. Określić położenie punktu P względem tego okręgu.

40 Przykład Oznaczamy d - odległość punktu od okręgu. Jeżeli dr, to punkt leży na zewnątrz S r

41 Opis słowny algorytmu 1. Pobierz wartości xp,yp, a, b, r. 2. Oblicz odległość punktu według wzoru 3. Sprawdź, czy d

42 Opis algorytmu język naturalny jest ze swej natury niejednoznaczny zamek który???

43 Pseudo - kod Do zapisania algorytmu w postaci na wpół sformalizowanej służy pseudo-kod Jest to sposób zapisu wybranej metody oparty na języku naturalnym (polskim lub angielskim), ale narzucający przy tym pewną dyscyplinę w formułowaniu zdań Reguły dotyczące formułowania opisu postępowania są zaczerpnięte najczęściej z wybranego języka programowania i mają za zadanie zapewnić jednoznaczność zapisu

44 Pseudo - kod Podstawowymi elementami pseudo-kodu są zdania, nazywane inaczej instrukcjami Słowa, które są podstawą budowy tych zdań i zawsze muszą w nich wystąpić dla wyróżnienia są podkreślane i nazywane słowami kluczowymi Obecnie najbardziej rozpowszechniona jest notacja pascalo-podobna, czyli pseudo-kod oparty na regułach języka PASCAL

45 Pseudo - kod Każda instrukcja pseudo-kodu powinna zaczynać się od nowej linii W zapisie tym należy przestrzegać także wcięć i i czytelnego rozłożenia tekstu Instrukcje zagłębione w innych są wcięte o kilka znaków, żeby zależności pomiędzy nimi były widoczne graficznie

46 Pseudo - kod Nawiasy instrukcji grupujących powinny być zapisane tak, aby od razu było widać, które z nich tworzą parę Reguły te pozwalają zwiększyć czytelność zapisu ułatwiają analizę zapisanych algorytmów

47 Pseudo - kod Pseudo-kod umożliwia w łatwy sposób rozwijać zapisane już instrukcje poprzez dopisywanie nowych i grupowanie je w odpowiedni sposób Dzięki tej własności można przy jego pomocy czytelnie zapisywać złożone algorytmy

48 Pseudo-kod W tym zapisie możemy używać następujących zdań: instrukcja określająca czynność do wykonania, –nie posiada słów kluczowych, np. zwiększ wartość zmiennej x o jeden – instrukcje te oddzielane są od siebie słowem kluczowym a następnie

49 I :=x+y x ? y ? 3 7 x := 7 y := 3 i ? x:= y 3 x:=x

50 Pseudo-kod instrukcja wyboru (decyzyjna) zawiera strukturę opisującą decyzje podejmowane w algorytmie i ich skutki –wyboru dokonuje się na podstawie określonego kryterium (warunku), które jest wyrażeniem logicznym

51 Postacie instrukcji warunkowej –skrócona - posiada dwa słowa kluczowe i ma postać : jeżeli warunek to instrukcja np. jeżeli dziecko skończyło 6 lat to zapisz je do szkoły; –pełna – posiada trzy słowa kluczowe i ma postać: jeżeli warunek to instrukcja1 w przeciwnym wypadku instrukcja2 np. jeżeli kupiłeś samochód to zrób prawo jazdy w przeciwnym wypadku zatrudnij szofera

52 Instrukcja warunkowa – postać skrócona warunek jeżeli to instrukcja; ciąg dalszy programu; TRUE FALSE x>4 Większy!!!! ; czynności bez względu na to czy większy;

53 Instrukcja warunkowa – postać pełna jeżeli warunek instrukcja 1 wtedy w przeciwnym wypadku instrukcja 2; TRUE FALSE

54 to stan mojego konta > $ jeżeli w przeciwnym wypadku

55 instrukcja iteracyjna warunkowa opisuje sytuację, w której pewne czynności należy powtarzać dopóki podany warunek jest spełniony; powtarzanie czynności opisanych instrukcją kończy się, gdy warunek przestaje być prawdziwy, posiada ona dwa słowa kluczowe i ma postać: podczas, gdy warunek wykonuj instrukcja np. podczas, gdy jest w kasie gotówka wykonuj realizuj polecenie wypłaty

56 Instrukcja iteracyjna warunkowa podczas, gdy warunek wykonuj instrukcja MUSI zmieniać elementy warunku! godzina = 8.00 godzina < 10 8 TRUE PRACUJ! ZEGAR: godzina=godzina < 10 TRUE 10 10<10 FALSE PRZERWA! Na Kit-Kat

57 instrukcja iteracyjna może być używana w sytuacji, gdy pewne czynności należy wykonać określoną liczbę razy posiada dwa słowa kluczowe i ma postać: dla wykaz sytuacji wykonuj instrukcja np. dla każdego studenta z roku wykonuj wystaw ocenę końcową;

58 dla wykonuj wyprowadź na spacer Azor, ) King, Lady, Drab, ( Koniec spacerów! nie ma psów

59 Instrukcja iteracyjna wykonuj i= 1, dla odpal fajerwerk 2, 3, 4, 5 mam pięć fajerwerków, zatem: zabrakło fajerwerków

60 i>2 Instrukcja iteracyjna warunkowa wykonuj aż do momentu gdy i=1 wyświetl wartość i na ekranie 1 2 i= i+1 2 FALSE i> TRUE KONIEC!!

61 instrukcja grupująca instrukcja ta zamiast słów kluczowych używa symboli nawiasu klamrowego i ma postać: { instrukcja 1 a następnie instrukcja 2 a następnie... a następnie instrukcja n }

62 instrukcja grupująca służy do zaznaczenia, że daną grupę instrukcji trzeba traktować jako całość używana w sytuacji, gdy w danym miejscu reguły zapisu wymagają tylko jednego zdania, a potrzebna jest więcej niż jedna instrukcja

63 Zapis graficzny Zapis graficzny algorytmu można zrealizować w postaci: schematu blokowego zorientowanego; schematu zwartego NS (Nassi – Shneidermana )

64 Schemat zorientowany nie używa się go od 30 lat umożliwia niestrukturalny zapis algorytmu możliwy jest skok w dowolne miejsce schematu

65 TAK NIE WY STOP WE klatka początku algorytmu klatka kończąca algorytm pobieranie danych do przetwarzania, wyprowadzanie wyników, klatka operacji bezwarunkowej, klatka decyzyjna, klatka iteracyjna, START

66 Schemat blokowy zorientowany Poszczególne klatki schematu łączy się strzałkami, których zwrot określa kolejność wykonywanych kroków algorytmu Zapis w postaci schematu zorientowanego może prowadzić do programów niestrukturalnych, gdyż umożliwia przeskok z dowolnego miejsca algorytmu w inne Dlatego też powstały schematy zwarte NS, które zastąpiły schematy blokowe zorientowane

67 Schematy NS Schematy zwarte NS poprzez to, że składają się ze zwartych bloków uniemożliwiają zapis skoków wewnątrz algorytmu, zmuszając programistę do myślenia strukturalnego Sposób rozwiązania danego problemu zapisany w postaci schematu zwartego jest łatwiejszy do zrozumienia przez osoby postronne Zapis algorytmu w postaci schematu NS ułatwia sprawdzenie jego poprawności, a co za tym idzie, programy pisane według tego typu schematów zawierają mniej błędów

68 instrukcja imperatywna, określająca czynność do wykonania, której opis wpisuje się wewnątrz klatki wprowadzanie danych, wykaz danych do wprowadzenia wpisuje się wewnątrz klatki, w trójkącie można wpisać numer urządzenia wejścia wyprowadzanie wyników, wykaz wartości do wyprowadzenia wpisuje się wewnątrz klatki, w trójkącie można wpisać numer urządzenia wyjścia instrukcja decyzyjna (wyboru) jeśli, warunek Tak Nie instr1 instr2 warunek refren instrukcje refrenu wykonują się wtedy, gdy warunek jest spełniony refren warunek instrukcje refrenu wykonują się aż do chwili, gdy warunek zostanie spełniony czynność dane wyniki

69 Schematy NS zadanie, dla którego zostaną przedstawione algorytmy jego rozwiązania przy użyciu każdej z opisanych wyżej instrukcji iteracyjnych dzięki temu widoczne będą różnice w zastosowaniu każdej z nich należy zaznaczyć, iż są zadania, których algorytmy rozwiązań nie dadzą się zrealizować przy użyciu instrukcji iteracyjnej dla instrukcja ta jest więc węższa w zastosowaniu w porównaniu z dwoma pozostałymi instrukcjami iteracyjnymi

70 Schemat NS Obliczyć sumę i iloczyn podanych 4 liczb. Schemat zwarty algorytmu, który generuje żądany wynik przy użyciu: instrukcji iteracyjnej while rozwiązanie 1 instr. iteracyjnej dopóki rozwiązanie 2 instrukcji iteracyjnej dla rozwiązanie 3

71 S:=0,Il:=1 n:=1 n <= 3 Il:=Il*a S:= S+a a Podaj liczbę: n:= n+1 Rozwiązanie 1. Schemat obliczania sumy i iloczynu podanych trzech liczb {2,5,10} z wykorzystaniem pętli podczas gdy S Il n a ? n<= TRUE FALSE Suma=17 Iloczyn=100 KONIEC warunek pętli

72 S:=0,Il:=1 n:= n+1 n > 3 Il:=Il*a S:= S+a a Podaj liczbę: n:=1 Rozwiązanie 2. Schemat obliczania sumy i iloczynu podanych trzech liczb { 2,5,10} z wykorzystaniem pętli dopóki S Il n a warunek pętli n> FALSE TRUE Suma=17 Iloczyn=100 KONIEC

73 Il:=Il*a S:=S+a a Podaj liczbę: n = Il:=1 S:=0, Rozwiązanie 3.Schemat obliczania sumy i iloczynu podanych 3 liczb {2,5,10} z wykorzystaniem pętli dla licznik pętli n 1 a S Il Suma=17 Iloczyn=100 KONIEC


Pobierz ppt "Algorytmy dr Anna Kwiatkowska Instytut Informatyki."

Podobne prezentacje


Reklamy Google