Vz Algorithms 08
-
Author
scribdlover8919 -
Category
Documents
-
view
47 -
download
1
Embed Size (px)
Transcript of Vz Algorithms 08
-
EJNIKO KAI KAPODISTRIAKO PANEPISTHMIO AJHNWN
TMHMA PLHROFORIKHS KAI THLEPIKOINWNIWN
TOMEAS JEWRHTIKHS PLHROFORIKHS
Algrijmoi kai Poluplokthta
B. Zhsimpoulo
Ajna, 2008
-
- , , , , , , . .
.
-
Perieqmena
1 11.1 . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 . . . . . . . . . . . . . . . . . . . . 5
1.2.1 . . . . . . . . . . . . . . . . . . 81.2.2 . . . . . . . . . . . . 121.2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 212.1 Divide and Conquer . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.1 Merge-Sort . . . . . . . . . . . . . . . . . . . . . . . . . . 212.1.2 Binary Search . . . . . . . . . . . . . . . . . . . . . . . . . 252.1.3 Hanoi . . . . . . . . . . . . . . . . . . . . . 262.1.4 Fibonacci . . . . . . . . . . . . . . . . . . . . 282.1.5 Min-Max . . . . . . . . . . . . . . . . . . . 302.1.6 QuickSort . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2 . . . . . . . . . . 352.3 . . . . . . . . . . . . . . . . . . . . . . . . . . 362.4 The Master Theorem . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.4.1 Master . . . . . . . . . . . . . . . . . . . . . 392.4.2 . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.5 . . . . . . . . . . . . . . . . . . 402.5.1 k . . . . . . . . . . . . . . . . 412.5.2 . . . . . . . . . . . . . . . . . . . . 412.5.3 , . . . . . . . 422.5.4 . . . . 422.5.5 432.5.6 . . . . . 44
3 473.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.1 . . . . . . . . . . . . . . 493.2.2 . . . . . . . . . . 493.2.3 . . . . . . . . . . . 50
7
-
8
3.2.4 . . . . . . . . . . . . . . . . . . . . . . 52
3.3 . . . . . . . . . . . . . . . . . . 55
4 (Hashing) 57
4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 (Direct Address Tables) . . . 57
4.3 (Hash Tables) . . . . . . . . . . . . . . 59
4.3.1 (Collision Resolution byChaining) . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.3.2 . . . . . . . . . . . . 61
4.4 (Hash Functions) . . . . . . . . . . 63
4.4.1 (Division Method) . . . . . . . 63
4.4.2 (Multiplication Method) . 64
4.5 (Open Addressing) . . . . . . . . . . 65
4.5.1 (Linear Probing) . . . . . . . . . . . 67
4.5.2 (Quadratic Probing) . . . . . . . 67
4.5.3 (Double Hashing) . . . . . . . . 67
4.5.4 68
5 71
5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.1 . . . . . . . . . . . . . . . . . . . 75
5.2.2 . . . . . . . . . . . . . . . . . . 75
5.2.3 . . . . . . . . . . . . . . . . . . . . . 75
5.3 . . . . . . . . . . . . . . . . . . . . . 78
5.3.1 . . . . . . . . . . . . . . . . . . . . . . . . 78
5.3.2 . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3.3 . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.4 . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.5 (subgraph) . . . . . . . . . . . . . . . . . . . 80
5.3.6 . . . . . . . . . . . . . . . . . . . . . . 81
5.3.7 (Chordal Graphs) . . . . . . . . . . . . . 81
5.3.8 (trees) . . . . . . . . . . . . . . . . . . . . . . . . 82
5.4 . . . . . . . . . . . . . . . . . . . . . . . 83
5.4.1 . . . . . . . . . . . . . . . . . . . . 83
5.4.2 . . . . . . . . . . . . . . . . . . 83
5.4.3 (deletion) . . . . . . . . . . . . . . . . . . . . . 84
5.5 . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.5.1 . . . . . . . . . . . . . . . . . . . . . . 85
5.5.2 . . . . . . . . . . . . . . . . . . . . . 87
5.5.3 . . . . . . . . . . . . . . . . . . . . . . . 88
-
9
6 916.1 . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.1.1 . . . . . . . . 916.1.2 . . . . . . . . . . . . . . 926.1.3 . . . . . . . . . . . . . . . 936.1.4 . . . . . . . . . . 95
6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986.3 . . . . . . . . . . . . . . . . . . . . . . . 1006.4 (disjoint sets) . . . . . . . . . . . . . 1026.5 . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.5.1 Dijkstra . . . . . . . . . . . . . . . . . 1086.5.2 Bellman . . . . . . . . . . . . . . . . . 1126.5.3 Bellman . . . 118
6.6 . . . . . . . . . . . . . . . . . . . . . . . . . . 1196.6.1 -
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216.6.2 Prim . . . . . . . . . . . . . . . . . . . . . . . 1246.6.3 Prim (nearest neighbour) . . . . . . . . . . . 1276.6.4 Kruskal . . . . . . . . . . . . . . . . . . . . . 129
6.7 (TSP) . . . . . . 133
7 1377.1 . . . . . . . . . . . . . 1377.2 . . . . . . . . . . . . . . . . . . . . . . . . . 1387.3 . . . . . . . . . . . . . . . . . . . 1417.4 (Discrete Knapsack) . . . . . . 1437.5 (Continuous Knapsack) . . . . . 144
8 1458.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1458.2 . . . . . . . . . . 146
8.2.1 (optimal substructure) . . . . . 1468.2.2 (Overlapping subproblems)148
8.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1488.3.1 . . . . . . . . . . 1498.3.2 . . . . . . . . . . . 1528.3.3 . . . . . . . . . . . . . . . . . . 156
9 1619.1 . . . . . . . . . . . . . . . . . . . . 161
10NP- 16710.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16710.2 P NP . . . . . . . . . . . . . . . 16810.3 NP . . . . . . . . . . . . 170
10.3.1 . . . . . . . . . . . . 171
-
10
10.4 . . . . . . . . . . . . 17210.5 NP . . . . . . . . . . . . . . . . . . . . . . 17210.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17310.7 . . . . . . . . . . . . . . . . . 174
-
Keflaio 1
Eisagwg
-. .
- . -, , , .
, , - , :
DNA, 100.000 . 3 , .
, . , - , . , , .
-, , - ( , ...). .
, -. , -
1
-
2 1.
, , -, , . , , .
; ; ; ; - ; - , .
1.1 Anlush Algorjmwn
- . .
. . :
1. , - .
2. . , . ( ), .
3. , , (.., {0, 1}).
4. . , . .
, . , , ( )
-
1.1. 3
. , 21000 .
, . - , ... - , . .
, ( ) ( ). , () . ( ), ( ).
- . , , , bits , ... :
n S = (a1, a2, . . . , an) x. x S ;
: . . () 1.1.
(S, x)1. i = 12. while i 6= n+ 1 and ai 6= x do3. i = i+ 14. end while5. if i > n6. return 17. else8. return i9. end if
1.1: x S.
-
4 1.
; x , 3 ( WHILE IF) ( i = 1). x , 5 3 i- 2i+ 1 i + 1 . , x , 2n ( ) n+ 1 .
( - ). ( ).
Dn d Dn , , :
:C(n) = min{(d), d Dn}
:C(n) = max{(d), d Dn}
:Co(n) =
dDn p(d) (d)
, ( ) . ((d)) d Dn p(d).
, - 1, . . . , n {1, 2, . . . , 2n}. ( ) :
Co(n) =1
2n3 +
1
2n5 + . . .+
1
2n(2n+ 1) +
n
2n(2n+ 3)
=1
2n
ni=1
(2i+ 1) +2n+ 3
2=
3n+ 5
2
( , - ) 3 , 2n + 3 1.5n . , . .
, . :
-
1.2. 5
a = (ai), b = (bi) Rn.
.
(a, b)1. sp = 02. for i = 1 to n do3. sp = sp+ aibi4. end for5. return sp
1.2: - a b.
n , n n .
C(n) = C(n) = Co(n) = n
, , - . .
1.2 Asumptwtik poluplokthta
n (.. ) , A 100n B n2. n:
n :
= 100 , < 100 > 100
, n A B. A B n. , 106 . n =1000 A 100n 106 = 0.1 B n2 106 = 1 , 10 . n = 10000 100 , ...
n . -
-
6 1.
f(n)
f(n)
f(n)
cg(n)
cg(n)
c1g(n)
c2g(n)
f(n) = O(g(n)) f(n) = (g(n))
f(n) = (g(n))
n0
n0
n0
T T
T
n
n
n
1.3: O,,
1 , (-) . f(n) () g(n), g(n) g(n) :
f(n) = O(g(n)) c, n0 > 0 f(n) cg(n) n > n0
f(n) = (g(n)) c, n0 > 0 f(n) cg(n) n > n0
f(n) = (g(n)) c1, c2, n0 > 0 0 c1g(n) f(n) 1
Jewrhtik, na algrijmo poluplokthta 10100n enai kaltero ap nan n2; Wstsottoie sunartsei poluplokthta den emfanzontai sthn prxh se mh teqnhto algrijmou,
en akmh ki an uprqoun megle stajer, aut me reuna meinontai drastik.
-
1.2. 7
c2g(n) n > n0. , f(n) = O(g(n)) f(n) =(g(n)), f(n) = (g(n))
O(g(n)), (g(n)), (g(n)) , , f - , g. , f(n) O(g(n)), f(n) (g(n)) f(n) (g(n)) . :f(n) = O(n) f(n) = O(n2) O(n) = O(n2). , 1.3.
f(n) =3n2 100n+ 6:
3n2 100n+ 6 = O(n2) 3n2 100n+ 6 < 3n2 n > 0.
3n2 100n+ 6 = O(n3) 3n2 100n+ 6 < n3 n > 0.
3n2 100n+ 6 6= O(n) c : 3n2 100n+ 6 < cn n > c.
3n2 100n+ 6 = (n2) 3n2 100n+ 6 > 2.99n2 n > 104.
3n2 100n+ 6 = (n) 3n2 100n+ 6 > (101010)n n > 101010 .
3n2 100n+ 6 6= (n3) c : 3n2 100n+ 6 > cn3 n > n0.
3n2100n+6 = (n2) 3n2100n+6 = (n2) 3n2100n+6 =O(n2)
:
f(n) = o(g(n)) c > 0, n0 f(n) < cg(n) n > n0
f(n) = (g(n)) c > 0, n0 f(n) > cg(n) n > n0
o O . - o , f(n) = o(g(n)), . f(n) = O(g(n)) . , O c . o c . n2 + n 1 = O(n2) = o(n3) 6= o(n2). , f(n) = o(g(n)) f(n) g(n).
-
8 1.
1.2.1 Klsei Poluplokthta
- , , ...
. A,B,C,D - : TA(n) = O(n), TB(n) = O(n2), TC(n) = O(n3) TD(n) = 2n. , , 1.4.
TA(n)
TB(n)TC(n)
TD(n)
T (n)
n
1.4: - 4
n - . : TA(n) < TB(n) < TC(n) < TD(n) D . , D , .
. 107 (10MIPS) A,B,C,D 0.1, 10 1 . - 1.1, D . D , NP - ( ), (-) .
-
1.2. 9
0.1 sec 10 min 1 day
TA(n) = O(n) 106 6 109 864 109
TB(n) = O(n2) 103 7.7 104 9.3 104
TC(n) = O(n3) 102 1800 9254
TD(n) = O(2n) 20 32 39
1.1: 4 10 MIPS
NP : n n . . , , ;
- - ( n!) , , , 80 107 , 10112
, ! ( NP), -
. :
. i cij j. , . .
, - ( ) , - 20 20 , . , Hungarian , , 1.95 sec 106
. , -
. Moore ( ) 18 . 15 , 1000 -. n , 15 1.2.
-
10 1.
O(n) n 1000 nO(n2) n 32 nO(n3) n 10 nO(n4) n 6 nO(2n) n n+ 10O(3n) n n+ 8O(n!) n n+ 7
1.2: 1000 .
1 log(n)
logk(n) k n (, f(n) = an+ b, a, b )nlognn2 n3 nk , k ,
. f(x) = aknk + . . .+ a0an 1 < a < 22n an a > 2n! nn
1.3:
- , .
, - , - ( 1.3). () (). - - .
, . -
-
1.2. 11
, .
O(n) O(n2) - O(n3) ... : , , ...
, (n) (n2), , .
, . , . , (n) .
. , .
, - , ;
, (f(n)) - O(f(n)) ().
f(n) , .
, , . , n logn . (heapsort) (quicksort) - O(n log n) , - . - O(n log n) , . , (.. ) O(n2) .
, . .
, Ann Bnn
-
12 1.
Cnn:
cij =n
k=1
aikbkj , 1 i, j n
- 1.5.
(A,B)1. for i = 1 to n do2. for j = 1 to n do3. cij = 04. for k = 1 to n do5. cij = cij + aik bkj6. end for7. end for8. end for9. return C
1.5: n.
n3 ( ) O(n3). 1969 Strassen O(n2.81) Cooper-smith & Winograd 1986 O(n2.379) . 3 .
, (n2) , . Coopersmith & Winograd .
1.2.2 Idithte asumptwtikn sumbolismn
f(n), g(n), h(n) - , :
f(n) = (g(n)) g(n) = (h(n)) f(n) = (h(n)), f(n) = O(g(n)) g(n) = O(h(n)) f(n) = O(h(n)), f(n) = (g(n)) g(n) = (h(n)) f(n) = (h(n)), f(n) = o(g(n)) g(n) = o(h(n)) f(n) = o(h(n)),
-
1.2. 13
f(n) = (g(n)) g(n) = (h(n)) f(n) = (h(n))
f(n) = (f(n)), f(n) = O(f(n)), f(n) = (f(n))
f(n) = (g(n)) g(n) = (f(n))
f(n) = O(g(n)) g(n) = (f(n)) f(n) = o(g(n)) g(n) = (f(n))
cO(f(n)) = O(f(n)) O(g(n)) +O(g(n)) = O(g(n)) O(g1(n) +O(g2(n)) = O(max{g1(n), g2(n)}) O(g1(n)) O(g2(n)) = O(g1(n) g2(n))
, . , :
1.
limn+
f(n)
g(n)= a 6= 0
f(n) = (g(n))
2.
limn+
f(n)
g(n)= 0
f(n) = O(g(n)) g(n) = (f(n)) ( f(n) 6= (g(n)))3.
limn+
f(n)
g(n)=
g(n) = O(f(n)) f(n) = (g(n)) ( g(n) 6= (f(n)))
-
14 1.
:
f(n) =(n2 + logn)(n 1)
n+ n2
(n).:
limn+
(n2+logn)(n1)n+n2
n= lim
n+n3 n2 + n logn log n
n3 + n2= 1
f(n) = (n). 2
1.2.3 Asksei
log n 2, logn =log2 n.
1. T1(n) = O(f(n)) T2(n) = O(g(n)) - P1 P2 P . P2 P1 P ;
: , - , :
T (n) = max{T1(n), T2(n)} = max{O(f(n)), O(g(n))}
: T1(n) = O(n2), T2(n) = O(n
3), T3(n) = O(n log n)
T (n) = max{O(n2), O(n3), O(n log n)} = O(n3)
2. O -:
1. 2 logn 4n+ 3n logn2. 2 + 4 + . . .+ 2n
3. 2 + 4 + 8 + . . .+ 2n
. :
1. 2 logn 4n+ 3n logn = O(n logn)2. 2 + 4 + . . .+ 2n = 2(1 + 2 + . . .+ n) = 2
ni=1 i = n(n+ 1) = O(n
2)
3. 2 + 4 + 8 + . . .+ 2n = 2 2n121 = 2 2n 2 = O(2n)
-
1.2. 15
3. a > 1 f(n) = O(loga(n)). f(n) =O(log n). f(n) = O(loga(n)) , c n n0:f(n) c loga(n). loga(n) = lognlog a f(n) clog a logn f(n) c logn c = clog a n n0. f(n) = O(log n).
4. log(n!) = O(n log n). n! = n(n 1) . . . 2 < n . . . n = nn , log(n!) < n logn, log(n!) = O(n log n).
5. -:
1. for i = 1 to n do2. for j = 1 to i+12 do3. x = x+ 14. end for5. end for
, -. (n ), . :
T (n) =
ni=1
i+ 1
2=
1
2
( ni=1
i+
ni=1
1)=
1
2
(n(n+ 1)2
+ n)= O(n2)
6. 3n 6= O(2n)
limn+
2n
3n= 0
3n = (2n)
7. ( 1.6) (...) .
m n. q, r m = qn + r, q 1, r 0. (m,n)=(n, r),
-
16 1.
- (m,n Z)1. repeat2. r = m mod n3. if r 6= 0 then4. m = n5. n = r6. end if7. until r = 08. return n
1.6: ... m n.
:
m = q0n+ r0 , 0 r0 < n, q0 = q, r0 = rn = q1r0 + r1 , 0 r1 < r0r0 = q2r1 + r2 , 0 r2 < r1r1 = q3r2 + r3 , 0 r3 < r2
. . . . . .
k . m,n, r0, r1, . . . rk rk = 0 rk1 =(m,n). O(1), O(k).
() ri max then5. max = ai6. else if ai < min then7. min = ai8. end if9. end for
2.8:
-
2.1. DIVIDE AND CONQUER 31
, 3(n1), for. n 1, (n).
2.9 .
MinMax (A, i, j,min,max)1. if i j 1 then2. if ai < aj then3. max = aj4. min = ai5. else6. max = ai7. min = aj8. end if9. else10. m = (i+ j)/211. MinMax(A, i,m,min1,max1)12. MinMax(A,m, j,min2,max2)13. min = fmin(min1,min2)14. max = fmax(max1,max2)15. end if
2.9:
- :
i j 1 i = j i = j 1
fmax() fmin() () .
:
T (n) =
{2 if n = 2 or n = 1,
2T (n2 ) + 3 if n > 2.
-
32 2.
(. 2.1):
T (n) = 2T (n
2) + 3
= 2[2T (n
22) + 3] + 3 = 22T (
n
22) + 2 3 + 3
= 22[2T (n
23) + 3] + 2 3 + 3 = 23T ( n
23) + 22 3 + 2 3 + 3
= . . .
= 2k1T (n
2k1) + 2k2 3 + . . .+ 2 3 + 3
n = 2k
T (n) =n
2 T (2) + [2
k1 12 1 ] 3
= n+ 3 2k1 3= n+ 3
n
2 3
= 5n
2 3
-, Fibonacci -.
2.1.6 QuickSort
Quicksort C. A. R. Hoare, (n2) n . , Quicksort , : (nlogn) (nlogn) . , .
QuickSort, MergeSort, Divide-and-Conquer. Divide-and-Conquer 3 A[p . . . r] :
Divide: A[p . . . r] , , A[p . . . q1] A[q+1 . . . r], A[p . . . q1] A[q] A[q + 1 . . . r]. , A[q] A[p . . . r].
Conquer: A[p . . . q 1] A[q + 1 . . . r] QuickSort.
-
2.1. DIVIDE AND CONQUER 33
Combine: . A[p . . . r] QuickSort.
2.10 QuickSort.
QuickSort (A, p, r)1. if p < r then2. q =Partition(A, p, r)3. QuickSort (A, p, q 1)4. QuickSort (A, q + 1, r)5. end if
2.10: Quicksort
(Partition) (pivot) : , 2.11.
Partition (A, p, r)1. x = A[r]2. i = p 13. for j = p to r 1 do4. if A[j] x5. i = i+ 16. swap(A[i], A[j])7. end if8. end for9. swap(A[i+ 1], A[r])10. return i+ 1
2.11: .
QuickSort . . , QuickSort MergeSort. , QuickSort .
-
34 2.
n 2 n 1 0 . . (n) .
T (n) = T (n 1) + T (0) + (n)= T (n 1) + (n)= (n2)
, , T (n) = (n2). .
, Partition - n/2, - n/2 n/2 1. QuickSort . T (n) 2T (n/2)+(n), 2 Master Theorem T (n) = O(nlogn).
v (= 1
n). Tn n 2 :
T0 = T1 = 0
Tn = n+ 1 +1
n
nk=1
(Tk1 + Tnk)
. :
Tn = n+ 1 +2
n
nk=1
Tk1 nTn = n2 + n+ 2n
k=1
Tk1
n 1 :
Tn1 = n+2
n 1n1k=1
Tk1 (n 1)Tn1 = n2 n+ 2n1k=1
Tk1
:
nTn = (n+ 1)Tn1 + 2n
-
2.2. 35
n(n+ 1) :
Tnn+ 1
=Tn1n
+2
n+ 1=
c
3+
nk=3
2
k + 1
:
Tnn+ 1
2n
k=1
1
k 2
n1
1
xdx = 2 lnn
:
Tn = 1.38n logn
2.2 Asumptwtik prosggish merikn ajro-
ismtwn
, . , .
(. 2.12):
q+1p
f(x)dx q
i=p
f(i) qp1
f(x)dx
Hn = 1 +1
2+ . . .+
1
n
n- . f(x) = 1
x
n+12
1
xdx
ni=2
1
i n
1
1
xdx
, n-
ln(n+ 1) ln(2) + 1 Hn ln(n) + 1
Hn = (lnn).
-
36 2.
f(x)
x
p qp 1 q 1
2.12: .
2.3 Dndra Apfash
. . - . . - . 2.13 -.
n n! , n . h h log2(n!). n! Stirling
n! =(2n)
(ne
)n(1 +
1
12n+ o(
1
n)
)
-
2.4. THE MASTER THEOREM 37
a1 > a2
a2 > a3
1, 2, 3 a1 > a3
1, 3, 2 3, 1, 2
a1 > a3
2, 1, 3 a2 > a3
2, 3, 1 3, 2, 1
2.13: .
log2(n!) = log2
((2n)
(ne
)n(1 +
1
12n+ o(
1
n)
))=
n log2 n n log2 e+1
2log2 n+
1
2log2 2 + log2
(1 +
1
12n+ o
(1
n
))
h = (n logn). ,
n . n , (n logn) . , . QuickSort , .
2.4 The Master Theorem
Master Master Theorem
-
38 2.
T (n) = aT (n
b) + f(n)
a 1 b > 1. .
.
lgn+ k = (lg n) + k
lg(n) = log2(n) ( )
lnn = loge(n) ( )
lgk n = (lg n)k ()
lg lg n = lg(lg n) ()
a > 0, b > 0, c > 0 :
a = blogb a
n = 2log2 n
logc(ab) = logc a+ logc b
logb an = n logb a
logb a =logc a
logc b
logb1
a= logb a
logb a =1
loga b
alogb c = clogb a
, - .
f(n) f(n) = O(nk) k.
1 . , a b , a > 1, :
limn
nb
an= 0 nb = o(an).
f(n) f(n) = O(logk n) k.
-
2.4. THE MASTER THEOREM 39
- . , k b :
limn
logk n
nb= 0 logk(n) = o(nb).
2.4.1 To Master jerhma
T (n) = aT (n
b) + f(n)
a 1 b > 1 f(n) . n
b
, nb n
b n
b.
1. T (n) :
1. f(n) = O(nlogb a) > 0 T (n) = (nlogb a).
2. f(n) = (nlogb a) T (n) = (nlogb a lg n).
3. f(n) = (nlogb a+) > 0 af(nb) cf(n)
c < 1 n T (n) = (f(n)).
f(n) nlogb a. , - . , 1, nlogb a T (n) = (nlogb a). , 3, T (n) = (f(n)). , 2, , T (n) = (nlogb a lg n) = (f(n) lgn).
. , f(n) nlogb a, . f(n) nlogb a
n > 0. , , f(n) nlogb a, af(n
b)
cf(n). .
, - f(n). 1 2 f(n) nlogb a, . , 2 3 f(n) nlogb a,
-
40 2.
. f(n) , 3, .
2.4.2 Paradegmata
Master .
1. T (n) = 9T (n3 ) + n. a = 9, b = 3 f(n) = n. nlogb a =nlog3 9 = (n2). f(n) = O(nlog3 9) = 1, 1 T (n) = (n2).
2. T (n) = T (2n3 ) + 1.
a = 1, b = 32 f(n) = 1. nlogb a = nlog3/2 1 = n0 =
1. f(n) = (nlogb a) = (1), 2 T (n) = (lgn).
3. T (n) = 3T (n4 ) + n logn. a = 3, b = 4 f(n) = n logn nlogb a = nlog4 3 = O(n0.793). f(n) =(nlog4 3+) 0.2. af(n
b) = 3(n4 ) log(
n4 ) 34n logn =
cf(n) c = 34 . 3 T (n) = (n logn).
4. T (n) = 2T (n2 ) + n logn. a = 2, b = 2 f(n) = n logn. nlogb a = n. n logn > n n logn
n= logn
n . f(n) , n, nlogb a = n 3 .
2.5 Anadromik grammik exissei
1. f . f - T (p), T (p) ...
2. p T (n). :
T (n) = f(T (n 1)) 1 T (n) = f(T (n 1), . . . , T (n k)) k k T (n) = f({T (p); p < n})
-
2.5. 41
2.5.1 Grammik anadrom txh k
k
T (n) = f(n, T (n 1), . . . , T (n k)) + g(n)
k 1 , f T (i) n k i n 1 g n.: . an - n n 1 1 . (. 2.14)
an = 2an1 + 1 (n 1, k = 1, a0 = 1)
2.14:
2.5.2 Anadrom diamersewn
:
T (n) = aT (n
b) + d(n)
a, b d(n) . .: Mergesort. - Mergesort T (n)
T (n) = 2T (n
2) + n 1 n 2
T (1) = 0
n 1 .
-
42 2.
2.5.3 Anadrom plrei, grammik poluwnumik
:
T (n) = f(n, T (n 1), T (n 2), . . . , T (0)) + g(n) f T (i) g(n) .: . n
bn =
n1k=0
bkbn1k
b0 = 1
: . Quicksort
Cn = (n+ 1) +2
n
n1k=1
Ck, n 2
C0 = C1 = 0
2.5.4 Paradegmata Grammikn Anadromikn Exissewn
1. , ( n)
an = an1 + 2n, n 1a0 = 1
:
an = an1 + 2n
an1 = an2 + 2n1
an2 = an3 + 2n2
. . .
a2 = a1 + 22
a1 = a0 + 21
:
an = a0 +
ni=1
2i, n 1
an = 1 +2n+1 22 1
an = 2n+1 1
-
2.5. 43
2. .
:
an = 2an1 + 1 (20)an1 = 2an2 + 1 (21)an2 = 2an3 + 1 (22). . .
a2 = 2a1 + 1 (2n2)a1 = 2a0 + 1 (2n1)
:
an = 2na0 +
n1i=0
2i
an = 2n +
2n 12 1
an = 2n+1 1, n 0
2.5.5 Grammik Anadromik Exissei me stajero
suntelest
k :
un + a1un1 + a2un2 + . . .+ akunk = b(n)
ai .
un + a1un1 + a2un2 + . . .+ akunk = 0
.
k :
un = rn.
:
rk + a1rk1 + . . .+ ak = 0
k r1, r2, . . . , rk - :
un = 1rn1 + 2r
n2 + . . .+ kr
nk
i u1, . . . , uk1.
-
44 2.
: :
Fn = Fn1 + Fn2, n 2F0 = 0
F1 = 1
: :
Fn Fn1 Fn2 = 0.
un = rn -
:
rn rn1 rn2 = 0rn2(r2 r 1) = 0
r2 r 1 = 0. :
r1 =1 +
5
2
r2 =15
2
:
Fn = 1rn1 + 2r
n2
: F0 = 0 1 = 2 F1 = 1 1r1 + 2r2 = 1 1r1 1r2 = 1 1 =
1r1r2 2 =
1r2r1
1 =1
1+
52 1
5
2
=15
2 = 15
, :
Fn =15[(1 +
5
2)n (1
5
2)n]
2.5.6 Exissei metatrepmene se grammik anadrom
:
T (n) = aT (n
b) + d(n)
-
2.5. 45
n 2, a, b T (1) = 1. n a n
b, d(n)
. , n = bk
T (bk) = aT (bk1) + d(bk).
tk = T (bk) :
tk = atk1 + d(bk)
t0 = 1. , :
a(n)un = b(n)un1 + c(n).
f(n) =
n1i=1 a(i)ni=1 b(i)
vn = vn1 + f(n)c(n)
vn = a(n)f(n)un -
un =1
a(n)f(n)(a(0)f(0)u0 +
ni=1
f(i)c(i))
tk = ak +
k1j=0
ajd(bkj)
, k = logb n alogb n = nlogb a
T (n) = nlogb a +
(logb n)1j=0
ajd(n
bj).
: (. 2.1.1 - Merge Sort):
T (n) = 2T (n
2) + n 1 n 2
T (1) = 1
-
46 2.
: a = b = 2 d(n) = n 1
T (n) = n+
k1j=0
2j((n
2j) 1)
= n+ kn (2k 1) k = log2 n
T (n) = n log2 n+ 1.
sn.
anTn = bnTn1 + cn.
:snanTn = snbnTn1 + sncn.
sn snbn = sn1an1 un = snanTn
un = un1 + sncn
un = s0a0T0 +
nk=1
skck = s1b1T0 +
nk=1
skck
Tn =unsnan
=s1b1T0 +
nk=1 skck
snan
Tn =1
snan(s1b1T0 +n
k=1 skck).
: (. 2.1.3 Hanoi):
Tn = 2Tn1 + 1
: un = 1, bn = 2 sn = 2n
Tn =1
2n(0 +n
k=1 skck)= 2n(s1 + . . .+ sn)
= 2n 1
-
Keflaio 3
Swro
3.1 Dndra
( ), . . . , . 0. . .
. - , ( 0) (20), ( 1) 2 (21) ... i 2i .
, , ( 2i). :
, - , .
: i/2, i, 2i i 2i+1. m n
log2m n m 1
47
-
48 3.
1
2
2
3
3
4
4 5 6
7
78
8
9
9
10
10
10
14
16 20
21
22
3.1:
.
3.2 H dom swro
: - . . . :
. , . , , .
( (heap) ). n . :
-
3.2. 49
1
1
2
2
2
2
3
3
3
3
4
4
4
4
5
5
6
6
7
7
7
7
8
8
8
8
9
9
9
9
10 10
10
10
10
10
14
14
16
16
ia[i]
7 = 2 3 + 1
3.2:
3.2.
, O(log n).
3.2.1 Ulopohsh me pnaka en swro
: . 3.2.
3.2.2 Eisagwg en nou stoiqeou sto swr
, . , . . - 3.3
( ), , ,
-
50 3.
- (u : )1. n = n+ 12. k = n, a[k] = u3. while a[k/2] < a[k]4. swap (a[k], a[k/2])5. k = k/26. end while
3.3: PSfrag replaement
1
2
2
3
3
4
4 5 6
7
78
8
9
9
10
10
10
14
16
PSfrag replaement
1
2
2
3
34
4
5 6 7
78
8
9
9
10
10
10
11
14
15
16
PSfrag replaement
1
2
2
3
3
4
4 5 6
7
78
8
9
9
10
1010
11
14
15
16
PSfrag replaement
1
2
2
3
34
4
5 6 7
78
8
9
9
1010
10
11
14
15
16
3.4:
O(log n). 3.4 10 .
3.2.3 Diagraf en stoiqeou ap to swr
1 , . , . , ,
-
3.2. 51
3.5.
- ( )1. a[1] = a[n]2. n = n 1, i = 13. do4. l = 2 i, r = 2 i+ 15. if l n and a[l] > a[i] then max = l6. else max = i7. if r n and a[r] > a[max] then max = r8. if i 6= max then swap (a[i], a[max]), i = max9. else break10. while (i < n)
3.5: PSfrag replaement
1
2
2
3
34
4
5 6 7
78
8
9
9
1010
10
11
14
15
16
PSfrag replaement
1
2
2
3
34
4
5 6 7
78
8
9
9
10
10
10
14
15
PSfrag replaement
1
2
2
3
34
4
5 6 7
78
8
9
9
10
1010
14
15
PSfrag replaement
1
2
2
3
34
4
5 6 7
78
8
9
9
10
10
10
14
15
3.6:
( ), , , O(log n). 3.6 11 .
-
52 3.
3.2.4 Kataskeu swro
. -. 1, 2, 3, 4. :
1
1 1
1 11
11
2 2 2
2
2
2
2
3
3
3
3
3
4
4
4
1 2 3
4
3.7:
, . .
- ( a n )1. for i = 1 to n do2. - (a[i])3. end for
3.8:
( ), , i, O(log i) . n, :
-
3.2. 53
O(log 1) +O(log 2) + . . .+O(log n) = O(n logn)
- . , a , , . , - .
- ( a n , i)1. l = 2 i2. r = 2 i+ 13. if l n and a[l] > a[i]4. max = l5. else6. max = i7. if r n and a[r] > a[max]8. max = r9. if i 6= max then10. swap (a[i], a[max])11. - (a, max)
3.9: . , .
- ( a n )1. for i = n/2 to 1 do2. - (a, i)3. end for
3.10:
- . ( , n/2 1) - 3.10.
-
54 3.
3.11 , [5, 6, 1, 4, 8, 7, 3, 2, 9],
- O(h) h, -
log nh=0
n2h+1
O(h) = O
(n
log nh=0
h
2h
)
k=0
kxk =x
(1 x)2
x = 1/2 k=0
k
2k= 2
O(n 2) =O(n).
1
1
2
2
344
5
5
6
6
77
8
8
9
9
9
1
1
1
2
2
3
4
4
5
5
6
67
78
8
9
9
9
1
1
2
2
3
4
4
5
5
6
67
78
8
9
9
9
2
1
1
2
2
3
4
4
5
5
6
6
7
78
8
9
9
9
-
3.3. 55
1
1
2
2
34
4
5
5
6
6
7
7
8
8
9
9
9
3
1
1
2
2
3
4
4
5
56
6
7
78
8
99
9
1
1
2
2
34
4
5
5
66
7
7
8
8
9
99
4
1
1
2
2
3
4
4
5
56
6
7
78
8
9
9
9
3.11:
3.3 Taxinmhsh me th bojeia swro
, . , . . 3.12
HeapSort ( a n )1. - (a)2. for i = 1 to n3. a[i] = -( )4. -( )
3.12: . -( ) .
-
56 3.
: 6, 9, 2, 7, 4, 5, 8.
: (. 3.13).
24 56
7 8
9
3.13:
- . 3.14 .
O(n) O(n log n), i- O(log i) . O(n log n).
PSfrag replaement
24 56
7 8
9
PSfrag replaement
24
5
6
7
8
PSfrag replaement
2 4
56
7
PSfrag replaement
2
4 5
6
PSfrag replaement
24
5
PSfrag replaement
2
4
PSfrag replaement
2
3.14: - .
-
Keflaio 4
Katakermatism
(Hashing)
4.1 Eisagwg
- INSERT (), SEARCH () DELETE() . , - , , , - . -. (Hash table) . (n), . -, O(1).
4.2 Pnake 'Amesh Dieujunsiodthsh (Direct
Address Tables)
U = {0, 1, . . . ,m1} m . , . 4.1 .
57
-
58 4. (HASHING)
0
1
2
3
4
5
6
7
8
9
k0
k1 k2
k2k3
k3
k4k5
k5
k6k7
k8k8
k9
U
T
4.1: - . U = {0, . . . , 9} . K = {2, 3, 5, 8} - . NIL.
, , T [0, . . . ,m 1]. U . T [k] = NIL, k k.
O(1).DIRECT-ADDRESS-SEARCH(T,k)
return T[k]
DIRECT-ADDRESS-INSERT(T,x)
T[key[x]]x
DIRECT-ADDRESS-DELETE(T,x)
T[key[x]]NIL
-
4.3. (HASH TABLES) 59
0
1 = h(k4)
2 = h(k1)
3
4
5 = h(k2) = h(k5)
6
m 2 = h(k3)m 1
k1
k2
k3
k4
k5
U
T
4.2: h T . k2 k5 , .
4.3 Pnake Katakermatismo (Hash Tables)
. U T |U | . K U .
, , (|K|) , O(1). , .
k h(k) T . h : U {0, 1, . . . ,m 1} (hash function) 4.2 |K| m .
. (collision). h ., |K| > m, .
-
60 4. (HASHING)
k1
k1
k2
k2
k3 k3
k4
k4
k5k5
k6k6
k7 k7
k8
k8
U
T
4.3: . - T [j] j.
- (collision resolution by chaining), , (open addressing) ( 4.5).
4.3.1 Eplush Sugkrosewn me Lste (Collision Res-olution by Chaining)
4.3 , , .
.CHAINED-HASH-SEARCH(T,k)
k T[h(k)]
CHAINED-HASH-INSERT(T,x)
x T[h(key[x])]
-
4.3. (HASH TABLES) 61
CHAINED-HASH-DELETE(T,x)
x T[h(key[x])]
4.3.2 Anlush Katakermatismo me Lste
, O(1) ( ). , , O(1). x , , , .
, n m , (n). , h T .
m , (Simple Uniform Hash-ing). .
(load factor) a T a = n/m. j = 0, 1, . . . ,m1, T [j] nj
n = n0 + n1 + . . .+ nm1, (4.1)
nj E[nj ] = a = n/m. h O(1).
k nh(k). . , k .
2. - , (1 + a), .
. T [h(k)], E[nh(k)] = a, . - a , h(k), (1 + a). 2
, . , . (1 + a).
-
62 4. (HASHING)
3. - , (1 + a), .
. n . - x x . x x, - . n x , 1 x . xi i- - , i = 1, 2, . . . , n ki = key[xi]. ki kj , (indicator) Xij = I{h(ki) = h(kj)}. Pr{h(ki) =h(kj)} = 1/m E[Xij ] = 1/m.
E
1n
ni=1
1 + n
j=i+1
Xij
==1
n
ni=1
1 + n
j=i+1
E [Xij ]
=1
n
ni=1
1 + n
j=i+1
1
m
=1 +1
nm
ni=1
(n i)
=1 +1
nm
(ni=1
nni=1
i
)
=1 +1
nm
(n2 n(n+ 1)
2
)=1 +
n 12m
=1 +a
2 a2n
.
, h (2 + a/2 a/2n) = (1 + a). 2
n = O(m) a = n/m = O(m)/m =O(1). .
-
4.4. (HASH FUNCTIONS) 63
4.4 Sunartsei Katakermatismo (Hash Func-tions)
- . h. - , () , .
h - m . , .
- k, 0 k < 1. h(k) = km -.
, , - - .
. , , {N} = {0, 1, 2 . . .} . . - . , (112,116), ASCII p = 112 t = 116. 128 (112 128) + 116 = 14452. .
4.4.1 H Mjodo th Diaresh (Division Method)
h(k) = k mod m.
m = 4 k = 100 h(k) = 4. m 2, 2 h(k) p k.
. n = 2000 3
-
64 4. (HASHING)
m = 701 , 2000/3 2.
, , [0, . . . , N1], .
h(x) = (x1Bl1 + x2Bl2 + . . .+ xl) mod N,
N , l - x B 2 (128, 256 ). ..B = N = 256 h(x) = x1 .
h (x : string, l : integer)1. r = xl, p = 12. for i = l 1 to 1 do3. p = p B4. r = r + xi p5. end for6. r = r mod N7. return r
4.4.2 H Pollaplasiastik Mjodo (Multiplication Method)
. - k A 0 < A < 1 kA. m .
h(k) = m(kA mod 1).
m . 2, m = 2p, p N, . w bits k . A s/2w, s 0 < s < 2w. 4.4 k w- s = A 2w. 2w- r12w+r0, r1 r0 . p- p r0. A , (
5 1)/2.
-
4.5. (OPEN ADDRESSING) 65
r1 r0
A 2w
k
w bits
h(k) p bits
4.4: . w- - w- s = A 2w. p w- h(k).
4.5 Anoiqt Dieujunsiodthsh (Open Address-ing)
. -. , , . . - a, , 1.
, , (probe), . . , - ( 0) .
h : U {0, 1, . . . ,m 1} {0, 1, . . . ,m 1}.
k, (probe sequence) h(k, 0), h(k, 1), . . . , h(k,m1) 0, 1, . . . ,m1, .
-
66 4. (HASHING)
. .
HashInsert (T, k)1. i = 02. repeat3. j = h(k, i)4. if T [j] = NIL then5. T [j] = k6. return j7. else8. i = i+ 19. until i = m10. error hash table overflow
k . NIL, k . .
HashSearch (T, k)1. i = 02. repeat3. j = h(k, i)4. if T [j] = k then5. return j6. else7. i = i+ 18. until i = m or T [j] = NIL9. return NIL
, DELETED - . a, - .
- (Uniform Hashing), -. - m! 0, 1, . . . ,m 1 .
-
4.5. (OPEN ADDRESSING) 67
.
-: . 0, 1, . . . ,m 1 - , m2 m! . - .
4.5.1 Grammik Dierenhsh (Linear Probing)
h : U {0, 1, . . . ,m 1}, , i = 0, 1, . . . ,m 1
h(k, i) = (h(k) + i) mod m.
, , - (primary clustering). -, - . , i , (i+ 1)/m.
4.5.2 Tetragwnik Dierenhsh (Quadratic Probing)
h(k, i) = (h(k) + c1i+ c2i2) mod m,
h , c1, c2 6= 0 i = 0, 1, . . . ,m 1. , c1, c2 m. - , h(k1, 0) = h(k2, 0), . , (secondary clustering), , m .
4.5.3 Dipl Katakermatism (Double Hashing)
- .
h(k, i) = (h1(k) + ih2(k)) mod m,
-
68 4. (HASHING)
0 1 2 3 4 5 6 7 8 9 10 11 12
14 506979 7298
4.5: . 13 h1(k) = k mod 13, h2(k) = 1 + (k mod 11). 14 1(mod 13) 14 3( 11), 14 9, 1 5.
h1 h2 . 4.5 .
h2(k) m . m 2 h2 . m h2 m. , m
h1(k) = k mod m,
h2(k) = 1 + (k mod m),
m m (.. m 1). k = 123456,m = 701 m = 700, h1(k) = 80 h2(k) = 257. 80 257 (modulom) .
- (m2) ( (h1(k), h2(k))) (m) - .
4.5.4 Anlush tou Katakermatismo Anoiqt Dieu-
junsiodthsh
, , a = n/m n m . a 1 - . .
-
4.5. (OPEN ADDRESSING) 69
.
4. - a = n/m < 1, 1/(1 a), - .
. , , , . X Ai, i = 1, 2, . . ., i- . {X i} A1A2 Ai1. Pr{X i} Pr{A1A2 Ai1}.
Pr{A1 A2 Ai1} == Pr{A1} Pr{A2|A1} Pr{A3|A1 A2} Pr{Ai1|A1 A2 Ai2}. n m Pr{A1} = n/m. j >
1, j- , j 1 (n j + 1)/(m j + 1). (n (j 1)) (m (j 1)) , , . n < m (n j)/(m j) < n/m j 0 j < m, i 1 i m,
Pr{X 1} = nm n 1m 1
n i+ 2m i+ 2
( nm
)i1= ai1.
E[X ] =i=1
Pr{X i} i=1
ai1 =i=0
ai =1
1 a.
2
1 + a + a2 + a3 + . , - . a . a2 ...
a , O(1). ,
-
70 4. (HASHING)
1/(1 0.5) = 2, 90% 1/(1 0.9) = 10.
4 .
1. - a 1/(1a) , .
. , a < 1. . 1/(1 a).2
.
5. - a < 1,
1
aln
1
1 a ,
.
. k k . - k (i+1)- , k 1/(1 i/m) = m/(m i). n :
1
n
n1i=0
m
m i =m
n
n1i=0
1
m i =1
a(Hm Hmn),
Hi =i
j=1 1/j i- .
1
a(Hm Hmn) = 1
a
mk=mn+1
1
k 1a
mmn
1
xdx =
1
aln
m
m n =1
aln
1
1 a .2
-
Keflaio 5
Grfoi
5.1 Genik
, - , , . . - , . .
:
.
1 ( - ). a, b, c D, E,
71
-
72 5.
F . : ( ) 3 , 3 , ;
a
b
c
D E F
5.1: 3 3
5.1 8 () . . . .
2 ( ). A,B,C - (, ) M N . : A = 4, B = 7, C = 6, : M = 8 N = 9.
- . : - , .
-
5.1. 73
2
3
3
4
4
5
5
6
7
8
9
A
B
C
M
N
5.2:
3 ( ). , 5.3.
(. 5.2). - . - . - .
. : :
7MBps pc 1 pc 4 6MBps pc 3 pc 5 10MBps pc 2 pc 3 5MBps pc 4 pc 1
;
.
-
74 5.
5.3:
. .
5.2 Orismo
(nodes) (edges). , G = (V,E), V E .
1. G = (V,E) V E V V , G.
n = |V | m = |E|. 2. n .
3. (G) = |E|n2
4. . . .
-
5.2. 75
5.2.1 Kateujunmenoi grfoi
5. (directed graph) G = (X,U), X U () , - ( ).
. (i, j) i j, j i.
(i, j) i j. i (tail) j (head). (i, j) i j. (i, j) i j.
6. (indegree) di i . (outdegree) d+i i . (degree) di i i (di=d
+i +d
i ).
5.2.2 Mh kateujunmenoi grfoi
7. (undirected graph) G = (V,E), V E , .
, .
( -) , - . , .
8. (degree) di i .
9. ( ) , e , w(e) . - . .
5.2.3 Kkloi kai monoptia
= (x, y) x y . : () = x () = y, .
-
76 5.
10. G = (X,U) X = (x1, x2, ..., xn) U =(u1, u2, ..., um). (path) f G x1, u1,x2, u2, . . . , xk (ui = [xi, xi+1]), . x1 xk. k 1, k -. p, p .
:
11. f G = (X,U) 1, 2, . . . , p : i, 1 i < p (i+1) = (i).
. .
4 ().
1
2
3
4
5
6
a1
a2a3
a4
a5
a6
a7
a8
a9
5.4: 6 9
5.4 :
: = 1 7 8 9 6 5 8
: = 1 7 8 9 6
-
5.2. 77
: = 1 3 4 5
f , (f) 1 , (f) p.
(cycle) , (x1 = xk) () = (). (simple cycle) . .
5 ( - - ).
1
2
3
4
5
a1 a2
a3
a4a5
a6
5.5: 5
5.5 :
: = 6 1 4 3 2 56 1 5
: = 6 1 4 3 2 5
: = 1 5 6
De Bruijn
De Bruijn 0 1. f g:
-
78 5.
f = xh
g = hy x y 0 1 h 1 (. 5.6).
000
001
010
011
100
101
110
111
5.6: De Bruijn = 3
{2, 3, . . . , n}. p q p q (. 5.7).
5.3 Eidik Kathgore Grfwn
5.3.1 Plrei Grfoi
12. n (Kn) , .
-
5.3. 79
2
3
4 6
7
8
89
10
11
12
5.7:
K3 K4
5.8: 3 4
5.8 3 4 .
5.3.2 Dimere Grfoi
13. (bipartite) G = (V,E) (V1,V2) V1 V2 = , V1 V2 = V V1 V2 (. 5.9).
-
80 5.
x1
x2
y1
y2
y3
5.9:
14. G(V,E) . V1 V2, v V1, d(v) = |V2| ( Ka,b).
5.10 K2,3 K4,4.
5.3.3 Kanoniko Grfoi
15. - G =(V,E) , . v V d(v) = .
5.3.4 Eppedoi grfoi
16. - , . 5.1 K3,3 .
5.3.5 Upogrfoi (subgraph)
G = (X,U). G G = (X , U ), X X U U .
-
5.3. 81
u1
u2
u3
u4
u5
K2,3 K4,4
5.10:
G = (X,U) G = (X,U ), U U . G G .
5.11 G
G G
G.
5.3.6 Sunektiko grfoi
i, j i j.
17. (connected) - , .
, - .
5.3.7 Qordiko Grfoi (Chordal Graphs)
. .
G = (V,E) (chordal) G, 3 .
18. G 3 .
-
82 5.
x1x1
x1
x2
x2 x2
x3
x3x3
G = (X,U)
G = (X,U ) G = (X,U )
5.11: G
G G
G
5.3.8 Dntra (trees)
19. G .
G . . .
(root) . 1 , . 1 .
6. T n , -
1. T
-
5.4. 83
2. T
3. T n 1 4. T n 1 5. T e T+e
6. T
5.4 Prxei epi twn grfwn
5.4.1 Isomorfism grfwn
G1 = (V1, E1) G2 = (V2, E2) f : V1 V2 [f(v1), f(v2)] E2 (v1, v2) E1. v1, v2 G1 f(v1), f(v2) G2. , . 5.12 . 5.13 3- . 3- 3- 3- .
AA B
B
C
CX
X
Y
Y
Z Z
5.12:
5.4.2 Sumplrwma en Grfou
G = (V,E) G = (V , E) =(V, V 2 E) V = V , E E. G
-
84 5.
v1
v1
v1
v2
v2
v2
v3
v3
v3
v4
v4
v4
v5
v5
v5
v6
v6
v6
v7
v7
v7
v8
v8
v8
5.13:
G. G G .
5.4.3 Diagraf (deletion)
G = (V,E) v V . G v G = (V v,E adj(v)), adj(v) - v. G G v .
G = (V,E) e E. e G G =(V,E e). G G
-
5.5. 85
e.
5.5 Apojkeush Grfwn
. .
5.5.1 Pnaka Geitnash
G = (V,E), n = |V |,m = |E|. M n n , M G. M(i, j) 1 vi vj 0.
M(i, j) =
{1 (vi, vj) E0 (vi, vj) / E
(adjacency matrix) M(i, j) = M(j, i) n2 M(i, i) = 0. G = (V,E) M G = (V,E) ( ), . G (G = (V,E,W )) wij W (vi, vj) :
M(i, j) =
{wij (vi, vj) E0 (vi, vj) / E
6 ( ). G =(X,U), |X | = 6, |U | = 9 5.14. .
1 2
3
4
5
6
M =
0 1 1 0 0 00 0 1 1 0 10 0 0 0 0 10 0 0 0 1 00 1 0 0 0 00 0 0 1 0 0
5.14: M
-
86 5.
7 ( ). - G(X,U,W ), |X | = 5, |U | = 8, 5.15. .
1
2
3 4 51
2
37
11
13
19
25 M =
0 25 13 1 07 0 19 0 00 0 0 0 00 11 0 2 00 0 0 3 0
5.15: M
G, M . Mp, p- M , Mp(i, j) - G, p, xi xj . xi, xj . M p, 1 p n ( M Mp1) (i, j) Mp. O(n3) (O(n2.81) - Strassen) n , O(n4). 8 ( ).
G(X,U), |X | = 4, |U | = 4, 5.16. M M M2.
M2(1, 3) = 2 ( ) 1 3.
n2
bits . (O(1)). O(n) , 1. - . , , n2 bit-s. (.. 3)
-
5.5. 87
M =
0 1 0 10 0 1 00 0 0 00 0 1 0
1
2
3
4
M2 =
0 0 2 00 0 0 00 0 0 00 0 0 0
5.16: , M M2
0.
xi xj , , j, O(n). - xi xj j, O(n).
5.5.2 Pnaka Prsptwsh
G = (V,E), n = |V | m = |E|. B n m , B G B G. B(i, j) 1 ej vi 0.
B(i, j) =
{1 ej vj)0
(incidence matrix) - nm .
9 ( ). G = (V,E), |V | = 6, |E| = 9, 5.17.
-
88 5.
v1
v2
v3v4 v5
e1
e2e3
e4e5
e6
5.17: e1, e2, . . . , e6
:
B =
e1 e2 e3 e4 e5 e6v1 0 0 1 1 1 0v2 1 0 1 0 0 1v3 0 0 0 0 1 1v4 1 1 0 1 0 0v5 0 1 0 0 0 0
O(nm) bits . () . .
5.5.3 Lste Geitnash
G = (V,E), n = |V |,m = |E|, 1 . , . :
1. . .
1
Epigraf enai mia tim sunjw arijmhtik pou prosdiorzei monadik kje kmbo sto
grfo
-
5.5. 89
2. . .
10 ( ). G =(X,U), |X | = 6, |U | = 9 5.18. .
1
2
3
4
5
6
M =
0 1 1 0 0 00 0 1 1 0 10 0 0 0 0 10 0 0 0 1 00 1 0 0 0 00 0 0 1 0 0
5.18: M
5.19 5.20.
- . G 20000 5, - 20000 . 6 .
(n+m) bits (n+2m) . O(m) . .
-
90 5.
1
2
2
2 3
3
3
4
4
4 5
5
6
6
6
5.19:
0
0
1
1
1
1
22
2
2
2
33
3
3
3
3
44
4
4
4
5
5
5
5
66
6
6
6
6
7
7
7
7
8
8
8
9
9
9
10
10
10
w13w24w23w26w36w45w52w64w12
head
succ
weight
5.20:
-
Keflaio 6
Algrijmoi Grfwn
6.1 Exerenhsh Grfwn
( ) , .
1. , - s.
2. , - . t
3. .
4. .
5. .
6. (bipartite) .
- -. . (d(v)), d(v) v. (d+(v))
6.1.1 Genik morf en algorjmou exerenhsh
G = (V,E) s V , (source). s, G s.
91
-
92 6.
(. 6.1) s , 1 . - (marked) (unmarked). s - . i , j (i, j) j ( j s i (i, j)). (i, j) (admissible) (inadmissible). s . j (i, j) i (predecessor) j.
mark , List order .
Search (G, s)1. mark false2. Mark[s] = True3. List = {s}4. List 6= 5. i List6. i 7. List = List {i}8. 9. j i10. j 11. Mark[j] = True12. List = List {j}
6.1: G s
6.1.2 Exerenhsh Prta Kat Plto
List , List . (. 6.2) - .
1
Didoqo tou s lgetai kje kmbo pou brsketai se monopti me arq ton kmbo s
-
6.1. 93
List. - . s 1 , 2 .... (Breadth-First Search). :
ni=1
(d+(i) + 1
)=
ni=1
(d+(i)
)+ n = n+m.
(m + n). m > n - (m).
Breadth First Search (G, s)1. mark false2. Mark[s] = True3. s List4. List 6= 5. i List6. j i7. Mark[j] = True8. j List
6.2: Breadth First Search s
11 ( ). 6.5 - 6.3. a, (. 6.4). a . b, d , . b . 6.4. , , s = a (. 6.5).
6.1.3 Exerenhsh Prta Kat Bjo
List , List . - .
-
94 6.
a
b
c
d
e
f g
h
6.3: 8
a
a
b
bc
c
c
d
d
d
e
ef
fg
g
g
h
h
h
6.4:
s . (Depth First Search) 6.6. () (m+ n).
12 ( ). 6.8 6.3. a - . (
-
6.1. 95
g
a
b
d
c e
f
h
6.5:
) ( b) . b c . d c d . d . . d c, . . 6.7.
, (. 6.8).
6.1.4 Efarmog twn algorjmwn exerenhsh
, , father n. father[i] = 0, i [1, n] father[s] = s. fathers[j] = i - , i, j, - ( ). father . - (father[n]) (father[1]), .
-
96 6.
Depth First Search (G, s)1. mark false2. Mark[s] = True3. s List4. List 6= 5. i List6. i 7. i List8. 9. j i10. j 11. Mark[j] = True12. j List
6.6: Depth First Search
a a a a a a a aa
b b b b b b b b
c c c c c c c
d e e e e e
f f f f
g h h
6.7:
G = (V,E) s V . distance n, distance[i] = , i [1, n], distance[s] = 0. distance[j] = distance[i] + 1
-
6.1. 97
a
b
c
d
e
f g
h
6.8:
j i. , .
(s, v) s v. s v (s, v) = . .
1. G = (V,E) s V . (u, v) E
(s, v) (s, u) + 1.
. u s v. s v s u (u, v), . u s (s, u) = .
7. G = (V,E) Breadth First Search (BFS) s V . BFS v V s distance[v] = (s, v) v V . v 6= s s s v s father[v] (father[v], v).
.
-
98 6.
() . j i, .
: , G = (V,E).
6.2 Sunektikthta
20. () ( block). .
, - , , - . (. 6.9), (. 6.10) (. 6.11).
a
b
c
d
6.9:
21. (u, v) u v v u. , u v ().
(.. 6.9).
-
6.2. 99
a
b
c
de
f
g
h
6.10: 2
a
b c
d e
f
g
6.11:
, p > 1 - , , - . 6.12 .
. 6.13 -, , - . false. - . -. - . (m+ n) ().
-
100 6.
1
2
3
45
6.12:
Breadth First Graph Traversal1. mark false2. i = 1 i = n3. mark[vi] = false BFS(vi)
6.13:
6.3 Topologik Taxinmhsh
X , v X u X . (schedule) , .
-
6.3. 101
G = (X,U) X (u, v) U u , v. , G , , . 6.14 .
v1v1
v2
v2
v3
v3v4
v4
v5
v5
1 2 3 4
....
6.14: .
( ), - , , . .
Layer , - Sorted. 6.14 Layer [1, 3, 2, 4, 2], Sorted [v1, v3, v5, v2, v4].
, , :
(u, v) U Layer[u] < Layer[v], .
v , u 1(v) :Layer[u] Layer[v] 1.
: Q, .
-
102 6.
, Q s , G. 6.15.
(G = (X,U))1. inDeg 2. NLayer = 0 / /3. i = 1 / Sorted /4. Q = 5. for x = 1 to n6. if inDeg[x] = 0 then EnQueue(Q, x)7. end for8. while Q 6= do9. NLayer = NLayer + 110. for iter = 1 to |Q|11. Dequeue(Q, x) / x /12. Sorted[i] = x, i = i+ 113. Layer[x] = NLayer14. for k = head[x] to head[x+ 1] 115. y = succ[k]16. inDeg[y] = inDeg[y] 117. if inDeg[y] = 0 then EnQueue(Q, y)18. end for19. end for20. end while
6.15:
inDeg ( 1) O(m), - O(m) ().
6.4 Prxei se asndeta snola (disjoint set-
s)
( ) . disjoint-set . - (representative) , . :
Find(x): x
-
6.4. (DISJOINT SETS) 103
x.
Union(x, y): / x y , . x y.
Make-Set(x): x( ).
1 2
3 4
5
6
78
9null
Find(5) = 6
Find(7) = 9
Union(6, 9) = 9
6.16: Union Find.
Union Find 6.16. - 5 () 7 () Union Find : Find(5) = 6, Find(7) = 9 Union(6, 9) = 9 .
. 6.17.
6.18 .
-
104 6.
a b
c d
e f
g
h
i
j
6.17: :{a, b, c, d}, {e, f, g}, {h, i}, {j}.
Connected-Components(G)1. for each v V2. Make-Set(v)3. for each (u, v) E4. a = Find(u)5. b = Find(v)6. if a 6= b then Union(a, b)7. end for
6.18:
6.19 Connected-Components.
Pleur Sullog ap asndeta snola
arqik snola {a} {b} {c} {d} {e} {f} {g} {h} {i} {j}(b, d) {a} {b, d} {c} {e} {f} {g} {h} {i} {j}(e, g) {a} {b, d} {c} {e, g} {f} {h} {i} {j}(a, c) {a, c} {b, d} {e, g} {f} {h} {i} {j}(h, i) {a, c} {b, d} {e, g} {f} {h, i} {j}(a, b) {a, b, c, d} {e, g} {f} {h, i} {j}(e, f) {a, b, c, d} {e, f, g} {h, i} {j}(b, c) {a, b, c, d} {e, f, g} {h, i} {j}
6.19: 6.17.
, , - ( Find ) .
-
6.5. 105
Union Union . Find, . Find O(log n) ().
6.5 Elqista Monoptia
, , .
- . , , , .. - .
G = (V,E,W ) , V , E W w(i, j) [i, j] .
p = u0, u1, . . . , uk, ui V : w(p) =
ki=1 w(ui1, ui). s
t , ps,t = s, . . . , t .
:
- (Single Source Shortest Paths): s .
, Dijkstra Bellman.
- (All Pairs Shortest Paths): s V t V ps,t.
, Floyd-Warshall O(n3) Johnson O(n2 logn).
-, .
6.20. -, s 6.21.
-
106 6.
s = 1
1
1
2
2
22
2
23
3
3
3
3
4
4
55
6
7
7
t = 8
6.20: G = (V,E) s t
s = 1
1
1
2
2
2
22
2
3
3
3
3
3
3
4
4
55
6
7
7
t = 8
6.21: G = (V,E)
. s t w13+w36+w67+w78 = 7
- .
-
6.5. 107
3 7 3 7. . . :
s t pst =
s, u1, . . . , ui, . . . , uj, . . . , uk, t. - pij = ui, . . . , uj ui uj :, () s t : w(ps,i)+w(pi,j) + w(pj,t).
s tui uj
pij
pij
6.22: pij pij
pi,j w(pi,j) < w(pi,j), ps,t (.
6.22) , pi,j pi,j , ps,t .
:
: , .
, . , 6.23, s t, .
s t . .
: . , . . ,
-
108 6.
s
u
v
t
1
1 1
1
12
6.23: s u v t
. . . |V |1 , , |V | 1 .
6.5.1 O algrijmo tou Dijkstra
, . , E.W.Dijkstra 1954, . , s V , . ( ) .
FIXE[x], x = 1 . . . n . , FIXE[i] = TRUE i . i (FIXE[i] = FALSE) , V [i] ( -) i, , P [i] () i . i P [i] = 0 V [i] = +.
-
6.5. 109
, - . , P, V FIXE .
Dijkstra(G = (V,E,W ), s V )1. FIXE FALSE2. P 03. V 4. V [s] = 0, P [s] = s5. repeat6. x V [x]7. if V [x]
-
110 6.
1 2 3 4 5 6 7 8
1 FIXE 1 0 0 0 0 0 0 0P 1 1 1 0 0 0 0 0V 0 1 2 + + + + +
2 FIXE 1 1 0 0 0 0 0 0P 1 1 1 2 2 0 0 0V 0 1 2 4 4 + + +
3 FIXE 1 1 1 0 0 0 0 0P 1 1 1 2 2 3 0 0V 0 1 2 4 4 4 + +
4 FIXE 1 1 1 1 0 0 0 0P 1 1 1 2 2 3 4 0V 0 1 2 4 4 4 7 +
5 FIXE 1 1 1 1 1 0 0 0P 1 1 1 2 2 3 4 0V 0 1 2 4 4 4 7 +
6 FIXE 1 1 1 1 1 1 0 0P 1 1 1 2 2 3 6 6V 0 1 2 4 4 4 6 8
7 FIXE 1 1 1 1 1 1 1 0P 1 1 1 2 2 3 6 7V 0 1 2 4 4 4 6 7
8 FIXE 1 1 1 1 1 1 1 1P 1 1 1 2 2 3 6 7V 0 1 2 4 4 4 6 7
6.1: Dijkstra 6.20
O(nlogn+m) (m = O(n)) O(nlogn), O(n2) (m = O(n2)).
-
6.5. 111
1
11
11
111
2
2
22
2
2
2
2
2
2
2
2
2 2
3
33
3 3
3
3
3
3
3
3
3
3
3
3
3
3
44
5
7
1(1, 0)
1(1, 0)
1(1, 0)
1(1, 0)1(1, 0)
1(1, 0)1(1, 0)1(1, 0)
2(1, 1)
2(1, 1)2(1, 1)
2(1, 1)2(1, 1)
2(1, 1)2(1, 1)2(1, 1)
3(1, 2)
3(1, 2)3(1, 2)
3(1, 2)3(1, 2)
3(1, 2)3(1, 2)3(1, 2)
4(2, 4)
4(2, 4)4(2, 4)
4(2, 4)4(2, 4)
4(2, 4)4(2, 4)
5(2, 4)
5(2, 4)5(2, 4)
5(2, 4)5(2, 4)
5(2, 4)5(2, 4)
6(3, 4)
6(3, 4)6(3, 4)
6(3, 4)6(3, 4)
6(3, 4)
7(4, 7) 7(4, 7)
7(6, 6)
7(6, 6)7(6, 6) 8(6, 8)
8(7, 7)
8(7, 7)
6.25: Dijkstra. , s = 1.
-
112 6.
- . , . , - . a (. 6.26)
aa a
a
bb b
b
c
c cc
2
2
2 2
1
1
1 1
33
3
6.26: Dijkstra . a c b a b 1 a b 1 .
6.5.2 O algrijmo tou Bellman
Bellman . , .
, n1 . Bellman 1, 2, . . . , n 1 - s.
-
6.5. 113
, , - , .
- 6.27.
a
b
c d
e
f
g hs
1
1
1
2
2
2
22
23
3
3
4
5
6
7
7
8
6.27: 9 s
- ( 6.28).
a
b
c
s 3
4
7
6.28: 1.
-
114 6.
a, b, c . 7, 3, 4 . 2 ( 6.29).
a
b
c d
e
gs
1
1
2
3
3
4
7
8
6.29: 2.
, . a , s, b, a 5, b c 3 4 , d, e, g 8, 11, 72. 3( 6.30).
2
Parathrome ti h etikta tou e enai 8 pou enai to suntomtero monopti me 2 akm kai
qi 6 pou enai to monopti me 3 akm
-
6.5. 115
PSfrag
a
b
c d
e
f
g hs
1
1
2
2
2
2
2
3
3
3
467
7
8
6.30: 3.
a, b, c . e - , s, b, a, e 6. d, g , f, h 10 13. 4, . . . , 8.
, , 1, 2, . . . , n 1 () . . :
. 2 d, e, g. .
. - e 3. .
, .
, k . :
Vk(y) = minx{Vk1(y), Vk1(x) +W (x, y)}
-
116 6.
x y. k s y :
k 1 k 1 x y [x, y].
6.31:
s
yVk1[y]
Vk1[x1]
Vk1[x2]x1
x2
6.31: s y Vk1[y], Vk1[x1]+W (x1, y) Vk1[x2]+W (x2, y)
V [k][j] j(j = 1 . . . n) k(k = 1 . . . n1) . , +. P () P [i] i. , 6.32.
k ( stable). ( ) k+1, . . . , n 1. k .
u, V [n 1][u] = +, .
- 6.27. (, )
-
6.5. 117
Bellman(G = (V,E,W ), s V )1. P [i], i = 1 . . . n 02. V [0][i], i = 1 . . . n +3. V [0][s] = 0, P [s] = s, k = 04. repeat5. k = k + 16. for i = 1 to n7. V [k][i] = V [k 1][i]8. stable = TRUE9. for y = 1 n10. for each x y11. if V [k 1][x] 6= + and V [k][y] > V [k 1][x] +W [x, y]12. V [k][y] = V [k 1][x] +W [x, y]13. P [y] = x14. stable = FALSE15. end if16. end for17. end for18. until stable or k = n 1
6.32: Bellman G s
. k (V [k][y]) = P (y) y. .
H ektlesh tou algorjmou sto pardeigma
s a b c d e f g h
k = 0 s, 0 s, + s, + s, + s, + s, + s, + s, + s, +k = 1 s, 0 s, 7 s, 3 s, 4 s, + s, + s, + s, + s, +k = 2 s, 0 b,5 s, 3 s, 4 c,7 a,8 s, + b,11 s, +k = 3 s, 0 b, 5 s, 3 s, 4 c, 7 a,6 e,10 e, 9 d, 13k = 4 s, 0 b, 5 s, 3 s, 4 c, 7 a, 6 e, 8 e, 9 g,11k = 5 s, 0 b, 5 s, 3 s, 4 c, 7 a, 6 e, 8 e, 9 g, 11
, 1, . . . , n 1
. , . -, , O(d(y)) O(nm). (n2),
-
118 6.
. (n).
, . .. h (. 6.27 ) h g e a b s. d d c s. O(n).
-
Dijkstra (: 6.25). . n 1 , , . n .
6.5.3 O algrijmo tou Bellman gia grfou qwrkklo
, ( ) Bellman. ( 6.33):
Layer 3Layer 0 Layer 1 Layer 2
aa
bb
cc
dd
ee
ss
112
22
2
3
3
3
3
3
3
5
5
5
5
99
6.33: ( )
- , , .
-
6.6. 119
- Bellman : Sorted G , - (Sorted[i], Sorted[j]) i < j. i < j (Sorted[i], Sorted[j]) Layer[Sorted[i]] Layer[Sorted[j]].
Bellman-Acyclic(G = (V,E,W ), s V )1. P [i], i = 1 . . . n 02. V [i], i = 1 . . . n +3. V [s] = 0, P [s] = s4. for each x s5. V [x] =W [s, x]6. for i = 1 n7. x = Sorted[i]8. if Layer[x] > Layer[s] then9. for each y x V [x] +W [x, y] < V [y]10. V [y] = V [x] +W [x, y]11. P [y] = x12. end for13. end for14. end for
6.34: Bellman G. sorted .
, - . - ( sorted), . - , , O(m).
6.6 Dntra Epikluyh
- G = (V,E,W ), E V . . (pins) (, ...) . n -
-
120 6.
n1 . . .
, G = (V,E,W ), V -, E (u, v) E w(u, v) u v. E E w(E) =
(u,v)E w(u, v) .
.
22. : G = (V,E)
. n n1 . .
6.35: Web
n G n.
E . (spanning tree).
-
6.6. 121
23. T G = (V,E) E T = (V,E) ., G .
v1v1
v2 v2v3 v3
v4 v4v5 v5
v6 v6
6.36: G = (V,E)
6.6.1 Prblhma eresh en dntrou epikluyh elqis-
tou kstou
G = (V,E,W ) . e E w(e).
24. (minimum cost s-panning tree) T = (V,E) W (T ) =
eE w(e).
6.37 21 15 . 1, ( n 1).
-
122 6.
v1
v1
v1
v2
v2
v2
v3
v3
v3
v4
v4
v4v5
v5
v5
v6
v6
v6
1
1
12
2
3
3
4
4
4
5
5 5
55
5
6
6
6
6
T1: = 21
T2: = 15
6.37: G = (V,E,W ) T1 T2 W (T1) = 21 W (T2) = 15
() (). -.
. - 6.38. . . , . , .
. (. 6.39). - .: (minimum spanning tree) .
- , ,
-
6.6. 123
6.38: . .
v1
v1
v1
v2
v2
v2
v3
v3
v3v4
v4
v4
v5
v5
v5
v6
v6
v6
v7
v7
v71
1
1
22
22
22
3
3
3
3
3
4
6 66
6 6
66
7
8
T1: = 20
T2: = 20
6.39: G = (V,E,W )
-
124 6.
. 1875 .
8. (Arthur Cayley, 1875) , nn2, n .
n 1 2 3 4 5 6 7 8 10 1 1 3 16 125 1296 16807 262144 108
2
. - . ( Prim Kruskal) .
9. F = (F1, F2, . . . , Fk) Fi = (Vi, Ei) G = (V,E,W ) (u, v) V1. , - , , (u, v).
: T =ki=1 Ei F .
Ai T . A = (V,E) T (u, v) ,
(A) (Ai) (6.1) (u, v) E c. c (x, y) x V1 y V \V1. Wxy > Wuv (x, y) / T . (x, y) (u, v) A = (V,E
(u, v)\(x, y))
:
(A) < (A)
6.1.
6.6.2 Algrijmo Prim
Prim A A . . A A
-
6.6. 125
uv
F1F2
F3
x
y
wxy
wuv
6.40: F1, F2, F3 G. (u, v) V1 G.
A. . (greedy) , .
Prim (G = (V,E,W ))1. T = {u} /* u V */2. for i = 2 to |V | do3. T T {v}, v T4. end for
6.41: Prim G.
T v, T , w(u, v) u T . T . 6.42 - v5.
-
126 6.
15.
v1v1
v1 v1
v1v1
v2v2
v2v2
v2v2
v3v3
v3 v3
v3v3
v4v4
v4 v4
v4v4
v5
v5v5
v5v5
v5
v6 v6
v6v6
v6
1 1
1
11
1
22
2 2
22
33
3
33
3
44
4
44
4
55
5555
55
5555
5
55
5
5 5
66
66
66
66
6
6
6
6 6
66
6
6
1 2
3 4
5 6
6.42: Prim v5.
Prim
-
6.6. 127
G = (V,E) |V | = n |E| = m di i . i-,1 i n 1, :
d1d1 + d2d1 + d2 + d3. . .d1 + d2 + d3 + . . .+ di. . .d1 + d2 + d3 + . . .+ di + . . .+ dn1(n 1)d1 + (n 2)d2 + . . .+ (n i)di + . . .+ 2dn2 + dn1 n
n1i=1 di = O(mn)
6.6.3 Algrijmo Prim (nearest neighbour)
Prim O(mn). - O(n2). near[x], dist[x], x V :
near[x] =
x, x T0, x / T, y T : (x, y) Ey, y T
dist[x] =
Wx,y, near[x] = y
+, near[x] = 00, near[x] = x
v , . dist[v] .
-
128 6.
Prim (G = (V,E,W ))1. VT = {s} /* s V */2. near[s] = s, ET = 3. for every node i (s) do4. near[i] = s; dist[i] = ws,i5. end for6. for every node j / {s} (s) do7. near[j] = 0; dist[j] = +8. end for9. while |VT | < n do10. u V VT dist[u]11. if dist[u] = then graph disconnected, exit12. VT = VT {u} ET = ET {(u, near[u])}13. for x (V VT ) do14. if wux < dist[x] then15. dist[x] wux; near[x] u16. end if17. end for18. end while
6.43: Prim G.
. 6.44 -, . v4 dist[v4] = 14. v4 v3 v3 .
Prim (nearest neigh-bour) O(n2). n 1 O(n+ di) , di i (. 6.45).:
G n 1 ,
i < n1 (x, y) x y w(x, y)
-
6.6. 129
v1v1
v2v2
v3v3
v4v4 v5v5
v6v6
v7v7 v8v8
14
15 1616
2828
3939
near[v4] = v5, dist[v4] = 14
near[v3] = v1, dist[v3] = 28
near[v4] = v4, dist[v4] = 0
near[v3] = v4, dist[v3] = 16
6.44: v4 v3 . v3 v4.
, Kruskal.
6.6.4 Algrijmo Kruskal
n , . - , . - ( ) ( ).
-
130 6.
yx
v1 v2
v3dx
6.45: x near dist
Kruskal (G = (V,E,W ))1. T 2. while (|T | < n 1) and (E 6= ) do3. e =smallest edge in E4. E = E {e}5. if T {e} has no cycle then6. T T {e}7. end if8. end while9. if (|T | < n 1) then10. write graph disconnected
. (. 6.46) - . 15.
-
6.6. 131
v1v1
v1 v1
v1v1
v1
v2v2
v2 v2
v2v2
v2
v3v3
v3 v3
v3v3
v3
v4v4
v4 v4
v4v4
v4
v5
v5v5
v5
v5
v5
v5
v6 v6
v6v6
v6
v6
v6
1 1
1
11
1
1
22
2 2
22
2
33
3
33
3
3
44
4
44
4
4
55
5555
55
5555
5
55
5
5 5
5
5 5
66
66
66
66
6
6
6
6 6
66
6
6
6
6
6
(v1, v3) : 1(v4, v6) : 2(v2, v5) : 3(v3, v6) : 4(v1, v4) : 5(v3, v4) : 5(v2, v3) : 5(v1, v2) : 6(v3, v5) : 6(v5, v6) : 6
1 2
3 4
5,6
6.46: Kruskal. 5 (v1, v4)
-
132 6.
Kruskal O(m lg n), m - n , - Union Find. O(m lgm). O(lg n) m , O(m lgm) +O(m lg n) , m < n2, O(m lg n) .
:
, ( , 8).
Kruskal - - Prim .
: Prim O(n2) Kruskal O(m lg n), m . , m = O(n2) , m = O(n). - O(n2) Prim O(n2 logn) Kruskal. Prim . Prim - O(n2) Kruskal O(n log n).
-
6.7. (TSP)133
6.7 DEEK kai to prblhma tou Plandiou
Pwlht (TSP)
G = (V,E,W ) , n. (Traveling Salesman Problem) ( Hamilton) .
6.47 v1, v2, v3, v5, v4, v1 15. v1, v5, v2, v3, v4, v1 13.
v1
v1
v1
v2
v2
v2
v3
v3v3
v4
v4
v4
v5
v5
v5
1
1
1
1
1 1 2
22
2
2
2
22
2
3
3
3
3
3
3
44
4
4
4
4
5
55
6.47: . .
6.48 K4. . TSP .
. - . B(I) , I (instance) TSP. - B(I) :
vi G. T G =(V \{vi}, E), E = E {(vi, v)} v (vi). K(T )
-
134 6.
v1 v1v2 v2
v3 v3v4 v4
2 2
3 3
4 4
55
66
8 8
= 21 = 17
6.48: 21 17 K4
.
(vi, vk) (vi, vl),k, l 6= i, wil wik.
B(I) = K(T ) + wil + wik: {v1, v2, . . . , vi, . . . , vn, v1} Copt. vi, T ( vi+1, . . . , v1, v2, . . . , vi1). :
(T ) (T ).
6.50 A K5 K4 16. AE,AD,AC,AB AE AC wAE = 2 wAC = 4. B(I) TSP 22.
-
6.7. (TSP)135
v1
v2
vi
vi1
vi+1
vn1
vn
B(I) = (T ) +Wik +Wil
(T ) +Wi,i1 +Wi,i+1= ( )
= Copt
.
6.49: TSP. vi Kn1
E
E
E
A B
B
B
C
C
C
D
D
D
7
7
7
2 8
8
84
4
4
4
5
5
5
6
6
6
9
9
G = (V,E)
A
K(T ) = 16
B(I) = K(T ) + wAE + wAC = 16 + 2 + 4 = 22
6.50: K5. K4 = K5 {A}. K4 16.
-
136 6.
-
Keflaio 7
'Aplhstoi Algrijmoi
( - , ), -, .
(greedy algorithm) - . , . , , .
( Prim Kruskal Dijkstra ).
, . , ( ) .
7.1 Genik morf en 'Aplhstou Algrij-
mou
E e E v(e) ( (v(e) N).
F E, C, C(F ) = true. F (feasible solution) .
137
-
138 7.
F E,
eFv(e)
( ) ( ).
F . e E ( ), . E. 7.1.
Greedy (E : )1. F = 2. while E 6= do3. x E4. E = E {x}5. if F {x} feasible then6. F = F {x}7. end if8. end while9. return F
7.1:
5 , x , .
Kruskal (. 7.2).
E E ( ). , . , .
6.6 . .
7.2 Anjesh en prou
( - ), P = {P1, . . . , Pn}
-
7.2. 139
Kruskal (G = (V,E,W ))1. T = 2. while (|T | < n 1) and (E 6= ) do3. e =smallest edge in E4. E = E {e}5. if T {e} has no cycle then6. T T {e}7. end if8. end while9. if (|T | < n 1) then10. write graph disconnected
7.2: Kruskal G = (V,E).
. Pi, (ai, Ti) , ai - Ti . .
7.3. - {P3, P4, P5} . {P1, P2} (maximal), .
a1 a2
a3 a4 a5
T1 T2
T3 T4 T5
7.3: .
(. 7.4) , . Pi
-
140 7.
Pj , 1 j < i.
- (P : )1. (P )2. F = 3. for i = 1 to n4. Pi5. if F {Pi} feasible then6. F = F {Pi}7. end if8. end while9. return F
7.4:
. -, , . 7.3 .
. 7.5. {P1, P2, P3}, - {P4, P5}.
a1 a2 a3
a4 a5
T1 T2 T3
T4 T5
7.5: .
, 7.3 [P1, P3, P4, P2, P5]
-
7.3. 141
7.5 [P1, P4, P2, P5, P3]. , .
-.
F = {x1, x2, . . . , xk, . . . , xp}
Opt = {y1, y2, . . . , yk, . . . , yq}
(q p). (k 1)- k- , :
x1 = y1, x2 = y2, . . . , xk1 = yk1, xk 6= yk
xk xk yk. yk xk , xk . Opt :
Opt = {x1, x2, . . . , xk1, xk, yk+1, . . . , yq}
yk+1, . . . , yq p = q .
7.3 Apojkeush arqewn se dskou
n l1, l2, . . . , ln - L. ,
ni=1 li 2L.
. . 7.6 .
-
142 7.
- (l : , L : )1. -(l)2. i = 13. for j = 1 to 24. sum = 05. while sum+ li L6. i j7. sum = sum+ li8. i = i+ 19. end while10. end for
7.6: -
, 7.7, 10 4 2, 4, 5, 6
6
5
5
2
2
4
4
Greedy
Optimum
7.7: . 3 4.
, . NP -,
-
7.4. (DISCRETE KNAPSACK) 143
() .
7.4 To Diakrit Prblhma Sakidou (Dis-
crete Knapsack)
. n X = {x1, x2, . . . , xn} a1, a2, . . . , an. ci . , b. , zi {0, 1} i, :
max
ni=1
cizi
:ni=1
aizi b
-, ci/ai . 7.8.
Discrete-Knapsack (X : , a, c : , b : )1. -(ci/ai)2. S = 3. for i = 1 to n4. if b ai5. S = S {xi}6. b = b ai7. end if8. end for
7.8:
. : 3 {x1, x2, x3} a = (k + 1, k, k)
-
144 7.
c = (k+2, k, k). 2k. ci/ai x1, x2, x3
k + 2
k + 1>k
k=k
k
x1 k+2 x2, x3 2k. , k 100%.
NP, - -. , .
7.5 To Suneq Prblhma Sakidou (Contin-uous Knapsack)
, . zi [0, 1].
ci/ai . 7.9
Continuous-Knapsack (X : , a, c : , b : )1. -(ci/ai)2. for i = 1 to n zi = 03. i = 13. while b ai do4. zi = 15. b = b ai6. i = i+ 17. end while8. zi = b (ci/ai)
7.9:
-
Keflaio 8
Dunamik
Programmatism
8.1 Eisagwgik
1 (dynamic programming), , -, .
, , . - - . , -, , .
, , , - - (overlapping subproblems). , , .
, .
1. .
2. .
3. .
4. .
1
O ro programmatism prorqetai ap ma susthmatik mjodo pou qrhsimopoie pnake
(tabloid method) kai den sqetzetai me thn anptuxh kdika se kpoia glssa programmatismo
145
-
146 8.
, .
8.2 Basik stoiqea tou dunamiko program-
matismo
, - . . .
8.2.1 Bltista diaspmenh dom (optimal substructure)
, , . :
.
, , .
, - , :
1. , . - . , , p u v. u v, u p p v.
2. , , .
3. , . , p - u v,
-
8.2. 147
. u p p v.
4. . , .
- , (bottom-up). , - , . - , . - .
- . (independency) -, . , - , .
- . , w u v, u v u w w v. 8.1.
q
st
r
8.1:
-
148 8.
q t, p1 : q r p2 : r t. p1 q t s r, t s. -, . .
8.2.2 Epikaluptmena upoproblmata (Overlapping sub-problems)
- .
, , , , . - , -, . :
, , - . , ( ).
- -. - , . .
, - () . , .
8.3 Efarmog
( ) . , , .
, -, .
-
8.3. 149
, Bellman , .
8.3.1 Qronodromolghsh gramm paragwg
.
, n . - Sij . S1j S2j . aij , Sij . ei, , , i, i {1, 2} xi i .
. , , , , . . tij Sij , j = 1, 2, . . . , n 1.
:
.
8.2 . - 1 2.
Entrance
e1
e2
x1
x2
a1,1 a1,2 a1,3 a1,n1a1,n
a2,1 a2,2 a2,3 a2,n1 a2,n
t1,1 t1,2 t1,3 t1,n1
t2,1 t2,2 t2,3t2,n1
S1,1 S1,2 S1,3 S1,n1 S1,n
S2,1 S2,2 S2,3 S2,n1 S2,n
Exit
8.2:
-
150 8.
1:
S1j .
j = 1 ( ), . (j = 2, 3, . . . , n) 8.2. S1j1 S2j1, t2j1.
:
S1j S1j1, S1j1 . , , -, S1j1 S1j S1j , .
S1j S2j1, S2j1 .
:
S1j - S1j1 S2j1.
, S1j :
S1j1 S1j
S2j1 S1j t2j1
, S2j
S2j1 S2j
S1j1 S2j t1j1
2:
, - , - .
-
8.3. 151
f 2 n, fij (i = 1, 2 j = 1, 2, . . . , n) Sij .
:
f = min{f1n + x1, f2n + x2} (8.1)
, S1n, S2n.
f .
:
f1j =
{e1 + a11 j = 1min{f1j1 + a1j , f2j1 + t2j1 + a1j} j 2 (8.2)
:
f2j =
{e2 + a21 j = 1min{f2j1 + a2j , f1j1 + t1j1 + a2j} j 2 (8.3)
, i , ei + ai1.
.
(8.2) (8.3) aij , . ,