【发布时间】:2019-02-14 13:03:18
【问题描述】:
我有一个算法问题,我有许多无序元素集,我需要找到通过所有这些集合的最短路径(集合的有序组合)。可能有数千套。
例如,假设有以下 4 个无序集:
A=abcdefg
B=cd
C强>=abch
D=defi
最短路径大小为 11。
一种可能的解决方案是:
P=CADB=habcgdeficd
|P|=11
请注意,集合可能与路径中的相邻集合共享元素!
也可能存在属于不同集合的重复元素(如上例中:'c' 和 'd' 在 P 中重复,通过将 B 添加到 加元)。
请提供算法以找到所描述的最短路径。
谢谢!
【问题讨论】:
-
虽然很有趣,但我认为这个问题可能更适合 MathExchange(甚至是 MathOverflow)。另外,我怀疑这个问题是否存在有效的解决方案。
-
我倾向于认为这个解决方案将是非多项式的。假设您可以使用一些预先计算在
O(1)中回答“这些集合有多少共同元素”的问题。现在把这个每一个集合放在一个图中,你有一个click,其中每条边都是这个查询。您需要找到一条经过所有顶点并具有最大交叉点的路径。我不确定,但我认为是NP hard。
标签: algorithm graph-theory set-theory