Vz Algorithms 08

of 187 /187

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 , . ,