background image

Podstawowe zagadnienia 

(często algorytmy) do 

oprogramowania dla 

Siebie

Dr Zdzisław Szczepanik

background image

Algorytmy na przestrzeni 

wieków

Przyjmij że masz skromne środki ale 

Jesteś zdecydowany wybudować 

Swój własny dom. Zaproponuj 

algorytm zbudowania tego domu.

Za  prekursora  algorytmów  komputerowych 
uznawana  jest  powszechnie  Ada  Augusta 
(1815- 1852) , hrabina Lovelace, córka lorda 
Byrona. Na pamiątkę jej wizji nazwano jeden 
z  nowoczesnych  języków  programowania 
wysokiego poziomu ADA.

background image

Zagadnienie 

komiwojażera

Znajdź najkrótszą trasę premiera przebiegającą przez 

wszystkie  polskie województwa w danym podziale 

administracyjnym

Założenie : mamy superkomputer wykonujący 10

11

 (100miliardów 

operacji / sec )

Liczba województw

       Czas znalezienia 

najkrótszej trasy

17

3,6 minuty

25

2*10

5

  lat

49

4*10

42

lat

Metoda obliczeń ;

n!

background image

Najlepszą koncepcją przyspieszenia 

pracy komputerów lub farm 

komputerowych jest obarczanie ich 

możliwie najmniejszą liczbą działań.

Szybki wniosek ?

background image

Kiedy zdefiniowano relację, 

powiedzmy na zbiorach A i B 

okazało się że tkwi tam pojęcie 

funkcji, które to pojęcie miało 

niesamowity wpływ na rozwój 

cywilizacji ludzkiej.

Trzeba w takim razie oprogramować sposoby 

obliczania wartości podstawowych i nie tylko 

podstawowych funkcji

0

,

0

,

x

dla

x

x

dla

x

x

0

,

1

0

,

0

0

,

1

)

(

x

dla

x

dla

x

dla

x

f

background image

Dla realizacji takich zadań warto gromadzić 
różne :

1. 

Schematy blokowe 

( graficzny sposób  

przedstawiania algorytmu ).

 

2.

Drzewa algorytmów 

( szczególny schemat 

blokowy  przyjmujący postać drzewa, z korzeniem 
u góry ).

3.

Algorytmy liniowe 

( lista kroków do wykonania 

zgodnie 

z kolejnością w jakiej występują –brak 

warunków- 

schemat Hornera). 

4.

Algorytmy z rozgałęzieniami 

( pojawiają się 

warunki –  równanie liniowe, kwadratowe, 3-go 
stopnia, układy 

równań liniowych, etc).

5.

Algorytmy z rozgałęzieniami ale dla 

( porządkowania 

trzech, czterech, pięciu,wielu 

liczb-struktury danych! ).

6.

Algorytmy iteracyjne

 ( zbiory o dowolnej 

liczbie 

danych, 

zbiory w algorytmach, 

wartownik w 

zbiorze (krańce w 

zbiorze), 

przeszukiwanie zbiorów w 

poszukiwaniu 

elementu, statystyki, szukanie lidera 

(więcej 

niż połowa 

elementów – głosy w wyborach), 

sprawiedliwy tenis ).  

background image

7.

Algorytmy porządkowania zbiorów o dowolnej 

liczbie 

elementów 

( metody bąbelkowe, 

porządkowanie przez 

wybór, kubełkowe, 

pozycyjne słów jednakowej i 

różnej długości ).

8.

Algorytmy Hornera, Euklidesa, Erastotenesa 

(pozycyjne systemy liczbowe – binarne, 

dziesiętne , 

szesnastkowe, szybkie obliczanie 

wartości  wielomianu, szukanie największego 
wspólnego 

dzielnika,najmniejszej wspólnej 

wielokrotnej, 

rozkład na czynniki pierwsze 

odsiew liczb złożonych 

(zostaw dwójkę i wykreśl 

inne podzielne przez 2, 

zostaw 3 wykreśl 

podzielne przez 3 etc. 2: 2, 3, 4, 5, 6, 

7,…), 

metoda Banacha – iteracja poszukiwania 
pierwiastka kwadratowego z liczby a 

x

i+1

=1/2 * (x

i

 + a / x

i

)

background image

9.

Algorytmy rekurencyjne

9.1.

   

x

i+1 

= 1 / 2 * (x

i

 + a / x

i

)

iteracja

9.2

w

n

(x) = w

n-1

(x) * x + a

n

9.3

w

n

(x) =

 

1

,

)

(

0

,

1

0

n

dla

a

x

x

w

n

dla

a

n

n

rekurencja 

3

......

2

,

1

......

,.........

1

2

1

k

F

F

k

F

k

k

k

Ciąg Fibonacciego

background image

10. Algorytm znajdowania zera funkcji 

metoda 

połowienia
przedziału.

11.

Szybkie algorytmy zagadnień już poznanych – 

tzw.  szybkie algorytmy porządkowania np.. 
Scalanie  ciągów już wcześniej uporządkowanych

Ciąg 1 :        1,      3, 5,   7,   10,     12 

Ciąg 2 : 

  1, 2,       6,   9,     11,     15, 17, 20 

Scalony : 1, 1, 2, 3, 5, 6, 7, 9, 10, 11, 12, 15, 17, 
20

Wszystko w ramach strategii dziel i 
zwyciężaj !!!!!!!!!!!!!!!

background image

Własności algorytmów.

1.

Poprawność.

2.  Skończoność.
3.

Efektywność

Tak  naprawdę  każda  z  tych  własności 
wymaga odrębnego dla danego zagadnienia 
po 

prostu 

dowodu. 

Nie 

oznacza 

to 

wyeliminowania  intuicji  ,  niemniej  bez 
metod formalnych trudno będzie się pokusić 
o  postęp  w  algorytmice,  a  ten  w  coraz 
większej  liczbie  odkrywanych  przestrzeni 
zastosowań  jest  niesłychanie  pożądany,  a 
jeszcze  należy  wspomnieć  o  konkurencji  w 
Świecie.

background image

Dziękuje za uwagę


Document Outline