0

特定の時刻 {t1, ..., tk} (k <= n) で発生する n 個のイベント {v1, ..., vn} があり (同時に複数のイベントが発生する可能性があります)、リストする必要があります。これが発生する可能性があるそれぞれの方法。

たとえば、2 つのイベントがある場合、次のようになります。

{v1 < v2}、{v2 < v1} (2 回)

{v1 = v2} (1回)

3 つのイベントがある場合、3 つの異なる時刻を持つ 6 つの順序すべてを持つことができます。

{v1 = v2 < v3}、{v1 = v3 < v2}、{v2 = v3 < v1}、{v1 < v2 = v3}、{v2 < v1 = v3}、{v3 < v1 = v2} (2 回) )

{v1 = v2 = v3} (1 回)

たとえば、{v1 = v2 < v3} は {v2 = v1 < v3} と同等であるため、可能なすべてのグループ化は実際には必要ありません。

とにかく k=n の場合の n 個のイベントのすべての順列を生成する必要があると考えています。これを行う方法があるので、おそらくこれに加えて可能なカテゴリを生成し、次に重複していますが、たとえば {v3 = v4 = v2 < v1 = v6 < v5} が以前に効率的に受け入れたものの重複であるかどうかを確認する方法がわかりません。

おそらく、順列のリストから操作するときはより体系的になり、これまでにアーカイブしたリストを再確認せずに重複を削除する方法を見つけることができるでしょうか?

適度な数のイベントでも妥当な時間内にこれがうまくいかないことはわかっていますが、できるだけ高くしたいと思います.6でも大丈夫です.8または10でも良いでしょう.

私はMATLABを使用していますが、誰かがそのような問題に最適であると提案する言語を追求するつもりです.一般的な言語に依存しない方法論に関するアドバイスは大歓迎です.

4

1 に答える 1