【发布时间】:2014-10-09 07:43:44
【问题描述】:
这是我们在项目管理系统中用于从摘要中提取关键字的蛮力算法。该蛮力算法的时间复杂度是多少?是 NP-hard、NP-complete、在 NP 中还是在 P 中?
这是算法:
public static int search(String pattern, String text) {
int M = pattern.length();
int N = text.length();
for (int i = 0; i < N - M; i++) {
int j;
for (j = 0; j < M; j++) {
if (text.charAt(i+j) != pattern.charAt(j)) {
break;
}
}
if (j == M) {
return i;
}
}
return -1;
}
【问题讨论】:
-
标题语法不完全清楚,请复习...
-
在您的代码中,存在两个嵌套的 for 循环。如果 M 足够小或 M 在有限范围内变化,则时间复杂度为 N 阶。如果 M 变化很大,则时间复杂度为 (N * M) 阶。
-
我想知道像 NP hard(非确定性多项式)、NP 完全(非确定性、P 型(多项式)这样的类别)当我使用模式匹配的强力算法时,我的问题就出现了分析摘要或文本文档中的关键字...我如何确定算法将属于哪个类别???
标签: java string algorithm time-complexity np