2017-05-29 1 views
-3

Étant donné un ensemble de I = {0,1,2,3,4}, mon code produit des routes optimales réalisables et les résultats sont les suivants: x [0,2 ] = 1, x [2,4] = 1, x [4,3] = 1 (signifiant aller du nœud 0 au nœud 2 puis de 2 à 4, puis de 4 à 3) et restant x [i, j] = 0 (x [0,1] = 0, x [0,3] = 0, x [2,3] = 0, ...).Obtenir une liste fusionnée conditionnelle de listes disjointes en python

Ce que je dois une liste unique comme ceci: FinalRoute = [0,2,4,3] qui montre le même concept dans une seule liste.

J'ai essayé d'ajouter ces X où x [i, j] = 1 à FinalRoute mais je n'arrive pas à comprendre l'ordre des nœuds visités. Est-il possible de créer une liste unique (FinalRoute) en ajoutant x [i, j] s dans l'ordre visité?

+0

Huh? .......... –

+0

Hein? x2 ....... – Wonka

+0

Je pense que je ne peux pas expliquer le problème clairement! Je veux une liste comme [0,2,4,3] (signifie visiter les nœuds 0,2,4 et 3 dans l'ordre) DONNÉ que j'ai les listes suivantes en main: x [0,1] = 0, ** x [ 0,2] = 1 **, x [0,3] = 0, x [0,4] = 0, x [1,2] = 0, x [1,3] = 0 et x [1,4 ] = 0, x [2,1] = 0, x [2,3] = 0, ** x [2,4] = 1 **, x [3,1] = 0, x [3,2] = 0, x [3,4] = 0. x [4,1] = 0, x [4,2] = 0, ** x [4,3] = 1 ** – MASOUD

Répondre

0

Je ne sais pas ce que x [0, 2] est en python, mais en supposant que vous avez une liste 2 dimensions, où vous faites référence à des valeurs comme x [0] [2], non x [0, 2] et x [0] [2] == 1 signifie que vous allez de node0 à node2, voici une solution possible:

matrix = [[0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 0, 0, 0], [0, 0, 0, 1, 0]] 

path = [] 
node = 0 
while node is not None: 
    path.append(node) 
    node = matrix[node].index(1) if 1 in matrix[node] else None 

print(path) 
+0

Merci Joe. Cela semble une manière sage de faire ceci; Cependant, vous avez créé une matrice par observation (très probablement). Comment puis-je automatiser la création d'une liste comme une matrice? – MASOUD

+1

Je ne comprends pas ce que vous demandez. Ma matrice n'est qu'un exemple, je suppose que votre code produit quelque chose comme ça et ensuite votre problème est de savoir comment parcourir la matrice pour obtenir le chemin que je vous ai donné. Si ce n'est pas ce dont vous aviez besoin, alors spécifiez ce dont vous avez besoin plus précisément, idéalement sur un exemple. –