fbpx
วิกิพีเดีย

การค้นหาแบบไตรภาค

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

การทำงาน

ยกตัวอย่างเช่น หากเราต้องการจะหาค่ามากสุดของฟังก์ชัน f(x) และเรารู้ว่าค่ามากสุดดังกล่าวอยู่ในช่วงของ A และ B แล้ว แสดงว่าจะต้องมีค่า x บางค่า ที่

  • สำหรับ a,b ทุกค่า ซึ่ง A ≤ a < bx แล้ว จะมี f(a) < f(b) และ
  • สำหรับ a,b ทุกค่า ซึ่ง xa < b ≤ B แล้ว จะมี f(a) > f(b)


เวลาการทำงาน

T(n) = T(2/3 * n) + c Θ(log n) 


ตัวอย่างขั้นตอนวิธีแบบเรียกซ้ำ

# สร้างฟังก์ชันแบบเรียกซ้ำชื่อ ternarySearch # left,right ระบุขอบซ้ายและขวาของช่วง def ternarySearch(f, left, right, absolutePrecision): #ค่ามากสุด หรือ น้อยสุด จะอยู่ระหว่างช่วง left และ right if (right - left) < absolutePrecision: return (left + right)/2 leftThird = (2*left + right)/3 rightThird = (left + 2*right)/3 if f(leftThird) < f(rightThird): return ternarySearch(f, leftThird, right, absolutePrecision) return ternarySearch(f, left, rightThird, absolutePrecision) 


อ้างอิง

  1. บทที่ 3 การหาค่าเหมาะสมที่สุดของฟังก์ชันตัวแปรเดียว(Single Variable Optimization)


แหล่งข้อมูลอื่น

การค, นหาแบบไตรภาค, การค, นแบบไตรภาค, งกฤษ, ternary, search, เป, นกลว, หน, งในสาขาว, ชาว, ทยาการคอมพ, วเตอร, สำหร, บค, นหาค, มากส, ดหร, อน, อยส, ของฟ, งก, นฐานน, ยมเด, ยว, งกฤษ, unimodal, function, โดยการค, นแบบไตรภาคกำหนดว, หากแบ, งช, วงของโดเมนของฟ, งก, นออก. karkhnaebbitrphakh xngkvs Ternary search epnklwithihnunginsakhawichawithyakarkhxmphiwetxr sahrbkhnhakha maksudhruxnxysud khxngfngkchnthanniymediyw xngkvs unimodal function odykarkhnaebbitrphakhkahndwa hakaebngchwngkhxngodemnkhxngfngkchnxxkepnsamchwngkhux chwngthihnung sxng aelasamaelw khamaksudhruxnxysudkhxngfngkchndngklawcatxngxyuinchwngthisxngkhxngodemn caknnkthakarkahndkhxbekhtkhxngchwngihmodythakaraebngchwngthisxngkhxngedimepnthnghmdsamchwngxikkhrnghnungaelathakarwnsatamkhntxnedim klwithikarkhnaebbitrphakhni epnhnungintwxyangkarichaenwkhidkhntxnwithiaebbaebngaeykaelaexachna xngkvs Divide and Conquer enuxha 1 karthangan 1 1 ewlakarthangan 2 twxyangkhntxnwithiaebberiyksa 3 xangxing 4 aehlngkhxmulxunkarthangan aekikhyktwxyangechn hakeratxngkarcahakhamaksudkhxngfngkchn f x aelaeraruwakhamaksuddngklawxyuinchwngkhxng A aela B aelw aesdngwacatxngmikha x bangkha thi sahrb a b thukkha sung A a lt b x aelw cami f a lt f b aela sahrb a b thukkha sung x a lt b B aelw cami f a gt f b ewlakarthangan aekikh T n T 2 3 n c 8 log n twxyangkhntxnwithiaebberiyksa aekikh srangfngkchnaebberiyksachux ternarySearch left right rabukhxbsayaelakhwakhxngchwng def ternarySearch f left right absolutePrecision khamaksud hrux nxysud caxyurahwangchwng left aela right if right left lt absolutePrecision return left right 2 leftThird 2 left right 3 rightThird left 2 right 3 if f leftThird lt f rightThird return ternarySearch f leftThird right absolutePrecision return ternarySearch f left rightThird absolutePrecision xangxing aekikhbththi 3 karhakhaehmaasmthisudkhxngfngkchntwaeprediyw Single Variable Optimization aehlngkhxmulxun aekikhtnimkhnhaaebbthwiphakh karkhnodykarpramanchwngekhathungcak https th wikipedia org w index php title karkhnhaaebbitrphakh amp oldid 4700744, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

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