У меня есть несколько упорядоченных списков. К сожалению, порядок элементов не является простым буквенным или числовым сравнением, иначе это тривиально. Итак, у меня есть что-то вроде:
List #1 List #2 List #3
groundhog groundhog easter
mothersday mayday mothersday
midsummer laborday halloween
christmas
И из этого я могу понять, чем сурок ‹Mothersday, но связь сурка и пасхи неизвестна. Я гарантирую, что порядок элементов от списка к списку является согласованным. (т.е. независимо от того, в каком списке оно встречается, пасха всегда предшествует Хэллоуину)
Но мне нужен новый упорядоченный список, который представляет каждый элемент в других списках только один раз, сохраняя все известные выше отношения:
groundhog
easter
mayday
mothersday
midsummer
laborday
halloween
christmas
Однако следующий список также вполне актуален:
easter
groundhog
mothersday
mayday
midsummer
laborday
halloween
christmas
Я ищу довольно быстрый универсальный алгоритм, который я могу использовать для упорядочивания N списков таким образом. (Рабочий код на C #, конечно, плюс, но не обязательно.)
У меня есть решение, которое работает, но его O (N ^ 2) и собака с даже скромными наборами данных.