Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ΠΛΗ30 ΜΑΘΗΜΑ 2.3 (ΕΚΤΥΠΩΣΗ)

136 views

Published on

1) Απληστοι Αλγόριθμοι
1.1) Συντομότερο Μονοπάτι σε Γράφο
1.1.1) Ο αλγόριθμος του Dijkstra
1.2) Ελάχιστο Συνδετικό Δένδρο
1.2.1) Ο αλγόριθμος του Prim
1.2.2) Ο αλγόριθμος του Kruskal
1.3) Ελαχιστοποίηση Νομισμάτων με Ρέστα
Εφαρμογές
1) Επιστροφή χρηματικού ποσού για ρέστα
2) Άπληστος Αλγόριθμος για Χρωματισμό Γραφήματος

Published in: Education
  • Be the first to comment

  • Be the first to like this

ΠΛΗ30 ΜΑΘΗΜΑ 2.3 (ΕΚΤΥΠΩΣΗ)

  1. 1. 30 2: 2.3: ! " # $% " !"#$%& ' ( ) * *+ * ,% - ' . /%0#"&1 ! ' . /%0#"&1 2 ( ) 3 4 5 6+ 7 ( + . & " ' ! " ( ' ! " )*% : * )+ (-) * )+ , )(% &! ()+* " -% " " ! )(% &! ()+* " -% " " " " % ) ( * % -% . . * )+ " " ' Dijkstra % )$ ) ' '% ) ' % $ " " ' Prim % )$ ) ( ' '%+) & $ .%+ ' " " ' Kruskal % )$ ) ( ' '%+) & $ .%+ ' B. )- * )(% &." ()+* " * -% "! % 2 )% ' ! " ( $ ) ) )(% &." ' .( '% % '( )*, -" )% &." ) + *)" % & &)'! )% " * ': )(% &! * ) & , * )') ( 2.1) )(% &! ' '% & $ $ ( 2.2) ( 2.3) / ( '% & +)& +)" )(% &." & &)'!" * -% ' )*% )& " $ ".
  2. 2. 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) * s∈V, ) " 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]=0 T=V for all x∈V-{s} L[x]=+ end for ∈while t∈T do v∈T L[v] T=T-{v} for all x∈T v: if (L[v]+W[v,x]<L[x]) L[x]=L[v]+W[v,x] P[x]=v end if end for end while return L[t] end procedure
  3. 3. ,. )- * 1. 1. '% ) % ) 5 (Dijkstra- +) & . ) ") '! # (% ' ) '% ) % % v1 % v7 ,! 0: v2(-,+9) v4(-,+9) 9 7 3 9 1 ( & * ) &) 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 9 1 & * & '5!" v1 2) & '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 9 1 & * & '5!" v3 2) & '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 9 1 & * & '5!" v5 2) & '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)
  4. 4. ,. )- * 1. 1. '% ) % ) 5 (Dijkstra- +) & . ) ") (! ,! 4: v2(v3,6) v4(v2,13) 9 7 3 9 1 & * & '5!" v2 2) & '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 9 1 & * & '5!" v6 2) & '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 9 1 & * & '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.".
  5. 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’|<|V| do (v,w)∈E v∈V’, w∈V-V’ (v,w) ’ w V’ end whileend while return T=(V’,E’) end procedure +) &%$) ' & ' Prim ) ( ! & -% + 3% +)+ - .%-% )*% O(n2) ,. )- * 1. 2. ( '%+) & .%+ (1.Prim- +) & . ) ") ! ;)& % ) ' * ) % & '5! v1 ,! 0: v2 v4 9 7 3 9 1 V1 *%) +.%+ V1 v3 v6 v7 4 2 6 1 3 2 7 5 v5
  6. 6. ,. )- * 1. 2. ( '%+) & .%+ (1.Prim- +) & . ) ") (! ,! 1: v2 v4 9 7 3 9 1 V3 *%) +.%+ V1 v3 v6 v7 4 2 6 1 3 2 7 5 v5 ,. )- * 1. 2. ( '%+) & .%+ (1.Prim- +) & . ) ") ! ,! 2: v2 v4 9 7 3 9 1 V5 *%) +.%+ V1 v3 v6 v7 4 2 6 1 3 2 7 5 v5 ,. )- * 1. 2. ( '%+) & .%+ (1.Prim- +) & . ) ") ! ,! 3: v2 v4 9 7 3 9 1 V6 *%) +.%+ V1 v3 v6 v7 4 2 6 1 3 2 7 5 v5 ,. )- * 1. 2. ( '%+) & .%+ (1.Prim- +) & . ) ") "! ,! 4: v2 v4 9 7 3 9 1 V2 *%) +.%+ V1 v3 v6 v7 4 2 6 1 3 2 7 5 v5
  7. 7. ,. )- * 1. 2. ( '%+) & .%+ (1.Prim- +) & . ) ") #! ,! 5: v2 v4 9 7 3 9 1 V7 *%) +.%+ V1 v3 v6 v7 4 2 6 1 3 2 7 5 v5 ,! 5: ,. )- * 1. 2. ( '%+) & .%+ (1.Prim- +) & . ) ") $! v2 v4 9 7 3 9 1 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’|<|V| do ∪if ’∪ei then E’=E’∪ei, V’=V’∪{ ei} end if i=i+1 end while return T=(V’,E’) end procedure +) &%$) ' & ' Kruskal ) ( ! & -% + 3% +)+ - .%-% )*% O(m logn)
  8. 8. ,! 1: ,. )- * 1. 2. ( '%+) & .%+ (1.Kruskal- +) & . ) ") '! v2 v4 9 7 3 9 1 (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 9 1 (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 9 1 (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 9 1 (v5,v6) *%) +.%+ V1 v3 v6 v7 4 2 6 1 3 2 7 5 v5
  9. 9. ,! 5: ,. )- * 1. 2. ( '%+) & .%+ (1.Kruskal- +) & . ) ") ! v2 v4 9 7 3 9 1 (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 9 1 (v1,v3) *%) +.%+ V1 v3 v6 v7 4 2 6 1 3 2 7 5 v5 ,! 7: ,. )- * 1. 2. ( '%+) & .%+ (1.Kruskal- +) & . ) ") #! v2 v4 9 7 3 9 1 (v6,v7) *%) +.%+ . " * '. , " ( ' '%+) & $ .%+ ': 4+2+1+2+5+1=15 V1 v3 v6 v7 4 2 6 1 3 2 7 5 v5 ,. )- * 1. 3. 5! -% . $! , : *+) .( ' ) ) % * 20 ) 3%, 5 ) 3% & 1 ) $. . ' ) % ) .8 ' ) . )' 3, ) ( 3% " ! " -% % -% ' ) .5 % ' : 1,45 )' 3: 1. $ )*% 7 ) & ) & 1 )% ) . 0,77 )' 3: 1. $ )*% 3 ) & ) , 3 )% ) & 2 % ) . " ": . )2) 3 ) ) 20 ) , . ) ) ) 5 ) & . ) ' ! -%) " ) 1 ) .
  10. 10. ,. )- * 1. 3. 5! -% . (#)'+ &3+ & ") %! procedure coins(X, V) //X ! , V: C=[] sum=0 i=1 while sum<X do v∈V : sum+v<=S C[i]=v sum=sum+v i=i+1 end while return C end procedure ' & ( ) ,. )- * 1. 3. 5! -% . ( +) 2 ") &! 4 - . ' ) % ) .8 ' ) )' 3 & " " +)% ) .5) % 1. $ . - OPT=(o1,o2,o3) 1. $ ( ' 1, 2, 3 % * ( ! -% % -% (20 ) -5 ) -1 ) ) ' ) . % - C=(c1,c2,c3) $ ' ' * ' ( ' c1,c2,c3 % * ( ! -% % -% (20 ) -5 ) -1 ) ) ' ) . %! -% % -% (20 ) -5 ) -1 ) ) ' ) . % $ ) )% )* % ($) 1>c1 + ! %) .( '% ) .8) 20 ) & " .() ) .2) ) ) 20 ) . o1=c1 )% )* % ($) 2>c2 + ! %) .( '% ) .8) 5 ) & " .() ) .2) ) ) 5 ) . o2=c2 )% )* % .( ' ) c3>o3, + ) 1 " $ )%)" +$ )" .%) *+ % ' - )*. o3=c3 .%-" $ ' ) .5) " )*% 1. . ,. )- * 1. 4. 5! -% . ( +) 2 ") '! " +)% )*% % 1. "!! 2 " 2*)" -% % -% ' .( ' ) % + ) ! ". +) % .( ' ) % + ) ! " % * 2* " 1, 13 & 29+) % .( ' ) % + ) ! " % * 2* " 1, 13 & 29 )' 3 & . ' ) % ) .8 ' ) . 2* " 39 )' 3: " ) .2) 1 &. -% 29 )' 3 & 10 &. ' 1 )' 3 ( $% 11 &. ) 1. $ )*% 3 &. -% 13 )' 3. . &! ) " 5 ! 1 < % )* ) -" ('+ )* ' ( '% + . ) " & ' )" 2*)": 1 , 5 , 9 , 10 , 25 48 & + .% " )% " ( & $ $ S, 6 ) & ) +'% ! " ! -% 2* " S. 1. ()+ ) .% % %- 1 . "! 2. / * ) ( % )& . ) " ' ' '. 3. 3 ) ' &! +) 2 % ' ' ' ! % +) % '.
  11. 11. . &! ) " 5 ! 2 4% " )% " 5! " G = (V, E) )*% % ) ) &3% &) *-% (( 3 ) " & '5." ' 5! " G . 3 ) & ) & ! (vi,vj) ' 5! " G % ($) ( 3 (vi) = ( 3 (vj). 4% " )% " 5! " )*% .% " . &' " ( - " ' ( )* & ) +'% ( - -%. / . ' ) & '5." ' 5! " " +*% % ) ' &)& .% + 2 = [v1, …, vn], ' n = | V |. ) 1 % + 2 ' ! .( ' ) "(! ' &)& .% + 2 = [v1, …, vn], ' n = | V |. ) 1 % + 2 ' ! .( ' ) % & ' ( - $: i =1 .-" n, % ) ) % & '5! vi & ) +'% ( 3 ' +)% ( )* '" )* %)" " vi ) 2$ -% v1, …, vi-1. 4% +) )& . ) " ' ' ( - $ 5 *%) & ' 5 : a f c e d b = [ a, b, c, d, e, f] & '5!: a b c d e f ( 3 : 1 1 2 2 3 3 . &! ) " 5 ! 2 ( ) *% " ( - $ "; & ! ) % % ! ". (,) / * ) % ' & ( % ' ' * '. ( ) +)*2 ) " % )5 6) ) +! ) 5 ) .% % ( - . ( ) +)*2 ) " % )5 6) ) +! ) 5 ( ) % +) ). "! ( ) % +) ).

×