วันพุธที่ 14 ตุลาคม พ.ศ. 2552

DTS11-23/09/2009

Summary B4 Final เรื่อง Searching
การค้นหาข้อมูล (Searching)

การค้นหา คือ การใช้วิธีการค้นหากับโครงสร้างข้อมูล เพื่อดูว่าข้อมูลตัวที่ ต้องการถูกเก็บอยู่ในโครงสร้างแล้วหรือยัง
1. การค้นหาแบบเชิงเส้นหรือการค้นหาตามลำดับ(Linear) เป็นวิธีที่ใช้กับข้อมูลที่ยังไม่ได้เรียงลำดับ
หลักการ คือ ให้นำข้อมูลที่จะหามาเปรียบเทียบกับข้อมูลตัวแรกในแถวลำดับถ้าไม่เท่ากันให้เปรียบเทียบกับข้อมูลตัวถัดไปถ้าเท่ากันให้หยุดการค้นหา
2.การค้นหาแบบเซนทินัล(Sentinel)เป็นวิธีที่การค้นหาแบบเดียวกับวิธีการค้นหาแบบเชิงเส้นแตประสิทธิภาพดีกว่าตรงที่เปรียบเทียบน้อยครั้งกว่า พัฒนา มาจากอัลกอริทึมแบบเชิงเส้น หลักการ
1) เพิ่มขนาดของแถวลำดับ ที่ใช้เก็บข้อมูลอีก 1 ที่
2) นำข้อมูลที่จะใช้ค้นหาข้อมูลใน Array ไปฝากที่ต้นหรือ ท้ายArray
3) ตรวจสอบผลลัพธ์จากการหาโดยตรวจสอบจากตำแหน่งที่พบ ถ้าตำแหน่งที่พบมีค่าเท่ากับ n-1แสดงว่าหาไม่พบ นอกนั้นถือว่าพบข้อมูลที่ค้นหา
3. การค้นหาแบบไบนารี (Binary Search)การค้นหาแบบไบนารีใช้กับข้อมูลที่ ถูกจัดเรียงแล้วเท่านั้น
หลักการของการค้นหาคือ ข้อมูลถูกแบ่งออกเป็นสองส่วแล้วนำค่ากลางข้อมูลมาเปรียบเทียบกับคีย์ที่ต้องการหา
1.หาตัวแทนข้อมูลเพื่อนำมาเปรียบเทียบกับค่าที่ต้องการค้น
2. นำผลการเปรียบเทียบกรณีที่หาไม่พบมาใช้ในการค้นหารอบต่อไป
การค้นหาแบบไบนารี (Binary Search)
ถ้าข้อมูลมีการเรียงจากน้อยไปหามาก เมื่อเปรียบเทียบแล้วคีย์มีค่ามากกว่าค่ากลาง แสดงว่าต้องทำการค้นหาข้อมูลในครึ่งหลังต่อไป จากนั้นนำข้อมูลครึ่งหลังมาหาค่ากลางต่อ ทำอย่างนี้ไปเรื่อย ๆ จนกว่าจะได้ข้อมูลที่ต้องการ เช่นต้องการหาว่า 12 อยู่ในลิสต์ (1 4 6 8 10 12 18 19) หรือไม่
เริ่มการค้นหาแบบไบนารีด้วยการเปรียบเทียบกับค่ากลางในลิสต์ คือค่าa[4] ซึ่งเก็บค่า 8 ซึ่ง 12 > a[4] หมายความว่าค่า 12 ควรจะอยู่ในข้อมูลด้านขวาของ a[4] คือ ช่วง a[5] …a[8]โดยไม่สนใจช่วงข้อมูล a[1] …a[3] Searching
ตารางแฮซ (Hash Table)
ตารางแฮช (Hash Tables)
การเข้าถึงข้อมูลโดยตรง กำหนด ให้ k เป็นคีย์ ถูกจัดเก็บอยู่ใน ช่อง k ด้วยการทำแฮชด้วยพื้นฐาน การจัดเก็บในช่องที่ h(k) โดย ใช้ฟังก์ชัน h เพื่อคำนวณหาช่องของคีย์โดยการจับคู่กับเอกภพสัมพัทธ์U ในตาราง Th: U 􀃆 {0,1,…,m-1} ฟังก์ชัน แฮช จะทำงานแบบสุ่ม แนวคิดหลัก คือ ลด ขนาดอะเรย์ของดัชนี
การชนกันของข้อมูล (Collision)
การที่แทรกคีย์ในตาราง ที่จัดเก็บนั้นมีโอกาสที่คีย์ที่ถูกสร้างจากฟังก์ชัน ในช่องเดียวกัน การเกิดการชนกันก็ยังคงต้องมีอย่างน้อยหนึ่งครั้ง การแก้ไขปัญหาชนกันของข้อมูล แบบห่วงโซ่(Chaining)1. กรณีที่เลวร้ายที่สุด ในการแทรกข้อมูลคือ o(1) 2. การลบสมาชิก สามารถทำได้ด้วยเวลาที่น้อยที่สุดของ o(1)ทางปฏิบัติ ใช้เทคนิค ฮิวริสติก (Heuristic) ในการสร้างฟังก์ชันแฮช แนวทางหนึ่งที่ดีคือ การแปลงค่าของข้อมูลที่มีอยู่แล้วด้วยข้อมูลที่มีอยู่ (วิธีการหาร:Division method) ฟังก์ชันแฮช คือการกำหนดค่าคีย์ที่เกิดขึ้นในเอก ภพสัมพัทธ์จากตัวเลขธรรมชาติ
วิธีการสร้างฟังก์ชันแฮช
1.วิธีการหาร (The Division Method)
2.วิธีการคูณ(The Multiplication Method)
3.วิธีทั่วไป (Universal hashing)

เทคนิคลำดับของการตรวจสอบ
1. การตรวจสอบเชิงเส้น (Linear Probing)
2.การตรวจสอบด้วยสมการกำลังสอง(Quadratic Probing)
3. การสร้างฟังก์ชันแฮชแบบสองเท่า(Double Hashing)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น