【问题标题】:Algorithms for Optimization of Integer Subset Linking整数子集链接的优化算法
【发布时间】:2018-04-09 13:30:49
【问题描述】:

考虑将两组整数值划分为多个子集。这两组存在相同的一组值,但顺序和划分为子集不同。这个想法是将来自第一组的子集与来自第二组的子集链接起来,这样第一组的每个子集中的每个单独的值都链接到第二组的子集的相同单独的值。任何价值都不能与另外两个联系起来。在一个链接步骤中,可以在第一组的仅一个子集与第二组的仅一个子集之间链接多个值。目标是尽可能减少链接步骤。

问题是:是否有算法可以尽可能优化这种链接?

我在线性规划、整数规划、组合优化和运筹学等数学优化的几个领域做了一些研究,但似乎没有一个算法能涵盖这个问题。你们有什么想法、领域或算法来优化这些问题,让我朝着正确的方向前进吗?

例如:

具有两个子集的两组整数:

[[1, 2, 2] [2, 3, 3]]

[[1, 2, 3] [2, 2, 3]]。

现在,第一个链接集可以将第一个集 1[1] 的第一个子集与第二个集 2[1] 的第一个子集链接起来。

这是一个步骤,导致 1 - 1 - 1 和 2 - 1 - 1 之间的链接以及 1 - 1 - 2 和 2 - 1 - 2 之间的链接。现在集合将如下所示:

[[1, 2, 2] [2, 3, 3]]

[[1, 2, 3] [2, 2, 3]].

下一步可能是将 1[1] 与 2[2] 链接,导致 1 - 1 - 3 和 2 - 2 - 1 之间的链接,集合将如下所示:

[[1, 2, 2] [2, 3, 3]]

[[1, 2, 3] [2, 2, 3]]。

第三步可能是将 1[2] 与 2[1] 链接。结果:

[[1, 2, 2] [2, 3, 3]]

[[1, 2, 3] [2, 2, 3]]。

然后第四步可以将 1[2] 链接到 2[2]。结果:

[[1, 2, 2] [2, 3, 3]]

[[1, 2, 3] [2, 2, 3]],这意味着每个值都是链接的。此解决方案需要四个步骤。

当有更大的集合时,所有子集都可以链接到另一个集合的所有其他子集,但这会导致很多步骤。是否有一种算法可以优化步数?

【问题讨论】:

  • 我想我们可以在这里举个例子!
  • 希望这个例子能帮助你理解问题!
  • 我认为这与数学优化没有太大关系。我相信你只是想要一个数据结构来让搜索更容易/更快。
  • @ErwinKalvelagen:我认为您没有很好地阅读问题大纲。我想要达到的目标是优化链接步骤的数量,这绝对是一个数学优化。我不关心数据结构,也不关心速度,只要算法足够快,可以在合理的时间内解决问题。我希望你想重读这个问题,你可以指出某些方向/算法。
  • 在第 2 步中:为什么不将 1-1-2 与 2-2-1 和 1-1-3 与 2-2-2 连接?

标签: algorithm mathematical-optimization linear-programming integer-programming operations-research


【解决方案1】:

即使这不是答案,但我认为这是定义问题以找到解决方案的一步。

注意:以下输入/输出示例是一个编辑。我不同意拒绝投票,并且我敦促大家在投票批准或拒绝任何修改之前仔细阅读。

这将引发关于未仔细投票的讨论。仍然是一个建设性的讨论,但这里不是它的位置。

考虑以下示例:使用第一个列表的第三个子集比使用第二个和第五个子集成本更低(使用子集更少)。

算法

  1. 定义较小的列表:列表 #2
  2. 为列表 #2 的所有子列表中的所有项目创建一个计数列表。
  3. 您将拥有此计数列表 {[item:count]}:{[1:3], [2:2], [3:1], [4:2], [5:1]}。
  4. 现在,您的问题不是链接(即依赖于索引)子集。它是找到列表#1 的最小子集数。他们的项目将给出计数列表的计数。
  5. 对每种可能的组合进行简单尝试肯定会得到答案。但我认为,从第 4 点开始,我们可以想到一个更好的解决方案,其中包含一些条件以尽量减少组合尝试。

希望此建议有助于提示寻找解决方案。

【讨论】:

  • 非常感谢您提供可能的第一步的想法! (我还不能投票)定义子集确实可能是减少链接步骤数量的第一步,因为它将减少所涉及的子集的数量。接下来的两个步骤是使用这第一步:提出一种算法以最小化子集中所需的链接步骤数量,并找到一种算法以在没有蛮力的情况下找到可能的子集。不限制任何创造力:这是可能的第一步,但如果有人有其他想法,也非常欢迎!
  • @HdG,不客气。我只是想知道为什么我的编辑因为“推广产品”等非常奇怪的原因而被拒绝!和“与原始问题无关”!您会看到人们在没有阅读答案/cmets/edits 的情况下投票!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多