Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Algorytmy, programy Przy opracowywaniu wykładu wykorzystano m.in.:

Podobne prezentacje


Prezentacja na temat: "Algorytmy, programy Przy opracowywaniu wykładu wykorzystano m.in.:"— 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 Przypomnienie Przepis Składniki Czynności

4 Algorytmy - geneza Algorytmy w znaczeniu potocznym są listą czynności
Przypomnienie 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 Al Chuwarizmi, działając w Domu Nauk kalifa Al Mamuna w Bagdadzie, opublikował ważne dzieła matematyczne, wśród nich Hisab al dżabr w'al muqabala – traktat o rozwiązywaniu równań, z którego wzięła nazwę algebra – jeden z głównych działów matematyki. W traktacie tym, poza wprowadzeniem systemu zapisu pozycyjnego, zaczerpniętego od Hindusów, a zwanego arabskim, podał między innymi metody rozwiązywania równań kwadratowych. Metody te odwoływały się do pojęć geometrycznych; utożsamiano wtedy liczby i działania z miarami obiektów geometrycznych. Liczby rzeczywiste to były długości odcinków, dodawanie to było sklejanie odcinków, mnożenie odpowiadało wyliczaniu pola prostokąta o danych bokach, a pierwiastkowanie wyznaczaniu boku kwadratu o zadanym polu. Arabowie, podobnie jak starożytni Grecy, nie znali pojęcia liczby ujemnej, stąd, gdy dziś patrzymy na metody Al Chuwarizmiego, poza oczywistym pięknem, wydają się nam one nieco dziwaczne. Ale cóż – wtedy inaczej po prostu się nie dało.

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

6 (84,36)=(48,36)=(12,36)=(36,12)=(24,12)=(12,12)=(0,12)=(12,0)=12
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 Tan android był fałszywy. 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. Zdarzali się też oszuści, którzy ukrywali ludzi-operatorów, sterujących ruchami „robota”.

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”. Heurystyka – w logice umiejętność wykrywania nowych faktów oraz znajdywania związków między faktami, zwłaszcza z wykorzystaniem hipotez. Na podstawie istniejącej wiedzy stawia się hipotezy, których nie trzeba udowadniać. W informatyce metoda znajdowania rozwiązań, dla której nie ma gwarancji znalezienia rozwiązania optymalnego, a często nawet prawidłowego. Rozwiązań tych używa się np. wtedy, gdy pełny algorytm jest z przyczyn technicznych zbyt kosztowny, lub gdy jest nieznany (np. przy przewidywaniu pogody lub przy wykrywaniu niektórych zagrożeń komputerowych, takich jak wirusy lub robaki). Metody używa się też często do znajdowania rozwiązań przybliżonych, na podstawie których później wylicza się ostateczny rezultat pełnym algorytmem. To ostatnie zastosowanie szczególnie dotyczy przypadków, gdy heurystyka jest wykorzystywana do nakierowywania pełnego algorytmu ku optymalnemu rozwiązaniu, aby zmniejszyć czas działania programu w typowym przypadku bez poświęcania jakości rozwiązania (np. algorytm A*).

13 Zapisujemy algorytmy

14 Pojęcie zmiennej 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; Ś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 START STOP
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.

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 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. NIE TAK 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.

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ść 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ść 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ść 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 czyli uporządkować rosnąco.
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? Najlepiej Najgorzej
Testy Zamiany Najlepiej Najgorzej

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) IDEAŁ TO ZŁOŻONOŚĆ LINIOWA                  – funkcja f(x) jest ograniczona                       – funkcja f(x) jest ograniczona przez funkcję logarytmiczną                  – funkcja f(x) jest ograniczona przez funkcję liniową                                           – funkcja f(x) jest ograniczona przez funkcję potęgową lub wielomian                   – funkcja f(x) jest ograniczona przez funkcję wykładniczą                   – funkcja f(x) jest ograniczona przez silnię

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?
Wiele prostych w sformułowaniu zagadnień należy do zagadnień trudnych, np. „problem wędrującego komiwojażera”: jak znaleźć najkrótszą drogę, łączącą N miast odwiedzając każde tylko jeden raz.

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. (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

40 Baaardzo trudne zadania - NP
Przykłady problemów NP. – układanki 2D (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

41 Baaardzo trudne zadania - NP
Przykłady problemów NP. – problem komiwojażera (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

42 Baaardzo trudne zadania - NP
Przykłady problemów NP. – droga Hamiltona (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

43 Baaardzo trudne zadania - NP
Przykłady problemów NP. – przydział ograniczonego miejsca (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

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 (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

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 Sposoby reprezentacji danych
Przykład drzewa Przykład kolejki Dane numeryczne: całkowite, „rzeczywiste” posiadają określony zakres i dokładność Tablice Listy Stosy Kolejki Drzewa Grafy Przykłady list Przykład grafu Przykłady tablic Przykład stosu

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. 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 CASE Title OF Mr : Print "Mister" Mrs : Print "Missus" Miss : Print "Miss" Ms : Print "Mizz" Dr : Print "Doctor" ENDCASEv IF HoursWorked > NormalMax THEN Display overtime message ELSE Display regular time message ENDIF

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.:"

Podobne prezentacje


Reklamy Google