ctdl-hash

Upload: vien-quang-pham

Post on 18-Oct-2015

18 views

Category:

Documents


0 download

DESCRIPTION

CTDL

TRANSCRIPT

  • 5/28/2018 CTDL-Hash

    1/13

    11/24/

    Bi ging Cu trc d liu 1

    Ging vin:Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin

    Kenneth H.Rosen, Ton ri rc ng dngtrong Tin hc, ltb. 5, nxb. Gio Dc, 2007,tr. 131 -143.

    Mark A. Weiss, Data Structures &Algorithm Analysis in C++, 2nd edition,

    Addision Wesley, 1998, p. 41 67. Nguyn Tri Tun, Hash table, Bi ging

    Cu trc d liu, i hc Khoa hc Tnhin, 2007.

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 2

  • 5/28/2018 CTDL-Hash

    2/13

    11/24/

    Gii thiu

    Hm bm

    Gii quyt ng

    Bi tp

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 3

    Gi s ang lm vic vi h thng qun lInternet cho 10 triu ngi dng.

    Mi ln tm kim mt ngi chi phl bao nhiu?

    Dung lng b nh cn s dng lbao nhiu?

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 4

    Gii thiu Hm bm Gii quyt ng

  • 5/28/2018 CTDL-Hash

    3/13

    11/24/

    S php ton trung bnh s dng l baonhiu? Gi s di tn l 8. Ln 1: So snh 1 k t u Ln 2: So snh 1 k t u Ln 23: So snh ton b 8 k t

    Cng gn vi kt qu, cng phi so snhnhiu k t trong chui tn.

    S php so snh: 23

    184 (= 23 x 8). Vi php hash, ch cn 8 php ton!

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 5

    Gii thiu Hm bm Gii quyt ng

    Gi s kch thc ti a d liu l c nh.

    Cch lm thng thng: ghi tun t dliu. Mi thao tc tm kim, sp xp thchin trn d liu tun t ny (c th lmtrn index).

    Liu c cch no xc nh trc c vtr ca mt entry mi? Hash!

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 6

    Gii thiu Hm bm Gii quyt ng

  • 5/28/2018 CTDL-Hash

    4/13

    11/24/

    Vn : Cho trc 1 tp S gm cc phnt c c trng bi gi tr kha. Trngi tr cc kha ny c quan h th t. Tchc S nh th no tm kim 1 phn tc kha k cho trc c phc tp t nhttrong gii hn b nh cho php?

    tng: Bin i kha k thnh mt s

    (bng hm hash) v s dng s ny nhl a ch tm kim trn bng d liu.

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 7

    Gii thiu Hm bm Gii quyt ng

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 8

    Gii thiu Hm bm Gii quyt ng

    1

    2

    999

    1000

    405

    406

    VCNam

    NTHNhung

    NTin

    VCNam

    NTHNhung

    NTin

    +84.91.2345678

    +84.90.9345678

    +84.95.8345678

  • 5/28/2018 CTDL-Hash

    5/13

    11/24/

    Chi ph tm kim trung bnh: O(1)

    Chi ph tm kim trong trng hp xunht: O(n) (rt t gp).

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 9

    Gii thiu Hm bm Gii quyt ng

    nh ngha: l hm bin i kha k caphn t thnh a ch trong bng bm.

    V d: H(k) = k mod M.

    Tng qut v php bin i kha: L 1nh x thch hp t tp cc kha U votp cc a ch A.

    H: UA

    k a = h(k)

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 10

    Gii thiu Hm bm Gii quyt ng

  • 5/28/2018 CTDL-Hash

    6/13

    11/24/

    Tp cc gi tr kha (U) c th ln hn rtnhiu so vi s kha thc t (K) rt nhiu.

    V d: Qun l danh sch 1000 sinh vin,m sinh vin gm 7 ch s.

    C U = 107 kha so vi K = 1000.

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 11

    Gii thiu Hm bm Gii quyt ng

    Tp U

    Tp K

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 12

    Gii thiu Hm bm Gii quyt ng

    1. 2.3

    .10.9. 8.7.

    6. 5.4

    .

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    3

    4

    8

    10

    T

    Key Data

  • 5/28/2018 CTDL-Hash

    7/13

    11/24/

    k1, k

    2 K:

    k1 k2, H(k1) = H(k2)

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 13

    Gii thiu Hm bm Gii quyt ng

    Tp U

    Tp K

    1.

    2

    .

    3.10.

    9.

    8.

    7.6. 5.

    4.

    T

    H(3)

    H(4)

    H(2) = H(8)

    H(10)

    Tnhton

    nhanh.

    Cc khaphn b u.

    t xy rang.

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 14

    Gii thiu Hm bm Gii quyt ng

  • 5/28/2018 CTDL-Hash

    8/13

    11/24/

    Xt li v d v danh sch sinh vin:

    Vi kch thc bng l M = 1000, ta cth chn hm bm nh sau:

    H(k) = k mod M.

    Kha ny tha mn yu cu tnh tonnhanh v tri u trn bng.

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 15

    Gii thiu Hm bm Gii quyt ng

    Mc ch ban u ca bm (hash) chnh l sinh ra cc gi tr ngu nhin.

    tng: bm nh cc gi tr v trn lnvi nhau c trng thi hn lon, t s c c gi tr ngu nhin.

    Ln u tin c a ra bi Hans PeterLuhn IBM vo nm 1953.

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 16

    Gii thiu Hm bm Gii quyt ng

  • 5/28/2018 CTDL-Hash

    9/13

    11/24/

    Phng php ni kt (chaining)

    Phng php a ch m (Open-addressing)

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 17

    Gii thiu Hm bm Gii quyt ng

    ng vi mi a ch ca bng, ta c mtdanh sch lin kt cha cc phn t ckha khc nhau m c cng a ch .

    Ta s c danh sch (bng bm) gm Mphn t cha a ch u ca cc danh

    sch lin kt.

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 18

    Phng php XL ng PP Ni kt

    PP a ch m Bi tp

  • 5/28/2018 CTDL-Hash

    10/13

    11/24/

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 19

    Phng php XL ng PP Ni kt PP a ch m

    Bi tp

    1

    2

    999

    1000

    405

    406

    VCNam

    NTHNhung

    NTin

    VCNam

    NTHNhung

    NTin

    +84.91.2345678

    +84.90.9345678

    +84.95.8345678

    TMHuTMHu +84.95.6543210

    Tn gi khc: Phng php d

    Phng php th

    tng: Khi ng xy ra, ta s th tm n v tr k

    tip no trong bng cho n khi tm thy vtr no cn trng.

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 20

    Phng php XL ng PP Ni kt

    PP a ch m Bi tp

  • 5/28/2018 CTDL-Hash

    11/13

    11/24/

    Phng php d tuyn tnh (linear probing)

    Phng php d bc 2 (Quadratic probing)

    Phng php bm kp (Double hashing)

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 21

    Phng php XL ng PP Ni kt PP a ch m

    Bi tp

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 22

    Phng php XL ng PP a ch m

    PP d tuyn tnh D bc 2 & bm kp

    VCNam

    NTHNhung

    NTin

    VCNam

    NTHNhung

    NTin

    +84.91.2345678

    +84.90.9345678

    +84.95.8345678

    TMHu TMHu +84.95.6543210

    1

    2

    406

    407

    405

    999

    1000

    tng:

    H(k, i) = (H(k) + i) mod M

  • 5/28/2018 CTDL-Hash

    12/13

    11/24/

    Phng php d bc 2:

    H(k, i) = (H(k) + i2) mod M

    Phng php bm kp:

    H(k, i) = (H1(k) + i*H2(k)) mod M

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 23

    Phng php XL ng PP a ch m

    D bc 2 & bm kp

    Bi tp

    n gin khi ci t.

    S dng cu trc d liu c bn.

    Phng php a ch m gii quyt cng nhng li c th gy ra ng mi.

    Phng php ni kt khng b nh hngv tc khi mng gn y.

    t tn b nh khi mng tha (t phn t).

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 24

    Phng php XL ng Bi tp

  • 5/28/2018 CTDL-Hash

    13/13

    11/24/

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 25

    Phng php XL ng Bi tp

    HCMUS - 2008 Bi ging Cu trc d liu 1 Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin 26