用于在动态规划算法中将集合"map"状态的数据结构



我正在编写一个算法来确定构建N个Building对象的最佳顺序。当然,每栋建筑都有自己的特点(如成本、生产、施工时间等)。也存在基于这些特点的建筑对象的总排序。

在我的动态编程中的某个时刻,我需要一个自适应的数据结构来检索迄今为止达到的最佳结果,以构建k(k<=N)Building。我需要这个数据结构以某种方式将k栋建筑的集合"映射"到迄今为止的"最佳状态"。

我可能会使用简单的HashMap,但这意味着要重复大量包含相同元素的集合,而不考虑[b1,b2]是[b1,b2,b3,b4]的子集合。

我希望我在这一点上说得足够清楚,我感谢你的帮助:)

如果不知道解决方案的结构,就不可能回答。

但是,如果k的解可以通过将建筑b插入位置j从(k-1)的解中获得,那么你可以简单地使用散列映射将整数i映射到i的解和i-1的解之间的"delta",用一对表示。

但是,必须明确处理delta可能很可怕,因为您需要进行遍历才能获得解决方案。您可以通过让delta知道引用的delta来解决这个问题(即,在delta for k的构造函数中传递(k-1)的delta),然后公开执行实际遍历的方法getSolution()

您可以将此想法扩展到类似的解决方案结构。

您可以使用LinkedHashSet作为密钥,其值是按迭代顺序构建集合中包含的Buildings的成本。这有点像黑客,但根据hashCode和equals,它应该可以工作。如果你更喜欢更明确地使用成本和构建顺序的集合到对的哈希图。

如果您的解决方案看起来像ABC、cost1、ABCD、cost2,请创建一个链表d->c->b->a。将解决方案存储为成本元组,并引用解决方案中包含的最后一个元素(列表中最早的)

相关内容

  • 没有找到相关文章

最新更新