ΠΛΗ30 ΜΑΘΗΜΑ 2.1

29
ΠΛΗ30 ΕΝΟΤΗΤΑ 2: ΣΧΕ∆ΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ Μάθηµα 2.1: ∆ιαίρει και Βασίλευε ∆ηµήτρης Ψούνης

description

1) Διαίρει και Βασίλευε1.1) Ο αλγόριθμος MergeSort (Ταξινόμηση με Συγχώνευση)1.2) Ο αλγόριθμος QuickSort (Γρήγορη Ταξινόμηση)1.3) Ο αλγόριθμος QuickSelect (Γρήγορη Επιλογή)1.4) Ο αλγόριθμος Strassen για τον πολλαπλασιασμό πινάκωνΑσκήσεις

Transcript of ΠΛΗ30 ΜΑΘΗΜΑ 2.1

  • 30 2:

    2.1:

  • .

    1.

    1. MergeSort( )

    2. QuickSort ( )

    3. QuickSelect ( )

    4. Strassen /

    .

    2 , 30, 2.1:

    .

    1.

  • .

    :

    (-)

    3 , 30, 2.1:

    (QuickSort) k- Strassen

  • B.

    4 , 30, 2.1:

    2 , :

    ( 2.1)

    ( 2.2)

    ( 2.3)

    .

  • B. 1.

    5 , 30, 2.1:

    :

    1. : .

    2. : ( )

    3. : , .

  • . 1. 1. MergeSort

    6 , 30, 2.1:

    MergeSort ( ) :

    1. : :

    ],...,[ 1 naaA =],...,[ 2/11 naaA = ],...,[ 12/2 nn aaA +=

    :

    2. : MergeSort.

    3. : Merge ( 1.4)

    2/11 n 12/2 nn +

    )log(...)(2

    2)( nnnn

    TnT ==+

    =

  • . 1. 2. QuickSort

    7 , 30, 2.1:

    QuickSort ( ) :

    1. : : 1 1

    ],...,[ 1 naaA =1 1

    2 1

    2. : ( 1 2) QuickSort.

    3. : A = [A1]1[A2]

  • . 1. 2. QuickSort (1.)

    8 , 30, 2.1:

    QuickSort:procedure QuickSort(A,start,finish)

    if startodigo)B[j]=A[k]; j=j-1

    else B[i]=A[k]; i=i+1

    end forB[i]=odigo; =return pos;

    end procedure

  • . 1. 2. QuickSort (2. )

    9 , 30, 2.1:

    Partition: B.1

    B.2

    1 2 3 4 5 6 7 8

    9 7 4 11 18 20 6 1

    1 2 3 4 5 6 7 8

    7k i j1 2 3 4 5 6 7 8

    9 7 4 11 18 20 6 1

    1 2 3 4 5 6 7 8

    7 4k i j

    1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

    B.3

    B.4

    B.5

    B.6

    B.7

    1 2 3 4 5 6 7 8

    9 7 4 11 18 20 6 1

    1 2 3 4 5 6 7 8

    7 4 11k i j

    1 2 3 4 5 6 7 8

    9 7 4 11 18 20 6 1

    1 2 3 4 5 6 7 8

    7 4 18 11k i j

    1 2 3 4 5 6 7 8

    9 7 4 11 18 20 6 1

    1 2 3 4 5 6 7 8

    7 4 20 18 11k i j

    1 2 3 4 5 6 7 8

    9 7 4 11 18 20 6 1

    1 2 3 4 5 6 7 8

    7 4 6 20 18 11k i j

    1 2 3 4 5 6 7 8

    9 7 4 11 18 20 6 1

    1 2 3 4 5 6 7 8

    7 4 6 1 20 18 11k i j1 2 3 4 5 6 7 8

    7 4 6 1 9 20 18 11

  • QuickSort (2. )

    10 , 30, 2.1:

    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

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

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

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

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

    14 15 16

    19 22 20

    19 20 22

    1 2 3 4 5 6

    4 6 1 5 2 3

    1 2 3 4 5 6

    8 9 10 11 12

    13 10 14 9 11

    10 9 11 13 14

    15 16

    20 22

    20 221 2 3 4 5 6 10 9 11 13 14 20 22

    16

    22

    22

    1 2 3

    1 2 3

    1 3 2

    5 6

    5 6

    5 6

    8 9 10

    10 9 11

    9 10 11

    12

    14

    14

    6

    6

    6

    2 3

    3 2

    2 3

    2

    2

    2

    8

    9

    9

    10

    11

    11

    1 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. QuickSort (3. )

    11 , 30, 2.1:

    Partition (n) :

    . :

    )log(...)(2)(.

    nnnn

    TnT

    ==+=

    : . :

    ?

    )log(...)(2

    2)( nnnn

    TnT ==+

    =

    ( ) )(...)(1)( 2.

    nnnTnT ==+=

  • . 1. 2. QuickSort (3. )

    12 , 30, 2.1:

    : :

    [ ] [ ] [ ]nTnTnnTnnTTnT

    )()0()1(...)()2()1()()1()0()(

    +++++++++=

    :

    T(n)=(nlogn)

    [ ] [ ] [ ]n

    nT )( =

    [ ]n

    nnnTTTnT

    )()(...)1()0(2)(

    ++++=

    [ ])(

    )(...)1()0(2)( n

    n

    nTTTnT ++++=

  • . 1. 3. QuickSelect

    13 , 30, 2.1:

    : n . k-

    :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

    5- 5 10- 11

    : : ( MergeSort) k- . : (nlogn)

    QuickSelect: : /: O(n)

  • . 1. 3. QuickSelect ()

    14 , 30, 2.1:

    o partition. k.

    Partition [A1] apos [A2] k=pos apos. kpos 2 (k-n1-1)- ( n1 1)

  • . 1. 3. QuickSelect (1.)

    15 , 30, 2.1:

    :

    procedure QuickSelect(A,start,finish,k)if start>finish then

    return 0elseelse

    pos=Partition(A,start,finish)if k=pos then

    return A[pos]else if kpos then

    return QuickSelect(A,pos+1,finish,k-pos)end if

    end ifend procedure

  • 3. QuickSelect(2. k=12)

    16 , 30, 2.1:

    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

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

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

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

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

    8 9 10 11 12

    13 10 14 9 11

    10 9 11 13 1410 9 11 13 14

    12

    14

    14

  • . 1. 3. QuickSelect (3. )

    17 , 30, 2.1:

    Partition (n) :

    . :

    )(...)()(.

    nnn

    TnT

    ==+=

    : . :

    .

    )(...)(2

    )( nnn

    TnT ==+

    =

    ( ) )(...)(1)( 2.

    nnnTnT ==+=

  • . 1. 3. QuickSelect (4. )

    18 , 30, 2.1:

    : 5- 5- . . ( ) ( ) .

    ..:

    5-

    9 ( )

    16

    13

    1 2 3 4 5

    18 7 4 11 9

    6 7 8 9 10

    20 6 1 22 19

    11 12 13 14 15

    14 5 2 3 10

    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

    9 19 5 13

  • . 1. 3. QuickSelect (4. )

    19 , 30, 2.1:

    5 : n T(n)

    n/5 ( (1)).

    n/5 .

    )()1(5

    nn =

    n/5 . 5- :

    , 3n/10 ( ). QuickSelect 7n/10 .

    )(...)(5

    )(.

    nnn

    TnT

    ==+

    =

  • . 1. 3. QuickSelect (4. )

    20 , 30, 2.1:

    :

    procedure QuickSelect(A,start,finish,k)if start=finish then

    return A[start]elseelse

    m 5-.swap(A[m],A[start])pos=Partition(A,start,finish)if k=pos then

    return A[pos]else if kpos then

    return QuickSelect(A,pos+1,finish,k-pos)end if

    end ifend procedure

  • . 1. 3. QuickSelect (4. )

    21 , 30, 2.1:

    :

    n: (n) (n) Partition (n)

    7n/10, (7n/10) :

    , T(n)=O(n)

    )(...)(10

    7)(

    .

    nnn

    TnT

    ==+

    =

  • . 1. 4. Strassen

    22 , 30, 2.1:

    : nxn .

    ++++

    =

    =

    ==

    2222122121221121

    2212121121121111

    2221

    1211

    2221

    1211

    babababa

    babababa

    bb

    bb

    aa

    aaC

    BAC

    : 12. (n2).

    Strassen: : : (n2,81)

    . : (n2,38)

    ++ 222212212122112122212221 bababababbaa

  • . 1. 4. Strassen

    O :

    23 , 30, 2.1:

    procedure MultMatrix(A,B)

    for (i=1 to n)for (j=1 to n)

    C[i][j]=0;

    :

    C[i][j]=0;for (k=1 to n)

    C[i][j]=C[i][j]+A[i][k]*B[k][j];end for

    end for end for

    return Cend procedure

    ( ) )(...)1()1()( 3nnnnnT ==+=

  • . 1. 4. Strassen

    Strassen 70: ( n )

    :

    24 , 30, 2.1:

    = 1211

    AA

    AAA

    = 1211

    BB

    BBB

    n/2 x n/2

    O Strassen C=AxB :

    2221 AA

    =2221 BB

    B

    =

    2221

    1211

    CC

    CCC

  • . 1. 4. Strassen

    1 : :

    25 , 30, 2.1:

    2222122122

    2122112121

    2212121112

    2112111111

    BABAC

    BABAC

    BABAC

    BABAC

    +=+=+=+=

    nxn / . : 8 / n/2 x n/2 : . : 4 nx2 x nx2

    n, 8 n/2 (n2)

    :

    2222122122 BABAC +=

    )(...)(2

    8)( 32 nnn

    TnTremMasterTheo

    ==+

    =

  • . 1. 4. Strassen

    1 : :

    26 , 30, 2.1:

    2222122122

    2122112121

    2212121112

    2112111111

    BABAC

    BABAC

    BABAC

    BABAC

    +=+=+=+=

    nxn / . : 8 / n/2 x n/2 : . : 4 nx2 x nx2

    n, 8 n/2 (n2)

    :

    2222122122 BABAC +=

    )(...)(2

    8)( 32 nnn

    TnTremMasterTheo

    ==+

    =

  • . 1. 4. Strassen 2 (Strassen): :

    27 , 30, 2.1:

    ))((

    ))((

    21123

    11112

    1112221122211

    BBAAM

    BAM

    BAM

    BBBAAAM

    ===

    ++=

    742121

    652112

    3211

    MMMMC

    MMMMC

    MMMMC

    MMC

    +++=++=+++=

    +=

    )(

    )(

    ))((

    22221121126

    111222215

    BBBBAM

    BAAAAM

    BBAAM

    +=+=+=

    nxn / . : 7 / n/2 x n/2 : . : 24 nx2 x nx2

    n, 7 n/2 (n2)

    :

    (n2,37). / (n2)

    ))(( 122221114 BBAAM =

    )(...)(2

    7)( 81,22 nnn

    TnTremMasterTheo

    ==+

    =

    542122 MMMMC +++=)( 21122211227 BBBBAM +=

  • . 1

    :

    I. A n , n.

    28 , 30, 2.1:

    II. B n n-1 , , O(n).

    III. n n/3 (n2) .

    ?

  • . 2

    :

    I. A n , 1/4 , ( n/4) ( n)

    29 , 30, 2.1:

    ( n/4) ( n) n.

    II. B n n/2 , , (n3).

    III. n n/2 O(n2) .

    ?