Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm “建筑图”;相邻的;串_Algorithm_String_Language Agnostic_Graph - Fatal编程技术网

Algorithm “建筑图”;相邻的;串

Algorithm “建筑图”;相邻的;串,algorithm,string,language-agnostic,graph,Algorithm,String,Language Agnostic,Graph,我有一组字符串,需要构建一个图,其中字符串是节点,任何一对相邻字符串之间都有一条边 如果通过添加、删除或替换A(在任何位置)的单个字符而得到B,则表示字符串A和B相邻 例如scar和car是相邻的(从scar中删除s),car和far(将c替换为f)也是相邻的,far和farm(添加m) 有没有可能在少于O(n^2)的时间内做到这一点?我认为这是不可能的 在最坏的情况下,所有的单词都是邻居。例6单词={cat,fat,rat,mat,sat,at} 在本例中,需要建立(n)*(n-1)/2=6*

我有一组字符串,需要构建一个图,其中字符串是节点,任何一对相邻字符串之间都有一条边

如果通过添加、删除或替换
A
(在任何位置)的单个字符而得到
B
,则表示字符串
A
B
相邻

例如
scar
car
是相邻的(从
scar
中删除
s
),
car
far
(将
c
替换为
f
)也是相邻的,
far
farm
(添加
m


有没有可能在少于
O(n^2)
的时间内做到这一点?

我认为这是不可能的

在最坏的情况下,所有的单词都是邻居。例6单词={cat,fat,rat,mat,sat,at}

在本例中,需要建立(n)*(n-1)/2=6*5/2=15条边


所以你需要O(n^2)运算来设置最坏情况下的边。。。无论您需要多少比较或循环,您都无法做到更好。

您必须计算邻接矩阵中的
n(n-1)/2=O(n^2)
条目(如果是1,条目为1,否则为0)。这是无法避免的


(请注意,给定
n
,我可以在该字母表上找到一个字母表和一组单词,这样所有
n
单词都是相邻的,图形就完整了。)

由于编辑距离是一个距离,三角形不等式成立。我认为在一般情况下,你可以用距离递归地划分空间,这就是我完整图形示例的要点。这是最坏的情况。图形不必存储为邻接矩阵。@Nabb:你的观点是什么?有
n选择2个
可能的边。必须确定每个可能的边是否在图形中。在最坏的情况下,必须明确检查每条边。