我可以从一系列"动作"中进行选择,每秒执行一次.列表中的每个动作都有一个表示它值多少的数值,还有一个代表其"冷却时间"的值 - 我再次使用该动作之前必须等待的秒数.列表可能如下所示:
因此在这种情况下,ABA的总值将为(1 + 1.5 + 1)= 3.5,这是可以接受的,因为A的首次使用发生在1秒,最后一次使用A发生在3秒,然后这两者之间的差异大于或等于A的冷却时间,2秒.订单AAB不起作用,因为你只做了一秒钟,低于冷却时间.
我的问题是尝试优化使用操作的顺序,最大化一定数量的操作的总价值.显然,如果你只使用一个动作,最佳顺序是做动作D,结果总值为3.两个动作的最大值来自做CD或DC,结果总值为5.当您执行10或20或100个操作时,会变得更复杂.我找不到一种方法来优化动作的顺序而不强制它,这使得复杂性成为指向要优化顺序的动作总数的指数.总共大约15次变得不可能.
那么,有没有办法找到最少的复杂度的最佳时间?这个问题有没有被研究过?我想可能会有某种加权图形类型的算法,但我不知道它是如何工作的,更不用说如何实现它了.
对不起,如果这是令人困惑的 - 它在概念上有点奇怪,我找不到更好的方法来构建它.