第六章 圖形( graph )結構

64
written by Wei-ShenLai 1 第第第 第第Graph 第第 6-1 第第第第第第第 6-2 第第第第第第 6-3 第第第第第 6-4 第第第 6-5 第第第第第第 6-6 AOV 第第第第第第第

Upload: lane

Post on 06-Jan-2016

117 views

Category:

Documents


0 download

DESCRIPTION

第六章 圖形( Graph )結構. 6-1 圖形的基本概念 6-2 圖形的表示法 6-3 圖形的追蹤 6-4 擴張樹 6-5 圖形最短路徑 6-6 AOV 網路與拓樸排序. 6-1  圖形的基本概念. 圖形結構是一種探討兩個頂點間是否相連的一種關係圖, 在圖形中連接兩頂點的邊若填上加權值 ( 也可以稱為花費值 ) , 這類圖形就稱為「網路」。 - PowerPoint PPT Presentation

TRANSCRIPT

  • Graph6-1 6-2 6-3 6-4 6-5 6-6 AOV

  • 6-1 ( ) (Performance Evaluation and Review Technique, PERT)

  • 6-1-11736EulerKoenigsbergKoenigsbergKoenigsbergprgalKneiphof4agADEulerVertexEulerian Walk or Eulerian CycleEulerian Chain

    A

    B

    D

    C

    E

    1

    2

    3

    4

    5

    6

    7

    8

  • 6-1-2Terminology(graph)(vertice)(edge)G=(V,E)V E Undirected GraphV={A,B,C,D,E}E={(A,B) ,(A,E) ,(B,C),(B,D),(C,D),(C,E),(D,E)}( ) (A,B)=(B,A)Directed GraphV={A,B,C,D,E}E={,,,,,}< >

    B

    C

    E

    D

    A

    B

    C

    E

    D

    A

  • Complete GraphGNN(N-1)/2N(N-1)

    B

    C

    E

    D

    A

    B

    C

    E

    D

    A

  • SubgraphGG G'G''GG'''G

    B

    C

    E

    D

    A

    B

    D

    A

    C

    E

    D

    A

    G

    G'

    G''

    C

    E

    D

    G'''

  • PathG A E {(A,B), (B,E)}{(A,B),(B,C),(C,D),(D,E)}

    B

    C

    E

    D

    A

    B

    C

    E

    D

    A

  • Simple Path

    B

    C

    E

    D

    A

    B

    C

    E

    D

    A

  • CycleG {(A,B),(B,D),(D,E),(E,C),(C,A)}A

    B

    C

    E

    D

    A

    B

    C

    E

    D

    A

    B

    C

    E

    D

    A

  • ConnectedStrongly ConnectedVi Vj Vi VjVi Vj Vj Vi Vi VjG

  • Connected Component2

    B

    C

    A

    E

    D

  • degreein degree/out degreeG A 4

    V V A 1 3

    B

    C

    E

    D

    A

    B

    C

    E

    D

    A

  • 6-1-3(multigraph) 2 ( 2 ) bipartite graphG = ( V , E ) V1 V2E e ( x , y ) x V1 y V2bipartite graph GV1={A C E G}V2={B DF H}

    B

    E

    D

    A

    B

    E

    D

    A

    H

    F

    E

    G

  • 6-2 6-2-1(adjacency matrix)

  • (adjacency matrix)

    1

    0

    1

    2

    3

    5

    4

    1

    2

    3

    4

    5

    0

    0

    1

    1

    0

    1

    1

    0

    1

    0

    1

    1

    0

    1

    1

    0

    1

    0

    0

    1

    1

    0

    1

    1

    2

    3

    4

    5

  • (adjacency matrix)

    2

    3

    4

    1

    1

    0

    1

    2

    3

    4

    0

    0

    1

    0

    1

    1

    0

    0

    0

    0

    0

    1

    0

    0

    1

    2

    3

    4

  • 6-2-2(adjacent list) 0 1 n e n 2 * e ( )n e O ( n + e ) struct list{ int val;struct list *next;};typedef struct list node;typedef node *link;struct list head[6];

  • (adjacent list)

    2

    3

    5

    4

    1

    Null

    2

    5

    Null

    2

    V1

    Null

    1

    3

    4

    V2

    4

    5

    V3

    Null

    2

    3

    5

    V4

    Null

    1

    3

    4

    V5

  • (adjacent list)

    2

    3

    4

    1

    Null

    2

    V1

    Null

    3

    4

    V2

    Null

    V3

    Null

    3

    V4

  • 6 . 2 . 4 ()

  • 6-2-3(adjacency multilist)

    MV1V2LINK1V1 V1 V1 NILLINK2V2V2V2NIL

    M

    V1

    V2

    LINK1

    LINK2

  • (adjacency multilist)

    2

    3

    5

    4

    1

    M1

    head

    M1

    M3

    1

    M4

    M2

    M1

    1

    2

    M2

    2

    M3

    M2

    1

    3

    4

    5

    5

    Nil

    M6

    M3

    2

    3

    M4

    M5

    M4

    2

    4

    Nil

    M5

    M5

    3

    4

    M6

    M7

    M6

    3

    5

    Nil

    M7

    M7

    4

    5

    Nil

    Nil

  • (adjacency multilist)

    2

    3

    4

    1

    head

    1

    2

    3

    4

    head

    M1

    M2

    Nil

    M4

    1

    M1

    1

    2

    Nil

    Nil

    M2

    2

    3

    M3

    M4

    M3

    2

    4

    Nil

    Nil

    M4

    4

    3

    Nil

    Nil

    2

    3

    4

    Nil

    M1

    M2

    M3

  • 6-2-4(Indexed Table) n n n

    A

    B

    D

    1

    C

    A

    B

    4

    C

    7

    D

    10

    B

    C

    D

    A

    C

    D

    A

    B

    1

    2

    3

    4

    5

    6

    7

    8

    D

    A

    B

    C

    9

    10

    11

    12

  • 6-3 V1V1

  • (DFS)struct list{int val;struct list *next;};typedef struct list node;typedef node *link;struct list* head[9];

    void dfs(int current) /* */{link ptr;run[current]=1;printf("[%d] ",current);ptr=head[current]->next;while(ptr!=NULL){if (run[ptr->val]==0) /* */dfs(ptr->val); /* dfs */ptr=ptr->next;}}

    Null

    2

    3

    1

    Null

    1

    4

    5

    2

    Null

    1

    6

    7

    3

    Null

    2

    5

    4

    Null

    2

    4

    8

    5

    Null

    3

    7

    8

    6

    Null

    3

    6

    7

    Null

    5

    6

    8

  • 6-3-1(DFS)

    2

    3

    5

    4

    1

  • (BFS)struct list{int val;struct list *next;};typedef struct list node;typedef node *link;struct list* head[9];

    void bfs(int v){node_pointer w;queue_pointer front,rear;front=rear=NULL;printf("%d",v);visited[v]=TRUE;addq(&front,&rear,v);while(front){v=deleteq(&front);for(w=graph[v];w;w=w-vertex]){printf("%d",w->vertex);addq(&front,&rear,w->vertex);visited[w->vertex]=TRUE;}}}

    Null

    2

    3

    1

    Null

    1

    4

    5

    2

    Null

    1

    6

    7

    3

    Null

    2

    5

    4

    Null

    2

    4

    8

    5

    Null

    3

    7

    8

    6

    Null

    3

    6

    7

    Null

    5

    6

    8

  • 6-3-2(BFS)

    2

    3

    5

    4

    1

  • 6-3-3(connected)V (Connected Component)

  • 6-4 (Spanning Tree)()(cycle)n n-1G=(V,E)TBT BS=(V,T)G (spanning tree)

  • DFS

    Null

    2

    5

    1

    Null

    1

    3

    4

    2

    Null

    2

    4

    5

    3

    2

    3

    5

    4

    1

    DFS

    4

    Null

    2

    1

    3

    3

    4

    4

    1

    5

    Null

    2

    3

    5

    2

    3

    5

    4

    1

    DFS

    1

    3

    4

    2

  • BFS

    Null

    2

    5

    1

    Null

    1

    3

    4

    2

    Null

    2

    4

    5

    3

    4

    Null

    1

    3

    4

    5

    Null

    2

    3

    5

    2

    3

    5

    4

    1

    BFS

    1

    3

    4

    2

    2

    3

    5

    4

    1

    BFS

    2

    3

    4

    1

  • MST Minimum Cost Spanning Tree(weight)(Weighted Graph)(distance)(Cost)Network)

    1

    2

    3

    5

    4

    1

    6

    5

    3

    2

    4

    2

    2

    3

    5

    1

    1

    6

    5

    2

    3

    4

    5

    4

    1

    1

    5

    1

    5

  • PrimPrimeKruskalKruskalPrimePrimeT(u,v)uvTTTn-1GE(G)Oe*log(e)TVTGTU(G)EG(u,t)uU(G)tVT

    A

    B

    C

    D

    E

    F

    6

    10

    10

    12

    A

    B

    A

    B

    E

    D

    F

    C

    5

    9

    6

    12

    16

    8

    11

    3

    7

    6

    A

    C

    D

    E

    F

    3

    10

    12

    A

    B

    6

    B

    5

    8

    C

    3

    A

    C

    D

    E

    F

    7

    10

    12

    A

    B

    6

    B

    5

    8

    C

    3

    D

    5

  • Prim

    10

    A

    B

    E

    D

    F

    C

    5

    9

    6

    12

    16

    8

    11

    3

    7

  • Prim

    0

    6

    2

    1

    3

    4

    5

    28

    16

    12

    18

    14

    10

    25

    24

    22

    VT

    (4,5),(0,1)

    (3,2),(3,6),(4,6),(0,1)

    (3,4),(4,6),(0,1)

    25,28

    12,18,24,28

    22,24,28

    {0,5,4}

    {0,5,4,3,2}

    {0,5,4,3}

    1

    4

    6

    5

    3

    2

    UG

    {1,2,3,4,6}

    {1,6}

    {1,2,3,6}

    (0,5),(0,1)

    10,28

    -

    {0,5}

    {1,2,3,4,5,6}

    (1,2),(3,6),(4,6),(0,1)

    16,18,24,28

    {0,5,4,3,2,1}

    {6}

    -

    -

    -

    {0}

    {1,2,3,4,5,6}

    (1,6),(3,6),(4,6),(0,1)

    14,18,24,28

    {0,5,4,3,2,1,6}

    {}

  • Prim

    VT

    (1,3),(1,6),(2,4)(2,5),(2,6)

    (1,3),(1,6),(2,6)(5,4),(4,6),(3,4)

    (1,3),(1,6),(2,4)(2,6),(5,4)

    19,21,6,5,11

    19,21,1110,14,18

    19,21,6,11,10

    {1,2,5}

    {1,2,5,4,6}

    {1,2,5,4}

    UG

    {3,4,6}

    {3}

    {3,6}

    (1,2),(1,3),(1,6)

    16,19,21

    -

    {1,2}

    {3,4,5,6}

    -

    -

    -

    {1}

    {2,3,4,5,6}

    (1,3),(1,6),(5,4)(4,6),(3,4),(3,6)

    19,21,1014,18,33

    {1,2,5,4,6,3}

    {}

    16

    1

    2

    3

    6

    4

    5

    11

    21

    14

    6

    5

    10

    18

    33

    19

    1

    2

    3

    4

    5

  • KruskalGnn-1TGE(G)Oe*log(e)v,wTunion_find()v,wv,wunion(v,w)

  • Kruskal

    10

    A

    B

    E

    D

    F

    C

    5

    9

    6

    12

    16

    8

    11

    3

    7

  • Kruskal

    0

    6

    2

    1

    3

    4

    5

    28

    16

    12

    18

    14

    10

    25

    24

    22

    T'

    (0,5)

    (2,3)

    (1,6)

    (1,2)

    (3,6)

    (3,4)

    (4,6)

    (4,5)

    (0,1)

    10

    12

    14

    16

    18

    22

    24

    25

    28

    {0,5}

    {0,5},{2,3}

    {0,5},{2,3},{1,6}

    {0,5},{2,3,1,6}

    {0,5},{2,3,1,6}

    {0,5},{2,3,1,6,4}

    {0,5},{2,3,1,6,4}

    {0,5,2,3,1,6,4}

    1

    2

    3

    4

    5

    6

  • Kruskal

    6

    2

    3

    4

    5

    16

    T'

    (2,5)

    (2,4)

    (4,5)

    (2,6)

    (4,6)

    (1,2)

    (3,4)

    (1,3)

    (1,6)

    5

    6

    10

    11

    14

    16

    18

    19

    21

    {2,5}

    {2,5,4}

    {2,5,4}

    {2,5,4,6}

    {2,5,4,6}

    {2,5,4,6,1}

    {2,5,4,6,1,3}

    1

    2

    3

    4

    5

    1

    11

    21

    14

    6

    5

    10

    18

    33

    19

    (3,6)

    21

  • SollinSollinGE(G)Oe*log(e)union_find

  • Sollin

    10

    A

    B

    E

    D

    F

    C

    14

    9

    6

    9

    16

    8

    11

    13

    7

  • Sollin

    (0,5)

    (2,3)

    (1,6)

    (1,2)

    (3,6)

    (3,4)

    (4,6)

    (4,5)

    (0,1)

    10

    12

    14

    16

    18

    22

    24

    25

    28

    Forest

    {0,5},{1,6},{2,3,4}

    (0,5)

    (2,3)

    (1,6)

    (1,2)

    (3,6)

    (3,4)

    (4,6)

    (4,5)

    (0,1)

    10

    12

    14

    16

    18

    22

    24

    25

    28

    Forest

    {0,5},{1,6,2,3,4}

    0

    6

    2

    1

    3

    4

    5

    28

    16

    12

    18

    14

    10

    25

    24

    22

    {0,5,1,6,2,3,4}

    2

    2

    1

    1

    1

    1

  • Sollin

    (2,5)

    (2,4)

    (4,5)

    (2,6)

    (4,6)

    (1,2)

    (3,4)

    (1,3)

    (1,6)

    5

    6

    10

    11

    14

    16

    18

    19

    21

    Forest

    {1,2,3,4,5,6}

    (2,5)

    (2,4)

    (4,5)

    (2,6)

    (4,6)

    (1,2)

    (3,4)

    (1,3)

    (1,6)

    5

    6

    10

    11

    14

    16

    18

    19

    21

    Forest

    {1,2,3,4,5,6}

    (3,6)

    33

    16

    1

    2

    3

    6

    4

    5

    11

    21

    14

    6

    5

    10

    18

    33

    19

    (3,6)

    33

  • 6-5G = ( V , E ) G W(Weight)GV0 W (The Shortest Path Problem)

  • 6-5-1Dijkstra DijkstraS={Vi|ViV}ViV0 S w S Dist(w)V0 wwSuu V-Su u S V0uw DIST(w)DIST(w) Min{DIST(w),DIST(u)+COST(u,w)}Algorithm1 G=(V,E)D[k]=A[F,k]k 1 NS={F}V={1,2,......N}D N F A[F,I]F I V E S S={F}2 V S x D[x]x S3 D[I]=min(D[I],D[x]+A[x,I])(x,I) D I x 4 2 V S

  • 6 . 5 . 1

    8

    14

    12

    16

    0

    5

    4

    1

    12

    2

    3

    6

    10

    15

    20

  • Los Angeles

    0

    300

    800

    1200

    1500

    250

    900

    4

    NewYork

    5

    1000

    Miami

    6

    Chicago

    Boston

    3

    New Orleans

    7

    Denver

    2

    SanFrancisco

    1

    1000

    1400

    1700

    1000

  • 6-5-2DijkstraFloyd Floyd Ak[i][j]=min{Ak-1[i][j],Ak-1[i][k]+Ak-1[k][j]} 1 i j nAk[ i ] [ j ] i j k A0[i][j]=COST[i][j] A0 COSTA0i j An[ i , j ] i j An for(k=0;k>n;k+=)for(i=0;i
  • 6 . 5 . 2 Floyd

    1

    3

    2

    4

    2

    11

    3

    1

    2

    3

    1

    2

    3

    A0

    0

    4

    11

    6

    0

    2

    3

    0

    1

    2

    3

    1

    2

    3

    A1

    0

    4

    11

    6

    0

    2

    3

    7

    0

    +3

    +6

    1

    2

    3

    1

    2

    3

    A2

    0

    4

    6

    6

    0

    2

    3

    7

    0

    +7

    +4

    1

    2

    3

    1

    2

    3

    A3

    0

    4

    6

    5

    0

    2

    3

    7

    0

    +6

    +2

  • 0

    1

    2

    6

    4

    2

    11

    3

    0

    1

    2

    0

    1

    2

    0

    4

    11

    6

    0

    2

    3

    0

    A-1

    0

    1

    2

    0

    1

    2

    0

    4

    11

    6

    0

    2

    3

    7

    0

    A0

    0

    1

    2

    0

    1

    2

    0

    4

    6

    6

    0

    2

    3

    7

    0

    A1

    0

    1

    2

    0

    1

    2

    0

    4

    6

    5

    0

    2

    3

    7

    0

    A2

    +6

    +3

    +7

    +4

    +2

    +6

  • 6-5-3(Transitive Closure)(Single Source All Destination)(All Pars Shortest Paths)G i j (Transitive Closure)(path matrix)PG i ji j 0 1 P i j=0 i j Pi,j=1 i j 1 A1,A2,A3,A4...An An(aij)i j n A1,A2,A3,A4...AnB=A1,A2,A3,A4...An B 0 1 0 1 A+G nTransitive Closure A+Warshall for(k=1;k
  • 6 . 5 . 3 4 Transitive Closure A+

    1

    3

    2

    4

    1

    2

    3

    1

    2

    3

    A0

    0

    1

    0

    0

    0

    1

    1

    1

    0

    4

    4

    1

    0

    1

    0

    0

    1

    0

    1

    2

    3

    1

    2

    3

    A1

    0

    1

    0

    0

    0

    1

    4

    4

    1

    0

    1

    1

    0

    1

    0

    0

    1

    0

    && 0

    && 1

    && 0

    1

    2

    3

    1

    2

    3

    A3

    1

    1

    1

    1

    1

    1

    4

    4

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    && 1

    && 1

    && 1

    1

    2

    3

    1

    2

    3

    A2

    0

    1

    1

    0

    0

    1

    4

    4

    1

    0

    1

    1

    1

    1

    0

    0

    1

    0

    && 1

    && 1

    && 0

    1

    2

    3

    1

    2

    3

    A4

    1

    1

    1

    1

    1

    1

    4

    4

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    && 1

    && 1

    && 1

  • 0

    1

    2

    0

    1

    2

    0

    1

    0

    0

    0

    1

    0

    0

    0

    A-1

    3

    4

    0

    0

    1

    0

    0

    0

    0

    0

    0

    0

    1

    0

    0

    1

    0

    0

    3

    4

    0

    1

    2

    3

    4

    &&0

    0

    1

    2

    0

    1

    2

    0

    1

    0

    0

    0

    1

    0

    0

    0

    A1

    3

    4

    0

    0

    1

    0

    0

    0

    0

    0

    0

    0

    1

    0

    0

    1

    0

    0

    3

    4

    &&0

    &&0

    &&0

    &&1

    0

    1

    2

    0

    1

    2

    0

    1

    1

    0

    0

    1

    0

    0

    0

    A1

    3

    4

    0

    0

    1

    0

    0

    0

    0

    0

    0

    0

    1

    0

    0

    1

    0

    0

    3

    4

    &&0

    &&0

    &&0

    &&1

    0

    1

    2

    0

    1

    2

    0

    1

    1

    0

    0

    1

    0

    0

    0

    A2

    3

    4

    1

    1

    1

    0

    0

    0

    0

    0

    0

    0

    1

    0

    0

    1

    1

    0

    3

    4

    &&1

    &&0

    &&1

    &&1

    0

    1

    2

    0

    1

    2

    0

    1

    1

    0

    0

    1

    0

    0

    0

    A3

    3

    4

    1

    1

    1

    1

    1

    1

    0

    0

    0

    0

    1

    0

    0

    1

    1

    1

    3

    4

    &&1

    &&1

    &&1

    &&1

    0

    1

    2

    0

    1

    2

    0

    1

    1

    0

    0

    1

    0

    0

    1

    A4

    3

    4

    1

    1

    1

    1

    1

    1

    0

    0

    1

    1

    1

    0

    0

    1

    1

    1

    3

    4

    &&1

    &&1

    &&1

  • 6-6AOV (Activity On Vertex Network AOV )AOV

  • 6-6-1AOV AOVVi VjViVj

    Vi Vj ViVjAOV ()(Partial Order)(Linear Order)ij i j (Topological Order)AOVAOV AOV

  • 6-6-2 1 2 3

    A

    E

    B

    G

    F

    C

    H

    D

    I

    J

    K

    A

    E

    B

    G

    C

    H

    F

    D

    I

    J

    K

    A

    J

    E

    K

    B

    G

    C

    C

    H

    F

    D

    I

    J

    K

    ABEG

    H

    F

    D

    I

    J

    K

    D

    I

    J

    ABEGCFH

    K

    ABEGCFHDIJ

    K

    ABEGCFHDIJK

    ABEGCFHDI

  • AOVC1,C2,C4,C5,C3,C6,C8,C7,C10,C13,C12,C14,C15,C11,C9C4,C5,C2,C1,C6,C3,C8,C15,C7,C9,C10,C11,C12,C13,C14

    C2

    C4

    C5

    C3

    C7

    C6

    C8

    C9

    C10

    C12

    C13

    C15

    C11

    C14

    C1

  • 6-6-3AOE (critical path)AOE(event)(action)(incident in edge)(incident out edge)AOE (critical path)(critical path)AOE (source)(destination)AOE

  • (Critical Path Method, CPM)(earlest time)TE(incident out edge)TE (latest time)TL(incident out edge)AOE (incident out edge)TL (critical vertex)TE=TL Delay

  • AOE

    T

    TL=25

    TL=20

    9

    TL=17

    TL=18

    TL=13

    1

    TL=9

    TL=6

    TL=7

    2

    TL=6

    TL=0

    TL

    3

    4

    a3

    5

    a2

    6

    a1

    earlyTE

    5

    7

    0

    0

    0

    6

    7

    6

    9

    13

    17

    TE

    20

    0

    5

    4

    6

    8

    13

    16

    V1V4V6V8V9V10

    18

    0

    20

    a4

    25

    4

    a5

    6

    a6

    8

    a7

    8

    a8

    13

    a9

    16

    a10

    18

    lateTL-ai

    6

    0

    3

    1

    7

    6

    9

    8

    11

    13

    17

    18

    18

    late-early

    1

    10

    0

    3

    1

    25

    3

    0

    1

    3

    0

    1

    0

    a11

    20

    a12

    20

    0

    V1

    V3

    V2

    V4

    V6

    V8

    V7

    V5

    V9

    V10

    a1=5

    a2=4

    a3=6

    a4=3

    a5=2

    a6=7

    a7=8

    a8=7

    a9=5

    a10=3

    a11=2

    a12=5

    T

    TE=0

    TE=5

    TE=4

    TE=6

    TE=8

    TE=16

    TE=18

    TE=13

    TE=20

    TE=25

  • AOE

    V0

    V2

    V1

    V3

    V4

    V5

    V7

    V6

    V8

    a0=6

    a1=4

    a2=5

    a3=1

    a4=1

    a5=2

    a6=9

    a7=7

    a8=4

    a9=2

    a10=4

    T

    TE=6TL=6

    TE=4TL=6

    TE=5TL=8

    TE=7TL=7

    TE=7TL=10

    TE=14TL=14

    TE=16TL=16

    TE=18TL=18

    TE=0TL=0

    T

    0

    1

    2

    3

    4

    5

    6

    TE

    0

    6

    4

    5

    7

    7

    16

    7

    14

    8

    18

    18

    a0

    TL

    0

    6

    6

    8

    7

    10

    16

    14

    V0V1V4V6V8V0V1V4V7V8

    a3

    a2

    a1

    earlyTE

    6

    0

    0

    0

    a4

    4

    a5

    5

    a6

    7

    a7

    7

    a8

    7

    a9

    16

    a10

    14

    lateTL

    6

    3

    2

    0

    6

    8

    7

    7

    10

    16

    14

    late-early

    0

    3

    2

    0

    2

    3

    0

    0

    3

    0

    0