DAA - อัลกอริทึมการปีนเขา

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

สำหรับปัญหาหลาย ๆ อย่างเส้นทางไปสู่เป้าหมายไม่เกี่ยวข้อง ตัวอย่างเช่นในปัญหา N-Queens เราไม่จำเป็นต้องสนใจเกี่ยวกับการกำหนดค่าสุดท้ายของราชินีรวมถึงลำดับการเพิ่มราชินี

ปีนเขา

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

แนวคิดในการเริ่มต้นด้วยวิธีการแก้ปัญหาย่อยที่เหมาะสมจะเปรียบเทียบกับการเริ่มต้นจากฐานของเนินเขาการปรับปรุงวิธีการแก้ปัญหานั้นเปรียบได้กับการเดินขึ้นเขาและในที่สุดการเพิ่มเงื่อนไขบางอย่างจะเปรียบเทียบกับการไปถึงยอดเขา

ดังนั้นเทคนิคการปีนเขาจึงถือได้ว่าเป็นขั้นตอนต่อไปนี้ -

  • การสร้างโซลูชันย่อยที่เหมาะสมซึ่งเป็นไปตามข้อ จำกัด ของปัญหา
  • การปรับปรุงโซลูชันทีละขั้นตอน
  • การปรับปรุงโซลูชันจนกว่าจะไม่สามารถปรับปรุงได้อีก

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

Algorithm: Hill Climbing 
Evaluate the initial state. 
Loop until a solution is found or there are no new operators left to be applied: 
   - Select and apply a new operator 
   - Evaluate the new state: 
      goal -→ quit 
      better than current state -→ new current state

การปรับปรุงซ้ำ

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

ปัญหานี้สามารถหลีกเลี่ยงได้ด้วยวิธีการต่างๆ หนึ่งในวิธีการเหล่านี้คือการจำลองการอบอ่อน

รีสตาร์ทแบบสุ่ม

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

ปัญหาของเทคนิคการปีนเขา

Maxima ท้องถิ่น

หากฮิวริสติกไม่นูน Hill Climbing อาจมาบรรจบกับแม็กซิมาในพื้นที่แทนที่จะเป็นแม็กซิมาระดับโลก

สะพานและตรอกซอกซอย

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

ที่ราบสูง

พบที่ราบสูงเมื่อพื้นที่การค้นหาแบนหรือแบนเพียงพอที่ค่าที่ส่งคืนโดยฟังก์ชันเป้าหมายจะแยกไม่ออกจากค่าที่ส่งคืนสำหรับพื้นที่ใกล้เคียงเนื่องจากความแม่นยำที่ใช้โดยเครื่องเพื่อแสดงค่า

ความซับซ้อนของเทคนิคการปีนเขา

เทคนิคนี้ไม่ได้รับผลกระทบจากปัญหาเกี่ยวกับพื้นที่เนื่องจากดูเฉพาะสถานะปัจจุบันเท่านั้น เส้นทางที่สำรวจก่อนหน้านี้จะไม่ถูกเก็บไว้

สำหรับปัญหาส่วนใหญ่ในเทคนิค Random-restart Hill Climbing วิธีแก้ปัญหาที่ดีที่สุดสามารถทำได้ในรูปแบบพหุนาม อย่างไรก็ตามสำหรับปัญหา NP-Complete เวลาในการคำนวณอาจเป็นเลขชี้กำลังตามจำนวนสูงสุดในพื้นที่

การประยุกต์ใช้เทคนิคการปีนเขา

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

Hill Climbing ใช้ในวิธีการเรียนรู้แบบอุปนัยด้วย เทคนิคนี้ใช้ในวิทยาการหุ่นยนต์เพื่อประสานงานระหว่างหุ่นยนต์หลายตัวในทีม มีปัญหาอื่น ๆ อีกมากมายที่ใช้เทคนิคนี้

ตัวอย่าง

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