代码之家  ›  专栏  ›  技术社区  ›  peoro

“相邻”串的构建图

  •  2
  • peoro  · 技术社区  · 14 年前

    我有一组字符串,需要建立一个图,其中字符串是节点,并且在任意一对 相邻 串。

    到字符串 A B 据说是 相邻 如果通过添加、删除或替换 (在任何位置)你得到 .

    例如 scar car 相邻(移除 s 疤痕 )也是。 汽车 far (更换 c 具有 f )而且也是如此 远的 farm (添加 m )

    在不到 O(n^2) ?

    2 回复  |  直到 14 年前
        1
  •  6
  •   jason    14 年前

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

    (注意 n 我可以找到一个字母表和一组单词 n 单词是邻接的,图表是完整的。)

        2
  •  5
  •   Dr. belisarius    14 年前

    我认为这是不可能的。

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

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

    所以你需要O(n^2)操作来设置最坏情况下的边缘…不管你需要多少个比较或者循环,你都不能更好。