TSP与Word Unscrambler

时间:2015-07-18 19:04:05

标签: complexity-theory

输出一个给定的扰乱单词是否是真正的英语单词的任务是否会成为旅行商问题的等同问题?众所周知的策略是生成给定单词的所有排列,并将它们全部与英语词典中的所有单词进行比较。该算法的时间复杂度为functionAddition:。我可以想象两者在一个重要方面有所区别:一旦你发现一个匹配一个单词的排列,就可以停止生成排列,而使用TSP你必须尝试不同的每个路径组合。但是,我编写了一个算法,它不是生成长度为 n 的给定单词的所有排列,而是对给定单词中的字母进行排序,并对字典中的单词执行相同的算法,然后比较两个排序的字符串(此方法100%的时间都有效)。我的算法使用默认的Java排序,经过研究,我发现它在- (IBAction)functionAddition:(id)sender { if ([self functionParseInput]) { [self displayInput]; [self addInputs]; [self displayOutput]; } } 运行。总的来说,我的程序在O(N!)运行,因为当n接近无穷大时,这个项增长最大。该算法在少于多项式时间内运行。 那么,如果问题是等价的,你不能使用类似的方法来解决TSP问题吗?这与P与NP有何关系? 很抱歉,如果其中任何一个没有意义,或者我没有正确使用术语,我不是那个经验丰富的领域

1 个答案:

答案 0 :(得分:4)

存在用于解决两个问题的相同复杂度的算法的事实并不一定意味着问题具有相同的复杂性,因为对于一个问题可能存在更有效的算法而对另一个问题不存在。

将不同问题的复杂性联系起来的正确方法是 reduction :如果你可以证明问题 A 的任何实例都可以转换为问题实例 B 以这样的方式,即转换实例的答案与原始实例的答案相同,然后问题 B 至少与问题 A <一样复杂< / em>(因为解决 B 的算法也可以解决 A )。如果你也可以反方向减少, A B 同样复杂。

在您的情况下,目前还没有将任意TSP问题转换为等效解扰问题的方法,因此(据我们所知)并非问题具有相同的复杂性。