โปรแกรมแบบไม่ตายตัวเป็นวิธีการที่ใช้แก้ปัญหาที่ซับซ้อน โดยการแยกมันออกเป็นโจทย์ย่อยที่ง่ายกว่านี้ โดยมันมีประสิทธิภาพพิเศษสําหรับปัญหาการทําให้ง่ายขึ้น และที่เกี่ยวข้องกับการซ้อนทับกันของปัญหา บทความนี้สํารวจกลยุทธ์ต่าง ๆ ของปัญหาโดยใช้โปรแกรมแบบไดนามิกส์ผ่านการศึกษาและการคํานวณ

การสร้างโปรแกรมแบบไม่ตายตัว

โปรแกรมที่ไม่ตายตัวจะใช้ในการเก็บผลการประมวลผลแบบอนุภาพ เพื่อหลีกเลี่ยงการคํานวณซ้ํา ซึ่งใช้เทคนิคนี้เมื่อมีปัญหาเกิดขึ้นสองคุณสมบัติ: การซ้อนค่าและโครงสร้างย่อยที่เหมาะสมที่สุด สามารถนําไปใช้ได้ทั้งการเพิ่มข้อมูลบนลงล่าง (ค่าน้อย) หรือการเติมข้อมูลด้านล่าง (การไล่ระดับความจุ)

การ ศึกษา กรณี:

ลําดับอาร์บอกัสเป็นตัวอย่างคลาสสิก สําหรับการสาธิตการเขียนโปรแกรมแบบไดนามิค เป้าหมายคือหาจํานวนคาร์โบไฮเดรตที่ n ได้อย่างมีประสิทธิภาพ

การใช้การเกิดขึ้นอีกแบบไร้เดียงสา ความซับซ้อนของเวลานั้นเพิ่มขึ้นอย่างมหาศาล โปรแกรมที่คํานวณได้ลดความซับซ้อนลง

ตัวอย่างเช่น เพื่อคํานวณ FTP( 10):

FIND( 10) = FIND( 9) + Axregator( 8)

โดย เก็บ โบ ฮี เมีย (8) และ ฟี โบ นาคิ ม (9) การ คํานวณ ถูก ลด ลง ทํา ให้ มี การ เพิ่ม ประสิทธิภาพ อย่าง มาก.

การ ศึกษา กรณี: ปัญหา ของ แจ็ก เกต

ปัญหา กระเป๋า เป้ 0/1 (kaptsack) เกี่ยวข้องกับการเลือกรายการที่มีน้ําหนักที่เพิ่ม และค่าที่เพิ่มมา เพื่อให้ค่าทั้งหมดสูงสุดโดยไม่ต้องจํากัดน้ําหนักเกิน

โปรแกรมที่คํานวณได้อัตโนมัตินี้ โดยการสร้างตาราง โดยแต่ละรายการแทนค่าสูงสุดที่ access value โดยมีสับเซตของรายการ และค่าน้ําหนักเฉพาะ

การ คํานวณ เกี่ยว ข้อง กับ การ ทํา ตัว ให้ เป็น ตัว จริง โดย ผ่าน รายการ ต่าง ๆ และ ปรับ ปรุง ตาราง โดย อาศัย ว่า ของ นั้น จะ ปรับ ปรุง ราคา รวม หรือ ไม่.

ข้อ แนะ สําหรับ การ ลด ความ หนัก

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

  • ระบุคําค้นทับกัน
  • กําหนดตัวพิมพ์เล็ก- ใหญ่
  • ใช้โครงสร้างข้อมูลที่เหมาะสม
  • ปรับค่าความซับซ้อนของพื้นที่และเวลา