【发布时间】:2017-07-26 22:54:26
【问题描述】:
我有一个从某些数字生成的配对列表。我的问题与我已经弄清楚的如何计算我的配对无关,而是最大化可能的配对总数。
例如:
[1,3,7,19,13,21]
结果
{1:[19,13,21],
3:[7,19],
7:[3,19,13],
19:[1,3,7,21],
13:[1,7,21],
21:[1,19,13]}
1 可以与 19、13 或 21 配对。3 可以与 7 或 19 配对,依此类推。我的目标是最大化独特的配对,这样我在没有配对的情况下剩下的点数最少。在这种情况下,您可以有 1-13、3-7 和 19-21,这样剩下 0 个。但是你也可以做 1-19、7-13,这样 3 和 21 就没有搭档了。
以前有没有处理过这个问题的算法?我曾想过将它们放入图表中并试图找到最大的哈密顿路径,但这似乎几乎是不可能的。我在 python 中这样做,所以我有字典和列表,我一直用作容器。
编辑:一个数字是否可以配对的条件是它们是否与该配对形成一定的模式。给定两个数字 x 和 y,它们遵循这个模式直到 x == y 或者它永远存在。如果 x
【问题讨论】:
-
原谅我这是一个愚蠢的问题,但是允许两个数字配对的条件是什么。例如,在您的上一个示例中,为什么不能 3 和 21 一对?
-
我添加了一个解释配对的编辑。
标签: algorithm python-2.7 graph-theory