!!% 0
1
2
4
เพิม่ 58 (1 probe)
3 58
5
6
เพิม่ 70 (1 probe)
58
70
เพิม่ 17 (1 probe)
58
70
เพิม่ 36 (3 probes)
58
70
36
17
เพิม่ 4 (3 probes)
58
70
36
17
7
8
9
10
17
4
ภาพประกอบ 12.2 การเพิ่มขอมูลในตารางแฮชที่ใช linear probing การเพิม่ 58, 70, และ 17 ใชเพียงหนึ่ง probe ตอหนึ่งขอมูล เนื่องจากหลังการแฮชครั้งแรกแลวพบชองวางทัน ที แตพอเพิ่ม 36 ซึ่งถูกแฮชไปที่ชองหมายเลข 3 พบวาชนก็ตอง probe ตอที่ ชอง 4 ซึง่ ก็ชนอีกก็ probe ตอ ที่ชอง 5 จึงจะพบวาวาง (สําหรับการเพิม่ 4 นัน้ ขอใหนักศึกษาลองไลดูวาไดตามที่แสดงไวหรือไม) ขอดีของ linear probing ก็อยูตรงที่งายดี มีชองวางในตารางเหลืออยูก็ตอง probe พบแนๆ 8 แตขอเสีย ก็คือเกิดสภาวะที่เรียกวาขอมูลเกาะกลุมกัน ยิ่งเกาะกลุมกันมาก ยิ่งทําใหมีพฤติกรรมการ probe ที่ เปนแบบลําดับนั้นยาวขึ้นเรื่อยๆ ลองดูภาพประกอบ 12.3 ตารางแฮชที่ใช linear probing จะเขาใจมากขึ้น รูปนี้แสดงตารางแฮชที่มีการเพิ่มขอมูลไปจํานวนหนึ่ง ขอมูลตางๆ ในตารางถูก แสดงดวยเสนสีดาํ เสนสีดาํ ทีเ่ กาะกลุม กันจนเปนสีเ่ หลีย่ มสีดาํ ขนาดความกวางแตกตางกัน แสดงใหเห็นถึง จํานวนขอมูลที่อยูติดกันในตาราง ชองสีขาวก็คือสวนของตารางที่วาง ถาจะถามตรงนี้วาการเพิ่มขอมูลตัวตอ ไป จะมีโอกาสไปถูกเก็บที่ที่ใดมากที่สุด ถาฟงกชันแฮชกระจายดี ขอมูลตัวถัดไปนั้นจะมีโอกาสถูกแฮชไปที่ ชองใดๆ ดวยโอกาสเทาๆ กัน ขอใหดูกลุมขอมูลที่เกาะกลุมกันใหญสุดในตาราง (ชองสีดาํ ชุดทีส่ องจากทาง ซาย) ไมวาขอมูลใหมจะถูกแฮชมาชนกับขอมูลตัวใดในกลุมนี้ ก็จะตองถูกจับใหไปเก็บที่ชองถัดไปทางขวาที่ วางของกลุมนี้ (ดวยพฤติกรรมของ linear probing) สงผลใหกลุมนี้มีขนาดโตขึ้น เนื่องจากกลุมนี้มีขนาดใหญ สุดในตาราง ก็ยอมเปนกลุมที่มีโอกาสโตขึ้นมากที่สุด เราเรียกลักษณะการเกาะกลุม และการโตของกลุม เชนนี้ วา primary clustering (บางที่เรียกวา cookie monster effect ขอใหนักศึกษาลองคิดดูวาทําไมถึงเรียกเชนนี้)
ภาพประกอบ 12.3 ตารางแฮชที่ใช linear probing
8
อีกทัง้ เนือ่ งจากลําดับการ probe เปนการดูชอ งถัดไปเรือ่ ยๆ สงผลใหการเขาถึงขอมูลในหนวยความจํานัน้ รวดเร็วมาก ดวย สถาปตยกรรมการจัดการหนวยความจําเปน cache หลายๆ ระดับของคอมพิวเตอรในปจจุบนั