ΠΛΗ30 ΜΑΘΗΜΑ 2.3...
date post
22-Feb-2017Category
Education
view
75download
1
Embed Size (px)
Transcript of ΠΛΗ30 ΜΑΘΗΜΑ 2.3...
30
2:
2.3:
! " #$%"
!"#$%&
' ()**+*
,% -
' ./%0#"&1
!
' ./%0#"&1
2 ()3456+
7
(+
. &" ' !"
( ' !" )*%:
*)+
(-)
*)+ ,
)(%&! ()+*" -% " "
!
)(%&! ()+*" -% " "
" " % )(* %-% ..
*)+
" " ' Dijkstra % )$ ) ' '%) '
%$
" " ' Prim % )$ ) (' '%+)&$
.%+ '
" " ' Kruskal % )$ ) (' '%+)&$
.%+ '
B. )- *)(%&." ()+*" *-%
" !
% 2 )% ' !" ($) ) )(%&." ' .('%
%'()*, -" )%&." )+*)" % &&)'! )%" *':
)(%&! * ) & ,*)') ( 2.1)
)(%&! ' '%&$ $ ( 2.2)
( 2.3)
/ ('% & +)&+)" )(%&." &&)'!" *-% ' )*% )&"
$".
B. )- *1.
# !
0% .(') .% 1 ' .() " )2!" +)":
+ " " !": &'* -% )3% +)*
% 1. $.
+ -% ,.-% . '" 3%: * % $') 1
) ).') -" )(%&! ()+*" &&)'!" ' '
&)* % '*') % 1. $ ) & ' 1!,
'%!-" ) %+ !.
4%" " " +)% )*% % 1.":
% +)*2') +)% )*% 1." +*%') .% % +).
% +)*2') )*% 1." +*%') +)2 ":
1. )- $) " " +)% ) .5) % 1. $.
2. )&%*6') % 1. $ & % $ ' ' '.
3. '& *%') " $)" ) 1 & ! .
4. )*(%') $ ' ' ' )* ' +5. '%,
)*% &$) % 1. $.
,. )- *1. 1. '%) % ) 5
$ !
,: *%) 5" G=(V,E,W), 5) * sV, ) " t V.
7)* '%) % % s % t.
))!') .%% ' '*6) '%) %:
" ' Dijkstra: " ' Dijkstra:
)- )* (? ) ) &) )%8 1 *&) '%)
% % ) % 5) * ) * & '5!
'&)& .% % & '5! ' .() ) %
5) * .(-% 1!.
,. )- *1. 1. '%) % ) 5
% !
& 5 ' Dijkstra:
% (&*:
.') )" " )&.)" L[.]=+9 )&" " 5) *" ' .() L[s]=0
) &) 1!: ) &) 1!:
&)* & '5! ) & ) &" "
&.%)"
3%% )&.)" -% )%&3% &.%-%
& '53% () ) *- ' 1 ))* &$) % %
& '5! ' &!&))
) ":
0% &)* & '5! ) $ t.
,. )- *1. 1. '%) % ) 5 (Dijkstra-#)'+&3+&")
& !
procedure Dijkstra(G=(V,E,W), s, t)
L[s]=0T=Vfor all xV-{s}
L[x]=+end for
while tT do vT L[v]T=T-{v}for all xT v:
if (L[v]+W[v,x]
,. )- *1. 1. '%) % ) 5(Dijkstra- +) &.)")
' !
#(%') '%) % % v1 % v7 ,! 0:
v2(-,+9) v4(-,+9)
9
7
3 91
(&* )&)3% & '53%
V1(0,-)
v3(-,+9) v6(-,+9)
v7(-,+9)
4
2
6
1
3
2
7
5
v5(-,+9)
,! 1:
v2(v1,9)
,. )- *1. 1. '%) % ) 5(Dijkstra- +) &.)")
( !
v4(-,+9)
9
7
3 91
&* & '5!" v12) & '53% v2,v3. - )&)3% v2,v3
V1(0,-)
v3(v1,4) v6(-,+9)
v7(-,+9)
4
2
6
1
3
2
7
5
v5(-,+9)
,. )- *1. 1. '%) % ) 5(Dijkstra- +) &.)")
(( !
,! 2:
v2(v3,6) v4(-,+9)
9
7
3 91
&* & '5!" v32) & '53% v2,v5,v6. - )&)3% v2,v5,v6
V1(0,-)
v3(v1,4) v6(v3,10)
v7(-,+9)
4
2
6
1
3
2
7
5
v5(v3,5)
,. )- *1. 1. '%) % ) 5(Dijkstra- +) &.)")
( !
,! 3:
v2(v3,6) v4(v5,14)
9
7
3 91
&* & '5!" v52) & '53% v2,v4,v6. - )&)3% v4,v6
V1(0,-)
v3(v1,4) v6(v5,7)
v7(-,+9)
4
2
6
1
3
2
7
5
v5(v3,5)
,. )- *1. 1. '%) % ) 5(Dijkstra- +) &.)")
( !
,! 4:
v2(v3,6) v4(v2,13)
9
7
3 91
&* & '5!" v22) & '5!" v4. - )&." v4
V1(0,-)
v3(v1,4) v6(v5,7)
v7(-,+9)
4
2
6
1
3
2
7
5
v5(v3,5)
,. )- *1. 1. '%) % ) 5(Dijkstra- +) &.)")
(" !
,! 5:
v2(v3,6) v4(v2,13)
9
7
3 91
&* & '5!" v62) & '53% v4,v7. - )&)" v7
V1(0,-)
v3(v1,4) v6(v5,7)
v7(v6,12)
4
2
6
1
3
2
7
5
v5(v3,5)
,. )- *1. 1. '%) % ) 5(Dijkstra- +) &.)")
(# !
,! 6:
v2(v3,6) v4(v2,13)
9
7
3 91
&* & '5!" v7." *'. '%) % v1-v3-v5-v6-v7 ) 1 " 4+1+2+5=12
V1(0,-)
v3(v1,4) v6(v5,7)
v7(v6,12)
4
2
6
1
3
2
7
5
v5(v3,5)
,. )- *1. 1. '%) % ) 5 (Dijkstra +)2 ")
($ !
+)2 " *' Dijkstra:
)- $) $ ' '*6) " " +)% )*%
1. &
'1*6') ): '1*6') ):
OPT 1. $ (&'* & '53% % s % t)
C $ ' ) .5) " ' Dijkstra.
:) % ' '*6) Dijkstra )*% 1."
, )! ' Dijkstra )*% ! %
&* " & '5!" vi % +)% !% '! () .% % % 5- % vi )
& ) &".
, * % &)* vi .() & ) &" )"
" ')" & '5.".
,. )- *1. 2. ( '%+)& .%+
(% !
,: *%) 5" G=(V,E,W), 7)* .% )( '%+)&
+.%+ (+.%+ ' ) 1%) )" " & '5." & .() )( 1 "
))!') +$ '" ' '*6'% )( '%+)&
+.%+ :
" ' Prim:
)- )* (? ) )! &!" ' .() .% " &
'%+)& +.%+ & & " )&" ' '%+)&$
+.%+ ' +!) % 1. $
" ' Kruskal:
)- )* (? ) &! )(*' 1 '" ' +)% 1 *&)
+.%+ & +)% +' )* &$& $) % )%--)*
% $ 3) % &&)')* )( '%+)& +.%+ .
,. )- *1. 2. ( '%+)& .%+ (1.Prim-& 5)
(& !
& 5 ' Prim:
% (&*:
)$) '* ) & '5! '%+)& +.%+
) &) 1!: ) &) 1!:
/8!5)" &." % '% '%+)& +.%+ )*% )&)*%)"
&." ' .('% .% '" & ' &&)'! '%+)&
+.%+ & '" & )&" ' '%+)&$ +.%+ '.
.) &! ) )( 1 " " '8!5)"
&! )) +.%+ &3" & & " ' +)% %!&)
+.%+ .
) ":
0% )" & '5." )($% +.%+ .
,. )- *1. 2. ( '%+)& .%+ (1.Prim-#)'+&3+&")
(' !
procedure Prim(G=(V,E,W))
V={v1}
while |V|
,. )- *1. 2. ( '%+)& .%+ (1.Prim- +) &.)")
( !
,! 1:
v2 v4
9
7
3 91
V3 *%) +.%+
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,. )- *1. 2. ( '%+)& .%+ (1.Prim- +) &.)")
!
,! 2:
v2 v4
9
7
3 91
V5 *%) +.%+
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,. )- *1. 2. ( '%+)& .%+ (1.Prim- +) &.)")
!
,! 3:
v2 v4
9
7
3 91
V6 *%) +.%+
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,. )- *1. 2. ( '%+)& .%+ (1.Prim- +) &.)")
" !
,! 4:
v2 v4
9
7
3 91
V2 *%) +.%+
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,. )- *1. 2. ( '%+)& .%+ (1.Prim- +) &.)")
# !
,! 5:
v2 v4
9
7
3 91
V7 *%) +.%+
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,! 5:
,. )- *1. 2. ( '%+)& .%+ (1.Prim- +) &.)")
$ !
v2 v4
9
7
3 91
V4 *%) +.%+
." *'. , " (' '%+)&$ .%+ ': 4+2+1+2+5+1=15
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,. )- *1. 2. ( '%+)& .%+ (2.Kruskal-& 5)
% !
& 5 ' Kruskal:
% (&*:
)- $) 2% -% 1 3% -% &3% ) $2' ) .
) &) 1!: ) &) 1!:
2)6) ))% &! ) 1 % 2%.
% +)% +' )* &$&" )) )( '%+)& +.%+
) ":
0% )" & '5." )($% +.%+ .
,. )- *1. 2. ( '%+)& .%+ (2.Kruskal - #)'+&3+&")
& !
procedure Kruskal(G=(V,E,W))
V=
MergeSort(E)
while |V|
,! 1:
,. )- *1. 2. ( '%+)& .%+ (1.Kruskal- +) &.)")
' !
v2 v4
9
7
3 91
(v3,v5) *%) +.%+
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,! 2:
,. )- *1. 2. ( '%+)& .%+ (1.Kruskal- +) &.)")
!
v2 v4
9
7
3 91
(v4,v7) *%) +.%+
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,! 3:
,. )- *1. 2. ( '%+)& .%+ (1.Kruskal- +) &.)")
( !
v2 v4
9
7
3 91
(v2,v3) *%) +.%+
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,! 4:
,. )- *1. 2. ( '%+)& .%+ (1.Kruskal- +) &.)")
!
v2 v4
9
7
3 91
(v5,v6) *%) +.%+
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,! 5:
,. )- *1. 2. ( '%+)& .%+ (1.Kruskal- +) &.)")
!
v2 v4
9
7
3 91
(v2,v5) +)% *%) +.%+ * +' )* &$&
V1
v3 v6
v7
4
2
6
1
3
2
7
5
v5
,! 6:
,. )- *1. 2. ( '%+)& .%+ (1.Kruskal- +) &.)")
" !
v2 v4
9
7
3 91
(v1,v3) *%) +