42
 ΠΛΗ30 ΕΝΟΤΗΤΑ  1:  ΑΝΑΛ ΥΣΗ  ΑΛΓΟΡΙΘΜΩΝ Μάθηµα 1.4:  Ανάλ υση  Αναδροµικ ών  Αλγορίθµων Η αναδροµική σχέση T(n)=aT(n/b)+f(n) τ  Ψούν

ΠΛΗ30 - ΜΑΘΗΜΑ 1.4

Embed Size (px)

DESCRIPTION

ΠΛΗ30 - ΜΑΘΗΜΑ 1.4

Citation preview

  • 30 1:

    1.4:

    T(n)=aT(n/b)+f(n)

  • .

    .

    1.

    2 , 30, 1.4: T(n)=aT(n/b)+f(n)

    1.

    1. BinarySearch

    2. MergeSort

    2.

    .

    1. T(n)=aT(n/b)+f(n)

    1.

    2. 2.

    .

  • .

    :

    3 , 30, 1.4: T(n)=aT(n/b)+f(n)

    T(n)=aT(n/b)+f(n)

    T(n)=aT(n/b)+f(n)

    MergeSort BinarySearch

  • . 1.

    4 , 30, 1.4: T(n)=aT(n/b)+f(n)

    . .

    .

    .

    :procedure recursive(n)

    ...

    ...

    :

    BinarySearch MergeSort

    ...

    recursive(n-1)...

    ...

    end procedure

  • . 1. 1. BinarySearch (1. )

    5 , 30, 1.4: T(n)=aT(n/b)+f(n)

    BinarySearch : : A, x : A, x:

    ,

    x .

    , 0.

    : : :

    x, .

    x

    x

  • . 1. 1. BinarySearch (2. )

    6 , 30, 1.4: T(n)=aT(n/b)+f(n)

    BinarySearch procedure BinarySearch(A,x,start,finish)procedure BinarySearch(A,x,start,finish)

    if start>finish then return 0

    else middle=(start+finish) div 2if (x==A[middle]) then

    return middleelse if (xmiddle) thenpos=BinarySearch(A,x,middle+1,finish)return pos

    end ifend if

    end procedure

  • . 1. 1. BinarySearch (3. )

    7 , 30, 1.4: T(n)=aT(n/b)+f(n)

    11 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

    : BinarySearch(A,11,1,15): middle=(1+15) div 2=8. xA[middle]

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

    2 3 5 7 11 13 17 21 23 27 31 33 37 41 43

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

    2 3 5 7 11 13 17 21 23 27 31 33 37 41 43

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

    2 3 5 7 11 13 17 21 23 27 31 33 37 41 43

    start

    start

    finish

    finish

    : BinarySearch(A,11,5,7) : middle=(5+7) div 2=6 x

  • . 1. 1. BinarySearch (4. )

    8 , 30, 1.4: T(n)=aT(n/b)+f(n)

    : x . .

    T(n)=5 T(n)=(1). : x :

    T(n) n. 8

    ( 2 )

    1

    n

    n, T(n),

    1 . :

    n=0 1 ( )

    12

    n

    12

    n

    12nT

    912

    )( +

    =

    nTnT

  • . 1. 1. BinarySearch (4. )

    9 , 30, 1.4: T(n)=aT(n/b)+f(n)

    :

    = 0,1 n

    ,

    :

    :

    >+

    =

    = 0,912

    0,1)(

    nnT

    n

    nT

    12

    n

    2n

    :

    :

    >+

    =

    = 0,92

    0,1)(

    nnT

    n

    nT

    )(log)( nnT =

  • . 1. 2. MergeSort (1. )

    10 , 30, 1.4: T(n)=aT(n/b)+f(n)

    MergeSort : : () A n : () A n :

    : :

    .

  • . 1. 2. MergeSort (2. )

    11 , 30, 1.4: T(n)=aT(n/b)+f(n)

    MergeSort procedure MergeSort(A,start, finish)procedure MergeSort(A,start, finish)

    if |A|

  • . 1. 2. MergeSort (2. )

    12 , 30, 1.4: T(n)=aT(n/b)+f(n)

    Merge : :procedure Merge(A,)

    i=1, j=1, k=1while (i

  • . 1. 2. MergeSort (3. )

    13 , 30, 1.4: T(n)=aT(n/b)+f(n)

    MergeSort(,1,16)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 9 10 13

  • . 1. 2. MergeSort (3. )

    14 , 30, 1.4: T(n)=aT(n/b)+f(n)

    MergeSort(,1,16)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

  • . 1. 2. MergeSort (3. )

    15 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,1,8)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

    1 2 3 4

    18 7 4 115 6 7 8

    9 20 6 118 7 4 11 9 20 6 1

  • . 1. 2. MergeSort (3. )

    16 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,1,4)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

    1 2 3 4

    18 7 4 115 6 7 8

    9 20 6 118 7 4 11 9 20 6 1

    1 2

    18 73 4

    4 11

  • . 1. 2. MergeSort (3. )

    17 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,1,2): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

    1 2 3 4

    18 7 4 115 6 7 8

    9 20 6 118 7 4 11 9 20 6 1

    1 2

    7 183 4

    4 11

  • . 1. 2. MergeSort (3. )

    18 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,3,4): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

    1 2 3 4

    18 7 4 115 6 7 8

    9 20 6 118 7 4 11 9 20 6 1

    1 2

    7 183 4

    4 11

  • . 1. 2. MergeSort (3. )

    19 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,1,4): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

    1 2 3 4

    4 7 11 185 6 7 8

    9 20 6 14 7 11 18 9 20 6 1

    1 2

    7 183 4

    4 11

  • . 1. 2. MergeSort (3. )

    20 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,5,8)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

    1 2 3 4

    4 7 11 185 6 7 8

    9 20 6 14 7 11 18 9 20 6 1

    1 2

    7 183 4

    4 11

    5 6

    9 207 8

    6 1

  • . 1. 2. MergeSort (3. )

    21 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,5,6): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

    1 2 3 4

    4 7 11 185 6 7 8

    9 20 6 14 7 11 18 9 20 6 1

    1 2

    7 183 4

    4 11

    5 6

    9 207 8

    6 1

  • . 1. 2. MergeSort (3. )

    22 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,7,8): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

    1 2 3 4

    4 7 11 185 6 7 8

    9 20 6 14 7 11 18 9 20 6 1

    1 2

    7 183 4

    4 11

    5 6

    9 207 8

    1 6

  • . 1. 2. MergeSort (3. )

    23 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,5,8): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

    1 2 3 4

    4 7 11 185 6 7 8

    1 6 9 204 7 11 18 1 6 9 20

    1 2

    7 183 4

    4 11

    5 6

    9 207 8

    1 6

  • . 1. 2. MergeSort (3. )

    24 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,1,8): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    1 4 6 7 9 11 18 209 10 11 12 13 14 15 16

    22 19 14 5 2 3 10 13

    1 2 3 4

    4 7 11 185 6 7 8

    1 6 9 204 7 11 18 1 6 9 20

    1 2

    7 183 4

    4 11

    5 6

    9 207 8

    1 6

  • . 1. 2. MergeSort (3. )

    25 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (9,16)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

    1 2 3 4 5 6 7 8

    1 4 6 7 9 11 18 209 10 11 12 13 14 15 16

    2 3 5 10 13 14 19 22

    1 2 3 4

    4 7 11 185 6 7 8

    1 6 9 209 10 11 12

    5 14 19 2213 14 15 16

    2 3 10 134 7 11 18 1 6 9 20

    1 2

    7 183 4

    4 11

    5 6

    9 207 8

    1 6

    5 14 19 22 2 3 10 13

    9 10

    19 2211 12

    5 14

    13 14

    2 315 16

    10 13

  • . 1. 2. MergeSort (3. )

    26 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (A,1,16): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    1 2 3 4 5 6 7 9 10 11 13 14 18 19 20 22

    1 2 3 4 5 6 7 8

    1 4 6 7 9 11 18 209 10 11 12 13 14 15 16

    2 3 5 10 13 14 19 22

    1 2 3 4

    4 7 11 185 6 7 8

    1 6 9 209 10 11 12

    5 14 19 2213 14 15 16

    2 3 10 134 7 11 18 1 6 9 20

    1 2

    7 183 4

    4 11

    5 6

    9 207 8

    1 6

    5 14 19 22 2 3 10 13

    9 10

    19 2211 12

    5 14

    13 14

    2 315 16

    10 13

  • . 1. 2. MergeSort (4. )

    27 , 30, 1.4: T(n)=aT(n/b)+f(n)

    Merge :)()( mnnT +=

    MergeSort :

    >+

    +

    === 2),(

    22

    21),1()(

    nnnTnT

    nn

    nT

    nnn

    =

    )()( mnnT +=

    :

    . : (n)=(nlogn)

    222nnn

    =

    >+

    === 2),(

    22

    21),1()(

    nnnT

    nn

    nT

  • . 1. T(n)=aT(n/b)+f(n)

    28 , 30, 1.4: T(n)=aT(n/b)+f(n)

    T(n)=aT(n/b)+f(n) :: ,

    , ( ).

    : , ..

    ( 2 3 ..) .

  • . 1. T(n)=aT(n/b)+f(n)1.

    29 , 30, 1.4: T(n)=aT(n/b)+f(n)

    (Master Theorem) : : :

    a1, b>1 , f(n) . :

    ) >0, :)()( log = abnOnf

    )()( nfbn

    aTnT +

    =

    ( )abnnT log)( =) :

    ) >0 c

  • . 1. T(n)=aT(n/b)+f(n)1.

    30 , 30, 1.4: T(n)=aT(n/b)+f(n)

    :

    a,b f(n) a,b f(n) logba. f(n) :

    B

    abnnf log)(

  • . 1. T(n)=aT(n/b)+f(n)1. ( )

    31 , 30, 1.4: T(n)=aT(n/b)+f(n)

    : :: :

    ::

    : >0 :

    nnTnT +

    =

    28)(

    )()( 3 == nOnnf

    )()( 3nnT =

    38loglog,)(,2,8 2 ===== annfba b

    )()( 3nnT =

  • . 1. T(n)=aT(n/b)+f(n)1. ( )

    32 , 30, 1.4: T(n)=aT(n/b)+f(n)

    : :: :

    ::

    :

    :

    2

    39)( nnTnT +

    =

    )()( 22 nnnf ==

    )log()( 2 nnnT =

    29loglog,)(,3,9 32 ===== annfba b

    )log()( 2 nnnT =

  • . 1. T(n)=aT(n/b)+f(n)1. ( )

    33 , 30, 1.4: T(n)=aT(n/b)+f(n)

    2 , c>0 . )(nfcnfa c>0 . c a, b f(n) f(n/b).: :

    ::

    : >0 c

  • . 1. T(n)=aT(n/b)+f(n)2.

    34 , 30, 1.4: T(n)=aT(n/b)+f(n)

    T(n)=aT(n/b)+f(n), T(n)=aT(n/b)+f(n), :

    1. 3 ( )

    2. k ( )

    .......)( 3 +

    =

    bnTnT

    .......)( +

    = kb

    nTnT

    nn

    =3. ( n0 k). .. n0=1 k=logbn

    4. k 2.

    5. .

    0nbn

    k =

  • . 1. T(n)=aT(n/b)+f(n)2. ( 1: 3 )

    35 , 30, 1.4: T(n)=aT(n/b)+f(n)

    1 3 . .

    ,

    : :

    :

    =

    >+

    =

    1,1

    1,3

    5)(n

    nnnT

    nT

    +

    = nnTnT 5)( 5)( nnTnT +=

    =+++

    =++

    +

    =

    ++

    =+

    +

    =

    +

    =

    nnnnTnnnnT

    nnnTnnnT

    nTnT

    35

    35

    35

    35

    3355

    35

    35

    3355

    35)(

    22

    33

    232

    22

    2

    232

    2

    335

    3

    335

    3

    35)(

    nnTnT

    nnTnT

    nTnT

    +

    =

    +

    =

    +

    =

  • . 1. T(n)=aT(n/b)+f(n)2. ( 2: k)

    36 , 30, 1.4: T(n)=aT(n/b)+f(n)

    2 k ( .......)( += nTnT(

    ()

    nnnnnT

    nnnnT

    kk

    kk +++++

    =

    ==

    =+++

    =

    35

    35...

    35

    35

    ...

    35

    35

    35

    22

    11

    22

    33

    .......)( +

    = kbTnT

    3333

  • . 1. T(n)=aT(n/b)+f(n)2. ( 3: k)

    37 , 30, 1.4: T(n)=aT(n/b)+f(n)

    ( n0 k).

    0nbn

    k =

    k).

    ()

    nk 13

    =

    =

    nkkn

    n

    n

    k

    k

    3

    33

    33

    log3loglog

    3loglog3

    =

    =

    =

    =

  • . 1. T(n)=aT(n/b)+f(n)2. ( 4: k)

    38 , 30, 1.4: T(n)=aT(n/b)+f(n)

    k 2. 2. .

    ()

    k=log3n (n) :

    nnn

    nnnnnTnT

    n

    n

    n

    n +++++

    =

    35

    35...

    35

    35)( 221log1logloglog 3333

    ( )n

    nnn

    nnnnT

    n

    nn

    n

    nn

    +++++=

    +++++=

    35

    35...

    355

    35

    35...

    3515

    22

    1log1loglog

    22

    1log1loglog

    3

    33

    3

    33

  • . 1. T(n)=aT(n/b)+f(n)2. ( 5: )

    39 , 30, 1.4: T(n)=aT(n/b)+f(n)

    .

    :

    ()

    nn

    nnnn

    nnnn

    nT

    ni

    nn in

    n

    nn

    n

    nn

    5555

    35...

    35

    355

    35

    35...

    355)(

    33

    3

    33

    3

    33

    1loglog1loglog

    1log1log

    22log

    22

    1log1loglog

    =+=+=

    =

    +++++=

    =+++++=

    =

    +

    =

    n

    i

    ni

    x

    xx

    0

    1

    11

    nnn

    nn

    nn

    nnn

    n

    n

    iinn

    i

    in

    n

    i inn

    i iin

    5,166,15,15166,1

    166,15

    66,15355

    355

    355

    333

    3

    3333

    3333

    loglog11log

    log

    1log

    0log1log

    0log

    1log

    0log1log

    0log

    +=

    +=

    =+=

    +=

    =+=+=

    +

    =

    =

    =

    =

    nnnT nn 5,166,15,15)( 33 loglog +=

  • . 1

    :

    40 , 30, 1.4: T(n)=aT(n/b)+f(n)

    :

    4

    3

    2

    28)()

    28)()

    28)()

    nnTnTC

    nnTnTB

    nnTnTA

    +

    =

    +

    =

    +

    =

  • . 2

    :

    41 , 30, 1.4: T(n)=aT(n/b)+f(n)

    3

    2

    25)()

    25)()

    nnTnTB

    nnTnTA

    +

    =

    +

    =

  • . 3 :

    42 , 30, 1.4: T(n)=aT(n/b)+f(n)

    >+

    =

    =

    >+

    =

    1,3

    4)()

    1,1

    1,2

    6)()

    2 nnnT

    nTB

    n

    nnnT

    nTA

    =

    1,1

    3n