You are on page 1of 4

Algorytmy i struktury danych teoria.

1) Zoono: (Przecitna - A(n); Pesymistyczna W(n) )


Wysz. liniowe:
>Wysz. bisekcyjne:
>Wysz. interpolacyjne:

A(n)=(1/2)*(n+1); W(n)=n
A(n)=W(n)=log2(n)
A(n)=log2(log2(n)); W(n)=n

Sort. flaga 01 i 012:


BubbleSort:
>InsertSort:
>Quicksort:
MergeSort:
HeapSort:
Insersort z bisekcja:
>BinSort:

A(n)=W(n)=n
A(n)=W(n)=(1/2)*(n^2)
A(n)=(1/4)*(n^2); W(n)=(1/2)*n^2+(1/2)*n-1
A(n)=1,4nlog2(n); W(n)=1/2)*(n^2)+(3/2)*n
A(n)=nlog2(n); W(n)<=nlog2(n)+n
W(n)=2n[log2(n)], []-sufit
A(n)=n*log2(n)
A(n)=(1/2)nlog2(n); W(n)=nlog2(n)-n

Alg. Naiwny:
Alg. Hoore'a:
Operacje dla BST:
Operacje na AVL:
Operacje na TRIE, RST:

A(n)<=k*n; W(n)<=m*(n-m+1)
A(n)<=4n
A(n)=1,4log2(n); W(n)<=n
W(n)=1,4log2(n)
W(n)=log2(n)

2) Ile razy(przecitnie) jest szybszy algorytm QuickSort w porwnaniu z InsertSort dla n=21^12
Quicksort: A(n)=1,4nlog2(n)
InsertSort: A(n)=(1/4)*(n^2)
I/Q = (0,25*21^12*21^12) / (1,4*21^12*log2(21^12)) = (0,25*21^12) / (16,8*4,392) = 0,25*21^12 / 73,78=
= 23926058780206 = 24*10^11;
Oglnie I/Q = n/(7*log2(n));
3) Podaj oszacowanie od dou dla problemu sortowania zbioru n-elementowego z implementacj tablicow.
W takim przypadku nie ma lepszego algorytmu ni algorytm sortowania przez porwnanie w ktrym jest wykonywanych rednio
(n*log2(n)-1,45*n) porwna.
4) Ile razy (przecitnie ) jest szybszy algorytm sortowania ze scalaniem(mergesort) w porwnaniu z metod
bbelkow dla n=2^16 ?
Bbelkowe zoono przecitna A(n) = *n*n;
Scalanie
zoono przecitna A(n) = n*log2(n);
S/B=(0,5*2^16*2^16)/(2^16*log2(2^16)=(0,5*2^16)/(16*log2(2))=2^16/32=65536/32=2048
5) Ile razy (przecitnie) jest szybszy algorytm quicksort w porwnaniu z insertsort dla n=2^24?
QuickSort zoono przecitna A(n)=1,4*n*log2(n) ;
InsertSort zoono przecitna A(n)=0,4*n*n;
Q/I=(0,25*2^24*2^24)/(1,4*2^24*log2(2^24))=(0,25*2^24)/(1,4*24*log2(2))=(0,25*2^24)/33,6=0,0074*2^24=124151,4
6) Definicja kopca zupenego, wysoko kopca zupenego.
Kopiec to drzewo binarne w wzach ktrego znajduj si elementy reprezentowanego zbioru S , klucze speniaj warunek :
jeeli x jest nastpnikiem y to y<= x.
Kopiec zupeny to zupene drzewo binarne tzn. poziomy do (n-1) s wypeniane cakowicie, a n-ty poziom jest wypeniany
sukcesywnie od lewej. Wysoko kopca zupenego o n wzach: h= |_log2(n)_|
Zoono pesymistyczna wyszukiwania informacji (wyszukiwanie przez kopcowanie): W(n) = 2n*log2(n)
7) Definicja kopca . Numery poprzednika i nastpnika.
Kopiec inaczej zwany stogiem jest szczeglnym przypadkiem drzewa binarnego, ktre spenia tzw. warunek kopca tzn. kady
nastpnik jest niewikszy od swego poprzednika (jeeli x jest nastpnikiem y to x<=y). Z warunku tego wynikaj szczeglne
wasnoci kopca:
- w korzeniu kopca znajduje si najwikszy element,
- na ciekach (poczeniach midzy wzami), od korzenia do licia, elementy s posortowane
nierosnco.
Reprezentacja kopca w tablicy :
Poziom 0 : t[1]; Poziom1 : t[2] t[3] ; Poziom2 : t[4]t[7] ; Poziom3 : t[8]t[15];
Element poprzedni w kopcu dla elementu o numerze K ma numer k DIV 2 ;
K div2

K
2K

2K+1

Algorytmy i struktury danych teoria.


8) Drzewo TRIE.
Jest odmiana BST. Elementy zbioru S s zapisywane w liciach ; wzy wewntrzne maj tylko adresy LEFT ,RIGTH oraz atrybut
logiczny KEY (key=true jeli x jest liciem; key=false jeli jest wzem wewntrznym). zoono A(n)=O(log2(n)).
9) Co to jest drzewo rozpinajce, podaj zastosowania minimalnego drzewa rozpinajcego.
Drzewo rozpinajce zawiera wszystkie wierzchoki grafu, a jego krawdzie s podzbiorem krawdzi grafu.
W minimalnym drzewie rozpinajcym suma wag krawdzi wchodzcych w skad drzewa jest moliwie najmniejsza.
Stosuje si je gdy naley poczy wybrane punkty tak, aby droga midzy nimi bya moliwie najkrtsza
10) Jakie znasz metody wyszukiwania wzorca w tekcie?
algorytmy: Naiwny, Kurth-Morris-Pratta, Boyera-Moorea, Karpa-Rabina
11) Jakie znasz metody usuwania kolizji przy funkcjach mieszajcych?
Metoda acuchowa, adresowanie liniowe i kwadratowe, podwjne mieszanie
12) Podaj jakie znasz metody wyszukiwania w tablicy. Liniowe, bisekcyjne,
13) Jakie znasz struktury dynamiczne? tablica(jedno lub wielowymiarowa), drzewo, stos, graf, lista
14) Idea algorytmu Grahama i jego zoono.
Algorytm Grahama to efektywny algorytm wyszukiwania otoczki wypukej skoczonego zbioru punktw paszczyzny; czasowa
zoono obliczeniowa: O(n*log(n)).
Algorytm grahama suy do znajdowania otoczki wypukej dla n punktw na paszczynie. Najpierw wybieramy dowolny punkt
wewntrz wielokta(otoczki wypukej) i umieszczamy w tym punkcie rodek ukadu wsprzdnych i obliczamy wsprzdne
pozostaych punktw w nowym ukadzie. Nastpnie porzdkujemy punkty leksykograficznie wzgldem wsprzdnych
biegunowych [(xi , yi)->(ai , ri^2)] (a kt nachylenia wektora wodzcego OPi do osi OX, ri-dugo OPi.)
Pniej przegldamy punkty na licie usuwajc te ktre nie s wierzchokami otoczki wypuke .List przegldamy w stron
przeciwn do ruchu wskazwek zegara. W celu wyeliminowania zbdnych punktw naley sprawdza zawsze 3 kolejne punkty
Q1,Q2,Q3 jeli Q2 ley wewntrz trjkta (O,Q1,Q3) to usu Q2 z otoczki ;jeli nie to zbadaj punkty Q2,Q3,Q4 .(zoono
O(n) ).
15) Idea algorytmu Karpa Rabina.
Algorytm Karpa-Rabina jest algorytmem dopasowania wzorca - suy do lokalizowania w tekcie okrelonego podcigu. Polega on
na znalezieniu wszystkich wystpie tekstu wzorzec, w tekcie tekst. Przyjmujemy ponadto, e: |wzorzec|=m, |tekst|=n oraz
n>=m.
W algorytmie Karpa-Rabina wykorzystuje si funkcj mieszajc h. Przegldane s wszystkie podcigi
y_i := y[i... i+m-1] dla i (nalecego do) [1... n-m], ale bezporednie porwnania podcigu y_i z x (ktre jest bardzo
kosztowne) ma miejsce tylko wtedy, gdy h(y_i) = h(x).
O efektywnoci algorytmu decyduje konstrukcja funkcji mieszajcej h.
Oczekiwana zoono obliczeniowa jest rzdu O(m + n).
16) Definicja grafu planarnego i oszacowanie jego liczby krawdzi.
Graf planarny graf, ktry mona narysowa na paszczynie tak, by krzywe obrazujce krawdzie grafu nie przecinay si ze
sob. Odwzorowanie grafu planarnego na paszczyzn o tej wasnoci nazywane jest jego rysunkiem paskim. Graf planarny o
zbiorze wierzchokw i krawdzi zdefiniowanym poprzez rysunek paski nazywany jest grafem paskim.
Graf planarny o n wierzchokach ma 3n-6 krawdzi.
17) Drzewo AVL. Oszacowanie wysokoci AVL.Co to jest atrybut wierzchoka? Na czym polega rotacja pojedyncza?
Na czym polega rotacja podwjna?
Drzewo AVL, nazywane rwnie drzewem dopuszczalnym, to drzewo poszukiwa binarnych (BST czyli takie e w kadym z
wzw drzewa przechowywana jest pewna warto, przy czym: warto przechowywana w wle jest wiksza od wartoci
przechowywanej w lewym synu i mniejsza od wartoci przechowywanej w prawym synu), w ktrym wysoko lewego i prawego
poddrzewa kadego wza rni si co najwyej o jeden. Skrt AVL pochodzi od nazwisk twrcw: Adelson-Velskii oraz Landis.
Oszacowanie wysokoci AVL:
Drzewo AVL pozostaje drzewem BST, co oznacza, e wierzchoki s uporzdkowane w okrelony sposb.
Wasnoci drzewa AVL gwarantuj, e pesymistyczny czas wyszukiwania elementu w drzewie o n wzach wynosi 1.44*log2(n),
podczas gdy dla niezrwnowaonego BST (w postaci listy) czas ten wynosi n.
Atrybut wierzchoka: Zrwnowaenie drzewa osiga si przypisujc kademu wzowi wspczynnik wywaenia(atrybut) , ktry
jest rwny rnicy wysokoci lewego i prawego poddrzewa. Moe wynosi 0, +1 lub -1. Wstawiajc lub usuwajc elementy
drzewa (tak aby zachowa wasnoci drzewa BST) modyfikuje si te wspczynnik wywaenia, a gdy przyjmie on niedozwolon
warto wykonuje specjaln operacj rotacji wzw, ktra przywraca zrwnowaenie.
Rotacja pojedyncza:
Z

Przy rotacji pojedynczej w prawo wze, na ktrym nastpio zaburzenie rwnowagi, wraz z caym prawym poddrzewem,
opuszczany jest w prawo, a jego lewy syn wraz z caym lewym poddrzewem przenoszony w miejsce zaburzenia. Jeli lewy syn

Algorytmy i struktury danych teoria.


posiada prawe poddrzewo zostaje ono podczepione (jako prawy syn) do elementu, w ktrym nastpio zaburzenie. Rotacja
pojedyncza w lewo jest rotacj symetryczn do rotacji pojedynczej w prawo.
Rotacja podwjna:
Na rotacj podwjn w prawo skada si rotacja pojedyncza w lewo na elemencie z oraz, w nastpnym kroku, rotacja pojedyncza
w prawo na elemencie y. Rotacja podwjna w lewo jest przypadkiem symetrycznym do rotacji podwjnej w prawo (najpierw
wykonujemy rotacj pojedyncz w prawo na prawym synu wierzchoka, w ktrym wystpio zaburzenie, a nastpnie wzgldem
wierzchoka z zaburzon wag dokonujemy rotacji pojedynczej w lewo).
Szczeglne wasnoci kopcw zostay wykorzystane do stworzenia algorytmy do sortowania zwanego HeapSort.
18) Algorytm Dikstry.
Algorytm Dijkstry suy do wyznaczania najmniejszej odlegoci od ustalonego wierzchoka s do wszystkich pozostaych w
skierowanym grafie, w odrnieniu jednak od Algorytmu Forda-Bellmana, graf wejciowy nie moe zawiera krawdzi o
ujemnych wagach.
W algorytmie tym pamitany jest zbir Q wierzchokw, dla ktrych nie obliczono jeszcze najkrtszych cieek, oraz wektor D[i]
odlegoci od wierzchoka s do i. Pocztkowo zbir Q zawiera wszystkie wierzchoki a wektor D jest pierwszym wierszem
macierzy wag krawdzi A.
19) Definicja drzewa RST:
Radix Search Tree: Binarne cyfrowe dyskretne drzewo przeszukiwa: jest drzewem binarnym z kluczem-liczb binarn w kadym
wle; rozgazienia s dokonywane na podstawie wartoci kolejnych bitw wyszukiwanego sowa przy czym dla kadego wza
na i-tej pozycji spenione s warunki:
1. Wszystkie wzy w lewym poddrzewie korzenia zawieraj klucze, ktrych i-ty bit jest 0
2. Wszystkie wzy w prawym poddrzewie korzenia zawieraj klucze, ktrych i-ty bit jest 1.

13 1101
9 1001

1101

0011

1001

3 0011
0001

1011

1111

20) Przykad funkcji mieszajcej.


Zamy ze klucze (liczby cakowite)pochodz ze zbioru S i te klucze mona przeliczy na liczby cakowite ze zbioru [o..n-1]
,funkcj to robic nazywamy funkcj haszujc (mieszajc).
Powinna by:
- atwo obliczalna;
- Kady indeks [ 0..m-1 ] powinien by jednakowo prawdopodobny.
Na og funkcj mieszajc definiujemy przez zoenie dwch przeksztace:
- transformacja klucza w jedno sowo maszynowe;
- definicja funkcji przeksztacajcej wskaniki tablicy z przedziau [o..m-1].
Przykad: liczbie przyporzdkowujemy reszt z dzielenia danej liczby przez jako liczb pierwsza np. 17;
H(1000)=1000 MOD 17 =14; H(2345)=2345 MOD 17 =16;
21) Jakie znasz metody usuwania kolizji przy zastosowaniu funkcji mieszajcej?
Metoda acuchowa: dla kadego wskanika (indeksu) tworzymy moliwo konstruowania listy elementw wchodzcych w
kolizj.
Metoda adresowania liniowego : (n<=m)elementy przechowywane s w tablicy mieszania H[0..m-1];a w razie kolizji naley uy
pierwszego wolnego miejsca w tablicy mieszania, jeli miejsce H[h(k)] jest zajte to szukamy miejsca wstawienia k pod
kolejnymi adresami.
Metoda mieszania podwjnego: zamiast przyrostu okrelonego przez pierwsza funkcje haszujc bierzemy przyrost okrelony
przez drug funkcj mieszajc tak e:
- h2(k)>0;
- h2(k) powinna by wzgldnie pierwsza z liczb m ;
- h2(k) istotnie rna od h1(k);
Przykad
- h1(k)=k MOD m;
- h2(k)= m-2- k MOD (m-2) ;
- m-liczba pierwsza.
22) dany jest n-kt na paszczynie oraz wsprzdne punktu p . Jak sprawdzi czy punkt p jest punktem
wewntrznym tego wielokta?
Naley wzi dany punkt P i wyprowadzi z niego pprost ,nastpnie sprawdzi czy nie przechodzi przez wierzchoek i czy
przecina si z krawdziami, jeli liczba krawdzi jest nieparzysta to P jest punktem wewntrznym. Zoono O(n) .

Algorytmy i struktury danych teoria.


22) Idea oraz zastosowanie KMR (Karpa-Millera-Rosenberga).
Jest to algorytm sucy do wyszukiwania wystpie wzorca w tekcie.
Najwaniejszym zastosowaniem idei Karpa Millera Rosenberga jest algorytm wyszukiwania wzorca w tekcie znany jako algorytm
Karpa Rabina, co nie oznacza, e jest nim!! Sama idea KMR polega na wyszukiwaniu wszystkich powtrze w tekcie.
w - sowo wejciowe; r1, rN
x - i-te podsowo sowa w o dugoci r; sw tych jest 1i|w|-r+1 gdzie 1i|w|
Np[i] =numer i podsowa w[i..i+p-1]
Np[i]=k wtt, gdy wzorzec xk wystpuje na pozycji i-tej
Np[i] - numer podsowa o dugoci p zaczynajcego si od pozycji i w tekcie w
Tablica N ma dugo |w|-p+1
Naley zauway, e N [i]=N [j] wtt, gdy N [i]=N [j] oraz, e Np[i+p]=Np[j+p]
Przykad:
w= abbababba
r=4 (szukamy zgodnych sw d. 4)
N =[1,2,2,1,2,1,2,2,1]
N =[1,3,2,1,2,1,3,2] -> ab-"1" ba-"2" bb-"2" aa-"nie wystpuje"
Tworzymy trjki postaci (N [i],N [i+2],i)
(1,2,1),(3,2,1),(2,2,3),(1,1,4),(2,3,5),(1,2,6) i ustalamy kolejno leksykograficzn:
(1,1,4),(1,2,1),(1,2,6),(2,2,3),(2,3,5),(3,1,2)
Zgodno:
N [4]=1
N [1]=2
N [6]=2
N [3]=3
N [5]=4
N [2]=5
-> N4=[2,5,3,1,4,2]
Jeeli r nie jest potga 2, tj. , to naley skorzysta z faktu:
Nr[i]=Nr[j] wtt, gdy (Nr1[i]=Nr1[j]) i (Nr-r1[i+r-r1]=Nr-r1[j+r-r1]).
Zoono obliczeniowa : n*log2(n)

You might also like