คำถามติดแท็ก memoization


9
ความแตกต่างระหว่างการบันทึกและการเขียนโปรแกรมแบบไดนามิกคืออะไร?
ความแตกต่างระหว่างการบันทึกและการเขียนโปรแกรมแบบไดนามิกคืออะไร? ฉันคิดว่าการเขียนโปรแกรมแบบไดนามิกเป็นส่วนหนึ่งของการบันทึกความจำ ถูกต้องหรือไม่

19
วิธีการตรวจสอบลำดับที่เพิ่มขึ้นที่ยาวที่สุดโดยใช้การเขียนโปรแกรมแบบไดนามิก?
ฉันมีชุดจำนวนเต็ม ฉันต้องการค้นหาชุดลำดับที่เพิ่มขึ้นที่ยาวที่สุดโดยใช้การเขียนโปรแกรมแบบไดนามิก

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

16
มีมัณฑนากรเพียงแค่แคชคืนค่าฟังก์ชันหรือไม่
พิจารณาสิ่งต่อไปนี้: @property def name(self): if not hasattr(self, '_name'): # expensive calculation self._name = 1 + 1 return self._name ฉันใหม่ แต่ฉันคิดว่าการแคชสามารถนำปัจจัยออกมาเป็นมัณฑนากรได้ มีเพียงฉันที่ไม่พบสิ่งที่ต้องการ) ป.ล. การคำนวณที่แท้จริงไม่ได้ขึ้นอยู่กับค่าที่ไม่แน่นอน

8
Memoization ใน Haskell?
คำแนะนำใด ๆ เกี่ยวกับวิธีแก้ปัญหาอย่างมีประสิทธิภาพฟังก์ชันต่อไปนี้ใน Haskell สำหรับตัวเลขจำนวนมาก (n > 108) f(n) = max(n, f(n/2) + f(n/3) + f(n/4)) ฉันเคยเห็นตัวอย่างของการช่วยจำใน Haskell เพื่อแก้ตัวเลข fibonacci ซึ่งเกี่ยวข้องกับการคำนวณ (อย่างเกียจคร้าน) ตัวเลข fibonacci ทั้งหมดจนถึง n ที่ต้องการ แต่ในกรณีนี้สำหรับ n ที่กำหนดเราจำเป็นต้องคำนวณผลลัพธ์ระดับกลางเพียงไม่กี่รายการเท่านั้น ขอบคุณ

4
Fibonacci-function นี้จำได้อย่างไร?
fibonacci-function นี้บันทึกโดยกลไกใด? fib = (map fib' [0..] !!) where fib' 1 = 1 fib' 2 = 1 fib' n = fib (n-2) + fib (n-1) และในบันทึกที่เกี่ยวข้องเหตุใดเวอร์ชันนี้จึงไม่เป็นเช่นนั้น fib n = (map fib' [0..] !! n) where fib' 1 = 1 fib' 2 = 1 fib' n = fib (n-2) + fib …

5
ความแตกต่างระหว่าง Caching และ Memoization คืออะไร?
ฉันต้องการทราบความแตกต่างที่แท้จริงระหว่างcachingและmemoizationคืออะไร ขณะที่ผมเห็นมันทั้งสองเกี่ยวข้องกับการหลีกเลี่ยงการทำซ้ำสายงานที่จะได้รับข้อมูลโดยการจัดเก็บ อะไรคือความแตกต่างหลักระหว่างทั้งสอง?

4
การบันทึกอัตโนมัติใน GHC Haskell เป็นอย่างไร
ฉันคิดไม่ออกว่าทำไม m1 จึงถูกบันทึกในขณะที่ m2 ไม่ได้อยู่ในสิ่งต่อไปนี้: m1 = ((filter odd [1..]) !!) m2 n = ((filter odd [1..]) !! n) m1 10,000000 ใช้เวลาประมาณ 1.5 วินาทีในการโทรครั้งแรกและเศษของการโทรครั้งต่อ ๆ ไป (น่าจะเป็นการแคชรายการ) ในขณะที่ m2 10,000000 จะใช้เวลาเท่ากันเสมอ (การสร้างรายการใหม่ด้วยการโทรแต่ละครั้ง) มีความคิดเกิดอะไรขึ้น? มีกฎง่ายๆว่า GHC จะบันทึกฟังก์ชันหรือไม่และเมื่อใด ขอบคุณ.
106 haskell  ghc  memoization 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.