最长的单词序列,没有重复的字母

时间:2015-03-12 17:17:55

标签: algorithm sorting sequence

我有一个单词列表。我需要选择最长的序列,没有重复的字母。例如,我的话是:

ab
cd
cxyz

最长的序列是(6个字母):

ab-cxyz

订单不是非常明显的。我正在寻找一种有效的方法来选择这样一个序列(至少1000个单词的列表)。

我尝试使用Knapsack problem的解决方案来适应这个问题,但它给出了错误的结果。

1 个答案:

答案 0 :(得分:1)

您可以创建一个这样的图形:对于每个单词,您创建一个节点,如果它们有一个共同的字母,则用边连接两个单词。您还可以为每个节点分配权重,即单词的长度。您现在正在搜索一组独立的节点,例如一组在它们之间没有边缘的单词。您还需要此独立集合才能拥有最大权重。

这是maximum weight independent set problem的一个实例,不幸的是,这是一个没有任何已知良好近似算法的NP难问题。