イベントのリストのセットがあります。イベントは常に特定の順序で発生しますが、すべてのイベントが常に発生するとは限りません。入力例を次に示します。
[[ do, re, fa, ti ],
[ do, re, mi ],
[ do, la, ti, za ],
[ mi, fa ],
[ re, so, za ]]
入力値には固有の順序はありません。それらは実際には「シンボリックリンクの作成」や「検索の再インデックス」などのメッセージです。それらは個々のリストでソートされますが、最初のリストの「fa」と 2 番目のリストの「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% 正しいと確信しています (これだけで十分です)。必要がなければ、車輪を再発明したくありません。