111年身心障礙人員三等資料結構

二、以下7個數字 [21, 1, 16, 11, 25, 9, 35],要儲存到 Hash Table 中,Hash Table的儲存空間是一個索引從0開始的一維陣列 (Array)。假設 Hash 函數為 H(Key) = (Key*3) mod 7,裝填因子 (Load Factor) 0.7

    ()若處理 Hash Table 衝突的方法為開放定址法 (Open Addressing Hashing)中的線性探測法 (Linear Probing):增量函數 F(i) = i (i 為衝突的次數)。請依序列出每存入一個數字後的 Hash Table 的內容。接著計算在相同機率的情況下,查找成功及查找失敗的平均查找長度 (Average Search Length; ASL)。(15分)

    ()若處理 Hash Table 衝突的方法為開放定址法 (Open Addressing Hashing)中的平方探測法 (Quadratic Probing):增量函數 F(i) = i2 (i 為衝突的次數)。請依序列出每存入一個數字後的 Hash Table 的內容。接著計算在相同機率的情況下,查找成功及查找失敗的平均查找長度 (Average Search Length; ASL)。(15分)

答:

[21, 1, 16, 11, 25, 9, 35]

裝填因子 = 資料個數/總容量 = 0.7,表示有7筆資料,總容量10個。

()

1.Hash Table的內容:

  H(Key) = (Key*3) mod 7

  hi(Key) = (H(Key)+i) mod 7i 是碰撞次數。

  H(21) = (21*3) mod 7 = 63 mod 7 = 0

0

1

2

3

4

5

6

7

8

9

21

 

 

 

 

 

 

 

 

 

  H(1) = (1*3) mod 7 = 3 mod 7 = 3

0

1

2

3

4

5

6

7

8

9

21

 

 

1

 

 

 

 

 

 

  H(16) = (16*3) mod 7 = 48 mod 7 = 6

0

1

2

3

4

5

6

7

8

9

21

 

 

1

 

 

16

 

 

 

  H(11) = (11*3) mod 7 = 33 mod 7 = 5

0

1

2

3

4

5

6

7

8

9

21

 

 

1

 

11

16

 

 

 

  H(25) = (25*3) mod 7 = 75 mod 7 = 5,發生碰撞

  h1(25) = (5+1) mod 7 = 6 mod 7 = 6,發生碰撞

  h2(25) = (5+2) mod 7 = 7 mod 7 = 0,發生碰撞

  h3(25) = (5+3) mod 7 = 8 mod 7 = 1

0

1

2

3

4

5

6

7

8

9

21

25

 

1

 

11

16

 

 

 

  H(9) = (9*3) mod 7 = 27 mod 7 = 6,發生碰撞

  h1(9) = (6+1) mod 7 = 7 mod 7 = 0,發生碰撞

  h2(9) = (6+2) mod 7 = 8 mod 7 = 1,發生碰撞

  h3(9) = (6+3) mod 7 = 9 mod 7 = 2

0

1

2

3

4

5

6

7

8

9

21

25

9

1

 

11

16

 

 

 

  H(35) = (35*3) mod 7 = 105 mod 7 = 0,發生碰撞

  h1(35) = (0+1) mod 7 = 0 mod 7 = 1,發生碰撞

  h2(35) = (0+2) mod 7 = 2 mod 7 = 2,發生碰撞

  h3(35) = (0+3) mod 7 = 3 mod 7 = 3,發生碰撞

  h4(35) = (0+4) mod 7 = 4 mod 7 = 4

0

1

2

3

4

5

6

7

8

9

21

25

9

1

35

11

16

 

 

 

2.查找成功及查找失敗的平均查找長度:

hash地址

0

1

2

3

4

5

6

7

8

9

Key

21

25

9

1

35

11

16

 

 

 

比較次數

1

4

4

1

5

1

1

 

 

 

尋找空格次數

8

8

8

8

8

8

8

 

 

 

  (1)查找成功的平均查找長度:

    比較次數的加總 / 資料個數 = (1+4+4+1+5+1+1) / 7 = 17/7次。

  (2)查找失敗的平均查找長度:

    a.因為是 mod 7,所以尋找的 hash 地址是0~6。尋找到空格的次數就是失敗的次數。

    b.尋找空格次數的加總 / 槽個數 = (8+7+6+5+4+3+2) / 7 = 35/7 = 5次。

參考資料:

1.https://www.796t.com/content/1549944207.html

2.https://blog.csdn.net/butbabuc/article/details/108115295

3.https://www.bilibili.com/video/BV11R4y1p7DQ/?spm_id_from=333.788.recommend_more_video.-1

()

1.Hash Table的內容:

  H(Key) = (Key*3) mod 7

  hi(Key) = (H(Key)+i2) mod 7i 是碰撞次數。

  H(21) = (21*3) mod 7 = 63 mod 7 = 0

0

1

2

3

4

5

6

7

8

9

21

 

 

 

 

 

 

 

 

 

  H(1) = (1*3) mod 7 = 3 mod 7 = 3

0

1

2

3

4

5

6

7

8

9

21

 

 

1

 

 

 

 

 

 

  H(16) = (16*3) mod 7 = 48 mod 7 = 6

0

1

2

3

4

5

6

7

8

9

21

 

 

1

 

 

16

 

 

 

  H(11) = (11*3) mod 7 = 33 mod 7 = 5

0

1

2

3

4

5

6

7

8

9

21

 

 

1

 

11

16

 

 

 

  H(25) = (25*3) mod 7 = 75 mod 7 = 5,發生碰撞

  h1(25) = (5+12) mod 7 = 6 mod 7 = 6,發生碰撞

  h2(25) = (5+22) mod 7 = 9 mod 7 = 2

0

1

2

3

4

5

6

7

8

9

21

 

25

1

 

11

16

 

 

 

  H(9) = (9*3) mod 7 = 27 mod 7 = 6,發生碰撞

  h1(9) = (6+12) mod 7 = 7 mod 7 = 0,發生碰撞

  h2(9) = (6+22) mod 7 = 10 mod 7 = 3,發生碰撞

  h3(9) = (6+32) mod 7 = 15 mod 7 = 1

0

1

2

3

4

5

6

7

8

9

21

9

25

1

 

11

16

 

 

 

  H(35) = (35*3) mod 7 = 105 mod 7 = 0,發生碰撞

  h1(35) = (0+12) mod 7 = 1 mod 7 = 1,發生碰撞

  h2(35) = (0+22) mod 7 = 4 mod 7 = 4

2.查找成功及查找失敗的平均查找長度:

hash地址

0

1

2

3

4

5

6

7

8

9

Key

21

9

25

1

35

11

16

 

 

 

比較次數

1

4

3

1

3

1

1

 

 

 

尋找空格次數

8

8

8

8

8

8

8

 

 

 

  (1)查找成功的平均查找長度:

    比較次數的加總 / 資料個數 = (1+4+3+1+3+1+1) / 7 = 14/7 = 2次。

  (2)查找失敗的平均查找長度:

    a.因為是 mod 7,所以尋找的 hash 地址是0~6。尋找到空格的次數就是失敗的次數。

    b.尋找空格次數的加總 / 槽個數 = (8+7+6+5+4+3+2) / 7 = 35/7 = 5次。

 

 

arrow
arrow
    文章標籤
    資料結構
    全站熱搜
    創作者介紹
    創作者 jacksaleok 的頭像
    jacksaleok

    國考資訊處理工作室(高考二級資訊處理/高考三級資訊處理/調查局三等/關務人員三等/地方特考三等)

    jacksaleok 發表在 痞客邦 留言(0) 人氣()