2 树木和Levenshtein距离的高效diff算法 我最近阅读了有关在树间进行区分的问题的摘要,这使我对了解此问题的最新状态感兴趣。 另外,假设您允许的编辑操作之间是传统的添加/删除节点,您在编辑内容中添加了复制/移动子树的扩展操作,这是否使问题(寻找最佳差异)更容易或更难? 20 ds.algorithms tree edit-distance
1 在亚线性空间中编辑距离 使用输入大小为次线性的工作空间来计算相同长度的两个字符串之间的精确编辑距离最著名的复杂度是什么?我假设输入以某种只读格式存储。这是先前研究的问题吗? 为了使问题更具体一点,空间怎么样,其中是每个输入字符串的长度。Θ(n−−√)Θ(n)\Theta(\sqrt{n})nnn 编辑。根据David Eppstein的回答,似乎一个好问题是,是否可以在多项式时间和空间。任何下限也将很有趣。Θ(n−−√)Θ(n)\Theta(\sqrt{n}) 19 ds.algorithms edit-distance space-time-tradeoff
3 编辑两个分区之间的距离 我有两个分区,[1…n][1…n][1 \ldots n]正在寻找它们之间的编辑距离。 这样,我想找到从分区A到分区B所需的节点到不同组的单个转换的最小数量。 例如,从{0 1} {2 3} {4}到的距离为{0} {1} {2 3 4}2 搜索之后,我发现了这篇论文,但是a)我不确定他们是否考虑了在他们距离内的组的排序(我不在乎)b)我不确定它是如何工作的,c)没有参考。 任何帮助表示赞赏 17 ds.algorithms edit-distance lattice
2 差异,补丁和合并的类别理论处理? 是否存在一类补丁,大致类似于以下内容: 对象是一些基本字母中的字符串 态射是字符串之间的编辑脚本(“ diff”或“ patches”) 我对以下问题感兴趣: 是否存在最小编辑脚本的绝对概念?也许补丁类别丰富了PO集? 被合并的补丁的分类pushout? 如何将其从字符串推广到树(文件系统或代数数据类型)? 14 ct.category-theory edit-distance
2 通过移动操作编辑距离 动机:合著者编辑手稿,我希望看到这些编辑的清晰摘要。如果您同时移动文本(例如,重新组织结构)并进行本地编辑,则所有类似于“ diff”的工具都将无用。真的很难做到正确吗? 定义:我想找到最小的编辑距离,其中允许的操作是: “便宜”操作:添加/更改/删除单个字符(通常的Levenshtein操作), “昂贵”:操作:将子字符串移动到新位置(任何字符串,,,)。一b Ç dabcd↦acbdabcd↦acbdabcd \mapsto acbdaaabbbcccddd 给定两个字符串和以及整数和,我想解决以下问题:ÿ ķ ķxxxyyykkkKKK 您最多可以使用廉价操作和最多昂贵操作将转换为吗?ÿ ķ ķxxxyyykkkKKK 问题: 这个问题有名字吗?(在序列比对的背景下,这听起来像是一个非常标准的问题。) 难吗? 如果比较困难,是否可以使用作为参数来处理固定参数?KKK 有高效的近似算法吗?(例如,如果存在具有廉价操作和昂贵操作的解决方案,则找到一个最多具有便宜和昂贵操作的解决方案。)2 K k K2k2k2k2K2K2KkkkKKK 我试图看一下Wikipedia中列出的字符串指标,但是没有一个看起来正确。 13 ds.algorithms reference-request parameterized-complexity string-matching edit-distance
2 空间复杂度以计算Levenshtein编辑距离的最佳字符串对齐方式 如果给定两个大小分别为n1n1n_1和字符串n2n2n_2,则标准的Levenshtein编辑距离是通过具有时间复杂度O(n1n2)O(n1n2)O(n_1 n_2)和空间复杂度的动态算法来计算的O(n1n2)O(n1n2)O(n_1 n_2)。(可以根据编辑距离进行一些改进ddd,但我们不对d做任何假设dddO(max(n1,n2))O(max(n1,n2))O(\max(n_1, n_2)) 但是,如果您想获得最佳编辑脚本的实际编辑,是否可能比内存使用情况做得更好,可能会花费运行时间?O(n1n2)O(n1n2)O(n_1 n_2) 12 cc.complexity-theory dynamic-algorithms edit-distance space-time-tradeoff
4 两个单词之间的最短编辑次数 我正在寻找一种数据结构和一种算法来计算将一个单词转换为另一个单词所需的最小更改数量,假设两个单词作为输入,其中唯一允许的更改是 在其中一个末端添加一个字母(例如AB-> ABC), 复制并连接整个单词(例如,ABC-> ABCABC), 切成两个词(重复动作的对偶,ABCABC-> ABC + ABC), 删除字母之一(例如,ABC-> AC),然后 重复字母之一(例如,ABC-> ABBC)。 例如,从ABC到BCBC的最小移动顺序是ABC-> BC(删除A)-> BCBC(重复)。 我没有计算机科学背景。也许这是一个众所周知的问题,但是我的Google搜索没有给我任何帮助。 您知道一些相关的,定义明确的问题吗? 编辑:正如安东尼·拉巴雷(Anthony Labarre)的答案所建议的那样,我阅读了一些有关摆球置换/排列问题的论文,该问题与上述问题相似。有人知道这个问题吗?这相关吗? 11 graph-algorithms ds.data-structures edit-distance
2 均质字符串的复杂性 动机:在开发用于数据版本控制的工具时,我们最终提出了“区分”两组整数的算法,方法是提出一系列将一组整数转换为另一组的转换。我们能够将这个问题简化为以下非常自然的问题,该问题似乎具有编辑距离,通过交换分组和最小公共字符串分区的连接。 问题:我们给了一个字符串,即一个字母序列,我们的目标是以最小的成本将其 均匀化。也就是说,我们需要重新排列序列,以使所有相似的字母彼此相邻。 唯一允许的操作是拾取一个相似的字母子序列,然后将该子序列移动到任何位置,这将花费我1个单位。 表征此问题的复杂性的任何帮助将不胜感激! 范例: aabcdab:输入 bcd aa ab:将第一个aa移到“ d”之后的位置之后 b bcdaaa:将结尾的b移动到第一个位置后 由于生成的字符串是同质的,因此成本为2。 请注意,我们对输出没有任何限制:只要它是同质的,我们就不需要确保任何特定的顺序。 10 cc.complexity-theory ds.algorithms reference-request string-matching edit-distance