42
ΠΛΗ30 ΕΝΟΤΗΤΑ 2: ΣΧΕ∆ΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ Μάθηµα 2.3: Άπληστοι Αλγόριθµοι ∆ηµήτρης Ψούνης

ΠΛΗ30 ΜΑΘΗΜΑ 2.3

Embed Size (px)

DESCRIPTION

1) Απληστοι Αλγόριθμοι 1.1) Συντομότερο Μονοπάτι σε Γράφο1.1.1) Ο αλγόριθμος του Dijkstra1.2) Ελάχιστο Συνδετικό Δένδρο1.2.1) Ο αλγόριθμος του Prim1.2.2) Ο αλγόριθμος του Kruskal1.3) Ελαχιστοποίηση Νομισμάτων με ΡέσταΕφαρμογές1) Επιστροφή χρηματικού ποσού για ρέστα2) Άπληστος Αλγόριθμος για Χρωματισμό Γραφήματος

Citation preview

  • 30 2:

    2.3:

  • .

    1.

    1.

    1. Dijkstra

    2.

    1. Prim

    2. O Kruskal

    2 , 30, 2.3:

    2. O Kruskal

    3.

    .

    1.

  • .

    :

    (-)

    3 , 30, 2.3:

    .

    Dijkstra

    Prim

    Kruskal

  • B.

    4 , 30, 2.3:

    2 , :

    ( 2.1)

    ( 2.2)

    ( 2.3)

    .

  • B. 1.

    5 , 30, 2.3:

    :

    : .

    :

    ,

    .

    : .

    :1. .2. .3. .4. ,

    .

  • . 1. 1.

    6 , 30, 2.3:

    : G=(V,E,W), sV, t V. s t.

    :

    Dijkstra: Dijkstra: (? )

    .

  • . 1. 1.

    7 , 30, 2.3:

    Dijkstra:

    :

    L[.]=+ L[s]=0 : :

    ( )

    :

    t.

  • . 1. 1. (Dijkstra-)

    8 , 30, 2.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. (Dijkstra- )

    9 , 30, 2.3:

    v1 v7 0:

    v2(-,+) v4(-,+)

    9

    7

    3 9 1

    V1(0,-)

    v3(-,+) v6(-,+)

    v7(-,+)

    4

    2

    6

    1

    3

    2

    7

    5

    v5(-,+)

  • 1:

    v2(v1,9)

    . 1. 1. (Dijkstra- )

    10 , 30, 2.3:

    v4(-,+)

    9

    7

    3 9 1

    v1 v2,v3. v2,v3

    V1(0,-)

    v3(v1,4) v6(-,+)

    v7(-,+)

    4

    2

    6

    1

    3

    2

    7

    5

    v5(-,+)

  • . 1. 1. (Dijkstra- )

    11 , 30, 2.3:

    2:

    v2(v3,6) v4(-,+)

    9

    7

    3 9 1

    v3 v2,v5,v6. v2,v5,v6

    V1(0,-)

    v3(v1,4) v6(v3,10)

    v7(-,+)

    4

    2

    6

    1

    3

    2

    7

    5

    v5(v3,5)

  • . 1. 1. (Dijkstra- )

    12 , 30, 2.3:

    3:

    v2(v3,6) v4(v5,14)

    9

    7

    3 9 1

    v5 v2,v4,v6. v4,v6

    V1(0,-)

    v3(v1,4) v6(v5,7)

    v7(-,+)

    4

    2

    6

    1

    3

    2

    7

    5

    v5(v3,5)

  • . 1. 1. (Dijkstra- )

    13 , 30, 2.3:

    4:

    v2(v3,6) v4(v2,13)

    9

    7

    3 9 1

    v2 v4. v4

    V1(0,-)

    v3(v1,4) v6(v5,7)

    v7(-,+)

    4

    2

    6

    1

    3

    2

    7

    5

    v5(v3,5)

  • . 1. 1. (Dijkstra- )

    14 , 30, 2.3:

    5:

    v2(v3,6) v4(v2,13)

    9

    7

    3 9 1

    v6 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. (Dijkstra- )

    15 , 30, 2.3:

    6:

    v2(v3,6) v4(v2,13)

    9

    7

    3 9 1

    v7 . v1-v3-v5-v6-v7 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. (Dijkstra )

    16 , 30, 2.3:

    Dijkstra:

    : :

    OPT ( s t) C Dijkstra.

    Dijkstra , Dijkstra vi

    vi .

    , vi .

  • . 1. 2.

    17 , 30, 2.3:

    : G=(V,E,W), (

    :

    Prim: (? )

    Kruskal: (? )

    .

  • . 1. 2. (1.Prim-)

    18 , 30, 2.3:

    Prim:

    :

    : :

    .

    .

    :

    .

  • . 1. 2. (1.Prim-)

    19 , 30, 2.3:

    procedure Prim(G=(V,E,W))

    V={v1}

    while |V|

  • . 1. 2. (1.Prim- )

    20 , 30, 2.3:

    v1 0:

    v2 v4

    9

    7

    3 9 1

    V1

    V1

    v3 v6

    v7

    4

    2

    6

    1

    3

    2

    7

    5

    v5

  • . 1. 2. (1.Prim- )

    21 , 30, 2.3:

    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- )

    22 , 30, 2.3:

    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- )

    23 , 30, 2.3:

    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- )

    24 , 30, 2.3:

    4:

    v2 v4

    9

    7

    3 9 1

    V2

    V1

    v3 v6

    v7

    4

    2

    6

    1

    3

    2

    7

    5

    v5

  • . 1. 2. (1.Prim- )

    25 , 30, 2.3:

    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- )

    26 , 30, 2.3:

    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-)

    27 , 30, 2.3:

    Kruskal:

    :

    .

    : :

    .

    :

    .

  • . 1. 2. (2.Kruskal - )

    28 , 30, 2.3:

    procedure Kruskal(G=(V,E,W))

    V=

    MergeSort(E)

    while |V|

  • 1:

    . 1. 2. (1.Kruskal- )

    29 , 30, 2.3:

    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- )

    30 , 30, 2.3:

    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- )

    31 , 30, 2.3:

    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- )

    32 , 30, 2.3:

    v2 v4

    9

    7

    3 9 1

    (v5,v6)

    V1

    v3 v6

    v7

    4

    2

    6

    1

    3

    2

    7

    5

    v5

  • 5:

    . 1. 2. (1.Kruskal- )

    33 , 30, 2.3:

    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- )

    34 , 30, 2.3:

    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- )

    35 , 30, 2.3:

    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.

    36 , 30, 2.3:

    :

    20, 5 1 . ,

    :

    1,45 : 7 1 . 0,77 : 3 , 3 2 .

    :

    20, 5 1.

  • . 1. 3. ()

    37 , 30, 2.3:

    procedure coins(X, V) //X , V:

    C=[]sum=0i=1while sum

  • . 1. 3. ( )

    38 , 30, 2.3:

    .

    OPT=(o1,o2,o3) ( 1,2,3 (20-5-1)

    C=(c1,c2,c3) ( c1,c2,c3 (20-5-1) (20-5-1)

    1>c1 20 20. o1=c1

    2>c2 5 5. o2=c2

    c3>o3, . o3=c3

    .

  • . 1. 4. ( )

    39 , 30, 2.3:

    !!

    .

    1, 13 29 1, 13 29 39 : 1 29 10 1 ( 11 )

    3 13 .

  • . 1

    : 1 , 5 , 9 , 10 , 25 48 S, S.

    1. .

    40 , 30, 2.3:

    2. .

    3. .

  • . 2 G = (V, E) () G (vi,vj) G (vi) (vj).

    .

    = [v1, , vn], n = | V |.

    41 , 30, 2.3:

    = [v1, , vn], n = | V |. : i =1 n, vi vi v1, , vi-1. :

    a

    f

    c e

    d

    b

    = [ a, b, c, d, e, f]

    : a b c d e f: 1 1 2 2 3 3

  • . 2() ; . () .() .

    () ( ).

    42 , 30, 2.3:

    ( ).