notatek pl , Technologie informacyjne, algorytmy i struktury

background image

1

Algorytmy

i struktury danych

Od problemu do jego
rozwiązania

Sformułowanie
problemu

Rozwiązanie problemu

Przykład: Dany
jest ciąg liczb.
Znaleźć
największą z nich.

Niech max ma
wartość równą
pierwszemu
elementowi ciągu.
Porównaj max z
kolejnymi
elementami ciągu i
jeśli spotkasz
wartość większą,
przyjmij ją jako
nową wartość max.

Algorytm

to metoda postępowania, która prowadzi do

rozwiązania jakiegoś problemu.

background image

2

Algorytm

skończony, uporządkowany ciąg jasno

zdefiniowanych czynności, koniecznych do
wykonania dowolnego zadania

z określonej

klasy zadań.

Słowo "algorytm" pochodzi od nazwiska
Muhammeda Alchwarizmi - matematyka
perskiego z IX wieku.

Badaniem algorytmów zajmuje się algorytmika.

Algorytm może zostać zaimplementowany w
postaci programu komputerowego.

Oznaczmy przez:
We -

zestaw danych wejściowych

Wy -

zestaw danych wyjściowych

Algorytm jest rozumiany jako odwzorowanie O

, które

dla określonego zestawu We generuje zestaw Wy:
O: We → Wy,
gdzie liczności zbiorów We i Wy mogą być różne.

Algorytm

– definicja formalna

Dane

We

Algorytm

Wyniki

Wy

stan pamięci
przed
wykonaniem
algorytmu

stan
pamięci po
wykonaniu
algorytmu

background image

3

Przykład algorytmu I

Algorytm wyznaczania pola kwadratu o boku a:

Jako dane wejściowe pobierz wartość długości
boku kwadratu a

Oblicz wartość pola P = a

2

Zwróć obliczoną wartość pola kwadratu P

Przykład algorytmu II

Algorytm Euklidesa wyznaczania NWD:

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

Dane x =21, y =12.
(x,y) = (21,12)-> (9,12)-> (9,3)-> (6,3)-> (3,3)
Wynik 3

background image

4

Cechy algorytmu

Ogólność

Rozwiązywanie określonej klasy zadań

Skończoność

Rozwiązanie zadania w skończonej liczbie kroków

Określoność

Jednoznaczność operacji

Efektywność

Czas wykonania, zapotrzebowanie na pamięć

Sposoby zapisu algorytmu

Język naturalny

Prostota, szeroki zasób słownictwa, mała precyzja

Schematy blokowe

Zapis sformalizowany, brak możliwości
przedstawienia skomplikowanych algorytmów

Języki formalne

Najczęściej używane w praktyce, ścisłość zapisu

background image

5

Schematy blokowe

Proces

uprzednio

zdefiniowany

Zapis/odczyt

danych

Łącznik

stronicowy

Łącznik

międzystronicowy

Algorytm wyznaczania
iloczynu

background image

6

Algorytm wyznaczania
iloczynu

Algorytm wyznaczania
iloczynu

Język Pascal

y := 1;

for i := 1 to n do y := y * x [ i ];

background image

7

Klasyfikacja algorytmów
(wybrane kategorie)

algorytmy proste

– rozgałęzione

algorytmy cykliczne

– mieszane

algorytmy równoległe – sekwencyjne

algorytmy numeryczne

– algorytmy

nienumeryczne

algorytmy rekurencyjne

– algorytmy

iteracyjne

Algorytmy proste i
rozgałęzione

background image

8

Algorytmy cykliczne i
mieszane

Algorytm równoległy i
sekwencyjny

background image

9

Algorytm równoległy i
sekwencyjny

Algorytm rekurencyjny i
iteracyjny

background image

10

Rekurencja

Rekurencja albo rekursja -

odwoływanie się

np. funkcji lub definicji do samej siebie.

Ważne jest, aby kolejne wywołania funkcji
rekurencyjnej były realizowane dla kolejnych
wartości parametrów formalnych w taki sposób,
aby nie doszło do zjawiska „nieskończonej pętli
rekurencyjnych wywołań funkcji”

Obraz rekurencyjny

background image

11

Przykłady funkcji
rekurencyjnych

Silnia

Ciąg Fibonacciego

Silnia - Algorytm iteracyjny

Dane:
n - liczba rzeczywista
Szukane:
s = n! wartość silni liczby naturalnej.
Pomocnicze :
i - liczba naturalna (licznik).

START:
wczytaj liczbę n
s :=1
i := 0
jeśli i = n, to KONIEC
i := i +1;
s := s*i; WARUNEK;
KONIEC:
wyświetl liczbę s

background image

12

Silnia - Algorytm rekurencyjny

5!

– porównanie algorytmów

background image

13

Algorytmy zachłanne

Wykonują działanie które wydaje się najlepsze w
danej chwili, nie

uwzględniając tego co może się

stać w przyszłości. Zaletą jest to że nie traci czasu

na rozważanie co może się stać później.

Decyzja lokalnie optymalna.

Jak wydać resztę przy minimalnej ilości monet?: użyj

zawsze najpierw monetę o największej dopuszczalnej

wartości.

Jak znaleźć globalne maximum? Rozpocznij od
pewnej liczby, kolejno

powiększaj ją o ustaloną

wielkość tak długo jak funkcja wzrasta. Gdy wartość

funkcji zaczyna się zmniejszać przerwij i cofnij się do
ostatniej pozycji.

Algorytmy „dziel i zwyciężaj”

Dzielimy problem na mniejsze części tej samej postaci co
pierwotny.

P

odproblemy dzielimy dalej na coraz mniejsze, używając tej

samej metody, aż rozmiar problemu stanie się tak mały, że

rozwiązanie będzie oczywiste lub będzie można użyć jakiejś
innej

efektywnej metody rozwiązania.

Rozwiązania wszystkich podproblemów muszą być

połączone w celu utworzenia rozwiązania całego problemu.

Metoda zazwyczaj implementowana z zastosowaniem
technik rekurencyjnych.

Jak znaleźć minimum ciągu liczb?: Dzielimy ciąg na dwie części,

znajdujemy minimum w każdej z nich, bierzemy minimum z obu

części jako minimum ciągu.

Jak sortować ciąg liczb?: Dzielimy na dwie części, każdą osobno

sortujemy a następnie łączymy dwa uporządkowane ciągi

(scalamy).

background image

14

Upraszczanie algorytmów

1

1

15

15

18

18

3

33

x

1

x

2

y

1

y

2

s

1

s

2

przeniesienie

+

+

+

Algorytm dodawania
dwóch liczb
naturalnych

Upraszczanie algorytmów

background image

15

Jak porównywać algorytmy?

• prostota

• czytelność

• długość kodu

• poprawność

• czas realizacji

• zajętość pamięci

Idealny algorytm to taki,
który ma prosty kod,
jest napisany w ogólnie
dostępnym języku
programowania, łatwo
go zrozumieć, liczy
szybko, nie wymaga
dużo miejsca w pamięci
i zawsze daje
poprawne wyniki.

Koszt algorytmu

Miary kosztu:

• Liczba instrukcji

• liczba operacji
arytmetycznych

• liczba wywołań
procedury

• Liczba
zmiennych

• ilość miejsca
potrzebna dla
danych

Ogólnie: wybór miary zależy od typu problemu, rodzaju
rozwiązania.

background image

16

Efektywność algorytmów

Złożoność obliczeniowa

czas wykonania

Złożoność pamięciowa

Zapotrzebowanie na pamięć operacyjną

Zależy od

Rozmiaru danych wejściowych

Rodzaju danych wejściowych

Efektywność algorytmów

Sortowanie

a < b < c

background image

17

Sortowanie - algorytm 1

4,5,6

6

5

4

3

2

1

Sortowanie - algorytm 1

Razem:

Średnio:

2,7

1,2

background image

18

Sortowanie - algorytm 2

y<=z

Sortowanie - algorytm 2

Średnio: 3,3

1,5

background image

19

Porównanie efektywności

Algorytm 1:

Pamięć

5 operacji testu

5 operacji permutacji

Czas (średni)

2,7 t

testu

+ 1,2 t

permutacji

Algorytm 2:

Pamięć

2 operacje testu

2 operacje permutacji

Czas (średni)

3,3 t

testu

+ 1,5 t

permutacji

Operacje dominujące

Mnożenie macierzy

Wyszukiwanie elementu w tablicy

Sortowanie

Mając dany algorytm, konkretne środowisko i konkretne
dane możemy policzyć liczbę operacji dominujących.

Operacje + , *

porównywanie

Koszt algorytmu dla danych D

n

:

algorytm

dane

t(

α ,I)

background image

20

Szacowanie złożoności
obliczeniowej

α - algorytm rozwiązujący decyzyjny problem Π ;

D

n

-

zbiór danych rozmiaru n dla rozważanego problemu;

t(α , I) - liczba operacji potrzebna do rozwiązania problemu Π
dla konkretnych danych I

D

n

przy pomocy algorytmu

α.

Pesymistyczna złożoność obliczeniowa:

W(

α ,

n) = max{t(

α ,

I): I

D

n

}

Średnia złożoność obliczeniowa:

W(

α ,

n) = Σ{p(I)·t(

α ,

I): I

D

n

}

Szacowanie złożoności
obliczeniowej

Mówimy, że algorytm α ma złożoność czasową:

wielomianową

wttw T(

α,n)=

(n

b

) b

N

wykładniczą

wttw T(

α,n) =

(a

n

) a

R+

liniową

wttw T(

α,n)=

(n)

kwadratową

wttw T(

α,n)=

(n

2

)

logarytmiczną

wttw T(

α,n)=

(lg n)

background image

21

Rząd złożoności obliczeniowej

Rząd złożoności obliczeniowej

background image

22

Rząd złożoności obliczeniowej

Struktury danych

Struktury są „pojemnikami na dane”, które gromadzą
dane

i układają je w odpowiedni sposób

Na strukturach danych operują algorytmy

Podstawowe struktury danych to:

rekord (struktura)

tablica

lista

stos

kolejka

drzewo (drzewo binarne)

graf

background image

23

Rekord

W niektórych językach programowania nazywany

strukturą (ang. structure, struct, record)

Jest to obiekt programistyczny, grupujący dane

różnych typów

Posiada określone elementy (składowe), które mogą

być odczytywane i zmieniane

Odpowiednik rekordu w teorii relacyjnych baz danych
to krotka (wiersz tabeli)

Rekord -

przykład

Rekord typu pracownik

może zawierać np.:

Nazwisko

– element danych typu tekstowego

Imię - element danych typu tekstowego

Data urodzenia - rekord typu data

Data zatrudnienia - rekord typu data

Miejsce zamieszkania - rekord typu adres

stanowisko - dana typu tekstowego

Użyty tutaj rekord typu data może być definiowany jako:

Rok -

liczba całkowita lub tekst (4 cyfry)

Miesiąc - liczba całkowita lub tekst (2 cyfry)

Dzień - liczba całkowita lub tekst (2 cyfry)

background image

24

Tablica

Zbiór danych tego samego typu, w którym

poszczególne komórki adresowane są za

pomocą indeksów.

Rozmiar tablicy

jest albo ustalony z góry (tablice statyczne)

może się zmieniać w trakcie wykonywania programu
(tablice dynamiczne).

Odpowiednikiem tablicy dwuwymiarowej w
matematyce jest macierz.

4

3

7

3

8

4

6

9

7

Tab[1,2]

Tab[0,0]

Lista to liniowo uporządkowany zbiór
elementów, z których dowolny element można
usunąć oraz dodać w dowolnym miejscu.

Lista jednokierunkowa -

komórki zawierają

tylko wskaźniki do kolejnej komórki.

Lista dwukierunkowa -

komórki zawierają także

wskaźnik do poprzedniej komórki.

Lista

background image

25

Szczególne przypadki listy

stos

pobrać, odczytać i wstawić element można
tylko na końcu listy

kolejka

pobrać i odczytać element można tylko na
początku listy, a dodać na końcu

Algorytm wyszukiwania

Lista nieuporządkowana

Szukana wartość: 6

5; 1; 7; 8; 2; 3; 4; 6; 0; 9

8 sprawdzeń,

Średnio potrzeba n/2 sprawdzeń (n=10)

background image

26

Lista uporządkowana

Szukana wartość: 6

0; 1; 2; 3; 4; 5; 6; 7; 8; 9

4 sprawdzenia,

Średnio potrzeba ½ log

2

n sprawdzeń (n=10)

Algorytm wyszukiwania

1

2

3

4

1

2

3

Stos

LIFO, Last In, First Out;

ostatni na wejściu,

pierwszy na wyjściu

Jedynie ostatni element stosu, zwany

wierzchołkiem, jest w danym momencie

dostępny.

W wierzchołku odbywa się dołączanie

nowych elementów, również jedynie

wierzchołek można usunąć.

background image

27

Kolejka

FIFO (ang. First In, First Out) -

pierwszy na wejściu,

pierwszy na wyjściu

dołączać nowe dane można jedynie na koniec kolejki
a usuwać z początku

Drzewo

background image

28

Drzewo

Przykład zastosowania: indeksy w bazach danych
(B-drzewo)

Graf

nieskierowany

skierowany

background image

29

Macierz sąsiedztwa

1

2

3

4

5

1

0

1

1

0

1

2

1

0

1

1

1

3

1

1

0

1

0

4

0

1

1

0

1

5

1

1

0

1

0

Bibliografia

Algorytmy i struktury danych,
L. Banachowski, K. Diks, W. Rytter,
Wydawnictwa Naukowo - Techniczne, 2006.

Wprowadzenie do algorytmów,
Thomas H. Cormen, Charles E. Leiserson,
Ronald L. Rivest, Clifford Stein,
Wydawnictwa Naukowo - Techniczne, 2004.


Wyszukiwarka

Podobne podstrony:
cw 0 1, pwr, informatyka i zarządzanie, Informatyka, algorytmy i struktury danych
egzamin info, pwr, informatyka i zarządzanie, Informatyka, algorytmy i struktury danych, aisd kolokw
notatek pl w, technologia betonu, beton projekt
cw 0 1, pwr, informatyka i zarządzanie, Informatyka, algorytmy i struktury danych
informatyka algorytmy struktury danych i techniki programowania wydanie iv piotr wroblewski ebook
Algorytmy i struktury danych Wykład 1 Reprezentacja informacji w komputerze
ukl 74xx, Informatyka PWr, Algorytmy i Struktury Danych, Architektura Systemów Komputerowych, Archit
ALS - 001-000 - Zadania - ZAJECIA, Informatyka - uczelnia, WWSI i WAT, wwsi, SEM II, Algorytmy i Str
kolokwium1sciaga, Studia Informatyka 2011, Semestr 2, Algorytmy i struktury danych
ALS - 009-005 - Program Sortowanie INSERTION SORT, Informatyka - uczelnia, WWSI i WAT, wwsi, SEM II,
ALS - 002-001, Informatyka - uczelnia, WWSI i WAT, wwsi, SEM II, Algorytmy i Struktury Danych
Technologie informacyjne, Studia PŁ, Ochrona Środowiska, Informatyka, zagadnienia na egzamin
ALS - 004-000b - Zajęcia - STOS - LIFO - Ćwiczenie ONP, Informatyka - uczelnia, WWSI i WAT, wwsi, SE
I kolokwium, Informatyka PWr, Algorytmy i Struktury Danych, Algorytmy i Struktury Danych, kolokwia i
I kolokwium(1), Informatyka PWr, Algorytmy i Struktury Danych, Algorytmy i Struktury Danych, kolokwi
wyk.9, Informatyka PWr, Algorytmy i Struktury Danych, Architektura Systemów Komputerowych, Assembler
Sprawozdanie 2, Informatyka PWr, Algorytmy i Struktury Danych, Architektura Systemów Komputerowych,

więcej podobnych podstron