一种基于有限信息生成序列的算法

时间:2016-05-19 18:07:40

标签: algorithm graph sequence

我们说我们有一组字母,例如{A,B,C,D,E,F}我们希望按顺序排列,受一组规则约束。

我们不知道序列是什么样的,但我们确实知道序列中有哪些字母。我们有关于字母对的排序的信息。是否有任何众所周知的算法或方法可以找到满足给定信息的可能序列?

例如,我们说我们有以下信息:

  • 序列中有6个字母{A,B,C,D,E,F}
  • E来自B
  • C来自E
  • A来自D
  • F来自B
  • D来自E

满足这些标准的可能序列是什么?

2 个答案:

答案 0 :(得分:2)

构建有向图G(V,E)
V = {a,b,c,d,e}你的信件 E = (x,y) for any pair where x comes before y.

然后使用拓扑排序(read more here)(visualization here

答案 1 :(得分:0)

使用depth-first search(DFS)可以解决此问题。

在您的示例中,问题的初始状态为

------ abcdef
BE
EC
DA
BF
ED

也就是说序列中没有添加任何字母,其余可用字母为abcdef,其余规则为" B必须在{{1}之前}" 等。

规则右侧的所有字母都不能被选为下一个字母。因此E是第一个字母的唯一选择。新问题状态是

B

B----- acdef EC DA ED 有关的规则已得到满足,无其他用途。第二个字母必须是BE,因为F出现在规则的右侧。假设DFS首先探索ACD,则新状态为

E

允许的选择为BE---- acdf DA ,因为CDF仍在规则的右侧。选择A

C

允许的选择是BEC--- adf DA 。选择DF

D

选择BECD-- af ,然后选择A,顺序完成

F

在达成解决方案后,DFS必须返回并探索其他选项。例如,选择BECDAF 而不是F作为第二个字母。