Open addressing คืออะไร ?

กระบวนการทำงานของ Open Addressing

 

Open addressing คือ การแก้ไขปัญหาการชนกันของฟังก์ชันแฮชตรงกัน ทำให้เกิดการเก็บที่เดียวกันเมื่อเกิดการชนเกิดขึ้นวิธีการของ Open addressing คือการหาช่องในตารางแฮชใหม่โดยกระโดดไปจากที่เดิมเป็นฟังก์ชันหนึ่ง จนกว่าจะหาช่องว่างเจอจึงจะใส่ค่าลงไป 

 

Open Addressing วิธีนี้เราจะค้นหาค่าตำเเหน่งถัดไปที่ช่องว่าง แล้วนำข้อมูลที่ได้มาในภายหลังไปเก็บไว้

แบ่งออกเป็น 3 ประเภท

  • Open addressing with Linear Probing
  • Open addressing with Quadratic Probing
  • Open addressing with Double Hashing

 

Linear Probing

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

 

Quadratic Probing

เพื่อแก้ปัญหาความล่าช้าของวิธี Linear Probing จึงมีการเลือก Collision resolution function เพื่อลดความล่าช้าในการหาตำเเหน่งใหม่หลังจากที่เกิด Collision ฟังก์ชันที่ใช้อยู่ในรูปแบบเดียวกันกับ Linear Probing

 

Double Hashing

เป็นความพยายามแก้ปัญหาของ Linear Probing และ Quadratic Probing ที่เสาะหาในตำเเหน่งที่ซ้ำ ๆ อันเป็นสาเหตุของการชนครั้งเเล้วครั้งเล่า โดยอาศัย randomness ของ hash function ในการหาตำเเหน่งใหม่หลังจากการชนกันขึ้น Collision resolution function

 

จากบทความสามารถสรุปได้ว่า Open addressing เป็นวิธีการแก้ปัญหาการชนกันของฟังก์ชันแฮชที่ตรงกัน ทำให้เกิดการเก็บค่าไว้ที่เดียวกัน โดยวิธีการของ Open addressing คือเมื่อเกิดการชนกันของฟังก์ชัน จะทำการหาช่องในตารางแฮชใหม่โดยกระโดดไปจากเดิมเป็นฟังชันหนึ่ง หรือจนกว่าจะหาช่องว่างเจอเเละใส่ค่าลงไป 

 

ช่องทางการศึกษาเพิ่มเติมข่าวสารที่น่าสนใจเกี่ยวกับ : ความหมายคำ คืออะไร

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
แปลงจาก SQLSERVER2005 ออก รายงานมาเป็น EXCEL ทำไงหรือครับ
โดย tangsupap พ 03 มี.ค. 2010 12:44 pm บอร์ด SQL - Database
4
2247
จ 08 มี.ค. 2010 11:23 am โดย tangsupap View Topic แปลงจาก SQLSERVER2005 ออก รายงานมาเป็น EXCEL ทำไงหรือครับ
สอบถามเกี่ยวกับ googlemap
โดย athrun01 พ 03 มี.ค. 2010 10:31 am บอร์ด JavaScript & jQuery Ajax & Node.JS
0
1447
พ 03 มี.ค. 2010 10:31 am โดย athrun01 View Topic สอบถามเกี่ยวกับ googlemap
ผมใหม่จริงๆครับ พึ่งตั้งเสร็จหน้าเว็บยังเป็นภาษาอังกฤษอยู่เลย อยากทราบวิธีเปลี่ย
โดย wern พ 03 มี.ค. 2010 7:59 am บอร์ด Programming - PHP
2
760
พ 03 มี.ค. 2010 5:25 pm โดย bm8408 View Topic ผมใหม่จริงๆครับ พึ่งตั้งเสร็จหน้าเว็บยังเป็นภาษาอังกฤษอยู่เลย อยากทราบวิธีเปลี่ย
Test โค้ด php ของเราด้วย phpt ทำไมไม่ใช้ PHPUnit
โดย mindphp พ 03 มี.ค. 2010 6:12 am บอร์ด MindPHP News & Feedback
0
1311
พ 03 มี.ค. 2010 6:12 am โดย mindphp View Topic Test โค้ด php ของเราด้วย phpt ทำไมไม่ใช้ PHPUnit
อัพเกรดบอร์ด เป็น phpbb3.0.7
โดย mindphp พ 03 มี.ค. 2010 5:17 am บอร์ด MindPHP News & Feedback
0
1049
พ 03 มี.ค. 2010 5:17 am โดย mindphp View Topic อัพเกรดบอร์ด เป็น phpbb3.0.7
รบกวนถามเรื่องการเขียนcode ติดต่อ อุปกรณ์ GPS Receiver
โดย ladygugu อ 02 มี.ค. 2010 10:40 pm บอร์ด Programming - PHP
13
7919
ศ 09 เม.ย. 2010 12:29 am โดย บุคคลทั่วไป View Topic รบกวนถามเรื่องการเขียนcode ติดต่อ อุปกรณ์ GPS Receiver
สอบถามการใช้ Xpath ใน XML แบบมี Namespace ( : )
โดย jokobozero อ 02 มี.ค. 2010 2:50 am บอร์ด Programming - PHP
8
4042
ส 06 มี.ค. 2010 8:33 pm โดย mindphp View Topic สอบถามการใช้ Xpath ใน XML แบบมี Namespace ( : )
ช่วยดูโปรแกรมให้หน่อยครับติดerrorแก้ไม่ได้ครับ
โดย saron อ 02 มี.ค. 2010 1:23 pm บอร์ด Programming - PHP
1
599
อ 02 มี.ค. 2010 4:20 pm โดย mindphp View Topic ช่วยดูโปรแกรมให้หน่อยครับติดerrorแก้ไม่ได้ครับ