Algorytmy i struktury danych 220208
Transkrypt
Algorytmy i struktury danych 220208
Algorytmy i struktury danych 22.02.08 Literatura 1. Wróblewski P. „ Algorytmy i struktury danych i techniki programowania” , Wydawnictwo Helion 2. Wirth N. „Algorytmy + Struktury Danych = Programy” 3. Comer :” Wprowadzenie do algorytmów” Definicja, Reprezentacje, cechy algorytmów, przykład najprostszego algorytmu 1.1 Algorytm Algorytm najprościej można przedstawid jako przepis na wykonani skooczonego ciągu działao doprowadzających do rozwiązania określonego zadania. Przykład: Sposób rozwiązania zadania możemy zapisad za pomocą algorytmu który krop po kroku w sposób ścisły określa czynności doprowadzające do rozwiązania zadnia. Należy podkreślid że jedno i to samo zadanie może byd rozwiązane za pomocą wielu algorytmów (dających identyczne rozwiązanie). Algorytm 1 Zadanie Algorytm 2 Rozwiązanie Algorytm k Dobrym przykładem zbioru algorytmów jest książka kucharska zawierająca przepisy na wykonanie konkretnych zadao. Sposoby reprezentacji algorytmu (modele algorytmu). Algorytmy możemy prezentowad za pomocą : a) Schematów blokowych b)Opisu formalnego (słownie lub matematycznie) c) W postaci skierowanego grafu d) Programu języku programowania e) Programu w pseudokodzie Najdokładniejszym opisem algorytmu (komp.) jest program (ukł. Elektroniczny) bowiem opisuje w sposób ścisły ciąg instrukcji (działao elementarnych), które należy wykonad alby uzyskad potrzebne rozwiązanie, inna forma reprezentacji algorytmu należy traktowad jako modele algorytmu które odwzorowują podstawowe czynności bez połączenia z zasobami ich realizacji. Dośd dokładnym jest opis w postaci schematu blokowego W trakcie wykładu będziemy korzystad z różnych modeli. 1.2 Cechy algorytmu Algorytm powinien spełniad pewne warunki a mianowicie: -Określonośd (ścisłośd algorytmu oznacza że w jego opisie używania działania *kroki+, które są jednakowo interpretowane przez różne osoby *symantycznie ścisłe i jednoznaczne+) -Jednoznacznośd (jednoznacznośd oznacza że w punktach podejmowania decyzji nie ma sytuacji „nie wiem”, włącznie z wyborem losowym , „zawsze wiemy co robid”, opis działao powinien byd ścisłym i kompletnym ) -Skooczonośd (skooczonośd algorytmu doprowadza się istnienia: Początku, kooca, i skooczonej liczby kroków, nie możemy zakładad że podejmowane działania mogą ciągnąd się w nieskooczonośd ). Algorytmy charakteryzują się pewnymi cechami złożoności mianowicie pamięciowej, obliczeniowej, i strukturalnej. Złożonośd obliczeniowa określa liczbą działao podstawowych (arytmetycznych, logicznych, przemieszczenia danych), którą formalnie potrzebuje algorytm do rozwiązania zadania, tutaj formalnie oznacza że nie bierzmy pod uwagę działao pomocniczych związanych z organizacją procesu obliczeniowego. Złożonośd pamięciowa określa się liczbą komórek pamięci danych, i stałych niezbędnych do prawidłowego działania algorytmu. Używamy następujących skrótów: 𝑻𝑨 𝒏 - może oznaczad że jest to liczba operacji dodawania w algorytmie A niezbedna do rozwiązania zadania o rozmiarze n 𝑳𝑨 (𝒏)-może byd liczba porównao 𝑽𝑫𝑨 (𝒏)-Liczba komórek pamięci 𝑽𝑺𝑨 𝒏 - przechowywanie tabel Złożonośd strukturalna – powiązana jest ze złożonością organizacji procesu implementacji algorytmu może się okazad że formalnie dobry algorytm (który to ma najmniejszą złożonośd obliczeniową), jest o tyle zawiły, że jego implementacja nie opłaca się zwykle tylko 40-60% czasu komputer wykonuje działania należące do czynności formalnie szacowanych w algorytmie, reszta czasu to czynności pomocnicze, rzecz jasna że złożonośd strukturalna jest dośd subiektywnym pojęciem powiązanym z doświadczeniem oraz umiejętnościami programisty. Reasumując można powiedzied że tylko praktyka (tzn. implementacja, weryfikacja, i testowanie mogą wykazad prawdziwą wydajnośd i skutecznośd algorytmu). 1.3 Algorytm wyboru wartośd najmniejszych w ciągu obiektów Zadanie 1. Dany jest ciąg obiektów 𝑎 𝑖 , 𝑖 = 1,2,3, … , 𝑛, na którym określona jest relacja uporządkowania tzn. dla dowolnych dwóch elementów tego ciągu możemy powiedzied który element jest mniejszym bądź równa się 𝑚= 𝑎 𝑖 𝑖 = 1,2,3, … 𝑛 W najprostszym, przypadku obiektami mogą byd liczby a relacją jest zwykłe porównanie. Ogólnie rzecz biorąc obiektami ciągu 𝑎(𝑖) mogą byd dowolne struktury np. np. dane osobowe dla których określone są pojęcia mniejsze większe (poprzedni, następny). Budowa algorytmu idea najprostszego i zarazem optymalnego rozwiązania 1. jest prosta, jako początkową wartośd m bierzemy 1 element ciągu 𝑎(𝑖), i sekwencyjnie porównujemy m z pozostałymi elementami ciągu, jeśli bieżący element ciągu 𝑎(𝑖) jest mniejszym od m to wartości m przypisujemy wartośd aid Algorytm 1.1 Krok 1. 𝑚 = 𝑎 1 ; Krok 2. Dla 𝑎 𝑖 , 𝑖 = 1,2,3 … , 𝑛 wykonaj : jeśli 𝑎 𝑖 < 𝑚 to 𝑚 = 𝑎 𝑖 . Krok 3. Koniec (break;) Wartośd m jest najmniejszym elementem ciągu 𝑎 𝑖 , 𝑖 = 1,2, ...,n Algorytmy potrzebuje wykonania 𝑃𝐴1.1 𝑛 = 𝑛 − 1 1.4 Blok schemat algorytmu 1.1 START Wprowadzamy 𝑛𝑎 𝑖 , 𝑖 = 1,2, … , 𝑛 𝑚=𝑎 1 𝑖=1 Wprowadzamy m 𝑖≤𝑛 STOP 𝑚 = 𝑎(𝑖) 𝑖 =𝑖+1 Jedno porównanie zaliczamy do formalnych drugie porównanie jest powiązane z organizacją 1.5 Opis algorytmu w postaci grafu Graf to zbiór wierzchołków które w dowolny sposób mogą byd połączone krawędziami, liczba wierzchołków nie jest określona, Jeśli każda krawędź posiada kierunek to graf jest skierowany wierzchołek może byd rejestrowy (komórką) i funkcyjnym (określad pewne działania). LEGENDA: 𝑚 = 𝑎(1) 𝑞 𝑎(2) Kropkami zaznaczamy wierzchołki rejestru 𝑝 𝑎(3) min {𝑝, 𝑞} 𝑎(4) … 𝑎(𝑛) 𝑚 = min {𝑎 𝑖 , 𝑖 = 1,2,3, . . , 𝑛} Wierzchołek funkcyjny