nhanh can.pdf

25
Đệ Quy Quay Lui Nhánh Cận Trainer: Thien Nguyen 16/09/2012

Upload: huuhuy1987

Post on 25-Sep-2015

267 views

Category:

Documents


5 download

TRANSCRIPT

  • Quy Quay Lui

    Nhnh Cn

    Trainer: Thien Nguyen

    16/09/2012

  • Tng quan quy (Recursion )

    Quay Lui (Backtracking)

    Nhnh Cn (Branch-and-Bound)

    2

  • 1. quy

    quy l g?

    Cu trc

    Chng trnh con quy

    3

  • 1. quy quy l g?

    Mt khi nim X c nh ngha theo quy nu trong nh ngha X c s dng ngay chnh khi nim X.

    VD:

    + B m ti l t tin ca ti.

    B m ca t tin ti cng l t tin ca ti.

    4

  • 1. quy Cu trc:

    Mt khi nim qui cn bn gm hai phn.

    + Phn c s: nh ngha vi trng hp n gin nht, khng gi li chnh n.

    + Phn qui: nh ngha cc trng hp cn li, v gi li chnh khi nim ang nh ngha.

    5

  • 1. quy Cu trc:

    VD:

    + 0 l s t nhin.

    + n l s t nhin nu n-1 l s t nhin.

    6

  • 1. quy Chng trnh con quy:

    Mt chng trnh con qui cn bn gm hai phn.

    + Phn c s: thc hin cc thao tc vi i s c bn v khng gi li chnh n.

    + Phn qui: thc hin cc cu lnh m trong c t nht mt ln gi li chnh n vi i s n gin hn.

    7

  • 1. quy Chng trnh con quy:

    VD:

    int giaithua(int n)

    {

    if (n == 0)

    return 1;

    else

    return n * giaithua(n-1);

    }

    8

  • 2. Quay Lui: Khi nim

    Bn Cht

    Phng php

    M gi

    9

  • 2. Quay Lui: Khi nim:

    Quay lui (ting Anh: backtracking) l mt chin lc tm kim li gii cho cc bi ton tha mn rng buc.

    Ngi u tin ra thut ng ny (backtrack) l nh ton hcngi M D. H. Lehmer vo nhng nm 1950.

    -Wikipedia-

    10

  • 2. Quay Lui: Khi nim:

    Quay lui l mt chin lc tm kim li gii cho cc bi ton m nghim ca n l mt hay mt tp cu hnh tha mn ng thi 2 tnh cht P v Q.

    + P: Cch xc nh mt cu hnh

    + Q: Tnh dng ca bi ton.

    Cu hnh l mt tp v = (v1, v2, , vn), vi vi thuc tp D cho trc.

    11

  • 2. Quay Lui: Khi nim:

    VD:

    Lit k tt c cc hon v ca tp gm n s t nguyn dng u tin theo th t t in.

    N = 3:

    123, 132, 213, 231, 312, 321

    12

  • 2. Quay Lui: Bn cht:

    Bn cht ca Quay lui l mt qu trnh tm kim theo chiu su (Depth-First Search).

    13

  • 2. Quay Lui: Phng php:

    Gi s v = (v1, v2, , vn) l cu hnh cn tm, hin ti tm c k-1 phn t ca v l v1, v2, , vk-1.

    Ta tm phn t th k bng cch duyt ht tt c cc kh nng c th ca vk, vi mi kh nng i kim tra xem c th chp nhn c khng (tha mn P). C 2 kh nng:

    14

  • 2. Quay Lui: Phng php (t.t):

    Kim tra vk tha P. C 2 kh nng:

    + Nu vk tha P, kim tra Q. Nu tha Q (k dng) th ta dng tm kim v xut kt qu. Ngc li tip tc tm vk+1.

    + Nu sao cho vk+1 = i tha P (ng ct), ta

    quay li bc xc nh vk-1.

    15

  • 2. Quay Lui: M gi:

    Try(k){

    For ([mi phng n chn ])

    If ([Chp nhn i]){

    [Chn i cho vk];

    If ([Thnh cng]) [Thng bo kq];

    else Try(k+1);

    [Hy chn i cho vk];

    }

    }

    16

  • 2. Quay lui VD1: Lit k cc hon v ca cc s t nhin 1..N

    Xy dng cc khi nim trong gii thut

    - Try(k): Tm thnh phn th k ca hon v

    - Tp gi tr ca tng phn t: D = {1,2,,N}

    - Chp nhn c i: Khi i cha c chn trc .

    - Thc hin bc chn: nh du i chn cho vk.

    - Thnh cng: khi chn c thnh phn th k = N

    - Thng bo kt qu: Hin th N s ca hon v

    - Hy chn: nh du i cha c chn.

    17

  • 2. Quay lui VD2: Lit k cc cch xp N qun hu ln bn c NxN sao cho khng c hai

    qun hu no n nhau.

    Xy dng cc khi nim trong gii thut

    - Try(k): Tm v tr dng t qun hu ct th k

    - Phng n chn: i = 1, , N

    - Chp nhn c i: Khi i c chn trc vo (i,j) khng cng nm trn mt ng cho vi bt k no chn trc .

    - Thc hin bc chn: nh du i chn v ct, hng, ng cho cha n t qun hu.

    - Thnh cng: khi chn c thnh phn th k = N

    - Thng bo kt qu: Hin th s dng theo th t ct tng dn

    - Hy chn: nh du i cha c chn.

    18

  • Nhnh Cn Nhnh Cn l g?

    Phng Php

    Mt s v d

    M gi

    19

  • Nhnh Cn Nhnh Cn l g?

    Nhnh cn trong Quay lui:

    + l mt k thut nh gi vic tip tc o su c to ra cu hnh tt hn cu hnh tt nht m ta lu tr hay khng.

    + Nh c Nhnh cn m ta c th a ra quyt nh quay lui sm hn thut ton backtracking c in.

    20

  • Nhnh Cn Phng Php

    T thut ton backtracking c in, khi xc nh iu kin P (iu kin xc nh cu hnh c), ta s dng thm mt hm nh gi f(v1, v2,, vk-1) xc nh vic i tip c hy vng tm ra li gii hay khng.

    21

  • Nhnh Cn VD: Bi ton ngi giao hng

    - Mt ngi cn phi giao hng ti N thnh ph T1, T2,

    , Tn

    - Cij: chi ph i t thnh ph Ti n thnh ph Tj

    (i=1,2,,N; j = 1,2,,N)

    - Yu cu: xc nh hnh trnh tha mn

    + i qua tt c cc thnh ph, mi thnh ph qua

    ng 1 ln, ri quay tr li thnh ph xut pht.

    + Chi ph nh nht

    22

  • Nhnh Cn VD: Bi ton ngi giao hng

    Nhnh cn:

    Lu 1 cu hnh BEST_CONFIG

    t Cmin=Min{Cij: i,j={1,..,n}}

    Gi s i on ng T1->T2->->Ti vi chi ph: Si=C1,x2+Cx2,x3++Cxi-1,xi

    S thnh ph cha i qua: (n-i+1) thnh ph.

    Nh vy, i tip ta s tn chi ph Cremain > Cmin * (n-i+1)

    Hm cn: f(x1=1,,xi) = Si+(n-i+1)Cmin

    23

  • Nhnh Cn M gi Try(k){

    For ([mi phng n chn ])

    If ([Chp nhn i]){

    [Chn i cho vk];

    if (Cn hy vng tm ra c.hnh tt hn BEST_CONFIG)

    {

    If ([Thnh cng]) [Thng bo kq];

    else Try(k+1);

    [Hy chn i cho vk];

    }

    }

    }

    24

  • Cm n cc bn ch lng nghe

    Trainer: Thien Nguyen