我有一组事件列表。事件总是以给定的顺序发生,但并非每个事件都总是发生。这是一个示例输入:
[[ do, re, fa, ti ],
[ do, re, mi ],
[ do, la, ti, za ],
[ mi, fa ],
[ re, so, za ]]
输入值没有任何固有顺序。它们实际上是“创建符号链接”和“重新索引搜索”之类的消息。它们在单独的列表中进行排序,但是无法仅查看第一个列表中的“fa”和第二个列表中的“mi”并确定哪个在另一个之前。
我希望能够接受该输入并生成所有事件的排序列表:
[ do, re, mi, fa, so, la, ti, za ]
或者更好的是,关于每个事件的一些信息,比如计数:
[ [do, 3], [re, 3], [mi, 2],
[fa, 2], [so, 1], [la, 1],
[ti, 1], [za, 2] ]
我在做什么有名字吗?有公认的算法吗?如果这很重要,我正在用 Perl 写这个,但伪代码会做。
我知道,鉴于我的示例输入,我可能无法保证“正确”的顺序。但我真正的输入有更多的数据点,我相信只要有一点聪明,它就会有 95% 是正确的(这真的是我所需要的)。如果没有必要,我只是不想重新发明轮子。