More Related Content
More from Dimitris Psounis (20)
ΠΛΗ30 ΜΑΘΗΜΑ 2.1 (ΕΚΤΥΠΩΣΗ)
- 1. 30
2:
2.1:
! " #$%& "
! "#$ % & ' ' ()& '*
+ ,-./0 ! " #1 ' $ % & ' '*
2 ,-./0 3 /" #1 ' 4 *
5 " 677 8 & 9 &: ;&
! "
4< =
. $'(" !$ !$"
!()$ !$ !$" & :
' ' *$
(-)
' ' *$
! )& ) * " +( ,&
! "
! )& ) * " +( ,&
' ' *$
+( $" +$ " - &( " (QuickSort)
+( $" ' $+ " !$ k- (! $ $% .& & ' &
+( $" $ ' $% & ,& Strassen
B. ,
)& ." ) * " +$ ,&
#! "
! & 2 &(! ! !$ !$" )$ $% ! ! )& ." '$ .)$ &
& '! ) , ," + & ." $*$ $+ " + ! & ! &(" +$ $ :
( 2.1)
! )& !$ & $% $+ ! $% ( 2.2)
! !,& /' !,& +( ,& ( 2.3)
0' )$ & ( * * " ! )& ." ! " +$ ,& '$ & !("
% ".
- 2. B. ,
1.
$! "
1& " +( $" * 2 & ! ! '( ! - " 2 ! :
1. : ' !$ ) $% ' $2 !$" (!
' . $ " '$' $2 ! .
2. 0 0 0 : ' !,& ' . $ "
'$' $2 !,& ( & * $ ." " !$ * $ +( $ )
3. 0 0 : 0'$ $+ (" ! " % " !$ ) $%
' $2 !$", '( ! " ' . $ " % " !,& '$' $2 !,&.
. ,
1.
1. +( $" ! - &( " MergeSort
%! "
+( $" ! - &( " MergeSort ( +( $" - &( "
+)3& ) & 4 $+ !$ :
1. : ' & " ), 5 ! *%$ . :
!$& ' & !$& ' &
],...,[ 1 naaA =
],...,[ 2/11 naaA = ],...,[ 12/2 nn aaA +=
'$ ' $ (! ! !$ +$ $ & :
2. 0 0 0 : ' !,& *%$
'$' $2 !,& '$ ' $ %'!$ & + &$&! & * $ ." " !$
MergeSort.
3. 0 0 : +)3& !,& *%$ ' & ,& + & ! ! &
* * Merge (2 .' 1.4) + ( ) (&$
2/11 n 12/2 nn +
)log(...)(
2
2)( nnn
n
TnT Θ==Θ+=
. ,
1.
2. +( $" ! - &( " QuickSort
&! "
+( $" ! - &( " QuickSort ( +( $" +$ "
- &( ") & ' " 4 $+ !$ :
1. : ' & " ), 5 ! *%$ . :
!$& ' & 1 '$ ' ) ( ! !$ ) '$ & (! '( !$ 1
],...,[ 1 naaA =
1 1
!$& 2 '$ ' .) ( ! !$ ) '$ & + %! '( !$ 1
2. 0 0 0 : ' !,& *%$
'$' $2 !,& (! - &( !,& '$' & ,& 1 2) '$ ' $ %'!$ &
+ &$&! & * $ ." " !$ QuickSort.
3. 0 0 : ' & " A = [A1] 1[A2]
. ,
1.
2. +( $" ! - &( " QuickSort (1.# *$ 3* ")
'! "
!, 4 & ! $'$ ! " * * " QuickSort:
procedure QuickSort(A,start,finish)
if start<finish then
pos=Partition(A,start,finish)
QuickSort(A,start,pos-1)
QuickSort(A,pos+1,finish)
end ifend if
end procedure
procedure Partition(A,start,finish)
odigo=A[start]
i=start; j=finish
for (k=start+1 to finish)
if (A[k]>odigo)
B[j]=A[k]; j=j-1
else
B[i]=A[k]; i=i+1
end for
B[i]=odigo; =
return pos;
end procedure
- 3. . ,
1.
2. +( $" ! - &( " QuickSort (2. * + !. ")
(! "
" ! .-$ .& ' * + !. " ! " 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 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 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 j
1 2 3 4 5 6 7 8
7 4 6 1 9 20 18 11
+( $" ! - &( " QuickSort (2. * + !. ")
! "
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. & )
! "
* * !$ Partition .) '$ ' $ (! ! (n)
& 6 %! " '!, ":
7! & !$ ' $ + & ! ! & . !$ ' & . (! ' $ %'!
& * $ :
)log(...)(2)(
.
nnn
n
TnT Θ==Θ+=
αςκυριαρχθ
& (! " '!, ":
7! & !$ ' $ + & ! ! & . !$ ' & . (! ' $ %'!
& * $ :
! & . ' '!, ?
)log(...)(
2
2)( nnn
n
TnT Θ==Θ+=
( ) )(...)(1)( 2
.
nnnTnT Θ==Θ+−=
επαναληψηςµεθ
. ,
1.
2. +( $" ! - &( " QuickSort (3. & )
! "
& . " '!, ":
& , $ (! & $' & ! * & ! ' ! !$ ' &
*%$ $ ! !(! ! . $ ( $ $ ' - " !$ +$ $ * &$&!
'( ! & & * $ ). :
[ ] [ ] [ ]nTnTnnTnnTT
nT
)()0()1(...)()2()1()()1()0(
)(
Θ++−++Θ+−Τ++Θ+−+
=
8 ' $ ' :
6 !
! & $'$ '$* &% ! (! )% T(n)= (nlogn)
[ ] [ ] [ ]
n
nT )( =
[ ]
n
nnnTTT
nT
)()(...)1()0(2
)(
Θ++++
=
[ ] )(
)(...)1()0(2
)( n
n
nTTT
nT Θ+
+++
=
- 4. . ,
1.
3. +( $" ' $+ " QuickSelect
! "
: & ! .& " ! - &( !$" ' & " n !$ ) . 9 ! ! &
2 !$ 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
+( $ :
$4 & " +( $": - &( !$& ' & ( MergeSort)
'. - !$ k-$ (! $ !$ ) $. $ ' $ (! ! : (nlogn)
QuickSelect: 4 $+ : $ /! : O(n)
. ,
1.
3. +( $" ' $+ " QuickSelect ( *. )
#! "
! ( ! !o ' $ !$ ' & '$ & * * partition.
) 5 ! 4$ & : )&$ .& & '( !$ " *%$ '$' & " '$
' $ %'!$ & ! ! $'$'$ !$ k.
1! 4$% * * Partition ' !$& ' & ," - " [A1] apos [A2]
& k=pos !(! 2 !$ !$ ) $ & !$ apos.
& k<pos !(! : )&$ !$& ' & A1 + !$ k- (! $ !$ ) $
& k>pos !(! : )&$ !$& ' & 2 + !$ (k-n1-1)- (! $
!$ ) $ (('$ n1 !$ ' $" !,& !$ ) ,& !$ 1)
. ,
1.
3. +( $" ' $+ " QuickSelect (1.# *$ 3* ")
$! "
$'$ : *$+ 3 ! " ' ' &, * * " &
( $ :
procedure QuickSelect(A,start,finish,k)
if start>finish then
return 0
elseelse
pos=Partition(A,start,finish)
if k=pos then
return A[pos]
else if k<pos then
return QuickSelect(A,start,pos-1,k)
else if k>pos then
return QuickSelect(A,pos+1,finish,k-pos)
end if
end if
end procedure
3. +( $" ' $+ " QuickSelect(2. * + !. " + k=12)
%! "
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
- 5. . ,
1.
3. +( $" ' $+ " QuickSelect (3. & )
&! "
* * !$ Partition .) '$ ' $ (! ! (n)
& 6 %! " '!, ":
7! & !$ ' $ + & ! ! & . !$ ' & . (! ' $ %'!
& * $ :
)(...)()(
.
nn
n
TnT Θ==Θ+=
αςκυριαρχθ
& (! " '!, ":
7! & !$ ' $ + & ! ! & . !$ ' & . (! ' $ %'!
& * $ :
5( ! .& ' $ .- '&$ ' $ ' $ !$ ' & 3 ! &
' ! +) & ! .& ' $ !$ ' & ' '$ ! & . .
)(...)(
2
)( nn
n
TnT Θ==Θ+=
( ) )(...)(1)( 2
.
nnnTnT Θ==Θ+−=
επαναληψηςµεθ
. ,
1.
3. +( $" ' $+ " QuickSelect (4. + ! * * &! *,&)
'! "
$! & ! * * !,& ' &! *,& $'$ :
, 5 ! !$ ) 5- * "
'( 5- * ' .+$ !$ $ !$ ) $.
' & 2 &$ & * $ + ! !$ ) .
' .+$ * * !$ $ !,& ,& (!,& ,&…) '(' .+$ * * !$ $ !,& ,& (!,& ,&…) '(
' &! * .
.).:
5- * "
$" & " & * $ !.
' ! .4 ! !$ 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. + ! * * &! *,&)
(! "
' $+ !$ $ !$ ) $ '( 5 !$ ) . ! ( ) (&$:
/ & $ ' & " .) n !$ ) . $ &$ ) (&$ T(n)
' .+$ n/5 4$ ." !$ $ ( ) (&$ (1)). $ 2 !( .
&$ ( ) (&$
1' ! &$ & * $ + n/5 * *$ .& .
)()1(
5
n
n
Θ=Θ
1' ! &$ & * $ + n/5 * *$ .& .
& '3" '$ ' $ (! ! ! " ' $+ " !$ !$ ) $ ! & * *
!,& 5- *,& ' $ %'! '( ! & ' ! " & * $ " ). ":
'$* &% ! (! & '$ % ( ' $, * (! 2
'$ '!$&! !$ ) !$& 3n/10 !$ ) ( '(* - ' ' ! ).
* (+ & * $ ! " QuickSelect + & + !$ '$ %
7n/10 !$ ) .
)(...)(
5
)(
.
nn
n
TnT Θ==Θ+=
αςκυριαρχθ
. ,
1.
3. +( $" ' $+ " QuickSelect (4. + ! * * &! *,&)
! "
& , !3&$ ! & * * ' $+ " $* +$% !$ ) $ !$&
' $ +$% &$ 3* :
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 k<pos then
return QuickSelect(A,start,pos-1,k)
else if k>pos then
return QuickSelect(A,pos+1,finish,k-pos)
end if
end if
end procedure
- 6. . ,
1.
3. +( $" ' $+ " QuickSelect (4. + ! * * &! *,&)
! "
& * $ ). '$ ' + 4 ! & ! '$ ' $ (! ! !$
+$ $ & :
& % $ .& ' (2 +. $ " n:
' &! * " . $ & ) (&$ (n)' &! * " . $ & ) (&$ (n)
* * Partition . ) (&$ (n)
& * $ + & + .& ' (2 +. $ " !$ '$ %
7n/10, & '3" $ ) (&$" '$ ' ! ! & (7n/10)
& '3":
! & ) (! ' '!, , ! .)$ T(n)=O(n)
)(...)(
10
7
)(
.
nn
n
TnT Θ==Θ+=
αςκυριαρχθ
. ,
1.
4. +( $" '$ ' $% ' & ,& Strassen
! "
: '$ $+ ! !$ + &( &$ *%$ nxn ' & ,& .
++
++
=×=
=×=
2222122121221121
2212121121121111
2221
1211
2221
1211
babababa
babababa
bb
bb
aa
aa
C
BAC
+( $ :
4 $+ !$ +&, !$% +$ $ '( 12. '$ ' $ (! ! !$
& (n2).
+( $" !$ Strassen: 4 $+ !$ :
$ ' $ (! ! : (n2,81)
( %! $ +( $ . %!
'$ ' $ (! ! .) ! + ": (n2,38)
++ 222212212122112122212221 bababababbaa
. ,
1.
4. +( $" '$ ' $% ' & ,& Strassen
O +&, !(" +( $" '$ ' $% * * ! !,& ' & ,& '$ &
$'$ : *$+ 3 ," - ":
! "
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 C
end procedure
( ) )(...)1()1()( 3
nnnnnT Θ==Θ⋅+Θ⋅⋅=
. ,
1.
4. +( $" '$ ' $% ' & ,& Strassen
Strassen ‘70: 4 $+ !$ * 2 ( , 3 (! n ! $")
' & " ' & !$ " ' & ":
#! "
= 1211
AA
AA
A = 1211
BB
BB
B
7'$ .& " '( !$ " '$' & " .) .+ $" n/2 x n/2
O Strassen ' $ ' & '$ $+ !$ + &( &$ C=AxB
! 5$&! " !$& ' & :
2221 AA
=
2221 BB
B
=
2221
1211
CC
CC
C
- 7. . ,
1.
4. +( $" '$ ' $% ' & ,& Strassen
1 ' $ .++ : )% (! :
$! "
2222122122
2122112121
2212121112
2112111111
BABAC
BABAC
BABAC
BABAC
+=
+=
+=
+=
&! & &$ !$& nxn '$ / $ !,& ' & ,&.
: &$&! 8 '$ / $ n/2 x n/2 ' & ,&
0 : & * $ !$& * $ ! ('$.
0 0 : 4 ' $ . " nx2 x nx2 ' & ,&
/ + & % , .& ' (2 +. $ " n, %&, 8 '$' $2 !
+. $ " n/2 &* 5, ! " % " ) (&$ (n2)
'$ ' $ (! ! & :
6 2 ! , ). !$&
' $4 & +( $
2222122122 BABAC +=
)(...)(
2
8)( 32
nn
n
TnT
remMasterTheo
Θ==Θ+=
. ,
1.
4. +( $" '$ ' $% ' & ,& Strassen
1 ' $ .++ : )% (! :
%! "
2222122122
2122112121
2212121112
2112111111
BABAC
BABAC
BABAC
BABAC
+=
+=
+=
+=
&! & &$ !$& nxn '$ / $ !,& ' & ,&.
: &$&! 8 '$ / $ n/2 x n/2 ' & ,&
0 : & * $ !$& * $ ! ('$.
0 0 : 4 ' $ . " nx2 x nx2 ' & ,&
/ + & % , .& ' (2 +. $ " n, %&, 8 '$' $2 !
+. $ " n/2 &* 5, ! " % " ) (&$ (n2)
'$ ' $ (! ! & :
6 2 ! , ). !$&
' $4 & +( $
2222122122 BABAC +=
)(...)(
2
8)( 32
nn
n
TnT
remMasterTheo
Θ==Θ+=
. ,
1.
4. +( $" '$ ' $% ' & ,& Strassen
2 ' $ .++ (Strassen): (! '$ & ' !$ * $ '$!. ! "
- " ' - ":
&! "
))((
))((
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 ' & ,&
0 : & * $ !$& * $ ! ('$.
0 0 : 24 ' $ 4 . " nx2 x nx2 ' & ,&
/ + & % , .& ' (2 +. $ " n, %&, 7 '$' $2 ! +. $ "
n/2 &* 5, ! " % " ) (&$ (n2)
'$ ' $ (! ! & :
0' )$ & ( %! " * ' " '$ 4! &$ & ! & '$ ' $ (! !
.) (n2,37). !( $ )% (! +( $" '$ / $ ' & ,& .)
'$ ' $ (! ! (n2)
))(( 122221114 BBAAM −−=
)(...)(
2
7)( 81,22
nn
n
TnT
remMasterTheo
Θ==Θ+=
542122 MMMMC +++=)( 21122211227 BBBBAM −−+=
. "
4 $+ 1
" '$ . $ (! .)$ & ' .-$ & !$ " ( $ $ " ! "
+( $ ":
I. +( $" A %& ' $2 ! +. $ " n !$ & ' %
& * $ $ !3 '$' $2 ! !$ $% +. $ " !$ .& ,
&* 5$&! " ! " % " !$ " + ( ) (&$ ," ' $" n.
'! "
II. +( $" B %& ' $2 ! +. $ " n !$ & ' %
& * $ .& '$' (2 +. $ " n-1 , ! & &.) ,
& + ! & ! % ) (&$ O(n).
III. +( $" %& ' $2 ! +. $ " n !$ & ' %
& * $ && '$' $2 ! +. $ " n/3 &* 5$&! " ! "
% " !$ " (n2) ) (&$.
$ $ & $ '!,! $ ) (&$ !. " + .& '( !$ " ! "
+$ $ " '$ $& '( !$%" * .+ ! 2 ! & '!,!
!$ '$ ' $ (! ! ?
- 8. . "
4 $+ 2
" '$ . $ (! .)$ & ' .-$ & !$ " ( $ $ " ! "
+( $ ":
I. +( $" A %& ' $2 ! +. $ " n !$ & ' %
& * $ .& '$' (2 , +. $ " 1/4 !$ ) $%
' $2 !$", &3 $ ) (&$" '$ ' ! ! + & 2 !$
' (2 !( ( +. $ " n/4) '( !$ ) ( ( +. $ " n) &
(! "
' (2 !( ( +. $ " n/4) '( !$ ) ( ( +. $ " n) &
+ (" ," ' $" n.
II. +( $" B %& ' $2 ! +. $ " n !$ & ' %
& * $ .& '$' (2 +. $ " n/2 , ! & &.) ,
& + ! & ! % (n3).
III. +( $" %& ' $2 ! +. $ " n !$ & ' %
& * $ !. '$' $2 ! +. $ " n/2 &* 5$&! "
! " % " !$ " O(n2) ) (&$.
$ $ & $ '!,! $ ) (&$ !. " + .& '( !$ " ! "
+$ $ " '$ $& '( !$%" * .+ ! 2 ! & '!,!
!$ '$ ' $ (! ! ?