1 / 31

ALGORYTMY i STRUKTURY DANYCH

ALGORYTMY i STRUKTURY DANYCH. WYKŁAD 01 dr Marek Siłuszyk WSFiZ. Plan wykładu:. Czego nie robimy na Wykładzie !!! Informacje ogólne Konkretna Literatura Rozkład materiału Co to jest AiST ? Czym się zajmuje ? Przykład ALGORYTMU. ZAKAZ. NIE WOLNO !!!. 1. UŻYWAĆ TELEFONU.

gaius
Télécharger la présentation

ALGORYTMY i STRUKTURY DANYCH

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ALGORYTMY i STRUKTURY DANYCH WYKŁAD 01 dr Marek Siłuszyk WSFiZ

  2. Plan wykładu: • Czego nie robimy na Wykładzie !!! • Informacje ogólne • Konkretna Literatura • Rozkład materiału • Co to jest AiST? • Czym się zajmuje ? • Przykład ALGORYTMU • ...

  3. ZAKAZ NIE WOLNO !!! 1. UŻYWAĆ TELEFONU 2. ŻUĆ GUMY

  4. Studenci [INFORMATYCY] powinni(czytaj muszą) BARDZODOBRZE znać ALGORYTMY i STRUKTURY DANYCH. • W tym celu przyda się znajomość następujących przedmiotów: • Matematykę {Analiza mat;Algebra lin.;...} • Metody Numeryczne • Programowanie (Delphi , C++, Java, ??? ) • ...

  5. Konkretna Literatura (1- 6): • Niklaus Wirth, Algorytmy + struktury danych = programy, WNT, Warszawa, 2002 • Banachowski L.; Diks K.; Rytter W., Algorytmy i struktury danych, WNT, Warszawa,1999 • Timofiejew A. Algorytmy i struktury danych w językach programowania, Wydawnictwo Akademii Podlaskiej, Siedlce, 2006 • Aho A. V.; Hopcroft J. E.; Ullman J. D. Programowanie i Analiza Algorytmów, Wydawnictwo HELION, Gliwice, 2003 • Ostanin A. Metody i Algorytmy Optymalizacji, Wydawnictwo Politechniki Białostockiej, Białystok, 2003 • Wróblewski P. Algorytmy struktury danych i techniki programowania, Wydawnictwo HELION, Gliwice, 1999

  6. Literatura Uzupełniająca (7- 14): • Fichtenholz G.M. - Rachunek różniczkowy i całkowy, 3 tomy, PWN, 1994. • Leja F. - Rachunek różniczkowy i całkowy, PWN, 1959 • Kisilewicz J., Język C++: programowanie obiektowe, Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław, 2002. • Simon R., Koorhan L., Cox K. Programowanie obiektowe w Visual Basic .NET dla każdego. Wydawnictwo HELION, Gliwice, 2003 • Lipski W., Kombinatoryka dla programistów. Warszawa, WNT, 1982 • M.Cichy, S. Szpakowicz, Pracownia programowania I, Wydawnictwa Uniwersytetu Warszawskiego, Warszawa 1985 • Harel D., Rzecz o istocie informatyki. Algorytmika, WNT, Warszawa, 2001 • ++ Builder 5. Vademecum profesjonalisty. Tom 1,2, Wydawnictwo HELION, 2001.

  7. PROŚCIUTKI PRZYKŁAD Rozwiązywanie zjawisk problemów, za pomocą odpowiedniego ALGORYTMU Jako przykład rozważmy zagadnienie fizyczne: Jak przedstawia się rozkład przestrzenny cząstek galaktycznego promieniowania kosmicznego ? W skrócie można to przedstawić np. tak

  8. Ile jest cząstek ? Problem [zagadnienie] Matematyka [równanie] ALGORYTM  Informatyka rozwiązanie

  9. PROGRAM WYKŁADU 1. Algorytmy komputerowe 2. Programowe typy danych 3. Złożone obiekty programowe 4. Reprezentacja danych 5. Operacje nad listami 6. Operacje nad grafami 7 .Operacje nad drzewami 8. Operacje nad sieciami 9. Algorytmy do przetwarzania danych 10. Algorytmy sortowania w tablicach 11. Algorytmy sortowania w plikach 12. Algorytmy wyszukiwania

  10. Algorytmy i struktury danych: Dane i operacje na danych, pojęcie typu. Poprawność i złożoność algorytmu. Metody układania algorytmów: Zstępująca, Dziel i rządź, ... Programowanie dynamiczne, Algorytmy zachłanne, Algorytmy z nawrotami. Wyszukiwanie i sortowanie. Abstrakcyjne struktury danych (lista, stos, kolejka, słownik, kolejka priorytetowa) i metody ich realizacji. Struktury drzewiaste. Grafy, sposoby ich reprezentacji, Podstawowe algorytmy grafowe.

  11. ZAŁOŻENIA I CELE Głównym celem wykładu jest nabycie wiedzy o najważniejszych „klasycznych” algorytmach opracowywania danych i metodach tworzenia złożonych struktur danych. Celem zajęć laboratoryjnych jest nabycie i opanowanie umiejętności programowania i korzystania z algorytmów opracowywania danych.

  12. WYKŁAD • Algorytmy komputerowe • definicja algorytmu • formy zapisu algorytmu • własności algorytmu (poprawność, skończoność, • złożoność obliczeniowa i efektywność praktyczna) • metody układania algorytmów (metody zstępująca, dziel i rządź, programowanie dynamiczne, algorytmyzachłanne, z nawrotami), • porównanie algorytmów • ocena złożoności algorytmu • interpretacja algorytmu w komputerze • pomiar czasu wykonania programów

  13. Rys Historyczny Termin ALGORYTM pochodzi od nazwiska perskiego pisarz-matematyka Abu Ja’far Mohammed ibn Musa Al.-khowarizmi {VIII-IX wiek n.e.}. Podał On klarowne reguły wyjaśniające krok po kroku zasady operacji arytmetycznych wykonywanych na liczbach dziesiętnych. Algorytm łączy się często ze słynnym greckim matematykiem Euklidesem {365-300 p.n.e.}. Bardzo znany jest przepis (wzór, algorytm, reguła, ...) na obliczanie największego wspólnego dzielnika dwóch liczb a i b (NWD)

  14. "Języki programowania pojawiają się i odchodzą,lecz algorytmy wytrzymują próbę czasu"Donald Knuth • Definicja ALGORYTMU: • Skończony ciąg/sekwencja reguł, które aplikuje się na skończonej liczbie danych, pozwalający rozwiązać zbliżone do siebie klasy problemów. • Zespół reguł charakterystycznych dla pewnych obliczeń lub czynności informatycznych.

  15. Algorytm - metoda postępowania Algorytm Dane Wyniki Algorytm to metoda postępowania, która prowadzi do rozwiązania jakiegoś problemu.

  16. Pracę komputera możemy podzielimy na 3 etapy: 3. wyprowadzanie wyników • Wprowadzanie • danych, 2. przetwarzanie, obliczenia ALGORYTMY

  17. Mój pierwszy ALGORYTM Algorytm, to skończony ciąg etapów, które pozwalają przekształcić dane informacje wejściowe w informacje wyjściowe. • Włącz gaz; • Zagotuj wodę; • Wsyp do szklanki kawę; • Zalej kawę wrzącą wodą; • Dosyp cukru, jeśli lubisz; • Poczekaj kilka minut; • Wypij kawę

  18. Schematy blokowe Schematy blokowe są tzw. metajęzykiem. Jest to język bardzo ogólny, służy do opisywania algorytmów w taki sposób, by na jego podstawie można było je zaimplementować w dowolnym języku. Schematy blokowe zbudowane są z prostych figur geometrycznych, np. prostokąt, romb, koło, równoległobok itd... W polach tych figur umieszczamy warunki oraz proste instrukcje, przy czym mogą być one związane z jakimś konkretnym językiem (np. symbolem instrukcji przypisania może być ":=" tak, jak w Pascalu lub "=" tak, jak w C) Czasami instrukcję przypisania zapisuje się jako strzałkę skierowaną od wartości przypisywanej do zmiennej.

  19. Oznaczenia: Poszczególne elementy schematu łączy się za pomocą strzałek. W większości przypadków blok ma jedną strzałkę wchodzącą i jedną wychodzącą, lecz są także wyjątki. 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. Błędem jest umieszczanie kilku stanów końcowych, zależnych od sposobu zakończenia programu. Blok symbolizujący początek algorytmu ma dokładnie jedną strzałkę wychodzącą a blok symbolizujący koniec ma co najmniej jedną strzałkę wchodzącą. Prostokąt oznaczająca proces. W obrębie tej figury umieszczamy wszelkie obliczenia lub podstawienia. Proces ma dokładnie jedną strzałkę wchodzącą i dokładnie jedną strzałkę wychodzącą.

  20. Romb symbolizuje blok decyzyjny. Umieszcza się w nim jakiś warunek (np. "x<0"). Z dwóch wybranych wierzchołków rombu wyprowadzamy dwie możliwe drogi: • gdy warunek jest spełniony (strzałkę wychodzącą z tego wierzchołka należy opatrzyć etykietą "Tak") • gdy warunek nie jest spełniony (etykieta „Nie") . • Każdy romb ma dokładnie jedną strzałkę wchodzącą oraz dokładnie dwie strzałki wychodzące. • Równoległobok jest stosowany do odczytu lub zapisu danych. W jego obrębie należy umieścić stosowną instrukcję np. Write(x) lub Read(x) (można też stosować opis słowny np. "Drukuj x na ekran"). Ma dokładnie jedną strzałkę wchodzącą i jedną wychodzącą. • Ta figura symbolizuje proces, który został już kiedyś zdefiniowany. Można ją porównać do procedury, którą definiuje się raz w programie, by następnie móc ją wielokrotnie wywoływać. Warunkiem użycia jest więc wcześniejsze zdefiniowanie procesu. Podobnie jak w przypadku zwykłego procesu i tu mamy jedno wejście i jedno wyjście.

  21. Koło symbolizuje tzw. łącznik stronicowy. Może się zdarzyć, że chcemy "przeskoczyć" z jednego miejsca na kartce na inne (by nie krzyżować strzałek). Możemy w takim wypadku posłużyć się łącznikiem. Umieszczamy w jednym miejscu łącznik z określonym symbolem w środku (cyfra, liter) i doprowadzamy do nie go strzałkę. Następnie w innym miejscu kartki umieszczamy drugi łącznik z takim samym symbolem w środku i wyprowadzamy z niego strzałkę. Łącznik jest często porównywany do teleportacji (z jednego miejsca na kartce do drugiego). Łączniki występują w parach, jeden ma tylko wejście a drugi wyjście. Ten symbol to łącznik między stronicowy. Działa analogicznie jak koło, lecz nie w obrębie strony. Przydatne w złożonych algorytmach, które nie mieszczą się na jednej kartce. Uwaga: jeśli stosujemy oba typy łączników w schemacie, to najlepiej jest stosować litery do identyfikowania jednych i liczby do drugich. Dzięki temu nie dojdzie do pomyłki.

  22. Schemat blokowy algorytmu obliczania wartości bezwzględnej danej liczby. Wartością bezwzględną liczby nieujemnej jest ta sama liczba, a wartością bezwzględną liczby ujemnej jest liczba do niej przeciwna. START Podaj: x TAK Wypisz: x X>=0 NIE Wypisz: -x STOP

  23. silnia

  24. Przykładowy algorytm opisany za pomocą schematu blokowego Zdefiniujmy iteracyjną wersję silni. Dla przypomnienia: rekurencyjna definicja silni wygląda następującosilnia(0)=1silnia(n)=n*silnia(n-1)

  25. Przykładowy program obliczający silnię napisany w Pascalu program silnia; var a:integer; i:byte; n:longint; begin repeat writeln ('Podaj liczbę’); readln(a); until (a >= 0); n:=1; for i:=1 to a do n:=n*i; writeln('Wynik to:',n); readln; end.

  26. Algorytm Euklidesa naprawdę nie wymyślił go Euklides, a Eudoksos z Knidos (IV wiek p.n.e.). Euklides jedynie algorytm ten zawarł w swoim dziele Elementy. Algorytm znajdowania największego wspólnego dzielnika (NWD) dwóch różnych liczb naturalnych. Dopóki x różne od y wykonuj:Jeżeli x>y, to odejmij y od x i wynik podstaw na x; W przeciwnym przypadku od y odejmij x i wynik podstaw na y;koniec dopóki wynikiem jest y Przykład dla algorytmu Euklidesa Dane x =21, y =12.(x,y) (21,12) (9,12) (9,3) (6,3) (3,3) Wynik 3 Dopóki x różne od y,od większej z liczb x, y odejmuj mniejszą. Wynikiem jest y.

  27. function NWD(a,b : integer) : integer; begin while a <> b do if a > b then a := a - b else b := b - a; NWD := a; end;

  28. Jak rozwiązać równanie liniowe ?

  29. Jak rozwiązać równanie kwadratowe ? Praca domowa

  30. Dziękuję za Uwagę Zapraszam na następny Wykład 

More Related