У меня есть набор списков событий.События всегда происходят в заданном порядке, но не каждое событие всегда происходит.Вот пример ввода:
[[ 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% правильно (это действительно все, что мне нужно).Я просто не хочу заново изобретать колесо, если мне не нужно.