บทนำ
- ในฤดูใบไม้ร่วงปี 2021 Andrew Krapivin นักศึกษาปริญญาตรีของ Rutgers University ได้พบกับบทความวิจัยที่จะเปลี่ยนชีวิตของเขา
- บทความนี้กล่าวถึง 'พอยน์เตอร์ขนาดเล็ก' ที่ใช้ชี้ข้อมูลในหน่วยความจำคอมพิวเตอร์
- Krapivin คิดค้นวิธีทำให้พอยน์เตอร์มีขนาดเล็กลงเพื่อลดการใช้หน่วยความจำ
การค้นพบแฮชเทเบิลรูปแบบใหม่
- Krapivin ทำการทดลองโดยใช้แฮชเทเบิล ซึ่งเป็นวิธีทั่วไปในการจัดเก็บข้อมูล
- ระหว่างการทดลอง Krapivin ได้ประดิษฐ์แฮชเทเบิลชนิดใหม่ที่ทำงานได้เร็วกว่าแบบเดิม
- การค้นพบนี้นำไปสู่ผลลัพธ์ที่หักล้างข้อสันนิษฐานด้านวิทยาการข้อมูลที่มีอายุ 40 ปี
ความสำคัญของแฮชเทเบิล
- แฮชเทเบิลเป็นหนึ่งในโครงสร้างข้อมูลที่เก่าแก่ที่สุดในวิทยาการคอมพิวเตอร์ และมอบประสิทธิภาพในการจัดเก็บข้อมูล
- แฮชเทเบิลถูกออกแบบมาเพื่อให้ทำงานได้สามอย่าง คือ ค้นหา ลบ และแทรกองค์ประกอบ
ข้อสันนิษฐานของ Yao และการหักล้าง
- ในปี 1985 นักวิทยาการคอมพิวเตอร์ Andrew Yao ได้เสนอข้อสันนิษฐานเกี่ยวกับวิธีค้นหาองค์ประกอบในกรณีเลวร้ายที่สุดของแฮชเทเบิลที่มีคุณสมบัติบางอย่าง
- แฮชเทเบิลแบบใหม่ของ Krapivin หักล้างข้อสันนิษฐานของ Yao และพิสูจน์ว่าเวลาที่ต้องใช้สำหรับการคิวรีและการแทรกในกรณีเลวร้ายที่สุดเป็นสัดส่วนกับ
(log x)²
การค้นพบใหม่เกี่ยวกับเวลาเฉลี่ยของการคิวรี
- Krapivin และทีมของเขาแสดงให้เห็นว่าในแฮชเทเบิลแบบไม่ละโมบ เวลาเฉลี่ยของการคิวรีไม่ได้ขึ้นอยู่กับ
x
- นี่หมายความว่าสามารถบรรลุเวลาเฉลี่ยของการคิวรีที่คงที่ได้ โดยไม่เกี่ยวกับระดับความเต็มของแฮชเทเบิล
บทสรุป
- งานวิจัยนี้ช่วยทำให้ความเข้าใจเกี่ยวกับแฮชเทเบิลลึกซึ้งยิ่งขึ้น และอาจนำไปสู่การประยุกต์ใช้จริง
- ความเข้าใจเกี่ยวกับโครงสร้างข้อมูลเช่นนี้อาจเป็นรากฐานสำหรับการปรับปรุงเชิงปฏิบัติในอนาคต
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
Krapivin สร้างความก้าวหน้าครั้งสำคัญได้โดยไม่รู้จักข้อคาดเดาของ Yao
เป็นผลลัพธ์ที่ยอดเยี่ยม แต่ดูเหมือนควรถูกเรียกว่าเป็นข้อคาดเดาทางวิทยาการคอมพิวเตอร์
สงสัยว่ามีใครรู้จัก GitHub repository ที่มี implementation นี้บ้างไหม
เจ๋งดี แต่สไตล์การเขียนแบบ "ยกบุคคลขึ้นเป็นคนดัง" ของบทความนี้ทำให้รู้สึกไม่ค่อยสบายใจเล็กน้อย
ในแฮชเทเบิลใหม่นี้ เวลาที่ต้องใช้ในกรณีเลวร้ายที่สุดสำหรับการ query และ insertion แปรผันตาม (log x)²
การอ่านบทความนี้ก็เหมือนอ่านคำอธิบายของปัญหา Monty-Hall
เป็นการทดสอบที่ดีล่าสุด
สงสัยว่ามีใครมี implementation แบบง่ายของ 'Tiny pointers' ไหม
อย่างที่ตัวร้ายใน <i>Scooby Doo</i> พูดอยู่เสมอ:
อ่านผ่าน ๆ ในงานวิจัยแล้ว ดูเหมือนความแตกต่างหลักที่พวกเขาใช้คือ อัลกอริทึม insertion ของแฮชเทเบิลจะค้นหาไกลออกไป แทนที่จะเติมช่องว่างแรกแบบ greedy
เป็นผลลัพธ์เชิงทฤษฎีที่น่าสนใจ แต่ในทางปฏิบัติ "ทริก" ที่ใช้กันอยู่ตอนนี้อย่างการจัดสรรตารางให้ใหญ่กว่าที่ต้องการ น่าจะเป็นทางแก้ที่ดีกว่า