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