优化整数子集链接的算法

时间:2018-04-09 13:30:49

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

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

问题是:是否存在尽可能优化这种链接的算法?

我已经在数学优化的几个领域做过一些研究,例如线性规划,整数规划,组合优化和运算研究,但这些算法似乎都没有涵盖这个问题。你们有没有任何想法,领域或算法来优化这些问题,让我朝着正确的方向前进?

例如:

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

[[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之间的链接。现在这些集合将如下所示:< / p>

[[ 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 ]],表示每个值都已关联。该解决方案需要四个步骤。

当拥有较大的集合时,所有子集都可以链接到另一个集合的所有其他子集,但这将导致许多步骤。是否存在优化步骤数的算法?

1 个答案:

答案 0 :(得分:0)

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

注意:以下输入/输出示例是编辑。我不同意拒绝投票,并且我希望每个人在投票批准或拒绝任何编辑之前仔细阅读。

这将开启关于非精心投票的投票的讨论。仍然是一个建设性的讨论,但这不是它的位置。

  

考虑以下示例:使用第一个列表的第3个子集比使用第2个和第5个子集要便宜(使用子集少)。 example of optimizing a linking

算法

  1. 定义较小的列表:列表#2
  2. 创建列表#2的所有子列表中所有项目的计数列表。
  3. 您将拥有此计数清单{[item:count]}:{[1:3],[2:2],[3:1],[4:2],[5:1]}。< / LI>
  4. 现在,您的问题不是链接(即索引依赖)子集。它是找到列表#1的最小数量的子集。他们的物品会计算点票清单。
  5. 对每种可能的组合进行简单的尝试肯定会得到答案..但我认为从第4点开始,我们可以想到一个更好的解决方案,其中包含一些条件来最小化组合尝试。
  6. 希望这个建议有助于提供寻找解决方案的暗示。