【发布时间】:2017-10-17 10:43:52
【问题描述】:
我正在开发一个程序(在 C++ 中,但特定的编程语言对于这个问题并不重要),它使用蛮力方法来解决某个问题的中间步骤,而不是使用预先确定的数学接近。
它工作正常,但计算时间很长(正如预期的那样,因为蛮力可能需要很长时间。)
我可以接受特定输入的第一个实例的计算时间很长,但我想结合一些方法来存储这个结果,并为程序运行的所有未来实例查找它,而不是需要重新计算每次它(从而减少计算时间)。
我的第一个想法是将结果简单地存储在纯文本文件中,并在必要时引用此文本文件以提取结果(如果结果存在于文件中),但考虑到文本文件是否存在,这似乎并不理想不知何故丢失或手动更改,然后我们回到我们开始的地方。
我的问题是:有没有办法将这种类型的结果存储在程序本身中,以便下次我运行程序时,它只需查找特定输入的结果,而不需要蛮力解决问题再说一遍它已经解决了吗?
我意识到这个问题可能被认为过于宽泛,但我希望有人至少可以告诉我我的方法是否是一个好方法,如果不是,应该做什么或者我应该研究什么?我不确定是否有此类问题的实际名称。
【问题讨论】:
-
我想说即使它可能不理想(将数据保存在文件中),它通常是为了在程序实例之间保存值而完成的。如果您担心文件可能被修改,您可以对文件进行哈希处理,将哈希存储在文件中,然后在重新加载文件时检查文件(不包括哈希)哈希值是否相同。您的程序应设计为处理文件被删除或丢失的边缘情况。
-
@StoryTeller 谢谢,不知道实际的术语叫什么。我会将该标签添加到问题中。
-
除非计算可以在编译时完成,否则你不能将它嵌入到可执行文件中。您需要使用某种形式的存储,例如文件,数据库。
标签: c++ performance memory memoization brute-force