Hashtable คืออะไร

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

ประสิทธิภาพของ hashtable ในชุดข้อมูลขึ้นอยู่กับประสิทธิภาพของฟังก์ชันแฮช ฟังก์ชั่นแฮชที่ดีมักจะให้การค้นหาคีย์ที่เหมือนกันและการกระจายการแมปในอาร์เรย์ที่สอดคล้องกัน การแฮชการชนเกิดขึ้นเมื่อกำหนดสองปุ่มให้กับค่าที่สอดคล้องกัน เมื่อมีการชนกันของข้อมูลเกิดขึ้นฟังก์ชันแฮชจะถูกดำเนินการอีกครั้งจนกว่าจะพบค่าที่สอดคล้องกันที่ไม่ซ้ำกัน สิ่งนี้มักส่งผลให้เวลา hashing อีกต่อไป แม้ว่าจำนวนของคีย์ใน hashtable มักจะได้รับการแก้ไขบางครั้งอาจมีคีย์ที่ซ้ำกัน ถึงกระนั้น hashtable ที่ออกแบบมาอย่างดีมีฟังก์ชั่นแฮชที่มีประสิทธิภาพซึ่งแมปแต่ละคีย์กับค่าที่สอดคล้องกันที่ไม่ซ้ำกันในอาเรย์

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

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

นักวิจัยด้านวิทยาศาสตร์คอมพิวเตอร์หลายคนมุ่งมั่นที่จะสร้างฟังก์ชันแฮชที่สมบูรณ์แบบซึ่งไม่ก่อให้เกิดการชนหรือกลุ่มที่ได้รับปัจจัยการโหลดที่เพิ่มขึ้น ในทางทฤษฎีกุญแจสำคัญในการสร้าง hashtable ที่สมบูรณ์แบบคือการสร้างฟังก์ชันแฮชที่สมบูรณ์แบบ โดยทั่วไปนักวิจัยเชื่อว่าฟังก์ชันแฮชที่สมบูรณ์แบบควรมีประสิทธิภาพคงที่ - จำนวนการชนและกลุ่ม - ด้วยปัจจัยการโหลดที่เพิ่มขึ้น ในกรณีที่เลวร้ายที่สุดฟังก์ชันแฮชที่สมบูรณ์แบบจะยังคงอนุญาตให้มีการแฮชอย่างต่อเนื่องโดยไม่ถึงเกณฑ์