Académique Documents
Professionnel Documents
Culture Documents
informatyki
Repetytorium:
informacja
algorytmy,
modele danych
Abstrakcja
2
2
8.01.2013
3
3
8.01.2013
Prof.
Prof. drdrhab.
hab.
Elbieta
Elbieta
Richter-Ws
Richter-Ws
44
8.01.2013
5
5
8.01.2013
Bajt
Jest to najmniejsza adresowalna jednostka informacji pamici
komputerowej, skadajca si z bitw, w praktyce przyjmuje
si e jeden bajt to 8 bitw (zostao to uznane za standard w
1964 r.).
Jeden bajt moe reprezentowa zatem 28 = 256 rnych
wartoci, ktre mog oznacza zapisywane informacje.
Bajt oznaczany jest poprzez B.
Stosowanie przedrostkw kilo, mega, giga itp. jako do
okrelania odpowiednich potg liczby dwa (np. 210) jest
niezgodne z wytycznymi ukadu SI (np. kilo oznacza 1000, a
nie 1024).
W celu odrnienia przedrostkw o mnoniku 1000 od
przedrostkw o mnoniku 1024 (210), w styczniu 1997r.
pojawia si propozycja ujednoznacznienia opracowana przez
IEC (ang. International Electrotechnical Commission)
polegajca na dodawaniu litery "i" po symbolu przedrostka
dwjkowego, oraz "bi" po jego nazwie.
Prof. dr hab. Elbieta Richter-Ws
6
6
8.01.2013
Wielokrotnoci bajtw
Nazwa
Symbol
Mnonik
Nazwa
Symbol
Mnonik
Kilobajt
kB / KB
103 = 10001
Kibibajt
KiB
210 = 10241
Megabajt
MB
106 = 10002
Mebibajt
MiB
220 = 10242
Gigabajt
GB
109 = 10003
Gibibajt
GiB
230 = 10243
Terabajt
TB
1012 = 10004
Tebibajt
TiB
240 = 10244
7
7
8.01.2013
8
8
8.01.2013
System zmiennopozycyjny
Kad niezerow liczb rzeczywist
reprezentujemy za pomoc przyblienia
wymiernego w postaci pary (m, c), takich e:
m [-1, -)
( , 1]
9
9
8.01.2013
System zmiennopozycyjny
Liczba binarna zapisana w postaci cecha mantysa na dwch
bajtach:
Cecha
Mantysa
0000001111000000
Tutaj: c = 3, m = - 1.
W praktyce zwykle na cech przeznaczamy jeden bajt, na
mantys minimum trzy bajty.
Ilo bajtw przeznaczonych na cech decyduje o zakresie.
Ilo bajtw przeznaczona na mantys decyduje o bdzie.
10
10
8.01.2013
Bd obliczeniowy
Bd bezwzgldny: rnica midzy wartoci
zmierzona/obliczona a wartoci dokadn
W systemie staopozycyjnym obliczenia s
wykonywane ze staym max bdem bezwzgldnym
11
8.01.2013
Struktury danych i
algorytmy
Prof.
Prof. drdrhab.
hab.
Elbieta
Elbieta
Richter-Ws
Richter-Ws
12
12
8.01.2013
13
8.01.2013
14
8.01.2013
15
8.01.2013
Rodzaje algorytmw
Algorytmy mona dzieli ze wzgldu na czas
dziaania.
Algorytm liniowy:
Ma posta cigu krokw ktrych jest liniowa ilo (np.
staa albo proporcjonalna do liczby danych) ktre
musz zosta bezwarunkowo wykonane jeden po drugim.
Algorytm taki nie zawiera adnych warunkw ani
rozgazie: zaczyna si od podania zestawu danych,
nastpnie wykonywane s kolejne kroki wykonawcze, a
dochodzimy do wyniku
16
8.01.2013
Rodzaje algorytmw
Algorytm z rozgazieniem:
Wikszo algorytmw zawiera rozgazienia
17
8.01.2013
18
8.01.2013
8.01.2013
Algorytmy z powrotami
Przykadami tego typu algorytmw s gry.
Czsto moemy zdefiniowa jaki problem jako
poszukiwanie jakiego rozwizania wrd wielu moliwych
przypadkw.
Dana jest pewna przestrze stanw, przy czym stan jest
to sytuacja stanowica rozwizanie problemu albo mogca
prowadzi do rozwizania oraz sposb przechodzenia z
jednego stanu do drugiego.
Czasami mog istnie stany ktre nie prowadz do
rozwizania.
20
8.01.2013
Algorytmy z powrotami
Metoda powrotw
Wymaga zapamitania wszystkich wykonanych ruchw
czy te wszystkich odwiedzonych stanw aby moliwe byo
cofanie posuni.
Stanw mog by tysice lub miliony wic bezporednie
zastosowanie metody powrotw, mogce doprowadzi do
odwiedzenia wszystkich stanw, moe by zbyt kosztowne.
Inteligentny wybr nastpnego posunicia, funkcja
oceniajca, moe znacznie poprawi efektywno
algorytmu.
Np. aby unikn przegldania nieistotnych fragmentw
przestrzeni stanw.
21
8.01.2013
Wybr algorytmu
Regu jest e naley implementowa algorytmy
najprostsze, ktre wykonuj okrelone zadanie.
Prosty algorytm to
atwiejsza implementacja, czytelniejszy kod
atwo testowania
atwo pisania dokumentacji,.
22
8.01.2013
Efektywno algorytmu
Testy wzorcowe:
Podczas porwnywania dwch lub wicej programw
zaprojektowanych do wykonywania tego samego zadania,
opracowujemy niewielki zbir typowych danych
wejciowych ktre mog posuy jako dane wzorcowe
(ang. benchmark).
Powinny by one reprezentatywne i zakada si e
program dobrze dziaajcy dla danych wzorcowych bdzie
te dobrze dziaa dla wszystkich innych danych.
Np. test wzorcowy umoliwiajcy porwnanie algorytmw
sortujcych moe opiera si na jednym maym zbiorze
danych, np. zbir pierwszych 20 cyfr liczby ; jednym
rednim, np. zbir kodw pocztowych wojewdztwa
krakowskiego; oraz na duym zbiorze takim jak zbir
numerw telefonw z obszaru Krakowa i okolic.
Przydatne jest te sprawdzenie jak algorytm dziaa dla
cigu ju posortowanego (czsto dziaaj kiepsko).
Prof. dr hab. Elbieta Richter-Ws
23
8.01.2013
Efektywno algorytmu
Czas dziaania:
Oznaczamy przez funkcje T(n) liczb jednostek czasu,
ktre zajmuje wykonanie programu lub algorytmu w
przypadku problemu o rozmiarze n.
Funkcje te nazywamy czasem dziaania. Do czsto
czas dziaania zaley od konkretnych danych wejciowych,
nie tylko ich rozmiaru. W takim przypadku, funkcje T(n)
definiuje si jako najmniej korzystny przypadek z
punktu widzenia kosztw czasowych. Inn wyznaczan
wielkoci jest te czas redni, czyli redni dla rnych
danych wejciowych.
24
8.01.2013
Modele danych
Prof.
Prof. drdrhab.
hab.
Elbieta
Elbieta
Richter-Ws
Richter-Ws
25
25
8.01.2013
Modele danych
Modele danych s to abstrakcje wykorzystywane do
opisywania problemw.
W informatyce wyrniamy zazwyczaj dwa aspekty:
Wartoci ktre nasz obiekt moe przyjmowa.
Przykadowo wiele modeli danych zawiera obiekty przechowujce
wartoci cakowitoliczbowe. Ten aspekt modelu jest statyczny;
okrela bowiem wycznie grup wartoci przyjmowanych przez
obiekt.
Operacje na danych.
Przykadowo stosujemy zazwyczaj operacje dodawania liczb
cakowitych. Ten aspekt modelu nazywamy dynamicznym;
okrela bowiem metody wykorzystywane do operowania
wartociami oraz tworzenia nowych wartoci.
26
8.01.2013
27
8.01.2013
28
8.01.2013
8.01.2013
30
8.01.2013
LISTY
31
8.01.2013
a1
a2
an
32
8.01.2013
Podstawowa terminologia
Operacje na listach, moemy:
sortowa list czyli formalnie zastpowa dan list
inn list ktra powstaje przez wykonanie permutacji na
licie oryginalnej,
dzieli list na podlisty,
scala podlisty,
dodawa element do listy,
usuwa element z listy,
wyszuka element w licie.
33
8.01.2013
Lista jednokierunkowa
Wstawianie, wyszukiwanie, usuwanie:
Lista
Wstawianie
Usuwanie
Wyszukanie
Brak Duplikatw
n/2 n
n/2 n
n/2 n
Duplikaty
Lista
posortowana
m/2 m
n/2
n/2
n/2
34
8.01.2013
35
a1
a2
an
n-1
max-1
8.01.2013
Stos
Abstrakcyjny typ danych
= stos
Implementujca struktura danych
= lista jednokierunkowa, lista oparta na
tablicach
36
8.01.2013
37
8.01.2013
Kolejka
Abstrakcyjny typ danych
= kolejka
Implementujca struktura danych
= lista jednokierunkowa, lista oparta na
tablicach
38
8.01.2013
Abstrakcyjna
implementacja
Struktura danych
Sownik
Drzewa przeszukiwania
binarnego
Struktura
lewe dziecko prawe
dziecko
Kolejka priorytetowa
Zrwnowaone drzewo
czciowo
uporzdkowane
Kopiec
Sownik
Lista
Stos
Lista
Kolejka
Lista
1.
2.
1.
2.
1.
2.
39
Lista jednokierunkowa
Tablica mieszajca
Lista jednokierunkowa
Tablica
Lista jednokierunkowa
Tablica cykliczna
8.01.2013
ZBIORY
40
8.01.2013
Podstawowe definicje
W matematyce pojcie zbioru nie jest
zdefiniowane wprost.
Zamiast tego, podobnie jak punkt czy prosta w
geometrii, zbir jest zdefiniowany za pomoc
swoich wasnoci.
W szczeglnoci istnieje pojecie przynalenoci,
ktre jest sensowne tylko i wycznie dla zbiorw.
Jeli S jest zbiorem oraz x jest czymkolwiek,
zawsze moemy odpowiedzie na pytanie
Czy x naley do zbioru S?
Zbir S skada si wic z wszystkich takich
elementw x, dla ktrych x naley do zbioru S.
Prof. dr hab. Elbieta Richter-Ws
41
8.01.2013
Podstawowe definicje
Definicja za pomoc abstrakcji:
Wyliczenie elementw nalecych do zbioru nie jest
jedynym sposobem jego definiowania. Bardzo wygodne
jest wyjcie od definicji e istnieje zbir S oraz e jego
elementy speniaj wasno P, tzn. {x : x S oraz
P(x) } czyli zbir takich elementw x nalecych do
zbioru S, ktre speniaj wasno P
42
8.01.2013
Operacje na zbiorach
Jeeli S i T s zdarzeniami w przestrzeni
probabilistycznej, to suma, przecicie i rnica
43
8.01.2013
Zbiory a listy
Istotne rnice miedzy pojciem zbir
{x1, x2, , xn } a list L = (x1, x2, , xn):
S=
44
8.01.2013
45
8.01.2013
46
8.01.2013
Przykad z kartami
Zbir wszystkich kart koloru trefl
1111111111111000000000000000000000000000000000000000
47
8.01.2013
48
8.01.2013
49
8.01.2013
h(x)
a1
a2
an
B-1
Istnieje funkcja mieszajca (ang. hash function), ktra
jako argument pobiera element x i zwraca liczb cakowit z
przedziau 0 do B-1, gdzie B jest liczb komrek w tablicy
mieszajcej.
Wartoci zwracan przez h(x) jest komrka, w ktrej
umieszczamy element x.
Wane aby funkcja h(x) mieszaa, tzn. aby komrki
zawieray t sam przyblion liczb elementw.
Prof. dr hab. Elbieta Richter-Ws
50
8.01.2013
Drzewa
Istnieje wiele sytuacji w ktrych przetwarzane
informacje maj struktur hierarchiczn lub
zagniedon, jak drzewo genealogiczne lub
diagram struktury organizacyjnej.
Abstrakcje modelujce struktur
hierarchiczn nazywamy drzewem jest to
jeden z najbardziej podstawowych modeli
danych w informatyce.
8.01.2013
Podstawowa terminologia
Drzewa s zbiorami punktw, zwanych
wzami lub wierzchokami, oraz pocze,
zwanych krawdziami.
Krawd czy dwa rne wzy.
Aby struktura zbudowana z wzw
poczonych krawdziami bya drzewem musi
spenia pewne warunki:
W kadym drzewie wyrniamy jeden wze
zwany korzeniem n1 (ang. root)
Kady wze c nie bdcy korzeniem jest
poczony krawdzi z innym wzem zwanym
rodzicem p (ang. parent) wza c. Wze c
nazywamy take dzieckiem (ang. child) wza p.
Kady wze c nie bdcy korzeniem ma
dokadnie jednego rodzica.
Kady wze ma dowoln liczb dzieci.
Drzewo jest spjne (ang. connected) w tym
sensie e jeeli rozpoczniemy analiz od
dowolnego wza c nie bdcego korzeniem i
przejdziemy do rodzica tego wza, nastpnie do
rodzica tego rodzica, itd., osigniemy w kocu
korze.
n1
n2
n5
n3
n6
n4
n7
8.01.2013
T2
Tk
wyraeniem.
Reprezentujce go drzewo skada si z pojedynczego
wza, ktrego etykiet jest ten operand.
Indukcja: Jeli E1 oraz E2 s wyraeniami
reprezentowanymi odpowiednio przez drzewa T1, T2,
wyraenie (E1 + E2) reprezentowane jest przez drzewo
ktrego korzeniem jest wze o etykiecie +. Korze ten
ma dwoje dzieci, ktrego korzeniami s odpowiednio
korzenie drzew T1, T2.
+
T1
T2
E1 + E2
T1
( E1)
8.01.2013
10
*
+
x
+
10
( x + 10 )
+
10
( - ( x + 10 ) )
10
( y * - ( x + 10) )
8.01.2013
Reprezentacja tablicowa
Jednym z najprostszych sposobw reprezentowania drzewa jest
wykorzystanie dla kadego wza struktury skadajcej si z pola
lub pl reprezentujcych etykiet oraz tablicy wskanikw do
dzieci tego wza.
info
p0
p1
Pbf-1
Reprezentacje drzewa
W reprezentacji drzew zwanej skrajnie lewy
potomek-prawy element siostrzany (ang. leftmost-child-right-sibling), w kadym wle
umieszczamy jedynie wskaniki do skrajnie
lewego dziecka; wze nie zawiera wskanikw do
adnego ze swoich pozostaych dzieci.
Aby odnale drugi i wszystkie kolejne dzieci
wza n, tworzymy list jednokierunkowa tych
dzieci w ktrej kade dziecko c wskazuje na
znajdujce si bezporednio po jego prawej
stronie dziecko wza n.
Wskazany wze nazywamy prawym
elementem siostrzanym wza c.
8.01.2013
Reprezentacje drzewa
Drzewo zoone z 7 wzw
n1
n2
n5
n3
n6
n4
n2
n3
n4
n7
n5
n6
n7
info etykieta
leftmostChild informacja o wle
rightSibling cz listy
jednokierunkowej dzieci rodzica tego
wza
8.01.2013
Reprezentacje drzewa
Reprezentacja oparta na tablicy wskanikw
umoliwia nam dostp do i-tego dziecka dowolnego
wza w czasie O(1). Taka reprezentacja wie si
jednak ze znacznym marnotrawstwem przestrzeni
pamiciowej, jeli tylko kilka wzw ma wiele dzieci.
W takim wypadku wikszo wskanikw w tablicy
children bdzie rwna NULL.
Reprezentacja skrajnie lewy potomek-prawy
element siostrzany wymaga mniejszej przestrzeni
pamiciowej. Nie wymaga rwnie istnienia
maksymalnego czynnika rozgazienie wzw.
Moemy reprezentowa wzy z dowolna wartoci
tego czynnika, nie modyfikujc jednoczenie struktury
danych.
8.01.2013
Rekurencja w drzewach
Uyteczno drzew wynika z
liczby moliwych operacji
rekurencyjnych, ktre
moemy na nich wykona w
naturalny i jasny sposb
(chcemy drzewa przeglda).
Prosta rekurencja zwraca
etykiety wzw w porzdku
wzdunym (ang. pre-order
listing), czyli: korze, lewe
poddrzewo, prawe poddrzewo.
Inn powszechnie stosowan
metod do przegldania
wzw drzewa jest tzw.
przeszukiwanie wsteczne
(ang. post-order listing),
czyli lewe poddrzewo, prawe
poddrzewo, korze.
n1
n2
n5
n3
n6
n4
n7
8.01.2013
Drzewa binarne
W drzewie binarnym wze moe mie co najwyej dwoje
bezporednich potomkw.
Rekurencyjna definicja drzewa binarnego:
Podstawa:
Drzewo puste jest drzewem binarnym.
Indukcja:
Jeli r jest wzem oraz T1, T2 s drzewami binarnymi, istnieje
drzewo binarne z korzeniem r, lewym poddrzewem T1 i
prawym poddrzewem T2. Korze drzewa T1 jest lewym
dzieckiem wza r, chyba e T1 jest drzewem pustym. Podobnie
korze drzewa T2 jest prawym dzieckiem wza r, chyba e T2
jest drzewem pustym.
Wikszo terminologii wprowadzonej przy okazji drzew stosuje
si oczywicie te do drzew binarnych.
Drzewa binarne
Zdegenerowane
drzewo binarne
18
17
9
3
16
7
8.01.2013
20
10
9
3
26
11
21
29
13
8.01.2013
Graf
Graf to jest relacja binarna.
65
8.01.2013
Podstawowe pojcia
Graf skierowany (ang. directed graph)
Skada si z nastpujcych elementw:
Zbioru V wierzchokw (ang. nodes, vertices)
Relacji binarnej E na zbiorze V. Relacje E nazywa si
zbiorem krawdzi (ang. edges) grafu skierowanego.
Krawdzie stanowi zatem pary wierzchokw (u,v).
V = {0,1,2,3,4}
E = { (0,0), (0,1), (0,2), (1,3),
(2,0), (2,1), (2,4), (3,2),
(3,4), (4,1) }
66
8.01.2013
67
8.01.2013
1
68
8.01.2013
69
8.01.2013
60
16
Keokea
Hana
10
70
8.01.2013
Indukcja:
x
v
u
Prof. dr hab. Elbieta Richter-Ws
y
71
8.01.2013
72
8.01.2013
15
20
28
24
11
12
E
28
13
20
D
11
12
E
13
Drzewo rozpinajce
Graf nieskierowany
Prof. dr hab. Elbieta Richter-Ws
73
8.01.2013
Algorytm Kruskala
Najbardziej znany to algorytm Kruskala, ktry stanowi
proste rozszerzenie algorytmu znajdowania spjnych
skadowych. Wymagane zmiany to:
naley rozpatrywa krawdzie w kolejnoci zgodnej z rosnc
wartoci ich etykiet,
naley doczy krawd do drzewa rozpinajcego tylko w
takim wypadku gdy jej koce nale do dwch rnych
spjnych skadowych.
28
C
15
20
B
12
E 13
D
11
F
Graf nieskierowany
Prof. dr hab. Elbieta Richter-Ws
24
C
15(4)
(
24(5)
(
B
D
12((2)
11(1)
(
13(3)
(
E
F
Algorytm przeszukiwania w gb
Jest to podstawowa metoda badania grafw
skierowanych. Bardzo podobna do stosowanych dla drzew,
w ktrych startuje si od korzenia i rekurencyjnie bada
wierzchoki potomne kadego odwiedzonego wierzchoka.
Trudno polega na tym ze w grafie mog pojawia si
cykle Naley wobec tego znaczy wierzchoki ju
odwiedzone i nie wraca wicej do takich wierzchokw.
W celu uniknicia dwukrotnego odwiedzenia tego samego
wierzchoka jest on odpowiednio oznaczany wic graf w
trakcie jego badania zachowuje si podobnie do
drzewa.
W rzeczywistoci mona narysowa drzewo, ktrego
krawdzie rodzic-potomek bd niektrymi krawdziami
przeszukiwanego grafu G. Takie drzewo nosi nazw drzewa
przeszukiwania w gb (ang. depth-first-search) dla
danego grafu.
Prof. dr hab. Elbieta Richter-Ws
75
8.01.2013
Drzewo przeszukiwania w gb
6
5
krawd
wsteczna
76
8.01.2013
Algorytm Dijkstry
Traktujemy wierzchoek s jako
wierzchoek rdowy. W etapie
porednim wykonywania algorytmu
w grafie G istniej tzw. wierzchoki
ustalone (ang. settled), tzn. takie
dla ktrych znane s odlegoci
minimalne. W szczeglnoci zbir
takich wierzchokw zawiera
rwnie wierzchoek s.
Dla nieustalonego wierzchoka v
naley zapamita dugo
najkrtszej drogi specjalnej
(ang. special path) czyli takiej ktra
rozpoczyna si w wierzchoku
rdowym, wiedzie przez ustalone
wierzchoki, i na ostatnim etapie
przechodzi z obszaru ustalonego do
wierzchoka v.
Prof. dr hab. Elbieta Richter-Ws
77
Graf G
s
v
droga
specjalna
8.01.2013
Algorytm Dijkstry
Dla kadego wierzchoka u zapamitujemy warto
dist(u). Jeli u jest wierzchokiem ustalonym, to
dist(u) jest dugoci najkrtszej drogi ze rda do
wierzchoka u. Jeli u nie jest wierzchokiem
ustalonym, to dist(u) jest dugoci drogi specjalnej
ze rda do u.
78
8.01.2013
Algorytm Dijkstry
Etapy wykonania algorytmu Dijkstry
79
8.01.2013
Algorytmy grafowe
80
8.01.2013