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个可能的边。必须确定每个可能的边是否在图形中。在最坏的情况下,必须明确检查每条边。