首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字解扰复杂度类

字解扰复杂度类
EN

Stack Overflow用户
提问于 2015-07-17 16:47:44
回答 3查看 118关注 0票数 3

我在复杂类和相关概念领域的经验并不丰富。但是,输出给定的加扰词是否是真正的英语单词的任务是P问题还是NP问题呢?(如果这有意义的话)我看到的所有程序都会输入并生成单词的所有排列,然后将所有的排列与字典中的每个单词进行比较。如果有另一种算法采取了一种不同的、更有效的方法呢?这会改变问题的类复杂性吗?对不起,如果我使用的术语不正确

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-17 17:28:08

你不需要生成所有的排列。只需计算每个字母出现在单词中的次数并比较计数,或者对每个单词的字母排序,然后比较它们。这些运算都是多项式的,所以在P。

票数 4
EN

Stack Overflow用户

发布于 2015-07-17 16:51:20

生成具有k的单词的排列必然具有指数复杂性,因为有k!排列,算法需要创建所有的排列。但是,使用称为哈希表的数据结构可以使查找部分更高效,这允许在几乎恒定的时间内执行查找。

票数 1
EN

Stack Overflow用户

发布于 2015-07-17 17:42:28

英语单词的数量是有界的,因此很明显,任何英语单词的可能长度都是有界的,所以从技术上讲,您的问题在固定时间内是可以解决的(尽管常数很大)。如果你把你的问题改写成这样,你会得到一本字母表上任意长的字典,然后你想要确定答案的查询词,那么事情就变得更有趣了。然后,@fbg给出的答案可能是最好的方法;散列每个字母出现次数的元组(例如,按某种排序顺序取字母),对于字典中的每个单词,然后如果给您一个加扰词并执行相同的哈希操作,您可以非常快地判断您的查询加扰词是否可以被“解密”以给出解决方案,否则字典中就没有解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31480811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档