งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

HASH TABLE 1 ตารางแฮช. แนวคิดพื้นฐานของตารางแฮช 2  เป็นโครงสร้างที่มีประสิทธิภาพต่อการจัดเก็บ ข้อมูลเพื่อการค้นหา การเพิ่ม และการลบข้อมูล โดยไม่มีการดำเนินการที่เกี่ยวกับลำดับของ.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "HASH TABLE 1 ตารางแฮช. แนวคิดพื้นฐานของตารางแฮช 2  เป็นโครงสร้างที่มีประสิทธิภาพต่อการจัดเก็บ ข้อมูลเพื่อการค้นหา การเพิ่ม และการลบข้อมูล โดยไม่มีการดำเนินการที่เกี่ยวกับลำดับของ."— ใบสำเนางานนำเสนอ:

1 HASH TABLE 1 ตารางแฮช

2 แนวคิดพื้นฐานของตารางแฮช 2  เป็นโครงสร้างที่มีประสิทธิภาพต่อการจัดเก็บ ข้อมูลเพื่อการค้นหา การเพิ่ม และการลบข้อมูล โดยไม่มีการดำเนินการที่เกี่ยวกับลำดับของ ข้อมูล  อาศัยฟังก์ชันการคำนวณเลขที่อยู่ของข้อมูล ที่ เรียกว่า “ ฟังก์ชันแฮช ” (Hash Function) ซึ่งมี หน้าที่แปลงคีย์ของข้อมูลไปเป็นเลขที่อยู่ (Address) ในช่องในตารางแฮช  ฟังก์ชันแฮชที่ดีจะใช้สามารถคำนวณเลขที่อยู่ได้ รวดเร็ว มีพฤติกรรมกระจายอย่างสม่ำเสมอ และ แปลงคีย์ไปเป็นเลขที่อยู่ของตารางที่มีขนาดเล็ก

3 Hashing 3 เป็นเทคนิคการสร้างตารางเก็บค่าคีย์แบบหนึ่ง ช่วยให้สามารถค้นหาข้อมูลในตารางนั้นได้ง่ายและ รวดเร็วยิ่งขึ้น โดยอาศัยเทคนิคของการแปลงค่า คีย์เป็นเลขที่อยู่ (Address) ของข้อมูลนั้นใน ตาราง Hashing Function Address Key

4 คุณสมบัติของฟังก์ชันแฮชที่ดี 4  คํานวณตำแหน่งที่อยูไดรวดเร็ว ในเวลาคงตัว ( เวลาแปรตามขนาดของคีย์ )  สามารถกระจายค่าตำแหน่งที่อยู่ต่าง ๆ ที่ไม่ซ้ำกัน หรือ ซ้ำกันน้อยที่สุด

5 Hashing Function 5  Division Hashing  Digit Hashing  Mid Square Hashing  Fold Hashing  Fold Shift  Boundary Shift  Rotation Hashing

6 6 Division Hashing

7 Key Concept 7  เป็นฟังก์ชันโมดูลาในรูปแบบ K mod N  ตำแหน่งที่อยู่ (Address) คือ ค่าเศษที่เหลือจาก การหาร K/N K คือ ค่าคีย์ของข้อมูล Nคือ ขนาดของตาราง L 0 คือ ค่าคงที่ที่ปรับเพื่อปรับค่าตำแหน่งที่อยู่เริ่มต้น K mod N + L 0 AddressKey H(K) = K mod N + L 0

8 Ex. ให้คำนวณหาตำแหน่งของคีย์ ต่อไปนี้ 8 กำหนดให้ใช้ตารางแฮชขนาด 7 และมีตำแหน่งที่ อยู่เริ่มต้นเป็น 0 Address ?? Key Data catratbat toy manbigboyzoo เทคนิค Division Hashing

9 Division Hashing :: Example 9 Key :: K Address Hash Table 0 42, 14, , 3, H(K) = K mod 7 เกิดการซ้ำกันของคีย์ที่ได้จากการคำนวณทั้งหมด 4 ครั้ง

10 10 Digit and Mid Square Hashing

11 Digit Hashing :: Key Concept 11  เป็นการเลือกค่าคีย์มาจากบางตำแหน่งเท่านั้น  เช่น ค่าคีย์มีทั้งหมด 6 ตำแหน่ง แต่ต้องการ จัดเก็บในตารางแฮชเพียง 3 ตำแหน่ง อาจเลือก ตำแหน่งที่ 1, 3 และ 4 มาเป็นค่าเลขที่อยู่ใน ตารางแฮช เทคนิค Digit Hashing

12 Mid Square Hashing :: Key Concept 12 นำค่าคีย์มายกกำลังสองตัดค่าด้านซ้ายและขวาออก k หลัก k = 4 เทคนิค Mid Square Hashing KeySquareAddress

13 Digit Square 13  เป็นการใช้เทคนิค Digit Hashing ร่วมกับ Mid Square Hashing KeySquare (1, 3, 5, 7)Address เทคนิค Digit Square Hashing

14 14 Fold Hashing

15 Key Concept 15  แบ่งคีย์ออกเป็นส่วนๆ แล้วนำส่วนต่างๆ เหล่านี้มา " รวม " กัน  Summation  Exclusive OR  Fold Hashing มี 2 วิธีได้แก่  Fold Shift  Boundary Shift เทคนิค Fold Hashing

16 Fold Shift :: Summation กำหนดให้แบ่งกลุ่ม ๆ กลุ่มละ 3 หลัก เทคนิค Fold Shift Hashing

17 Boundary Shift :: Summation กำหนดให้แบ่งกลุ่ม ๆ กลุ่มละ 3 หลัก เทคนิค Boundary Shift Hashing

18 18 Rotation Hashing

19 เทคนิค Rotation Hashing

20 เทคนิคการเลือกใช้ Hashing Function 20 จะต้องคำนึงถึงสิ่งต่อไปนี้  ค่า H(K) ที่ใช้ต้องเป็นฟังก์ชันที่คำนวณง่าย ไม่ เสียเวลามาก  Address ที่ได้จาก H(K) ต้องทำให้เกิดการซ้ำกัน น้อยที่สุด  ขนาดของตารางควรมีขนาดใหญ่กว่า ขนาดของ ข้อมูลชุดที่มีอยู่จริง ๆ เพราะถ้าช่วงฟังก์ชันมีขนาด ใหญ่ ย่อมทำให้โอกาสที่จะเกิดการชนกันน้อยลง

21 21 การชนกันของคีย์และการ แก้ปัญหา

22 การชนกันของคีย์ (Collision) 22 การชนกันของคีย์ คือ การที่นำคีย์ไปผ่าน Hashing Function แล้วได้ตำแหน่งแอดเดรสเป็น ค่าเดียวกัน H(k 1 ) = H(k 2 ) เมื่อเกิดการชนกันขึ้น ( collision) ระหว่าง k 1 และ k 2 โดยมีฟังก์ชัน H เป็นตัวแปลงค่า เราต้องมี วิธีจัดการกับเหตุการณ์นี้ เพื่อให้ k 1 และ k 2 สามารถ อยู่รวมกันได้ โดยต้องหาที่อยู่ให้กับ k 1 และ k 2 ใหม่แล้วแต่ว่าใครมาก่อนมาหลัง

23 การแก้ปัญหาการชนกันของคีย์ 23 เทคนิคเพื่อจัดการกับการชนกันที่นิยมใช้มาก มี 2 เทคนิค คือ 1. Chaining เป็นหลักการที่ใช้พอย์เตอร์แบบลิงค์ลิสต์หรือใช้แอดเดรสถัด ๆ ไปในอาร์เรย์ 1.chain มีขนาดคงที่ 2.chain มีขนาดไม่เท่ากัน ( ขนาดขึ้นกับจำนวนคีย์ที่อยู่ใน chain นั้น ) 2. Rehashing ( Open Addressing )

24 Chaining :: ขนาดคงที่ 24  แบ่งตารางข้อมูลที่ใช้ถูกแบ่งออกเป็นส่วน ๆ (bucket) จำนวน n bucket  แต่ละ bucket มีขนาด m ช่อง  ถ้าคีย์ใดมีแอดเดรสซ้ำกัน ให้เก็บในตำแหน่ง ถัดไปใน Bucket เดียวกัน  ถ้า bucket ใดถูกใช้จนหมด (Bucket เต็ม ) ให้ ถ่ายเทไปอยู่ในส่วน overflow ซึ่งอาจเป็นอีก อาร์เรย์หนึ่ง หรืออาจเป็น bucket ที่ถัดจาก bucket n โดยอาจมีมากกว่า 1 bucket

25 Chaining :: ขนาดคงที่ 25 ตัวอย่างจงแปลงคีย์ต่อไปนี้ให้เป็นแอดเดรส และให้หลีกเลี่ยงการชนโดยใช้ Bucket โดย กำหนดให้แต่ละ Bucket มี 4 ช่อง และตารางนี้มี ทั้งหมด 5 Bucket ฟังก์ชันที่ใช้คือ H(K) = K mod 5+1 ชุดคีย์ ( 42, 51, 82, 14, 2, 15, 5, 6, 62, 25, 37, 21)

26 Chaining :: ขนาดคงที่ 26 KeyH(K) * ** * 62* 623*** 251** 373**** 212** 37 Overflow 15 Bucket# Bucket# Bucket# Bucket#4 14 Bucket#5 Bucket#เต็ม

27 Chaining :: ขนาดไม่คงที่ 27 จะอาศัย linked list ขนาด n ตัว แต่ละตัวสำหรับค่า address ค่า หนึ่ง แต่ละโหนดที่เก็บค่าคีย์ จะมี 2 ส่วนคือ สำหรับเก็บคีย์ และ ส่วน เก็บพอยน์เตอร์ ตัวอย่างจงสร้างตารางสำหรับ key ต่อไปนี้ ชุดคีย์ ( 42, 49, 82, 14, 2, 15, 5, 6 ) กำหนดฟังก์ชั่น H(K) = K mod 7 +1 ให้ใช้หลักการหลีกเลี่ยงการชนกันแบบ chaining ( ขนาดไม่คงที่ ) H(42)= 1H(2)= 3 H(49)= 1H(15)= 2 H(82)= 6H(5)= 6 H(14)= 1H(6)= 7

28 Chaining :: ขนาดไม่คงที่ KeyH(K) H(K) = K mod 7 +1

29 Rehashing 29  เป็นเทคนิคหนึ่งใช้หลักการ Open Addressing “ ถ้าเกิดการชนกันขึ้นระหว่างคีย์ K1 และ K2 เนื่องจากการใช้ฟังก์ชันแฮชชิ่ง H1 ให้ทำการ คำนวณที่อยู่ของ K2 ใหม่ โดยใช้ ฟังก์ชันแฮชชิ่ง H2” K > H1 (K) > H2 (H1 (K) )  ฟังก์ชัน H2 อาจเป็นฟังก์ชันใหม่หรือเหมือนกับ H1 ก็ได้

30 30 KeyH(K) H(K) = K mod 7 +1 Key


ดาวน์โหลด ppt HASH TABLE 1 ตารางแฮช. แนวคิดพื้นฐานของตารางแฮช 2  เป็นโครงสร้างที่มีประสิทธิภาพต่อการจัดเก็บ ข้อมูลเพื่อการค้นหา การเพิ่ม และการลบข้อมูล โดยไม่มีการดำเนินการที่เกี่ยวกับลำดับของ.

งานนำเสนอที่คล้ายกัน


Ads by Google