Documente Academic
Documente Profesional
Documente Cultură
SD 2016/2017
Continut
Problema cautarii
Cautare binara
FII, UAIC
Curs 9
SD 2016/2017
2 / 43
Problema cautarii
Aspectul static:
I
I
U multime univers, S U
operatia de cautare:
I
I
Instant
a: a U
Intrebare: a S?
Aspectul dinamic:
I
operatia de inserare
I
I
Intrare: S, x U
Iesire: S {x}
operatia de stergere
I
I
FII, UAIC
Intrare: S, x U
Iesire: S {x}
Curs 9
SD 2016/2017
3 / 43
Tip de date
Implementare C
autare Inserare S
tergere
Tablouri
O(n)
O(1)
O(n)
Liste nlantuite
O(n)
O(1)
O(1)
Tablouri
O(log n)
O(n)
O(n)
Liste nlantuite
O(n)
O(n)
O(1)
Lista liniara
FII, UAIC
Curs 9
SD 2016/2017
4 / 43
Continut
Problema cautarii
Cautare binara
FII, UAIC
Curs 9
SD 2016/2017
5 / 43
tabloul s[0..n 1]
FII, UAIC
Curs 9
SD 2016/2017
6 / 43
FII, UAIC
Curs 9
SD 2016/2017
7 / 43
T = T (0, n 1)
n=6
FII, UAIC
Curs 9
SD 2016/2017
8 / 43
Continut
Problema cautarii
Cautare binara
FII, UAIC
Curs 9
SD 2016/2017
9 / 43
Arbore binar de c
autare:
I
Valorile memorate n subarborele din stanga lui v sunt mai mici decat
valoarea din v.
FII, UAIC
Curs 9
SD 2016/2017
10 / 43
FII, UAIC
Curs 9
SD 2016/2017
11 / 43
Parcurgere n inordine
FII, UAIC
Curs 9
SD 2016/2017
12 / 43
Function poz(t, x)
begin
pt
while (p! = NULL and p val! = x) do
if (x < p val) then
p p stg
else
p p drp
return p
end
I
FII, UAIC
Curs 9
SD 2016/2017
13 / 43
Predecesor/Succesor
I
predecesorul lui 18
succesorul lui 18
FII, UAIC
Curs 9
SD 2016/2017
14 / 43
Succesor
Function succesor(t)
begin
if (t drp! = NULL) then
/*min(t drp)*/
p t drp
while (p stg ! = NULL) do
p p stg
return p
else
p pred[t]
while (p! = NULL and t == p drp) do
tp
p pred[p]
return p
end
FII, UAIC
Curs 9
SD 2016/2017
15 / 43
Curs 9
SD 2016/2017
16 / 43
Curs 9
SD 2016/2017
17 / 43
I
I
Determina nodul q care memoreaza cea mai mare valoare y mai mica
decat x (coboara din p la stanga si apoi coboara la dreapta cat se
poate).
Interschimba valorile din p si q.
S
terge q ca n cazul 1 sau 2.
FII, UAIC
Curs 9
SD 2016/2017
18 / 43
Cazul 2. Exemplu.
FII, UAIC
Curs 9
SD 2016/2017
19 / 43
cazul 1 sau 2
Procedure elimCaz1sau2(t, predp, p)
begin
if (p == t) then
/* t devine vid sau */
/* unicul fiu al lui t devine radacina */
else
if (p stg == NULL) then
/* inlocuieste in predp pe p cu p drp */
else
/* inlocuieste in predp pe p cu p stg */
end
FII, UAIC
Curs 9
SD 2016/2017
20 / 43
Cazul 3. Exemplu.
FII, UAIC
Curs 9
SD 2016/2017
21 / 43
Curs 9
SD 2016/2017
22 / 43
Complexitatea timp
I
FII, UAIC
Curs 9
SD 2016/2017
23 / 43
FII, UAIC
Curs 9
SD 2016/2017
24 / 43
Continut
Problema cautarii
Cautare binara
FII, UAIC
Curs 9
SD 2016/2017
25 / 43
FII, UAIC
Curs 9
SD 2016/2017
26 / 43
FII, UAIC
Curs 9
SD 2016/2017
27 / 43
Arbori AVL
(G. Adelson-Velskii, E.M. Landis 1962)
I
Exemplu:
Lema
Daca t este AVL-echilibrat cu n noduri interne atunci h(t) = (log n).
FII, UAIC
Curs 9
SD 2016/2017
28 / 43
Arbori AVL
Teorem
a
Clasa arborilor AVL-echilibrati este O(log n) stabila.
Algoritmul de inserare/stergere
I
FII, UAIC
Curs 9
SD 2016/2017
29 / 43
Rotatii
Rotatie dreapta simpla
Curs 9
SD 2016/2017
30 / 43
FII, UAIC
Curs 9
SD 2016/2017
31 / 43
FII, UAIC
Curs 9
SD 2016/2017
32 / 43
FII, UAIC
Curs 9
SD 2016/2017
33 / 43
Procedure rotatieStanga(x)
begin
y x drp
x drp y stg
y stg x
return y
end
I
FII, UAIC
Curs 9
SD 2016/2017
34 / 43
Rotatie dubla
FII, UAIC
Curs 9
SD 2016/2017
35 / 43
FII, UAIC
Curs 9
SD 2016/2017
36 / 43
FII, UAIC
Curs 9
SD 2016/2017
37 / 43
Inserare: algoritm
Procedure echilibrare(t, x)
begin
while (x! = NULL) do
/* actualizeaza inaltimea h(x) */
if (h(x stg )) 2 + h(x drp)) then
if (h(x stg stg )) h(x stg drp)) then
rotatieDreapta(t, x)
else
rotatieStanga(t, x stg ); rotatieDreapta(t, x)
else
if (h(x drp)) 2 + h(x stg )) then
if (h(x drp drp)) h(x drp stg )) then
rotatieStanga(t, x)
else
rotatieDreapta(t, x drp); rotatieStanga(t, x)
x pred[x]
end
FII, UAIC
Curs 9
SD 2016/2017
38 / 43
Exemplu: inserare
FII, UAIC
Curs 9
SD 2016/2017
39 / 43
FII, UAIC
Curs 9
SD 2016/2017
40 / 43
FII, UAIC
Curs 9
SD 2016/2017
41 / 43
Exemplu: inserare(cont.)
FII, UAIC
Curs 9
SD 2016/2017
42 / 43
Avantaje:
I
Dezavantaje:
I
Sunt preferati cand facem mai multe cautari si mai putine inserari si
stergeri
Curs 9
SD 2016/2017
43 / 43