1 / 15 ALGORYMIKA 2 / 15 ALGORYMIKA Wprowadzenie do algorytmów. SAR 1. Podstawowe okrelenia. Algorytmika dział informatyki, zajmujcy si rónymi aspektami tworzenia i analizowania algorytmów. we: a,b,c delta:=b 2-4ac Algorytm delta>0 Program ródłowy Program wynikowy Rys. A. Kady program działa według okrelonego algorytmu. b delta x1 = 2 a b + delta x2 = 2 a x 0 b = 2 a Delta=0 wy: brak pierw. rzeczywistych Algorytm dokładny ( krok po kroku ) opis rozwizania postawionego problemu lub sposobu osignicia jakiego celu. Specyfikacja problemu (specyfikacja algorytmu) opisanie problemu przez podanie danych, z których korzysta algorytm oraz okrelenie wyniku, który ma by efektem działania algorytmu. W specyfikacji podajemy równie: - warunki, jakie powinny spełnia dane i wyniki, - ewentualne zalenoci midzy danymi i wynikami. wy: x 1,x 2 wy: x 0 SOP Rys. B. Schemat blokowy algorytmu obliczania pierwiastków równania kwadratowego. 2. Metody opisu algorytmów. a) Opis słowny Kolejne kroki algorytmu przedstawiamy za pomoc słów jzyka naturalnego. b) Pseudo-kod W opisie kolejnych kroków algorytmu łczymy jzyk naturalny (opis słowny) ze znanymi nam elementami składni wybranego jzyka programowania. Elementy schematu bloki: SAR SOP pocztek i koniec algorytmu blok wprowadzania i wyprowadzania danych Przykład 1. Algorytm obliczania pierwiastków równania kwadratowego. Krok 1: a podstawie współczynników równania kwadratowego oblicz warto delty: :=b*b-4*a*c. blok przeprowadzania oblicze blok podejmowania decyzji Krok 2: Jeli >0 to oblicz dwa pierwiastki: x1:=(-b-pierwiastek( ))/(2*a), x2:=(-b+pierwiastek( ))/(2*a); wypisz ich warto na ekran i zakocz działanie algorytmu. Krok 3: W przeciwnym wypadku, jeli =0 to oblicz jeden pierwiastek: x0:=-b/(2*a); wypisz jego warto na ekran i zakocz działanie algorytmu. Krok 4: W przeciwnym wypadku, (jeli <0) wypisz na ekran komunikat: brak pierwiastków rzeczywistych i zakocz działanie algorytmu. b) Drzewo a b Korze c) Składnia jzyka programowania a c b c Wierzchołki porednie 3. Graficzna reprezentacja algorytmów. a) Schemat blokowy (a) (c) (b) (c) Wierzchołki kocowe - licie Rys. C. Drzewo algorytmu wyznaczania najwikszej sporód trzech liczb.
3 / 15 ALGORYMIKA 4 / 15 ALGORYMIKA 5. Podział algorytmów. a) Algorytm liniowy Algorytm, w którym nie wystpuj bloki decyzyjne. SAR Algorytmy iteracyjne. Iteracja wielokrotne powtarzanie tej samej czynnoci (operacji). 1. Wielokrotne wykonywanie całego programu. we: r SAR pole:=r 2 obw:=2r wy: pole,obw SOP we: r pole:=r 2 obw:=2r wy: pole,obw Rys. D. Algorytm liniowy brak elementów decyzyjnych. b) Algorytm nieliniowy (warunkowy) Algorytm, w którym wystpuje, co najmniej jeden blok decyzyjny, tzw. algorytm z rozgałzieniami (przykłady na rys. B i rys. C). Koniec programu? (/) odp= wy: Cze SOP Rys. E. Algorytm iteracyjny powtarzanie całego programu po decyzji uytkownika. 2. Schemat Hornera - obliczanie wartoci wielomianu. a) Operacje dodawania i mnoenia w wielomianach. + * w(x) = ax 2 + bx + c 2 3 w(x) = ax 3 + bx 2 + cx + d 3 5 w(x) = ax 4 + bx 3 + cx 2 + dx + e 4 7 Po odpowiednich przekształceniach zapisu wielomianu ilo operacji mnoenia zmniejsza si. + * w(x) = ax 2 + bx + c = (ax + b)x + c 2 2 w(x) = ax 3 + bx 2 + cx + d = (ax 2 + bx + c)x + d = ((ax +b)x + c)x + d 3 3 w(x) = ax 4 + bx 3 + cx 2 + dx + e = (ax 3 + bx 2 + cx +d)x + e = ((ax 2 + bx + c)x + d)x + e = = (((ax +b)x + c)x + d)x + e 4 4
5 / 15 ALGORYMIKA 6 / 15 ALGORYMIKA b) Opracowanie algorytmu obliczania wartoci wielomianu. Dla wielomianu 3 stopnia: w 3 (x) = a 0 x 3 + a 1 x 2 + a 2 x + a 3 = (a 0 x 2 + a 1 x + a 2 )x + a 3 = ((a 0 x + a 1 )x + a 2 )x + a 3 wprowadzamy pomocnicz zmienn y i wykonujemy kolejne operacje przypisania (:=): SAR y := a 0 y := yx + a 1 y := yx + a 2 y := yx + a 3 y := yx + a i dla i=1..3 we: n; a 0,...,a n ; x y:=a 0 Dla wielomianu n-tego stopnia: w n (x) = a 0 x n + a 1 x n-1 + + a n-1 x + a n y := a 0 y := yx + a 1 y := yx + a 2... y := yx + a n-1 y := yx + a n y := yx + a i dla i=1..n wy: y SOP i>n y:=yx+a i n stopie wielomianu (nieujemna liczba całkowita), a 0,, a n współczynniki wielomianu (ilo współczynników: n-1), x warto argumentu. Wyniki: Warto wielomianu w(x) n-tego stopnia dla danej wartoci argumentu x. Słowny opis algorytmu: Krok 1: Przyjmij współczynnik a 0 wielomianu (stojcy przy argumencie x o najwyszej potdze) za warto pocztkow i przypisz do pomocniczej zmiennej y. / y:=a 0 / Krok 2: Oblicz n razy warto wyraenia y:=yx+a i dla i=1, 2,, n. Rys. F. Schemat blokowy algorytmu obliczania wartoci wielomianu (schemat Hornera). 3. Wyszukiwanie najwikszego (najmniejszego) elementu w zbiorze. a) Wstpne informacje. Odszukanie okrelonego elementu w zbiorze wymaga przejrzenia wszystkich jego elementów. W zwizku z tym musimy okreli ilo wszystkich elementów, tzw. moc zbioru. Wykonujemy to zwykle dwoma metodami: - poprzedzamy elementy zbioru liczb, która okrela ilo wszystkich elementów, lub - przyjmujemy okrelony element za wartownika, który nie naley do zbioru i wskazuje jego koniec. Dodatkowo zakładamy te, e zbiór nie moe by nieskoczony oraz e elementy zbioru nie s uporzdkowane. b) Algorytm wyszukiwania najwikszego elementu. n liczba naturalna okrelajca ilo liczb w zbiorze, x 1, x 2,, x n cig liczb zbioru. max najwiksza sporód liczb: x 1, x 2,, x n. Słowny opis algorytmu: Krok 1: Przyjmij pierwszy element zbioru (x 1 ) jako max [max:=x 1 ]. Krok 2: Dla kolejnych elementów x i (i = 1, 2,, n) sprawdzaj czy max jest mniejsze od x i [max<x 1 ] i jeli tak to przyjmij za max x i [max:=x 1 ].
7 / 15 ALGORYMIKA 8 / 15 ALGORYMIKA SAR we: n; x 0,...,x n max:=x 1 Algorytmy wyszukiwania danych. 1. Wyszukiwanie w zbiorze nieuporzdkowanym (liniowe). a[i] (i=1..n) nieuporzdkowana n-elementowa, jednowymiarowa tablica (a), x poszukiwany element w tablicy a. Połoenie (indeks i) elementu x w tablicy a lub informacja o braku elementu. i>n SAR max<x i we: a[i],i=1..n; x max:=x i wy: max SOP i>n Rys. G. Schemat blokowy algorytmu wyszukiwania najwikszego elementu. a[i]=x c) Złoono algorytmów wyszukiwania najwikszego lub najmniejszego elementu. Zgodnie z widocznym na rys. F schematem algorytmu odszukanie najwikszego bd najmniejszego elementu w zbiorze wymaga wykonania n-1 porówna, gdzie n jest iloci wszystkich elementów. Poniewa nie jest moliwe wykonanie mniejszej liczby porówna (dla poprawnego działania algorytmu), dlatego moemy powiedzie, e powyszy algorytm jest optymalny pod wzgldem złoonoci obliczeniowej. Optymalny, a wic najszybszy. wy: brak elementu wy: i WICZEIA: 1. Co naley zmieni w algorytmie umieszczonym na rys. G, aby odszuka element najmniejszy? 2. Uzupełnij schemat algorytmu z rys. G o moliwo odczytania pozycji, na której znajdował si poszukiwany element. 3. arysuj schemat blokowy algorytmu jednoczesnego wyszukiwania elementu najwikszego i najmniejszego. SOP Rys. H. Schemat blokowy algorytmu wyszukiwania liniowego. WICZEIA: 1. Uzupełnij schemat algorytmu z rys. H o moliwo wypisania wszystkich pozycji, na których znajdował si poszukiwany element. 2. Wyszukiwanie w zbiorze uporzdkowanym (binarne). a[i] (i=1..n) uporzdkowana n-elementowa, jednowymiarowa tablica (a), x poszukiwany element w tablicy a.
9 / 15 ALGORYMIKA 10 / 15 ALGORYMIKA Połoenie (indeks i) elementu x w tablicy a lub informacja o braku elementu. l, p tymczasowy lewy i prawy koniec zakresu, s tymczasowy rodek zakresu. SAR we: a[i],i=1..n; x l:=1; p:=n worzenie algorytmów przykłady. 1. Suma i rednia arytmetyczna. Przykładowy algorytm korzysta z elementu zwanego wartownikiem. Warto tego elementu jest znana uytkownikowi. Jej wprowadzenie koczy działanie algorytmu. x kolejno wprowadzane liczby (wartownikiem jest dowolna całkowita liczba ujemna). Suma s i rednia arytmetyczna sr wprowadzonych liczb. il ilo wprowadzonych liczb. SAR l>p s:=0; il:=0 s:=(l+p) div 2 we: x wy: brak elementu wy: s a[s]=x l:=s+1 a[s]<x p:=s-1 s:=s+x il:=il+1 x0 sr:=s/il wy: s,sr SOP SOP Rys. I. Schemat blokowy algorytmu wyszukiwania binarnego. Rys. J. Schemat blokowy algorytmu obliczania sumy i redniej arytmetycznej liczb. 2. Silnia. Zapis matematyczny: n! = 1 dla n = 0 (0! = 1) 123 n dla n 1 n liczba naturalna, z której obliczamy silni.
11 / 15 ALGORYMIKA 12 / 15 ALGORYMIKA s warto silni (n!). i przyjmujc kolejne wartoci (od 0 do n) zapewnia iteracj w algorytmie. SAR we: m,n SAR n 0 we: n s:=1 i:=0 r:=m mod n m:=n n:=r wy: m SOP in Rys. L. Schemat blokowy algorytmu obliczania najwikszego wspólnego dzielnika WD(m,n). wy: s s:=s*i SOP Rys. K. Schemat blokowy algorytmu obliczania silni (n!). ZADAIA: 1. Odszukaj lub przypomnij sobie pojcia: liczba pierwsza, liczba złoona, sito Eratostenesa. Spróbuj narysowa schemat blokowy algorytmu znajdujcego liczby pierwsze przy wykorzystaniu sita Eratostenesa. 2. W jaki sposób powstaj kolejne liczby Fibonacciego? Spróbuj przedstawi algorytm powstawania tych liczb w postaci schematu blokowego. 3. Algorytm Euklidesa. Algorytm ten odnajduje najwikszy wspólny dzielnik WD(m,n) dla dwóch liczb naturalnych m i n. p.: WD(160,96) WD(m,n) m n 160 = 196 + 64 96 = 164 + 32 64 = 232 + 0 m = qn + r q iloraz, czyli ile razy mieci si n w m r reszta (0 r < n) Jeli dana liczba jest wspólnym dzielnikiem m i n to jest równie dzielnikiem r. Moemy wic zastpi szukanie wspólnego dzielnika liczb m i n, szukaniem dzielnika liczb n i r. Operacj t powtarzamy do uzyskania reszty równej zero. Ostatnia niezerowa reszta z dzielenia jest szukanym najwikszym wspólnym dzielnikiem liczb m i n. n, m liczby naturalne (m n); WD(m,n) najwikszy wspólny dzielnik m i n.
13 / 15 ALGORYMIKA 14 / 15 ALGORYMIKA Algorytmy porzdkowania danych. W kolejnych trzech sposobach porzdkowania danych specyfikacja algorytmu przedstawia si nastpujco: a[i] (i=1..n) nieuporzdkowana n-elementowa, jednowymiarowa tablica (a), a[i] uporzdkowana tablica (a), 1. Metoda bbelkowa (ang. bubble sort). SAR zam zmienna logiczna przechowujca informacj o zamianie elementów (true/false). tymcz tymczasowo przechowywana warto wybranego elementu. 3. Sortowanie przez wybór (ang. selection sort). SAR we: a[i],i=1..n; we: a[i],i=1..n; in n<2 m:=i j:=i+1 SOP a[i]>a[i+1] zam:=false i<n n:=n-1 wy: a m:=j a[j]<a[m] j>n tymcz:=a[m] a[m]:=a[i] a[i]:=tymcz tymcz:=a[i] a[i]:=a[i+1] a[i+1]:=tymcz zam=false SOP j:=j+1 zam:=true Rys. O. Schemat blokowy algorytmu sortowania przez wybór (ang. selection sort). wy: a SOP m indeks elementu najmniejszego. j indeks ptli wewntrznej (przy wyszukiwania najmniejszego elementu) tymcz tymczasowo przechowywana warto wybranego elementu. Rys. M. Schemat blokowy algorytmu sortowania przez wybór (ang. selection sort).
15 / 15 ALGORYMIKA 2. Sortowanie przez wstawianie (ang. insertion sort). SAR we: a[i],i=1..n; i:=n-1 i0 tymcz:=a[i] j:=i+1 jn wy: a tymcz>a[j] a[j-1]:=a[j] j:=j+1 a[j-1]:=tymcz i:=i-1 SOP Rys.. Schemat blokowy algorytmu sortowania przez wstawianie (ang. insertion sort). j indeks elementów uporzdkowanych tymcz tymczasowo przechowywana warto wybranego elementu. ZADAIA: 1. Przedstawione powyej do popularne metody sortowania nie nale do najszybszych. Poszukaj informacji o innych sposobach porzdkowania danych, np.: sortowanie przez scalanie, sortowanie szybkie. 2. a czym polega metoda porzdkowania kubełkowego (koszykowego) i pozycyjnego. Jakiego rodzaju dane najczciej sortujemy tymi metodami?