Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Algorytmy, programy Przy opracowywaniu wykładu wykorzystano m.in.: Wstęp do informatyki.

Podobne prezentacje


Prezentacja na temat: "Algorytmy, programy Przy opracowywaniu wykładu wykorzystano m.in.: Wstęp do informatyki."— Zapis prezentacji:

1 Algorytmy, programy Przy opracowywaniu wykładu wykorzystano m.in.: Wstęp do informatyki (materiały Wyższej Szkoły Informatyki) J. Sikorski

2 Algorytmy Czym różni się komputer od kalkulatora?

3 Przepis Składniki Czynności Przypomnienie

4 Algorytmy - geneza Algorytmy w znaczeniu potocznym są listą czynności przeznaczonych do wykonania przez człowieka (bądź maszynę) na określonych obiektach (składniki przyrządzanej potrawy, współczynniki równania kwadratowego). Rezultatem wykonania tej listy jest wynik (przyrządzona potrawa, rozwiązanie równania). Słowo "algorytm" pochodzi od nazwiska Muhammed ibn Musa Alchwarizmi (أبو عبد الله محمد بن موسى الخوارزمي) matematyka perskiego z IX wieku Przypomnienie

5 Algorytmy - geneza U podstaw informatyki leżała arytmetyka. U podstaw algorytmiki logika matematyczna…

6 Algorytmy - geneza Jednym z pierwszych algorytmów był algorytm Euklidesa (znajdowanie największego wspólnego dzielnika). Przykład: (84,36)=(48,36)=(12,36)=(36,12)=(24,12)=(12,12)=(0,12)=(12,0)=12

7 Algorytmy - geneza Idea Ramona Lull z XIII wieku. Ten franciszkanin, filozof i teolog, podjął próbę stworzenia systemu logicznego, obejmującego wszystkie gałęzie wiedzy. Marzył on o języku, który byłby na tyle precyzyjny i jednoznaczny, by wszelkie zagadnienia w nim rozstrzygać. Początków informatyki należy więc upatrywać w chęci przetwarzania informacji.

8 Algorytmy - geneza Leibniz w 1680 roku pisał o rozstrzyganiu dysput naukowych za pomocą rachunku - wyobrażał sobie, że filozofowie sprawy sporne zamiast drogą dyskusji rozstrzygać powinni prowadząc obliczenia. Jego główną ideą było stworzenie języka, w którym wszystkie stwierdzenia zredukowane będą do stwierdzeń ściśle prawdziwych lub fałszywych, pozwalając na rozumowanie w oparciu o logikę formalną. Znów jestem na WSB?

9 Algorytmy - geneza W XVIII i XIX w. popularnością cieszyły się marionetki i androidy, cuda mechaniki, piszące, rysujące i grające na pianinie lalki, automaty do gry w szachy i warcaby. Urządzenia te sterowane były skomplikowanymi mechanizmami zegarowymi. Wymienne metalowe płytki, podobnie jak w pianoli wymienne wałki z zapisaną sekwencją naciskania klawiszy, pozwalały na wykonywanie różnych czynności. Płytki te zawierają algorytm ruchów androida. Szczególnie piękne, działające do dzisiejszych czasów, budowali szwajcarscy rzemieślnicy. Stworzony przez nich Skryba potrafi pisać (gęsim piórem), Rysownik robi portrety kilku postaci, a Muzyk gra na instrumencie poruszając przy tym głową i zmieniając wyraz twarzy. Tan android był fałszywy.

10 Człowiek a logika Niestety logika nie jest naturalnym sposobem rozumowania człowieka… Jest tzw. artefaktem kulturowym, związanym tylko z kulturami, w których rozwinęła się zdolność czytania i pisania. Wniosek Największa trudność w algorytmach polega na znalezieniu formalnego (ścisłego) opisu problemu!

11 Wracamy do informatyki… Zainteresowania informatyki dotyczą rozwiązywania zadań algorytmicznych, czyli zadań, dla których można znaleźć formalne sposoby postępowania, prowadzące do ich rozwiązania.

12 Wracamy do informatyki… Niektóre problemy dają się rozwiązać w sposób ścisły. Dla innych nie istnieje, lub trudno jest znaleźć ścisłe rozwiązanie. Dla takich problemów próbuje się znajdować algorytmy heurystyczne. Z takimi rozwiązaniami związane są też zagadnienia tzw. sztucznej inteligencji.

13 Zapisujemy algorytmy

14 Zmienna jest symbolem, oznaczającym określoną strukturę danych. W szczególności może to być np. liczba np. X := 100; X := X + 2; Pojęcie zmiennej Średnikiem oznaczamy tzw. instrukcję, czyli koniec pojedynczej operacji. Znak := w algorytmice oznacza operacje przypisania i nie należy go mylić z matematycznym znakiem = (równość)

15 Schematy blokowe Algorytmy wygodnie jest zapisywać w postaci diagramów czy schematów blokowych. Takie schematy przedstawiają w formie graficznej każdy krok wykonywanego algorytmu.

16 Schematy blokowe Schematy blokowe są tzw. metajęzykiem - jest to język ogólny, służy do opisywania algorytmów w taki sposób, by na jego podstawie można było je zaimplementować w każdym języku. Częściami składowymi schematów blokowych są proste figury geometryczne.

17 Schematy blokowe Ta figura oznacza początek lub koniec algorytmu. W każdym algorytmie musi się znaleźć dokładnie jedna taka figura z napisem "Start" oznaczająca początek algorytmu oraz dokładnie jedna figura z napisem "Stop" oznaczająca koniec algorytmu. START STOP

18 Proces Jest to figura oznaczająca proces. W jej obrębie umieszczamy wszelkie obliczenia lub podstawienia. To odbywa się więc właściwe przetwarzanie danych.

19 Warunek Romb symbolizuje blok decyzyjny. Umieszcza się w nim warunek (np. "x>2"). Z dwóch wierzchołków rombu prowadzą drogi TAK: gdy warunek jest spełniony oraz NIE: gdy warunek nie jest spełniony. TAK NIE warunek Warunki są jednymi z najważniejszych elementów algorytmów Np. Algorytm jedzenia chleba (1) Naszykuj kanapkę. (2) Ugryź kawałek chleba (3) Pogryź (4) Połknij (5) Popij (6) Jeśli masz ochotę na następny kawałek, to przejdź do (2) (7) Gdy nadal jesteś głodny to idź do (1) (8) Posprzątaj – zakończ algorytm.

20 Odczyt / zapis Równoległobok oznacza odczyt lub zapis danych. Oznacza więc tzw. operacje wejścia/wyjścia (np. Drukuj wynik na ekranie).

21 Funkcje, procedury Oznacza proces, który został wcześniej zdefiniowany. Możemy się więc do niego odwołać. W ten sposób oznaczane są np.. Funkcje i procedury.

22 Łączniki Łącznik, który oznacza punkt do którego prowadzi wiele dróg, które schodzą się w tym miejscu.

23 Złożoność algorytmów

24 Który algorytm jest lepszy? Do danego rozwiązania prowadzi zwykle więcej niż jedna droga. Jak więc oceniać alternatywne sposoby rozwiązania problemu? Podstawowym parametrem algorytmu jest jego złożoność.

25 Złożoność jest to ilość zasobów potrzebnych do działania algorytmu. W zależności od rozważanego zasobu mówimy o złożoności czasowej lub pamięciowej. Ilość potrzebnych zasobów będzie się różnić w zależności od konkretnego przypadku. Złożoność Złożoność czasowa mówi, ile kroków obliczeniowych trzeba wykonać dla zakończenia algorytmu. Za podstawę określania złożoności przyjmuje się najbardziej operację, której trzeba wykonać najwięcej. Np. mnożenie, dzielenie, pierwiastek… Jest to OPERACJA PODSTAWOWA Złożoność pamięciowa mówi, jaką maksymalnie część danych i wyników pośrednich trzeba w ramach danego algorytmu przechowywać w pamięci operacyjnej.

26 Złożoność Algorytmy efektywne dają rozwiązania w rozsądnym czasie. Co to jest rozsądny czas? –Milisekunda, godzina, rok…?

27 Przykład Na przyjęciu dyplomatycznym bawi się N ambasadorów. Ich uściski rąk są rejestro- wane przez fotografa po kolei. Ile czasu zajmie taka sesja zdjęciowa? Algorytm: Ambasador 1 podaje rękę amba- sadorom 2, 3, 4... aż do N. Ambasador 2 po-daje rękę ambasadorom 3,4,...,N. W ten spo-sób dochodzimy do ambasadorów N-1 i N, którzy jako ostatni wymieniają uścisk. Złożoność czasowa: N(N-1)/2 jednostek (suma ciągu arytmetycznego)

28 Przykład 3 liczby – a, b, c zapisane w trzech komórkach pamięci (zmiennych) x, y, z Zadanie: Przemieścić liczby tak, aby spełnione było (x) <= (y) <= (z) czyli uporządkować rosnąco. Np. (1, 5, 2); (2, 6, 1) itp.

29 Przykład Jakie są więc wszystkie możliwości uporządkowania? Aby rozwiązać zadanie będą nam potrzebne operacje testu oraz zamiany

30 Przykład Przedstawmy sekwencje testów, które pozwolą stwierdzić, z jakim przypadkiem mamy do czynienia?

31 Przykład Teraz, w zależności od konkretnego przypadku, wybieramy odpowiednią sekwencję zamian.

32 Przykład Ile wykonamy poszczególnych operacji? TestyZamiany Najgorzej Najlepiej

33 Przykład Czas wykonania tego zadania zależy więc od ułożenia danych wejściowych. Możemy określić przypadki najgorszego ułożenia i najlepszego ułożenia. Mówi się o pesymistycznej i optymistycznej złożoności. Dla algorytmów najczęściej przyjmuje się tzw. złożoność średnią.

34 Złożoność Problemy do których rozwiązania potrzebna jest podobna ilość zasobów łączymy w klasy złożoności.

35 Złożoność Bierzemy pod uwagę asymptotyczne tempo wzrostu, czyli to jak zachowuje się funkcja określająca złożoność dla odpowiednio dużych, granicznych rozmiarów danych wejściowych, ignorując zachowanie dla małych danych. Asymptota funkcja do której coraz bardziej zbliża się dana krzywa, gdy się wzdłuż niej przemieszczamy.

36 Złożoność W algorytmice najczęściej pojawia się tzw. O-notacja. Mówimy, że badana funkcja f jest co najwyżej rzędu g -> f(x) = O(g) – funkcja f(x) jest ograniczonaograniczona – funkcja f(x) jest ograniczona przez funkcję logarytmicznąfunkcję logarytmiczną – funkcja f(x) jest ograniczona przez funkcję liniowąfunkcję liniową – funkcja f(x) jest ograniczona przez funkcję potęgową lub wielomianfunkcję potęgowąwielomian – funkcja f(x) jest ograniczona przez funkcję wykładnicząfunkcję wykładniczą – funkcja f(x) jest ograniczona przez silnięsilnię IDEAŁ TO ZŁOŻONOŚĆ LINIOWA

37 Trudne zadania Dla pierwszoklasisty: 7 * 8 = ??? Dla faceta: Jak umówić się z Dodą? Dla studenta: wszystko jest łatwe…

38 Trudne zadania Czy istnieją zadania trudne dla komputerów?

39 Baaardzo trudne zadania - NP Problem P to problem decyzyjny, dla którego rozwiązanie można znaleźć w czasie wielomianowym. Problem NP to problem decyzyjny, dla którego rozwiązanie można zweryfikować w czasie wielomianowym.

40 Baaardzo trudne zadania - NP Przykłady problemów NP. – układanki 2D

41 Baaardzo trudne zadania - NP Przykłady problemów NP. – problem komiwojażera

42 Baaardzo trudne zadania - NP Przykłady problemów NP. – droga Hamiltona

43 Baaardzo trudne zadania - NP Przykłady problemów NP. – przydział ograniczonego miejsca

44 Baaardzo trudne zadania - NP Pytanie, czy klasa P jest tym samym, co NP jest prawdopodobnie najważniejszym otwartym problemem w całej teorii informatyki. Dla pierwszej osoby, która rozwiąże ten problem przewidziano nagrodę w wysokości miliona dolarów

45 Struktury danych Algorytmy wymagają danych początkowych i tworzą nowe dane.

46 Co to są dane? Znamy już wstępnie pojęcie tzw. zmiennej… Ogólnie dane są zdefiniowane jako to wszystko co może być przetwarzane umysłowo lub komputerowo. Są to więc informacje, które posiadają określoną strukturę.

47 Struktury danych Jedna z gałęzi informatyki zajmuje się strukturami danych, czyli organizacją danych różnych typów w logicznie powiązane ze sobą struktury.

48 Dane numeryczne: całkowite, rzeczywiste –posiadają określony zakres i dokładność Tablice Listy Stosy Kolejki Drzewa Grafy Sposoby reprezentacji danych Przykłady tablic Przykłady list Przykład stosu Przykład kolejki Przykład drzewa Przykład grafu

49 Przykłady algorytmów…

50 Wyszukiwanie najmniejszego elementu w zbiorze

51 Obliczanie wartości silnia (n!)

52 Sortowanie bąbelkowe

53 Pseudokod Czasem algorytmy zapisuje się w języku symbolicznym służącym jedynie do zapisu algorytmów, tzw. pseudokodzie. IF HoursWorked > NormalMax THEN Display overtime message ELSE Display regular time message ENDIF CASE Title OF Mr : Print "Mister" Mrs : Print "Missus" Miss : Print "Miss" Ms : Print "Mizz" Dr : Print "Doctor" ENDCASEv FOR X = 1 to 10 FOR Y = 1 to 10 IF gameBoard[X][Y] = 0 Do nothing ELSE CALL figureFound(X, Y) increment counter END IF END FOR

54 Podsumowanie, wnioski ?

55 Stabilność numeryczna Określa ona wrażliwość wyniku końcowego na błędy zaokrągleń w trakcie obliczeń oraz na dokładność danych początkowych. Przykłady: Komputer wykonuje operacje liczbowe ze skończoną precyzją. Może się okazać, że wynik działania to dalej Podobnie, realizacja dzielenia jako mnożenie przez odwrotność jest mało stabilna numerycznie dla argumentów bliskich zeru.

56 Problem STOPU Problemem stopu nazywamy sytuację, gdy dla danego algorytmu należy stwierdzić, czy program realizujący dany algorytm zatrzyma się. Pytanie może odnosić się albo do konkretnych danych wejściowych, albo do wszystkich możliwych danych. Jeśli program zatrzymuje się dla wszystkich danych, to mówimy, że ma własność stopu. Problem stopu jest często bardzo trudny do rozstrzygnięcia dla niektórych algorytmów.

57 Świat nie jest czarno-biały… W latach 60-tych naszego stulecia logikę rozszerzono na pojęcia logiki rozmytej (fuzzy logic) oraz zbiorów przybliżonyc. W obu przypadkach chodzi o opis wiedzy niepewnej, nieprecyzyjnej. W klasycznej teorii zbiorów obiekty należą do zbioru lub nie. W teorii zbiorów rozmytych możliwa jest częściowa przynależność do zbioru, np. zbiór osób określanych jako wysokie nie jest precyzyjnie określony i można o kimś powiedzieć, że jest w pewnym stopniu wysoki. Wnioski wyciągane w oparciu o logikę rozmytą nie mają takiego stopnia pewności jak wnioski oparte o logikę klasyczną, możliwe jest jednakże rozumowanie w warunkach niepewnej czy nieprecyzyjnie określonej informacji. W oparciu o logikę rozmytą działa coraz więcej urządzeń technicznych. Sposób rozumowania tych urządzeń i sposób komunikacji z nimi jest z punktu widzenia człowieka bardziej naturalny, gdyż logika rozmyta oprócz stwierdzeń tak i nie pozwala na używanie takich określeń, jak być może, chyba tak, prawie na pewno. Teoria zbiorów przybliżonych stworzona została przez profesora Zdzisława Pawlaka.


Pobierz ppt "Algorytmy, programy Przy opracowywaniu wykładu wykorzystano m.in.: Wstęp do informatyki."

Podobne prezentacje


Reklamy Google