Меня интересует, какой алгоритм будет иметь наименьшую сложность по времени для выполнения следующей задачи:
С учетом списка кортежей, таких как [(A, B), (B, C), (C), D), (DE), (A, D), (E, A), (A, C)], найдите последовательности, такие как [ A , B, C, D, E, A ] или [ A , D, C, B, A ], которые начинаются и заканчиваются одной и той же буквой и образуютсяобъединение пар, которые разделяют хотя бы один элемент кортежа. Примечание: (A, B) считается таким же, как (B, A), точно так же, как (A, C) такое же, как (C, A), поэтому его можно использовать для создания обеих пар ( C , B, A, C ) или ( A , B, C, A )
Важным ограничением являетсяимея ограничение по длине. Например, убедитесь, что последовательность не длиннее 7 элементов.
Я пытался решить эту проблему, расширяя дерево по одному элементу за раз, пока не будет достигнута максимальная длина 7, но мне любопытно, есть ли лучшие подходы к решению этой проблемы. Большое спасибо и с нетерпением ждем ваших замечательных идей!