fbpx
วิกิพีเดีย

กลวิธีการค้นหาแบบฟีโบนัชชี

ในวิทยาการคอมพิวเตอร์ กลวิธีการค้นแบบฟีโบนัชชี (อังกฤษ: Fibonacci search technique) เป็นกลวิธีการค้นโดยนำเอาจำนวนฟีโบนัชชีมาสร้างเป็นกลวิธีค้นตำแหน่งของข้อมูลในแถวลำดับ ที่ได้รับการเรียงลำดับแล้วโดยใช้หลักการของขั้นตอนวิธีการแบ่งแยกและเอาชนะ ซึ่งเป็นหลักการเดียวกับที่ใช้ในกลวิธีการค้นหาแบบทวิภาค

แต่เมื่อเปรียบเทียบกับกลวิธีการค้นแบบเลขคู่แล้วกลวิธีการค้นแบบฟีโบนัชชีจะมีการตรวจสอบตำแหน่งของข้อมูลโดยใช้การกระจายตัวที่น้อยกว่า ทำให้เกิดข้อได้เปรียบเมื่อใช้กลวิธีการค้นแบบฟีโบนัชชีกับข้อมูลที่ถูกเก็บอยู่ในแหล่งเก็บข้อมูลไม่มีรูปแบบ ซึ่งเวลาในการใช้ค้นตำแหน่งของข้อมูลที่ต้องการในแหล่งข้อมูลดังกล่าวจะขึ้นอยู่กับตำแหน่งของข้อมูลที่ได้มีการเข้าถึงครั้งล่าสุด ยกตัวอย่างแหล่งข้อมูลแบบไม่มีรูปแบบอาธิเช่น แถบบันทึก ที่ซึ่งเวลาในการเข้าถึงข้อมูลใดๆในแถบแม่เหล็กจะขึ้นอยู่กับระยะทางระหว่างข้อมูลนั้นกับข้อมูลที่หัวของแถบแม่เหล็กกำลังอ่านอยู่ ทั้งนี้กลวิธีการค้นแบบฟีโบนัชชียังมีข้อได้เปรียบในการค้นข้อมูลในแคช (Cache) หรือแรม (Ram) ซึ่งเป็นแหล่งข้อมูลแบบไม่มีรูปแบบอีกด้วยเช่นกัน

ลักษณะทั่วไป

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

ขั้นตอนวิธี

ให้ F คือแถวลำดับของจำนวนฟีโบนัชชี ให้ k คือค่าของข้อมูลใดๆในF nคือขนาดของแถวลำดับของข้อมูล ถ้า n เป็นเลขฟีโบนนัชชีให้ Fm=n แต่ถ้า n ไม่ใช่จำนวนฟีโบนัชชีให้ Fm เป็นจำนวนฟีโบนัชชีที่มากกว่า n แต่ใกล้เคียงที่สุด นิยามให้ค่าใน F เหมือนกับลำดับฟีโบนนัชชีโดยให้ Fk+2=Fk+1+Fk โดยที่ k≥0 ,F1=1 และ F0=0

การหาตำแหน่งของข้อมูลที่สนใจสามารถหาตำแหน่งได้โดยทำตามขั้นตอนต่อไปนี้
  1. ให้ k = m
  2. ถ้า k = 0 หมายความว่าไม่พบข้อมูลที่สนใจและให้เลิกทำ
  3. เปรียบเทียบข้อมูลในตำแหน่ง Fk กับตำแหน่ง Fk-1
  4. ถ้าตรงกับข้อมูลที่สนใจก็ให้จบการทำงาน
  5. ถ้าข้อมูลที่สนใจมีค่าน้อยกว่าข้อมูลในตำแหน่ง Fk-1 ให้ทิ้งข้อมูลตั้งแต่ตำแหน่ง Fk+1 ถึง n ให้ k = k-1 แล้วกลับไปทำขั้นตอนที่สองอีกครั้ง
  6. ถ้าข้อมูลที่สนใจมีค่ามากกว่าข้อมูลในตำแหน่ง Fk-1 ให้ทิ้งข้อมูลตั้งแต่ตำแหน่ง 1 ถึง Fk-1 เรียงตัวเลขที่เหลือใหม่จาก 1 ถึง Fk-2 ให้ k = k-2 แล้วกลับไปทำขั้นตอนที่สองใหม่อีกครั้ง


นอกจากนี้ยังมีขั้นตอนวิธีอื่นๆอีกดังต่อไปนี้

ให้ R เป็นตารางที่เก็บสถิติขนาด n ช่อง ให้ ที่มีการเพิ่มขึ้นของลำดับ K โดยที่ K1 < K2 < ... < Kn ขั้นตอนวิธีนี้จะหาข้อมูลที่ต้องการตามค่าของ K โดยจะสมมติว่า N+1 = Fk+1ซึ่งหาก N+1ไม่ใช่จำนวนฟีโบนัชชีก็ให้ใช้หลักเกณฑ์การเปลี่ยนเป็นจำนวนฟีโบนัชชีเช่นเดียวกับขั้นตอนวิธีแรก โดยให้ X เป็นข้อมูลที่ต้องการจะหา

ขั้นที่หนึ่ง ให้ i ← Fk,p ← Fk-1,q ← Fk-2 โดยจากขั้นตอนวิธีจะได้ว่า p และ q เป็นลำดับจำนวนฟีโบนัชชีที่ต่อเนื่องกัน
ขั้นที่สอง ถ้า X < i ให้ไปทำขั้นที่สาม ถ้า X > i ให้ไปทำขั้นตอนที่สี่ แต่ถ้า X = i จะหมายถึงว่าค้นเจอตำแหน่งของข้อมูลแล้ว คำตอบคือที่ตำแหน่งk ให้จบการทำงาน
ขั้นที่สาม ถ้า q = 0 จะหมายถึงว่าค้นไม่เจอข้อมูลที่ต้องการและให้จบการทำงาน ถ้าไม่เช่นนั้นให้ i ← i - q ให้ p ← q แล้วจึงให้ q ← q - p จากนั้นกลับไปทำขั้นตอนที่สอง
ขั้นที่สี่ ถ้า p = 1 จะหมายถึงว่าค้นไม่เจอข้อมูลที่ต้องการและให้จบการทำงาน ถ้าไม่เช่นนั้นให้ i ← i + q ให้ p ← p - q แล้วจึงให้ q ← q - p จากนั้นกลับไปทำขั้นตอนที่สอง

ตัวอย่างการใช้ขั้นตอนวิธี

ให้ R เป็นแถวลำดับขนาด 13 ช่องมีข้อมูลคือ {1, 4, 5, 7, 9, 11, 13, 16, 18, 20, 25, 27, 30} ต้องการหาว่า 9 อยู่ในตำแหน่งที่เท่าไหร่ในแถวลำดับ

เนื่องจาก 13เป็นจำนวนฟีโบนัชชีจึงให้ F เป็นแถวลำดับขนาดเท่ากันและให้ x = 9
1 4 5 7 9 11 13 16 18 20 25 27 30

1. กำหนดให้ i = F13, p = F8, q = F5 (ขั้นตอนที่หนึ่ง)

1 4 5 7 9 11 13 16 18 20 25 27 30

2. เนื่องจาก x < i (ขั้นตอนที่สอง) จึงกำหนดค่าใหม่ให้ i = F8, p = F5 , q = F3 (ขั้นตอนที่สาม)

1 4 5 7 9 11 13 16 18 20 25 27 30

3. เนื่องจาก x < i (ขั้นตอนที่สอง) จึงกำหนดค่าใหม่ให้ i = F5, p = F3 , q = F2 (ขั้นตอนที่สาม)

1 4 5 7 9 11 13 16 18 20 25 27 30

4. เนื่องจาก x = i จึงได้ว่าค้นเจอค่า 9 ในแถวลำดับที่ช่อง K = 5 (ขั้นตอนที่สอง)

วิเคราะห์ประสิทธิภาพเชิงเวลา

จากทฤษฎีสำคัญ (อังกฤษ: Master method) จะได้ว่าประสิทธิภาพเชิงเวลาคือ
 
กลวิธีการค้นแบบฟีโบนัชชีแบ่งการเรียกซ้ำออกเป็นสองส่วนจึงได้ว่าส่วนการเรียกซ้ำคือ   และส่วนภาระจริงนั้นมีการทำงานเป็น   เมื่อรวมกันแล้วประสิทธิภาพเชิงเวลาของกลวิธีการค้นแบบฟีโบนัชชีมีค่าเป็น
  หรือคิดเป็น O(log(n))

หัวข้ออื่นๆที่เกี่ยวข้อง

Golden section search

Binary search algorithm


อ้างอิง

  • David E. Ferguson, "Fibonaccian searching", Communications of the ACM, vol. 3 , is. 12, p. 648, Dec. 1960.
  • Manolis Lourakis, "Fibonaccian search in C". [1]. Retrieved January 18, 2007. Implements Ferguson's algorithm.
  • Donald E. Knuth, "The Art of Computer Programming (second edition)", vol. 3 , p. 418, Nov. 2003.
  • Fibonacci Search

กลว, การค, นหาแบบฟ, โบน, ชช, ในว, ทยาการคอมพ, วเตอร, กลว, การค, นแบบฟ, โบน, ชช, งกฤษ, fibonacci, search, technique, เป, นกลว, การค, นโดยนำเอาจำนวนฟ, โบน, ชช, มาสร, างเป, นกลว, นตำแหน, งของข, อม, ลในแถวลำด, ได, บการเร, ยงลำด, บแล, วโดยใช, หล, กการของข, นตอนว, ก. inwithyakarkhxmphiwetxr klwithikarkhnaebbfiobnchchi xngkvs Fibonacci search technique epnklwithikarkhnodynaexacanwnfiobnchchimasrangepnklwithikhntaaehnngkhxngkhxmulinaethwladb thiidrbkareriyngladbaelwodyichhlkkarkhxngkhntxnwithikaraebngaeykaelaexachna sungepnhlkkarediywkbthiichinklwithikarkhnhaaebbthwiphakhaetemuxepriybethiybkbklwithikarkhnaebbelkhkhuaelwklwithikarkhnaebbfiobnchchicamikartrwcsxbtaaehnngkhxngkhxmulodyichkarkracaytwthinxykwa thaihekidkhxidepriybemuxichklwithikarkhnaebbfiobnchchikbkhxmulthithukekbxyuinaehlngekbkhxmulimmirupaebb sungewlainkarichkhntaaehnngkhxngkhxmulthitxngkarinaehlngkhxmuldngklawcakhunxyukbtaaehnngkhxngkhxmulthiidmikarekhathungkhrnglasud yktwxyangaehlngkhxmulaebbimmirupaebbxathiechn aethbbnthuk thisungewlainkarekhathungkhxmulidinaethbaemehlkcakhunxyukbrayathangrahwangkhxmulnnkbkhxmulthihwkhxngaethbaemehlkkalngxanxyu thngniklwithikarkhnaebbfiobnchchiyngmikhxidepriybinkarkhnkhxmulinaekhch Cache hruxaerm Ram sungepnaehlngkhxmulaebbimmirupaebbxikdwyechnkn enuxha 1 lksnathwip 2 khntxnwithi 3 twxyangkarichkhntxnwithi 4 wiekhraahprasiththiphaphechingewla 5 hwkhxxunthiekiywkhxng 6 xangxinglksnathwip aekikhklwithikarkhnaebbfiobnchchiichhlkkarkhxngkhntxnwithiodykaraebngaeykaelaexachnaodykartdthxnkhxmulinswnthiimsnicxxkcnidtaaehnngkhxngkhxmulthitxngkar kartdthxnkhrnghnungcatdthxnepncanwninladbkhxngcanwnfiobnchchi aelacaldkhakhxngladblngeruxythukkhrngthiphicarnaesrc klwithikarkhnaebbfiobnchchicasinsudlngktxemuxecxtaaehnngkhxngkhxmulthisnichruxkhnaelwimphbwamikhxmulthisnicpraktxyuinaehlngkhxmulelykhntxnwithi aekikhih F khuxaethwladbkhxngcanwnfiobnchchi ih k khuxkhakhxngkhxmulidinF nkhuxkhnadkhxngaethwladbkhxngkhxmul tha n epnelkhfiobnnchchiih Fm n aettha n imichcanwnfiobnchchiih Fm epncanwnfiobnchchithimakkwa n aetiklekhiyngthisud niyamihkhain F ehmuxnkbladbfiobnnchchiodyih Fk 2 Fk 1 Fk odythi k 0 F1 1 aela F0 0 karhataaehnngkhxngkhxmulthisnicsamarthhataaehnngidodythatamkhntxntxipniih k m tha k 0 hmaykhwamwaimphbkhxmulthisnicaelaiheliktha epriybethiybkhxmulintaaehnng Fk kbtaaehnng Fk 1 thatrngkbkhxmulthisnickihcbkarthangan thakhxmulthisnicmikhanxykwakhxmulintaaehnng Fk 1 ihthingkhxmultngaettaaehnng Fk 1 thung n ih k k 1 aelwklbipthakhntxnthisxngxikkhrng thakhxmulthisnicmikhamakkwakhxmulintaaehnng Fk 1 ihthingkhxmultngaettaaehnng 1 thung Fk 1 eriyngtwelkhthiehluxihmcak 1 thung Fk 2 ih k k 2 aelwklbipthakhntxnthisxngihmxikkhrng nxkcakniyngmikhntxnwithixunxikdngtxipniih R epntarangthiekbsthitikhnad n chxng ih thimikarephimkhunkhxngladb K odythi K1 lt K2 lt lt Kn khntxnwithinicahakhxmulthitxngkartamkhakhxng K odycasmmtiwa N 1 Fk 1sunghak N 1imichcanwnfiobnchchikihichhlkeknthkarepliynepncanwnfiobnchchiechnediywkbkhntxnwithiaerk odyih X epnkhxmulthitxngkarcaha khnthihnung ih i Fk p Fk 1 q Fk 2 odycakkhntxnwithicaidwa p aela q epnladbcanwnfiobnchchithitxenuxngkn khnthisxng tha X lt i ihipthakhnthisam tha X gt i ihipthakhntxnthisi aettha X i cahmaythungwakhnecxtaaehnngkhxngkhxmulaelw khatxbkhuxthitaaehnngk ihcbkarthangan khnthisam tha q 0 cahmaythungwakhnimecxkhxmulthitxngkaraelaihcbkarthangan thaimechnnnih i i q ih p q aelwcungih q q p caknnklbipthakhntxnthisxng khnthisi tha p 1 cahmaythungwakhnimecxkhxmulthitxngkaraelaihcbkarthangan thaimechnnnih i i q ih p p q aelwcungih q q p caknnklbipthakhntxnthisxngtwxyangkarichkhntxnwithi aekikhih R epnaethwladbkhnad 13 chxngmikhxmulkhux 1 4 5 7 9 11 13 16 18 20 25 27 30 txngkarhawa 9 xyuintaaehnngthiethaihrinaethwladb enuxngcak 13epncanwnfiobnchchicungih F epnaethwladbkhnadethaknaelaih x 91 4 5 7 9 11 13 16 18 20 25 27 301 kahndih i F13 p F8 q F5 khntxnthihnung 1 4 5 7 9 11 13 16 18 20 25 27 302 enuxngcak x lt i khntxnthisxng cungkahndkhaihmih i F8 p F5 q F3 khntxnthisam 1 4 5 7 9 11 13 16 18 20 25 27 303 enuxngcak x lt i khntxnthisxng cungkahndkhaihmih i F5 p F3 q F2 khntxnthisam 1 4 5 7 9 11 13 16 18 20 25 27 304 enuxngcak x i cungidwakhnecxkha 9 inaethwladbthichxng K 5 khntxnthisxng wiekhraahprasiththiphaphechingewla aekikhcakthvsdisakhy xngkvs Master method caidwaprasiththiphaphechingewlakhux T n a T n b f n where a 1 b gt 1 displaystyle T n a T left frac n b right f n mbox where a geq 1 mbox b gt 1 klwithikarkhnaebbfiobnchchiaebngkareriyksaxxkepnsxngswncungidwaswnkareriyksakhux T n 2 displaystyle T n 2 aelaswnpharacringnnmikarthanganepn 8 1 displaystyle Theta left 1 right emuxrwmknaelwprasiththiphaphechingewlakhxngklwithikarkhnaebbfiobnchchimikhaepn T n T n 2 8 1 displaystyle T n T n 2 Theta left 1 right hruxkhidepn O log n hwkhxxunthiekiywkhxng aekikhGolden section searchBinary search algorithmxangxing aekikhDavid E Ferguson Fibonaccian searching Communications of the ACM vol 3 is 12 p 648 Dec 1960 Manolis Lourakis Fibonaccian search in C 1 Retrieved January 18 2007 Implements Ferguson s algorithm Donald E Knuth The Art of Computer Programming second edition vol 3 p 418 Nov 2003 Fibonacci Searchekhathungcak https th wikipedia org w index php title klwithikarkhnhaaebbfiobnchchi amp oldid 5059553, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม