Как найти все перестановки однонаправленного пути между узлами / последовательностью? - PullRequest
0 голосов
/ 27 февраля 2020

[Python 3.7] - ВОЗМОЖНОСТИ ПОСЛЕДОВАТЕЛЬНОСТИ

При попытке автоматизировать документацию из внутреннего кода, у меня есть «Последовательность» , которая состоит из steps (узлы) и transitions (пути) . Я хочу просмотреть все возможности и, следовательно, сохранить все возможности во вложенном списке:

[[seq_1],[seq_2],[seq_3]...[seq_n]

Это наглядное представление того, с чем я работаю и что я хотел бы программно решить:

EXAMPLE:                              A________
                                      |   |    |   [A can have two paths to B]
                                      |___|    |
                                    __B        |
                                   |  |________|
                                   |  |  ^[This would connect to C from A]
                                   |  C
                                   |__|
                                      |
                                      D

Это должно быть результатом:

ПРИМЕЧАНИЕ: A1, A2 обозначает разные пути

[[A1,B,C,D],[A2,B,C,D],[A1,B,D],[A2,B,D],[A,C,D]]

Моя первая попытка состояла в том, чтобы назначить каждому узлу массив необязательных узлов и использовать for i in x l oop для прохождения каждой комбинации, я обнаружил, что это не очень динамично c и неэффективно из-за пропуск путей - я мог бы смягчить это с помощью условных операторов if, но я бы предпочел сначала изучить больше динамических c вариантов.

Это то, что я имел в виду в качестве своей первоначальной попытки (в псевдокоде):

Option Connections of Nodes:
A:[B1, B2, C]
B:[C, D]
C:[D]

Start at A:(and add to array)
   Loop through each possibility: (add to second element of array)
       loop through each possibility of A's possibility: (add to third element of array)
           ...
             after reaching D, save array and create next array.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...