Создание уникального списка путей на соединительных узлах с фиксированной длиной хода узла - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть большое количество узлов, все эти узлы соединены путями, и каждый узел соединяется с каждым другим узлом, в настоящее время моя живая система имеет в общей сложности 1695 узлов для уникального числа путей 1 397 550. Я пришел к этому числу со следующим уравнением:

paths = (n (n - 3) / 2) + n

Я могу проходить эти узлы в любом порядке, пока я не касаюсь более 85 узлов, то есть я могу начать с любого узла, пройти до 83 и заканчивая sh при любом путешествии в общей сложности 84 пути, и я не должен путешествовать по любому пути, который был пройден ранее.

С каждым путешествием, охватывающим 84 пути, я должен быть в состоянии покрыть каждый путь в 16 638 поездках моя задача состоит в том, чтобы создать полный список поездок, охватывающих все эти пути.

Насколько я уже использовал меньшие числа для теста, и пока он не работает, и я Буду честен, это довольно ужасно. Кто-нибудь сможет мне помочь. Спасибо

total_node_paths = 0
nodes_in_journey = 4
number_of_journeys = 0

used_paths = []
created_journeys = []
current_journey = []

customer_list = []
for i in range(0, 10):
    customer_list.append(i)

total_node_paths = len(customer_list)

number_of_journeys = int((((total_node_paths - 3) / 2) * total_node_paths + total_node_paths) / (nodes_in_journey - 1))

use_path = False

for i in range(0, number_of_journeys):
    for p in range(0, nodes_in_journey):
        for customer_from in customer_list:
            for customer_to in customer_list:
                if customer_from != customer_to and \
                        str(customer_from) + '-' + str(customer_to) not in used_paths and \
                        str(customer_to) + '-' + str(customer_from) not in used_paths and \
                        customer_from not in current_journey and customer_to not in current_journey:
                    used_paths.append(str(customer_from) + '-' + str(customer_to))
                    used_paths.append(str(customer_to) + '-' + str(customer_from))
                    if len(current_journey) == 0:
                        current_journey.append(customer_from)
                    current_journey.append(customer_to)
                    use_path = True
                if use_path:
                    break
            if use_path:
                break
        use_path = False
    print(current_journey)
    created_journeys.append(current_journey)
    current_journey = []
...