Меня интересует только Python, но также будет оценено общее решение. У меня есть четное число узлов (скажем, 12 для конкретного примера):Поиск комбинаций пар (соединений)
[ 'a1', 'a2', 'a3', 'b1', 'b2', 'b3', «c1 ',' c2 ',' c3 ',' d1 ',' d2 ',' d3 ']
Каждый узел должен быть подключен к другому узлу, образуя 6 соединений (пары). Мне нужно выяснить, как найти все возможные комбинации соединений. Кроме того, 'a1'-'a2'
следует рассматривать так же, как 'a2'-'a1'
Некоторые мысли:
я могу получить список возможных
itertools.combinations(lst, 2)
, но узлы не подлежит повторному использованию. Скажем, соединение'a1'<->'a2'
должно устранить'a1'<->'a3'
из доступных вариантов, поскольку'a1'
уже используется.Я понятия не имею, если поиск даже применимо, как кажется, есть несколько проблем:
- там, кажется, нет (легкий, дешевый) способ отслеживать посещенные состояния
- решение всегда будет на день (нужно перемещаться по дереву всех вплоть до завершения всех соединений)
Вы хотите найти все возможные конфигурации соединений, не так ли? То есть список [[1,2], [3,4], ... [11,12]] представляет собой одну конфигурацию, и вы хотите найти все возможные такие списки. – jf328
Является ли это направленным или неориентированным графом? Например, a1-a2 такой же, как a2-a1? –
Да, это то, что я ищу, и a1-a2 такой же, как a2-a1 – dccharacter