记忆化
Memoization(或称备忘录化)是一种来自计算机编程的技术,用于优化计算机程序。计算机程序调用函数。每个函数都会计算出它要返回的结果。记忆化很简单:在从函数调用中返回数值之前,它被存储在一个表(或关联数组)中。像缓存一样,这个数组只能存储有限数量的结果。然后可以改变函数,使其尝试在其查找表中查找输入的值。这种查找比再次进行计算的成本要低得多。也像一个缓存:数据表将被定期清理,例如,在一定时间内没有被查询到的值将被删除。
尽管与缓冲有关,但记忆化指的是这种优化的一种特殊情况,它与缓冲或页面替换等缓冲形式有所区别。在一些逻辑编程语言中,记忆化也被称为Tabling;另见查找表。
问题和答案
问:什么是记忆化?答:记忆化是计算机编程中的一种技术,它通过将函数调用的结果存储在一个表格或关联数组中来优化程序。
问:记忆化是如何工作的?
答:在从一个函数调用返回一个值之前,它被存储在一个查找表中。以后,函数将在查找表中查找输入的值,而不是重新计算,这样做的成本要低得多。
问:备忘化的好处是什么?
答:备忘化可以通过减少所需的计算次数来提高程序性能。它也是一种简单的优化技术,可以应用于许多程序。
问:查找表是如何工作的?
答:查找表存储由函数调用返回的值。就像缓存一样,它对可以存储的结果有一个限制,并且通过删除一段时间内没有访问过的值来定期清理。
问:记忆化与其他形式的缓存有什么区别?
答:记忆化是缓存的一种特殊情况,指的是存储函数调用的结果。它与其他形式的缓存不同,如缓冲或页面替换。
问:记忆化在逻辑编程语言中使用吗?
答:是的,记忆化在一些逻辑编程语言中也被称为tabling。
问:记忆化和查找表之间的关系是什么?
答:记忆化涉及使用查找表来存储函数调用的结果。函数可以在表中查找数值,而不是重新计算。