chapter4 do phuc tap cua cac giai thuat do thi

Upload: nomaddarcy

Post on 31-May-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    1/76

    1

    Chng 4

    phc tp ca cc gii thut th

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    2/76

    2

    Ni dung

    1. Cc gii thut th cn bn2. th c trng s

    3. th c hng

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    3/76

    3

    1.Cc gii thut th cn bn

    C nhiu bi ton c nh ngha theo i tng v cc

    kt ni gia cc i tng y.

    Mt th l mt i tng ton hc m m t nhng biton nh vy.Cc ng dng trong cc lnh vc:

    Giao thngVin thngin lcMng my tnh

    C s d liuTrnh bin dchCc h iu hnhL thuyt th

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    4/76

    4

    Mt th d

    A

    B GC

    F

    D E

    L M

    KJ

    IH

    Hnh 4.1a Mt th th d

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    5/76

    5

    Thut ng

    Mt th l mt tp cc nh v cc cnh. Cc nh lnhng i tng n m c th c tn v c mt s tnhcht khc v cnh l ng kt ni gia hai nh.

    Mt li it x n y trong mt th l mt danh sch

    nhng nh m nhng nh k tip nhau c kt ni nhvo nhng cnh trn th.

    Mt th l lin thngnu c mt li i t mi nt nmt nt khc trong th. Mt th m khng lin thng

    th bao gm nhiu thnh phn lin thng.

    Mt li i n l mt li i m trn khng c nh nolp li.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    6/76

    6

    Thut ng (tt.)

    Mt chu trnh (cycle )l mt li i n ngoi tr nh u

    tin v nh cui cng trng nhau (mt li i t mt nhquay v chnh n).

    Mt th khng c chu trnh c gi l cy (tree). Mtnhm cc cy khng lin thng c gi l rng(forest).

    Cy bao trm ca mt th l mt th con m cha tt ccc nh trong cy nhng mt s cnh chm n mi nh.

    Gi s nh trong mt th l V, s cnh l E, s cnh ca

    th c th c t 0 n V (V-1)/2. (Chng minh truy chng).

    th c tt c mi cnh hin din gia mi cp nh cgi l th y (complete graphs).

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    7/76

    7

    Thut ng (tt.)

    Cc th vi s cnh tng i t c gi l th tha;cc th vi ch mt s t cnh mt i c gi l th dy.

    Cc th m t cho n gi l nhng th v hng(undirected graphs). Trong cc th c trng s (weighted

    graphs), nhng gi tr s (trng s) c gn vo mi cnh din t th d khong cch hay chi ph.

    Trong th c hng(directed graphs) cc cnh l mt

    chiu: mt cnh i txsangy ch khng phi i ty sangx.Cc th c hng, c trng s cn c gi l ccmng(networks).

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    8/76

    8

    Cch biu din th

    Ta phi nh x cc tn nh thnh nhng s nguyn trongtm tr gia 1 v V.

    Gi s c tn ti hai hm:

    - hm index: chuyn i t tn nh thnh s nguyn- hm name: chuyn i s nguyn thnh tn nh.

    C hai cch biu din th:- dng ma trn k cn

    - dng tp danh sch k cn

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    9/76

    9

    Cch biu din ma trn k cn

    A B C D E F G H I J K L MA 1 1 1 0 0 1 1 0 0 0 0 0 0B 1 1 0 0 0 0 0 0 0 0 0 0 0C 1 0 1 0 0 0 0 0 0 0 0 0 0D 0 0 0 1 1 1 0 0 0 0 0 0 0

    E 0 0 0 1 1 1 1 0 0 0 0 0 0F 1 0 0 1 1 1 0 0 0 0 0 0 0G 1 0 0 0 1 0 1 0 0 0 0 0 0H 0 0 0 0 0 0 0 1 1 0 0 0 0I 0 0 0 0 0 0 0 1 1 0 0 0 0J 0 0 0 0 0 0 0 0 0 1 1 1 1

    K 0 0 0 0 0 0 0 0 0 1 1 0 0L 0 0 0 0 0 0 0 0 0 1 0 1 1M 0 0 0 0 0 0 0 0 0 1 0 1 1

    Mt ma trn Vhng V ct chacc gi tr Booleanm a[x, y]l true if

    nu tn ti mtcnh t nhxnnhy vfalse nungc li.

    Hnh 4.1b: Ma trn kcn ca th hnh4.1a

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    10/76

    10

    Ghi ch v cch biu din ma trn k cn

    Mi cnh tng ng vi 2 bit trong ma trn: micnh ni giaxvy c biu din bng gi tr trueti c a[x, y]v a[y, x].

    tin li gi nh rng c tn ti mt cnh ni minh v chnh n.

    Li biu din ny ch thch hp khi cc th l dy.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    11/76

    11

    Gii thutprogram adjmatrix (input, output);const maxV = 50;

    var j, x, y, V, E: integer;a: array[1..maxV, 1..maxV] ofboolean;

    beginreadln (V, E);

    for x: = 1 to V do /*initialize the matrix */ for y: = 1 to V do a[x, y]: = false; for x: = 1 to V do a[x, y]: = true; for j: = 1 to E do begin

    readln (v1, v2);x := index(v1); y := index(v2);

    a[x, y] := true; a[y, x] := true

    end;end.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    12/76

    12

    Cch biu din bng tp danh sch k cn

    Trong cch biu din ny, mi nh m ni ti mtnh c kt thnh mt danh sch k cn(adjacency-list) cho nh .

    program adjlist (input, output);const maxV = 100;type link = node

    node = record v: integer; next: linkend;var j, x, y, V, E: integer;

    t, x: link;

    adj: array[1..maxV] oflink;

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    13/76

    13

    beginreadln(V, E);

    new(z); z.next: = z;

    for j: = 1 to V do adj[j]: = z; for j: 1 to E do begin

    readln(v1, v2);

    x: = index(v1); y: = index(v2);

    new(t); t.v: = x; t.next: = adj[y];

    adj[y]: = t; /* insert x to the first element of

    ys adjacency list */

    new(t); t.v = y; t.next: = adj[x];

    adj[x]:= t; /* insert y to the first element ofxs adjacency list */

    end;end.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    14/76

    14

    a b c d e f g h i j k l m

    f

    c

    b

    g

    a a f g a e i h k j j j

    e f e a l

    m

    m l

    d d

    Hnh 4.1c: Biu din bng tp danhsch k cn ca th hnh 4.1

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    15/76

    15

    Cc phng php duyt th

    Duyt hay tm kim trn th: ving mi nh/nttrong th mt cch c h thng.

    C hai cch chnh duyt th:

    - duyt theo chiu su trc (depth-first-search )- duyt theo chiu rng trc (breadth-first-search).

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    16/76

    16

    Duyt theo chiu su trc gii thut quy

    procedure dfs; procedure visit(n:vertex);

    beginadd n to the ready stack;

    while the ready stack is not empty doget a vertex from the stack, process it,and add any neighbor vertex that has not been processed

    to the stack.if a vertex has already appeared in the stack, there is no

    need to pushit to the stack, but it is moved to the top of the stack.

    end;beginInitialize status;

    for each vertex, say n, in the graph do ifthe status of n is not yet visited then visit(n)

    end;

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    17/76

    17

    Tm kim theo chiu su trc biu dindanh sch k cn

    procedure list-dfs;var id, k: integer;

    val: array[1..maxV] ofinteger;procedure visit (k: integer);var t: link;beginid: = id + 1; val[k]: = id; /* change the status of k

    to visited */t: = adj[k]; / * find the neighbors of the vertex k */

    while t z do begin ifval[t .v] = 0 then visit(t.v);

    t: = t.next end

    end;

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    18/76

    18

    beginid: = 0;

    for k: = 1 to V do val[k]: = 0; /initializethe status of all vetices */

    for k: = 1 to V do ifval[k] = 0 then visit(k)end;

    Ghi ch: Mng val[1..V]cha trng thi ca ccnh.val[k] = 0 nu nh kcha h c ving (not yet visited),val[k] 0 nu nh k c ving.val[k]: = j ngha l nhjth m c ving trong qu trnhduyt l nh k.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    19/76

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    20/76

    20

    Nh vy kt qu ca gii thut duyt DFS trn th cho hnh 4.1a vi tp danh sch k cn cho hnh 4.1c l

    A F E G D C G

    Lu : th t ca cc nh trong cc danh sch k cn c nh

    hng n th t duyt ca cc nh khi p dng DFS.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    21/76

    21

    phc tp ca duyt theo chiu su trc

    Tnh cht 5.1.1Duyt theo chiu su trc mt th biu din bng cc danh sch k cn i hi thi

    gian t l V+ E.

    Chng minh: Chng ta phi gn tr cho mi phnt ca mng val(do t l vi O(V)), v xt mint trong cc danh sch kt cn biu din th (do

    t l vi O(E)).

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    22/76

    22

    Duyt theo chiu su trc biu din bng matrn k cn

    Cng mt phng php c th c p dng cho th c biu din bng ma trn k cn bngcch dng th tc visitsau y:

    procedure visit(k: integer);var t: integer;begin

    id: = id + 1; val[k]: = id;

    for t: = 1 to V do ifa[k, t] then

    ifval[t] = 0 then visit(t)end;

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    23/76

    23

    phc tp ca duyt theo chiu su trc biu din ma trn

    Tnh cht 5.1.2Duyt theo chiu su trc mt th biu din bng ma trn k cn t l vi V2.

    Chng minh: Bi v mi bit trong ma trn k cnca th u phi kim tra.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    24/76

    24

    Duyt theo chiu su trc khng quy

    procedure list-dfs;varid, k: integer; val: array[1..max V] of integer;

    procedure visit(k: integer);vart: link;begin

    push(k); repeat

    k: = pop; id:= id + 1; val[k]: = id; /* change the status of k to visited */

    t =: adj[k]; /* find the neighbors of the vertex k */. while t z do begin

    ifval[t.v] = 0 then begin

    push(t.v); val[t.v]: = -1 /* change the status of t.v to ready */ end

    else ifval[t.v] = -1 then shift t.v to the top of the stack;t: = t.next

    enduntil stackempty

    end;

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    25/76

    25

    beginid: = 0; stackinit;

    fork: = 1 to V do val[k]: = 0; /* initialize the

    status of all vertices */ fork: = 1 to V do

    ifval[k] = 0 then visit(k)end;

    Vi gii thut khng quy, ta cn dng mt stack c gil ready stack.Ghi ch:

    val[k] = 0 nu nh kl cha c ving thm,

    val[k] = -1 nu nh kang trong ready stackval[k] l mt tr dng nu nh k c ving thm.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    26/76

    26

    A

    B C G

    F

    A

    E

    F

    B C

    A

    D

    G

    F

    B C

    A

    E

    Hnh 4.3a DFS da vo stack

    G

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    27/76

    27

    G E DB B B B M

    C C C C C L L

    A F F F F F F H I J K K K

    Hnh 4.3b Ni dung ca stack khi thc hin duyt theo chiu su trc

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    28/76

    28

    Duyt theo chiu rng trc

    Khi duyt th nu ta dng mt queue thay v mt stack, ta s

    i n mt gii thut duyt theo chiu rng trc(breadth-first-search).

    procedure bfs; procedure visit(n: vertex); begin

    add n to the ready queue;while the ready queue is not empty doget a vertex from the queue, process it, and add any neighborvertex that has not been processed to the queue andchange their status to ready.

    end;beginInitialize status;

    foreach vertex, say n, in the graphifthe status ofn is not yet visited then visit(n)

    end;

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    29/76

    29

    procedure list-bfs;var id, k: integer; val: array[1..max V] ofinteger;

    procedure visit(k: integer);var t: link;

    beginput(k); /* put a vertex to the queue */

    repeatk: = get; /* get a vertex from the queue */

    id: = id + 1; val[k]: = id; /* change the status of k to visited */

    t: = adj[k]; /* find the neighbors of the vertex k */ while t z do begin ifval[t .v] = 0 then begin

    put(t.v); val [t.v]: = -1 /* change the vertex t.v to ready */ end;t: = t.next

    enduntil queueempty

    end;

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    30/76

    30

    beginid: = 0; queue-initialze;

    for k: = 1 to V do val[k]: = 0; /initialize thestatus of all vertices */ for k: = 1 to V do

    ifval[k] = 0 then visit(k)end;

    Duyt theo chiu su trc v duyt theo chiu rng trcch khc nhau ch gii thut u dng stack v gii thutsau dng hng i. Do , phc tp tnh ton ca DFS v

    BFS l nh nhau.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    31/76

    31

    A

    Hnh 4.4 Ni dung ca hng i khi thc hin BFS

    C

    F

    C

    BB B

    GG G

    K

    G

    D

    L

    D D DD

    E EE

    M

    L

    M

    J

    H

    I

    E

    M

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    32/76

    32

    2. th c trng s

    Chng ta mun m hnh ha nhng bi ton thc t s dng

    nhng trng s(weights ) hay chi ph (costs) c gn vomi cnh.

    C hai bi ton c gii quyt trong phn ny:

    - tm mt cch t tn ch ph nht ni tt c cc nhtrong th.- Tm mt li i vi tng chi ph t nht gia hai nh

    cho.

    Bi ton th nht l bi ton cy bao trm ti thiu; bi tonth hai l bi ton tm ng i ngn nht.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    33/76

    33

    Cy bao trm ti thiu

    Mt cy bao trm ti thiu (minimum spanning tree ) ca mt

    th c trng s l mt tp cc cnh chm tt c cc nhsao cho tng trng s ca cc cnh l nh nht.

    Cy bao trm ti thiu khng nht thit l duy nht trongmt th.

    cb d

    ai e

    fgh

    8 7

    9

    14

    10

    4

    6

    1 2

    7

    2

    4

    8

    11

    Hnh 4.5 Cy baotrm ti thiu

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    34/76

    34

    Gii thut Prim

    Gii thut Prim l gii thut gii bi ton cy bao trm

    ti thiu. Gii thut ny cng trnh by mt chin lc gii mt bi ton ti u ha: gii thut tham lam(greedy):

    Ti mi bc ca gii thut, ta phi chn mt trong mt

    s kh nng la chn. Chin lc tham lam xut vicla chn kh nng m xem ra tt nht ti lc .

    Mt chin lc nh vy thng khng m bo em li ligii ti u ton cc cho cc bi ton.

    Tuy nhin i vi bi ton cy bao trm ti thiu, ta c thchng minh rng chin lc tham lam c th em licy bao trm vi tng trng s ti thiu.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    35/76

    35

    Xy dng cy bao trm ti thiu

    Gi s chng ta c mt th v hng, lin thng

    G = (V, E) vi hm gn trng s w: E R v mun tmmt cy bao trm ti thiu cho G.

    C mtgii thut tng qutm to dng dn cy bao trm

    ti thiu mt lc thm mt cnh.

    Gii thut ny duy tr mt tp A m lun lun l mt tpcon ca mt cy bao trm ti thiu.

    Ti mi bc, mt cnh (u, v) c chn thm vo tp Am khng vi phm h thc bt bin A {(u, v)} lun lun lmt tp con ca mt cy bao trm ti thiu.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    36/76

    36

    Ta gi mt cnh nh th l cnh an ton cho tp A v n cth c thm vo A mt cch an ton m khng vi phm h

    thc bt bin nu trn.procedure GENERIC_MST(G, w);/* G is a weighted graph with the weight function w */

    begin

    A :=; while A does not form a spanning tree do begin

    find an edge (u,v) that is safe for A;

    add (u,v) to A.

    end/* the set A at this point is the result */

    end;

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    37/76

    37

    Gii thut Prim

    Trong gii thut Prim, tp A hnh thnh mt cu trc cy. Mt

    cnh an ton c a vo A thng l cnh c trng s nhnht ni cy A vi mt nh khng thuc v cy.

    Cy bao trm khi i t mt nt r bt k rv pht trin chon khi cy ph tt c mi nh trong V. Ti mi bc, mt

    cnh nh (lightedge) ni mt nh trong A vi mt cnh trongV - A.Trong qu trnh thc hin gii thut ny, tt c nhng nhm khng thuc v cy A c t trong mt hng i c

    u tin Q da trn mt trng l key. Vi mi nh v, key[v]lcnh c trng s nh nht ca nhng cnh ni v vi mt nhtrong cy. Theo qui c key[v] = nu khng tn ti mtcnh nh vy.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    38/76

    38

    Trng p[v] lu tn ca nh cha ca nh v trong cy.

    procedure MST-PRIM (G, w, r);/* G is weighted graph with the weight function w, and r is an arbitrary

    root vertex */begin

    Q: = V[G]; foreach u Q do key[u]: = ;

    key[r]: = 0; p[r]: = NIL;

    while Q is not empty dobeginu: = EXTRACT-MIN(Q);

    foreach v Q and w(u, v) < key[v] then/ * update the key field of vertice v */

    beginp[v] := u; key[v]: = w(u, v) end

    endend;

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    39/76

    39

    cb d

    a i e

    h g f

    8 7

    8

    10

    14

    4

    21

    2

    67

    11

    8

    4

    cb d

    a i e

    h g f

    8 7

    8

    10

    14

    4

    21

    2

    67

    11

    8

    4

    Hnh 4.6. Mt thd v gii thutPrim.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    40/76

    40

    cb d

    a i e

    h g f

    8 7

    8

    10

    14

    4

    21

    2

    67

    11

    8

    4

    cb d

    a i e

    h g f

    8 7

    8

    10

    14

    4

    21

    2

    67

    11

    8

    4

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    41/76

    41

    cb d

    a i e

    h g f

    8 7

    8

    10

    14

    4

    21

    2

    67

    11

    8

    4

    cb d

    a i e

    h g f

    8 7

    8

    10

    14

    4

    21

    2

    67

    11

    8

    4

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    42/76

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    43/76

    43

    cb d

    a i e

    h g f

    8 7

    8

    10

    14

    4

    21

    2

    67

    11

    8

    4

    phc tp ca gii thut Prim ty thuc vo cch

    m chng ta thi cng hng i c u tin.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    44/76

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    45/76

    45

    3. th c hng

    Cc th c hng l cc th trong cc cnh ni vi

    cc nt c hng.

    A

    B GC

    F

    D E

    L M

    KJ

    IH

    Hnh 4.7. Mt th d v th c hng

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    46/76

    46

    Thng th hng ca cc cnh biu th mi lin h trc

    sau (precedence relationship) trong ng dng c m hnhha.

    Th d, th c hng c th c dng m hnh ha

    mt ng dy sn xut (assembly line).Trong phn ny, chng ta xem xt cc gii thut sau:

    - tnh bao ng truyn (transitive closure)- sp th t topo (topological sorting)

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    47/76

    47

    Tnh bao ng truyn

    Trong th c hng, chng ta quan tm n tp nhm n c t mt nh no bng cch duyt cccnh trong th theo mt hng c n nh.

    Mt tc v m ta mun thc hin l thm mt cnh tx

    ny nu tn ti mt cch no i txny th to ra bng cch thm tt c cc cnh c tnh

    cht trn c gi l bao ng truyn ca th.

    V th bao ng truyn th thng l th dy, do chng ta dng cch biu din ma trn k cn.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    48/76

    48

    Gii thut Warshall

    C mt gii thut n gin tnh bao ng truyn ca

    mt th c biu din bng ma trn k cn.for y : = 1 to V do

    for x : = 1 to V doifa[x, y] then

    for j: = 1 to V do ifa[y, j] then a[x, j]: = true;

    S. Warshall ra gii thut ny nm 1962, da trn mtquan st n gin: Nu tn ti mt cch i t nt x nnt y v cch i t nt y n nt j, th s c cch i tnt x n nt j.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    49/76

    49

    Mt th d tnh bao ng truyn ( cho th hnh 4.7)

    A B C D E F G H I J K L MA 1 1 0 0 0 1 1 0 0 0 0 0 0B 0 1 0 0 0 0 0 0 0 0 0 0 0C 1 0 1 0 0 0 0 0 0 0 0 0 0D 0 0 0 1 0 1 0 0 0 0 0 0 0E 0 0 0 1 1 0 0 0 0 0 0 0 0

    F 0 0 0 0 1 1 0 0 0 0 0 0 0G 0 0 1 0 1 0 1 0 0 1 0 0 0H 0 0 0 0 0 0 1 1 1 0 0 0 0I 0 0 0 0 0 0 0 1 1 0 0 0 0

    J 0 0 0 0 0 0 0 0 0 1 1 1 1K 0 0 0 0 0 0 0 0 0 0 1 0 0L 0 0 0 0 0 0 0 0 0 0 0 1 1M 0 0 0 0 0 0 0 0 0 0 0 1 1

    Ma trn k cn ngvi bc khi uca gii thut

    Warshall

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    50/76

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    51/76

    51

    Bi ton cc li i ngn nht

    i vi th c trng s (c hng hoc khng) ta c th

    mui xy dng mt ma trn cho php ngi ta tm c li ingn nht txny i vi mi cp nh. y l bi tonnhng li i ngn nht cho mi cp nh (all-pairs shortest

    path problem).

    A

    B GC

    F

    D E

    L M

    KJ

    IH

    2

    3

    1

    11

    4

    2

    5

    3

    2

    1

    2

    2

    1

    1

    11

    Gii h Fl d

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    52/76

    52

    Gii thut Floyd

    C th dng mt phng php tng t nh phng phpWarshall, m c a ra bi R. W. Floyd:

    for y : = 1 to V dofor x : = 1 to V do

    ifa [x, y] > 0 thenfor j: = 1 to V do

    ifa [y, j] > 0 thenif(a[x, j] = 0) or (a[x, y] + a[y, j] < a [x, j])

    thena[x, j] = a[x, y] + a[y, j];

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    53/76

    53

    Mt th d dng gii thut Floyd (cho thi hnh 4.7)

    A B C D E F G H I J K L M

    A 0 1 0 0 0 2 4 0 0 0 0 0 0B 0 0 0 0 0 0 0 0 0 0 0 0 0C 1 0 0 0 0 0 0 0 0 0 0 0 0D 0 0 0 0 0 1 0 0 0 0 0 0 0E 0 0 0 2 0 0 0 0 0 0 0 0 0

    F 0 0 0 0 2 0 0 0 0 0 0 0 0G 0 0 1 0 1 0 0 0 0 1 0 0 0H 0 0 0 0 0 0 3 0 1 0 0 0 0I 0 0 0 0 0 0 0 1 0 0 0 0 0

    J 0 0 0 0 0 0 0 0 0 0 1 3 2K 0 0 0 0 0 0 0 0 0 0 0 0 0L 0 0 0 0 0 5 5 0 0 0 0 0 1M 0 0 0 0 0 0 0 0 0 0 0 1 0

    Ma trn k cnng vi bckhi u cagii thut Floyd

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    54/76

    54

    A B C D E F G H I J K L MA 6 1 5 6 4 2 4 0 0 5 6 8 7

    B 0 0 0 0 0 0 0 0 0 0 0 0 0C 1 2 6 7 5 3 5 0 0 6 7 9 8D 0 0 0 5 3 1 0 0 0 0 0 0 0E 0 0 0 2 5 3 0 0 0 0 0 0 0F 0 0 0 4 2 5 0 0 0 0 0 0 0

    G 2 3 1 3 1 4 6 0 0 1 2 4 3H 5 6 4 6 4 7 3 2 1 4 5 7 6I 6 7 5 7 5 8 4 1 2 5 6 8 7J 10 11 9 11 9 12 8 0 0 9 1 3 2

    K 0 0 0 0 0 0 0 0 0 0 0 0 0L 7 8 6 8 6 9 5 0 0 6 7 2 1M 8 9 7 9 7 10 6 0 0 7 8 1 2

    Ma trn k cn ngvi bc cui ca

    gii thut Floyd

    Tnh cht 5.3.2 GiithutFloyd gii biton nhng li i

    ngn nht gia nhngcp c phc tptnh ton O(V3).

    Gii th h ii th t Fl d

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    55/76

    55

    Gii thch gii thut Floyd

    Gii thut Floyd lp Vbc trn ma trn k cn a.

    Sau bc lp thy, a[x, j] s cha chiu di nh nht cabt k li i no t nhxn nhjm khng i quanhng nh mang ch s ln hny. Ngha l,xvjc thbt k nh no nhng nhng nh trung gian trn li i

    phi nh hn hay bngy.

    Ti bc lp thy, ta tnh cc phn t ca ma trn a bngcng thc sau:

    ay[x,j] = min( ay-1[x,j], ay-1[x, y] + ay-1[y, j])

    Ch sy ch tr ca mt phn t trong ma trn a sau bclp thy.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    56/76

    56

    y

    xj

    ay-1[x,y] ay-1[y,j ]

    ay-1[x,j ]

    Cng thc ny c minh ha bng hnh v sau y.

    X th t t

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    57/76

    57

    Xp th t tp

    th c hng khng chu trnh (Directed Acyclic Graph)

    th c hng m khng c chu trnh c gi l cc th c hng khng chu trnh (dags).

    Tp th t ring phn v xp th t tp

    Cho G l mt th c hng khng chu trnh. Xt quanh th t< c nh ngha nh sau:u < v nu c mt li i tu n v trong G.

    Quan h ny c 3 tnh cht:(1) Vi mi nh trong V[G], not (u < u). (khng phn x)(2) nu u < v, th not( v < u) . (khng i xng)(3) nu u < v v v < w, th u < w. (Truyn)

    T th t i h

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    58/76

    58

    Tp th t ring phn

    Mt quan h < trn tp S m tha hai tnh cht bt i xngv truyn l mt quan h th t ring phn (partial ordering)ca S, v mt tp c trn n mt quan h th t ring phnth c gi l tp th t ring phn (partially order set).

    Nh vy, bt k th c hng khng chu trnh c th ccoi nh l mt tp th t ring phn.

    T th t i h (tt )

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    59/76

    59

    Tp th t ring phn (tt.)

    Mt khc, gi s S l mt tp th t ring phn vi quan h

    th t ring phn

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    60/76

    60

    Xp th t tp

    Cho G l mt th c hng khng chu trnh. Mtth t tp (topological sort)T ca G l mt th ttuyn tnh m bo ton th t ring phn ban utrong tp nh V[G].

    Ngha l: nuu < v trong V(tc l nu c mt li it u n v trong G), th u xut hin trc v trong th

    t tuyn tnh T.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    61/76

    61

    A

    B GC

    F

    D E

    L M

    KJ

    IH

    Cc nt trong th hnh trn c th c sp th t tp

    theo th t sau:J K L M A G H I F E D B C

    Sp th t tp1 (Phng php 1)

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    62/76

    62

    Sp th t tp1 (Phng php 1)

    C vi phng php sp th t tp.Phng php 1

    tng cn bn l tm mt nt khng c nt i sau (nosuccessor) loi b n ra khi th v a n vo mt danhsch.Lp li qu trnh ny cho n khi th rng th s sinh ra mt

    danh sch. o ngc danh sch ny ta s c th t tp.Algorithm:while the graph has a node with no successors do

    remove one such node from the graph and

    add it to the end of a list.ifthe loop terminates with the graph emptythen the list shows the reserse of a topological order.else the graph contains a cycle.

    Hnh 4 8 Sp th t tp bng phng php 1

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    63/76

    63

    A

    B GC

    F

    D E

    L M

    KJ

    IH

    C B D E F I H G A M L K JJ K L M A G H I E F D B C

    Hnh 4.8 Sp th t tp bng phng php 1

    Phng php 2 (sp xp tp)

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    64/76

    64

    Phng php 2 (sp xp tp)

    Phng php th hai l thc hin theo kiu tm kim theo

    chiu su trc v thm mt nt vo danh sch mi khi cnthit ly mt nt ra khi stack tip tc. Khi gp mt ntkhng c nt i sau th ta s ly ra (pop) mt phn t tnh stack.

    Algorithm:Start with nodes with no predecessor, put them in the stack.while the stack is not empty do ifthe node at top of the stack has some successors

    thenpush all its successors onto the stack

    elsepop it from the stack and add it to the list.

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    65/76

    Bi ton nhng li i ngn nht t mt nh ngun

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    66/76

    66

    Bi ton nhng li i ngn nht t mt nh ngun

    Th xt bi ton nhng li i ngn nht t mt nh ngun

    (single-source shortest-paths problem):Cho mt th G = (V, E), chng ta mun tm mt li i ngnnht t mt nh ngun no s V n mi nt v V.

    Biu din nhng li i ngn nhtChng ta mun tnh khng ch trng s ca nhng li i ngnnht m cn xc nh nhng nh trn nhng li i ngn nht.Cho mt th G = (V, E), ta duy tr cho mi nh v V mt

    nh i trcp[v]m l mt nh khc hay l NIL. Gii thutgn tr cho thuc tnhp sao cho dy cc nh i trc xutpht t nh v s cho ra li i ngn nht ts n v.

    Nhng li i ngn nht v s ni lng

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    67/76

    67

    Gii thut tm nhng li i ngn nht thng dng mt k thutc gi l s ni lng(relaxation).

    S ni lng l mt phng php m lin tip gim cn trn catrng s ca li i ngn nht thc s ca mi nh cho n khicn trn bng vi trng s li i ngn nht.

    Nh vy, vi mi nh v V, ta duy tr thuc tnh d[v], m l cntrn ca trng s ca mt li i ngn nht t nh ngun s n v.Ta gi d[v]l c lng li i ngn nht(shortest path estimate).

    Qu trnh ni lng mt cnh (u, v) bao gm vic th xem ta c

    th ci thin li i ngn nht n v m ang tm thy bng cch iqua u v nu nh vy, ta cp nht d[v]vp[v]. Mt bc ni lngs lm gim c lng li i ngn nht d[v]v cp nht thuctnhp[v].

    Nhng li i ngn nht v s ni lng

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    68/76

    68

    5 9

    7

    6

    65

    55

    2

    2

    Relax(u,v)

    u v

    u v

    (a)

    2

    2u

    u

    v

    v

    Relax(u,v)

    (b)

    Hnh 4.10: S ni lng ca mt cnh

    Gii thut Dijkstra

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    69/76

    69

    Gii thut ny gii bi ton nhng li i ngn nht t nhngun cho mt th c hng, c trng s G = (V, E) trong

    trng hp cc trng s ca cc cnh l tr khng m.

    Gii thut ny duy tr mt tp S ca cc nh m trng s cacc li i ngn nht t nh ngun c xc nh. Nghal, vi mi nh v S, ta c

    d[v] = min(c lng li i ngn nht ts n v)

    Gii thut lin tin chn nh u V S vi thuc tnh dnhnht, a u vo S, v ni lng mi cnh i ra t u.

    Trong gii thut sau y, ta dng hng i c u tin Qcha tt c cc nh trong V-S, lp kha theo thuc tnh d. Vgi nh th G c din t bng cc danh sch k cn.

    Gii thut Dijkstra

    procedure dijkstra(G w s);

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    70/76

    70

    procedure dijkstra(G, w, s);/* G is a graph, w is a weight function and s is the source node */

    begin

    for each vertex v V[G] do /* initialization */ begin d[v]: = ; p[s]: = NIL end;d[s]: = 0; S: = ; Q: = V[G]

    while Q is not empty do begin

    u: = EXTRACT-MIN (Q); S: = S {u};

    for each vertex v Adj [u] do /* relaxation */ ifd[v] > d [u] + w(u, v) then begin d[v]: = d[u] + w(u, v); p[v]: = u end

    endend

    Gii thut Dijkstra

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    71/76

    71

    V gii thut Dijkstra lun lun chn nh gn nht trong

    V-S a vo tp S, n thc s s dng chin lc thamlam.

    Gii thut tham lam thng khng m bo em li li giiti u trong trng hp tng qut, nhng i vi bi ton

    ny, gii thut Dijkstra thc s em li nhng li i ngnnht.

    Gii thut Dijkstra tng t nh gii thut Prim dng

    tnh cy bao trm ti thiu. N cng dng mt hng i c u tin tm mt nh nh nht bn ngoi mt tp, anh vo tp, v iu chnh li trng s ca nhng nhcn li bn ngoi tp.

    Gii thut Dijkstra

    Mt th d

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    72/76

    72

    Mt th d

    5

    10

    00

    10

    5s

    u v

    x y

    10

    5

    s

    u v

    x y

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    73/76

    73

    8

    7

    14

    5

    0

    8

    5 7

    13

    0

    93

    2

    7

    2

    1

    10

    5

    4

    6

    u v

    x y

    ss

    10

    1

    2

    7

    2

    39

    4

    6

    u v

    x y

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    74/76

    74

    8

    7

    9

    5

    0 0

    8 9

    75

    x y

    u v u v

    x y

    1

    2

    s

    10

    5

    2

    9

    7 4

    6

    1

    2

    4

    69

    10

    5

    s 72

    3

    (s, u): (s, v):

    (s, x): (s, y):

    phc tp ca gii thut Dijkstra

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    75/76

    75

    Nu hng i c u tin Q = V S c thc hin bi

    mt mng tuyn tnh, mi thao tc EXTRACT-MIN tnO(V), v c tt c |V| thao tc nh vy, do ta c mt chiph tnh ton cho thao tc ny l O(V2).

    Mi nh v V c a vo tp S ng mt ln, do mi

    nh trong cc danh sch k cnAdj[v]c xt ng mtln trong sut tin trnh ca gii thut.

    V tng s nh trong tt cc cc danh sch k cn l |E|, ctt c |E| bc lp cho vng lpfor, vi mi ln lp tn O(1).

    Thi gian tnh ton ca gii thut lO(V2 + E) = O(V2).

    phc tp ca gii thut Dijkstra

    phc tp ca gii thut Dijkstra

  • 8/14/2019 Chapter4 Do phuc tap cua cac giai thuat do thi

    76/76

    Nu hng i c u tin Q c hin thc bi mt cu

    trc heap, mi thao tc EXTRACT-MIN tn chi ph O(lgV),v c tt c |V| thao tc ny, do ta c tng chi ph chothao tc EXTRACT-MIN l O(VlgV).

    Php gn d[v]: = d[u] + w(u, v) i hi mt thao tc cpnht kha ca nh v trong heap v n tn O(lgV). C tt c|E| thao tc nh vy. Do tng thi gian tnh ton ca gii

    thut l

    O(V lgV + E lgV).

    phc tp ca gii thut Dijkstra