Page 59 - โครงสร้างข้อมูลและขั้นตอนวิธี
P. 59

ขั้น​ตอนว​ ิธีก​ าร​ค้นหา​ข้อมูล 15-49

5. 	การป​ ระยกุ ตใ์​ช้ข้นั ตอนวิธกี ารค้นหาขอ้ มูลแบบการประมาณคา่ ในชว่ ง

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

กจิ กรรม 15.2.2
       1. 	 จาก​ฟงั ก์ชนั interpolation_search บรรทัดท​ ่ี 12 ถ้า (adjust < 0) OR (adjust > 1) เป็นจ​ ริง​แสดง​วา่ ​

ไม่พ​ บ​ขอ้ มูล เพราะอ​ ะไร
       2. 	 นอกเ​หนอื จ​ ากข​ อ้ ก​ �ำ หนดท​ ว​่ี า่ ข​ อ้ มลู ม​ ก​ี ารจ​ ดั เ​รยี งม​ าแ​ ลว้ interpolation_search มข​ี อ้ ส​ มมตฐิ านเ​พม่ิ เ​ตมิ

เ​ก่ียวก​ ับ​ข้อมูล​อยา่ งไร
แนวต​ อบ​กิจกรรม 15.2.2

       1. 	 ถา้ ค​ ่า adjust ซึ่ง​เปน็ ค​ ่าท่ไ​ี ด​ม้ า​จากก​ าร​ค�ำ นวณอ​ ตั ราสว่ น (x - A[left]) / (A[right] - A[left]) ไม​อ่ ย​ู่
ใน​ช่วง​ระหวา่ ง 0 และ 1 หมาย​ถึง ค่าทส่​ี ืบค้นไ​ม​อ่ ย​ใู่ น​ชว่ ง​รายการ​ท่​สี ืบคน้ ทัง้ น้อี​ ัตราส่วน​จะ​มากกว่า 1 ก​ต็ อ่ เ​มอ่ื
x - A[left] มากกว่า A[right] - A[left] แสดงว​ า่ x มากกวา่ A[right] นั่น​คือข​ อ้ มลู ​อย​เู่ กนิ ข​ อบ​ขวา ใน​ทางก​ ลบั ก​ นั
อัตราสว่ น​จะ​นอ้ ย​กว่า 0 ก็​ตอ่ ​เม่ือ x - A[left] นอ้ ย​กวา่ 0 แสดง​วา่ x นอ้ ย​กว่า A[left] แสดง​วา่ ​ขอ้ มูล​อย​ู่ตา่ํ ​กวา่ ​
ขอบซ​ า้ ย

       2. 	 interpolation_search มข​ี อ้ ​สมมติฐาน​ว่า​ขอ้ มลู ม​ ​ีการ​เพม่ิ ​ขนึ้ แ​ บบเ​ชิงเ​ส้น

เรือ่ งท​ ี่ 15.2.3
การค​ น้ หาข​ อ้ ม​ ูลแ​ บบฟ​ ​ิโบนักซี

โดยป​ กติ​การค​ ้นหาส​ ารสนเทศใ​นร​ ายการท​ ี่เ​รียง​ล�ำดับ สามารถส​ ืบค้นเ​รียงต​ ามร​ ายการ หรือข​ ้ามไ​ปย​ ัง​ต�ำแหน่ง​

ที่ป​ ระมาณว​ ่าน​ า่ ​จะ​พบ​ข้อมลู  ซง่ึ ก​ าร​ขา้ ม​นั้น​ไม​จ่ �ำเป็นต​ ้องหา​แบบแ​ บง่ ค​ ร่ึงเ​สมอ​ไป การค​ ้น​หาแ​ บบ​ฟิโ​บนักซี (Fibonacci

search) นี้​แทนท่ี​จะ​ใช้​การ​ค้นหา​แบบ​แบ่ง​คร่ึง​ท่ี​เร่ิม​ต้น​ตรง​กลาง​แล้ว​ตรวจ​สอบ​ข้อมูล​ว่า​อยู่​ช่วง​ทาง​ซ้าย​หรือ​ช่วง

ท​ าง​ขวา ก็เ​ปล่ียน​มา​ใช้​การ​แบ่ง​โดย​ก�ำหนด​ช่วงจ​ าก​ตัวเ​ลข​ฟิ​โบนักซี (Fibonacci Number) ซึ่งม​ ี​รูปแ​ บบก​ าร​หา​ตัวเลข​

ถัดไ​ปจ​ ากส​ มการต​ ่อ​ไปน​ ี้

F0 	=  	F1 = 1 	                 	 ส�ำหรับ  n  >  2
Fn 	=  	Fn-1 + Fn-2

ตัวอย่างต​ ัวเลขท​ ี่ไ​ด้จ​ าก​สมการ​ข้าง​ต้นเ​ป็นด​ ังนี้

0, 1, 1, 2, 3, 5, 8, 13, …

ซึ่ง​ตัวเลขเ​หล่าน​ ี้จ​ ะน​ �ำ​มา​ใช้​ใน​การก​ �ำหนดช​ ่วง​ใน​การ​หาข​ ้อมูล
   54   55   56   57   58   59   60   61   62   63   64