保存蛮力结果以供将来使用?

时间:2017-10-17 10:43:52

标签: c++ performance memory memoization brute-force

我正在研究一个程序(用C ++编写,但特定的编程语言对这个问题并不重要),它使用强力方法来解决某个问题的中间步骤,而不是使用预先确定的数学方法。

它工作正常,但计算时间很长(正如预期的那样,因为蛮力可能需要很长时间。)

我很好,特定输入的第一个实例的计算时间很长,但是我希望合并一些方法来存储这个结果,并查看程序运行的所有未来实例,而不是需要重新计算它每次(因此减少计算时间)。

我的第一个想法是简单地将结果存储在纯文本文件中并根据需要引用此文本文件来提取结果(如果结果存在于文件中),但考虑到文本文件,这似乎并不理想以某种方式丢失或手动更改,然后我们回到我们开始的地方。

我的问题是:有没有办法将这种类型的结果存储在程序本身中,这样下次运行程序时,它只是查找特定输入的结果而不需要暴力解决问题它已经解决了吗?

我意识到这个问题可能被认为过于宽泛,但我希望有人至少可以告诉我,我的方法是否是一种好的方法,如果不是,应该做什么,或者我应该研究什么?我不确定这类问题是否有实际名称。

1 个答案:

答案 0 :(得分:4)

  

有没有办法在程序本身中存储这种类型的结果,以便下次运行程序时

没有

当程序终止时,它的内存是空闲的,所有数据都是空闲的。

因此,如果您确实要存储这些计算结果,则需要使用文本或二进制文件。如果文件被修改或删除,请使程序捕获该情况并重新计算。这是合乎逻辑的,因为你不希望文件被定期删除/损坏,我想。

你甚至可以使用数据库,但这可能是一种矫枉过正的恕我直言。

但是,您所描述的内容考虑了动态编程和记忆,您可能需要查看这些术语,看看是否可以从中受益。