compendium [g.marciani] - ingegneria degli algoritmi
Post on 03-Jun-2018
219 Views
Preview:
TRANSCRIPT
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
1/42
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
2/42
P
pi
P
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
3/42
Tn
Tn
g(n) O(f(n)) g(n) f(n)
O(f(n)) = {g(n) : c >0 n0 0|g(n) cf(n)n n0}
g(n) (f(n)) g(n) f(n)
(f(n)) = {g(n) : c > 0 n0 0|g(n) cf(n)n n0}
g(n) (f(n)) g(n) f(n)
(f(n)) = {g(n) : c1, c2> 0 n0 0|c1f(n) g(n) c2f(n)n n0}
A
O(f(n)) (f(n)) (f(n)) n r r A n r(n) = O(f(n)) r(n) = (f(n)) r(n) = (f(n)) P O(f(n)) (f(n)) (f(n)) r A P O(f(n)) (f(n)) (f(n)) A P (f(n))
r
O(f(n))
g(n) (f(n)) g(n) O(f(n)) g(n) (f(n))
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
4/42
log2n n
|I|= O(log n)
T(n)
|I|
c log n |I| c log n
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
5/42
Tw(n) = max|I|,n{tempo(I)}
Tb(n) = min|I|,n{tempo(I)}
I n P{I}
Tm(n) =
{P{I} tempo(I)}
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
6/42
n
i
nbi
i f
nbi
logbn
i ai
T(n) =
logb
ni=0
ai f
nbi
n
a
n/b f(n)
n
bi = 1
n = bi
i= logbn
a
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
7/42
T(n) =
aT
nb
+f(n) se n >1
1 se n= 1
T(n) = (nlogba) f(n) = O(nlogba) > 0 nlogba
f(n)
T(n) = (nlogba log n) f(n) = O(nlogba)
T(n) = (f(n)) f(n) = (nlogba+) > 0af
nb
cf(n)c 0
n
(n) Tamm(n) = O(1)
M(n) = (n)
Tamm(n) = O(1) O(n)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
11/42
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
12/42
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
13/42
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
14/42
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
15/42
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
16/42
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
17/42
T(N,A ,r) N A NN
u
v=r (u, v) A
v u (u, v) A
u {v|v= figlio(u)}
r T(N,A ,r) padre(r)
u
u
v {w|padre(w) =padre(v)}
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
18/42
d
P n M(n) = O(n) P[v] = u (u, v) A v = r =P[v] = NULL
Tw(n) =O(1)
Tw(n) = O(n)
P (n+1) P[0] =NULL P[1] =r P[(d (p 1) + i)] =f iglioi(v) v p d
d n P (n + 1)
v Tw(n) = O(1) v Tw(n) = O(d) v v Tb(n) = O(1)
Tw(n) = O(|P| d)
n
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
19/42
M(n) = O(n)
NULL
Tw(n) = O(1)
M(n) =O(n) d
M(n) = O(n) d
NULL
S
S=
S
Tw(n) = O(n)
S
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
20/42
S
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
21/42
n
Cwt(n) = (n log n)
T nT
T n n! n
f log2f
HT(n) = (log n!) (n log n)
Cw(n) = (HT) = (n log n)
Cm(n) = (HT)
T
n T
n!
2n
ne
n n! 2n
ne
n
1 + 112n 1
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
22/42
Cw(n) = O(n2)
n
2
= n(n1)2
Cw(n) = (n2)
Cw(n) =
ici
ci
i
ci = n i 1 i [0, n 2]
C(n) =
n2i=0
(n i 1) =n1t=1
t= (n 1)(n 1 + 1)
2 = (n2)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
23/42
A n A[0 : n 1]
i
A[i : n1]
A[i] A A[0 :i]
A[i +1 :] i= n 2
Cw(n) = (n2)
Cw(n) =
iterazioni ci
ci
i
ci = n + 1 i [1, n 1]
Cw(n) =
n1i=1
(i+ 1) = (n 1) +n1t=1
t= (n 1)(n 1 + 1)
2 = (n2)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
24/42
A n A[0 : n 1] i S[0 : i1] A[pos] A[i] A[i] A[pos 1] A[pos] A[pos:] A
A[0 :i] A[i+ 1 :n 1]
i= n 1
Cw(n) = (n2)
A[0]...[n 1]n O(n)
A
i esima A[0 : n i 1] A[ni1] O(ni2)
i esima A[n i 1 : n 1]
O(n 1)
Cw(n) =
ici
ci
i
ci = n i i [0, n 2]
C(n) =
n2i=0
(n i) = n2 n
2 = (n2)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
25/42
S
L
L
v chiave(v)
P P[1] i sin(i) = P[2i] des(i) = P[2i+ 1]
n (log n)
n O(n) O(log n)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
26/42
Cw(n) = (n log n)
(n + 1) A[0]...[n]
(n 1)
A[1]
A[c] A[1] (c 1)
Cw(n) = O (t1+ nt2) t1 t2
n
k
t2 = O(h) = O(log n)
h= O(log n)
t1 = C1(n) = 2C1n
1
2
+t2 2C1 n
2
+O(log n) = (n)
C(n) = O(n+n log n) = (n log n)
k 1 n
n = 2k1 1< n
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
27/42
Cw(n) = (n log n)
Cw(n) =t1+ 2Cn2
t1
t1 = O(n)
l1 l2 (l1+ l2) = n
(n 1)
Cw(n) = O(n) + 2Cwn
2
= (n log n)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
28/42
(l1 +l2) = n l1 l2 l1 = l2 =
n2
li = 1
l1 l2 (l1 + l2)
Cw(n) = (n2)
Ce(n) = O(n log n)
n l1 = n2 l2 =
n2
Cdw(n) = t1 + Cdw(a) + C
dw(b) t1
a b
a = 0 b= n
1
t1 = (n 1)
Cdw(n) = n 1 + Cdw(n 1) ni=0
in= O(n2)
a Cre (n) =n1
a=0 p (t1 + Cre (a) + Cre (na 1)) p [0, n 1] t1
p= 1
n
t1 = (n 1)Cre (a) =C
re (n a 1)
Cre (n) =
n1a=0
1
n (n 1 + 2Cre (a)) 2n log n= O(n log n)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
29/42
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
30/42
n l1 l2 x
i A[i: inf 1] x A[sup+ 1 :f]> x
n [0, k 1]
Tw(n) = O(n + k) k n
A n
A[0 :n1]
Y k A
Tw(n) = t1 + t2 t1
k
t2 n
t1 = O(k)
t2 = O(n)
Tw(n) = O(n+k)
O(n) Tw(n) = O(n2)
n n
k = O(n)
[0, k 1] k = O(nc) = (n)
n
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
31/42
i A[i] Y[A[i]] j S[j : Y[A[i]] 1] = i
n [1, k] Tw(n) = O(n+k)
A n A[0 : n 1] [1, k] Y k [1, k] A A
n b =
(n)
[1, k]
k = O(nm
)
Tw(n) =O
n
1 + log klog n
n
Y[i]
Tw(n) =O(n+k)
Tw(n) = t1 + ct2 t1 c [1, k] b t2 k= O(nm) m >1 b= (n)
t1 = O(n)
n
c= O(logbk)
[1, k] b k b
t2 = O(n)
O(n+ k) n [1, k] b [0, b 1] O(n+b) b= (n)
Tw(n) =O(n)+O(lognk)O(n) =O(n(1+lognk)) = O
n
1 +
logck
logcn
= O
n
1 +
log k
log n
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
32/42
A n A[0 : n 1] [1, k] k= O(nm) A b t t b Y b Y[0 : b 1]
Y A A[0 : n 1] t
i (i1)
i
i
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
33/42
n k k [1, n] Z
n2 n
O(n log n) k= n2
Tw(n) =O(n+k log n) k1
n
A[0]...[n 1]
(k1) (k1) k k
Tw(n) =O(t1+(k1)t2+t3) t1 t2 (k 1) t3
t1 = O(n)
O(n)
t2 = O(log n)
O(1) +O(1) O(log n) = O(log n)
t3 = O(1)
k 1
k
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
34/42
Tw(n) = O(n2) Te(n) = O(n)
k
5
Tw(n) = O(t1) + T(n1) t1 n1
t1 = O(n)
O(n)
n1 = (n 1)
Tw(n) =O(n) + T(n 1) T(n) = O(n2)
Te(n) = t1+
i=|partizionamento|PTw(i) t1 P
i
t1 = n 1
(n 1)
P = 1n2
= 2
n
i n2
i n 1 n2
i
P = 1n2
Te(n) = n 1 +n1i=n
2
2
n Tw(i)
Te(n) 4n Te(n) = O(n)
k
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
35/42
Tw(n) = O(n)
5 k
T(n) = t1+ T(n1) + T(n2) t1 5 n1 n2
t1 6n
5=
6n
5 + 1 =
11n
5
6
n5
n1 = n
5
n5
n2 = 7n
10 + 3
12n5= n
10
n10
1 3
n2 = n 3
n
10 1
=
7n
10 + 3
T(n) = 11n
5 +T
n
5
+T
7n
10 + 3
T(n) 22n= O(n)
T(n) (cn 4c)
T(n) 11n5
+cn
5 + 1
4c+c
7n
10 + 3
4c=
11
5 +
9c
10
n 4c
11
5 +
9c
10
n 4c (cn 4c) c 22
T(n) 22n T(n) = O(n)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
36/42
v elem(v)
chiave(v)
chiavi(sotto albero sinistro(v)) chiave(v)
chiavi(sotto albero destro(v)) chiave(v)
T(h) = O(h) v v Tsin(v) Tdes(v)
S
T(h) = O(h)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
37/42
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
38/42
c S
S = Tsin(sin(c))
S = Tdes(des(c))
S = Tdes(sin(c))
S= Tsin(des(c))
S
S
n
h(n) = O(log n)
T(n) = O(log n)
T(n) =O(log n)
v
(v) 2
h(n) = O(log n)
Tfib h
h(n) = (log n) nh = 1 + nh1+ nh2 T h n Tfib
h nfib
h(n) = h(nfib) = (log n)
nfib n
h(n) = O(log n)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
39/42
T(n) = O(log n)
v (v)2
n T(n) = O(log n)
v
S[v] = max(Tsin(v))
M[v] = max(Tcent(v)) grad(v) = 3
n f h
2h+1 1 n (3h+1 1)
2
2h f3h
h(n) = (log n)
T(n) = O(1) grad(v) > 3 w v v v w S M v w
v
T(n) = O(1) grad(v) < 2 l v grad(l) = 3 l v grad(l) = 2 v l v S M v l
T(n) = (log n) k S[v] Tsin(v) S[v] k M[v] Tcent(v) Tdes(v)
T(n) = (log n)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
40/42
T(n) = O(log n) v u k S[u] M[u] v u v S M u u v u u
T(n) =O(log n) v u v v S M u u
u
v
u
u
u
u
n
T(n) = O(log n)
t 2
kr 1 kr 2t 1
kv t 1 kv 2t 1
kv+ 1
ci i v chiavej v ci chiavej ci+1 i [1, kv+ 1], j [1, kv]
(2t 1) (t 1)
2t t2
T(n) = O(log n)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
41/42
T(n) = (t) kv 2t t 1 t t
T(n) = (t) kv t 2
T(n) = O(log n) v kj k k kj v kj1 kj v
T(n) = O(t logtn)
v u u v u u
v
u
u
T(n) = O(t logtn) u v
v
u
u
u
T(n) = O(t1
t2) t1
t2
t1 = O(log t)
(t)
t2 = O(logtn)
(t)
h logtn+ 1
2 h= O(logtn)
T(n) = O(logt logtn)
logab = logcb
logc
a
T(n) = O(log n)
T(n) = O(log n)
-
8/12/2019 Compendium [G.Marciani] - Ingegneria degli Algoritmi
42/42
u u
t n T(n) =O(t logtn) T(n) = O(log n) T(n) = O(logtn)
top related