algorithm - 从字符串对中查找未知排列

标签 algorithm permutation graph-theory matching bipartite

假设我有一堆字符串对,代表“之前”和“之后”的值。举个简单的例子:

 aaaabbbb -> aabbbbaa
 abbbbbbb -> bbbbbbab
 aaabbbaa -> abbbaaaa
 cccccccc -> cccccccc

我如何确定一种可能的排列可能是 [ 6, 7, 0, 1, 2, 3, 4, 5 ],或者换句话说,所有字符都向左旋转了两个空格?

关于这个问题有一些文献吗?此外,如果列表中的某些对不完全匹配,是否会有“最可能”排列的概念?除了左右移动之外,还能找到更复杂的排列吗?

最佳答案

你需要了解graph theory的基本概念和 matching .

假设 before 的每个位置都是左节点,after 的每个位置都是右节点。 对于左位置 i 和右位置 j,连接一条边从左节点 i 到右节点 j,当且仅当 x[i] 在所有对 x -> y 中等于 y[j]。 那么问题就变成了找到这个二部图的完美匹配,这是一个已解决的问题。

“最有可能”排列会更难,它需要“最有可能”的确切定义。您想满足尽可能多的对吗?还是更多匹配的字符是首选?

关于algorithm - 从字符串对中查找未知排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42127560/

相关文章:

java - 俄罗斯娃娃 - 找到剩下的最少个娃娃

algorithm - 树中最长路径的公共(public)段

algorithm - 离散余弦变换公式差异

algorithm - 将排名排列索引到其他排名排列

algorithm - 在有向图中查找所有循环

确定达到分数所需的投票顺序的算法

python - 排列,但有一些数字按顺序排列

Java:生成幂集

Javascript-图遍历-返回最短路径

matlab - 如何判断一个图是全连通的?