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