2016-04-10 12 views
1

NetworkX kütüphanesini kullanarak bir grafik oluşturdum. , verilen bir kaynaktan ve belirli bir hedeften mümkün olan en kısa yolların bir listesini döndüren all_shortest_paths(graph, src, dest) kullandım (örneğin, düğüm 3 ve 4 arasında [[3,5,4]], [3,5,7 , 6,4]]). Deneme uğruna her iade edilen listeyi bir sözlükte saklamak istiyorum. Benim sorunum, bunu yapmak için Python sözlüğünü nasıl kullanacağım. Aşağıdaki senaryoyu kullanırsanız, komplike olacaktır: Anahtar src düğüm olacak ve değer önemli bir dest ve değer başka bir sözlük olduğu Python bir sözlüğe içeride sözlük anlamına gelmesi halindeFarklı anahtarlar için önerilen bir sözlük nasıl basitleştirilir

dict = {'n1':['n2':[n1,n3,n4,n2], 'n3':[n1,n7,n3]], 'n2':['n6':[n2,n6,n8,n10,n2]], ...} 

mümkün mü hedefe giden tüm olası yollar.

Yardımlarınız için teşekkür ederiz.

+2

"herhangi bir src düğümünden tüm komşularına giden yol" - ancak bir düğümden komşularına tek adımda geçebilirsiniz. Aksi takdirde komşu olmazlar. – user2357112

+0

Özür dilerim .. Hedefi komşu değil. Bu sabit .. –

cevap

1

Grafiğinizi bir bitişik matris olarak temsil edebilirsiniz. Bu, düğümleri temsil eden satır ve sütunların bulunduğu 1'lerin ve 0'ların büyüklüğünün (düğümlerin düğüm sayısı x sayısı) ve temsil edilen düğümlerin komşular olduğu bir satır ve sütunda 1'in bir girişi olan yalnızca 2 boyutlu bir dizidir. ve bu satır ve sütun tarafından temsil edilen düğümlerin komşu olmadığı bir 0.

Python'da grafiklerle kapsamlı bir çalışma yapmayı planlıyorsanız, NetworkX Python paketine bakmanızı kesinlikle öneririz. Bu http://networkx.github.io/ belgelenmiştir. Anaconda bilimsel Python dağıtımını kullanırsanız, NetworkX bununla birlikte gelir.

kaynak ve hedef düğüm tarafından kilitlenmiştir düğümün kısa yolları, bir sözlük olarak sonuç all_pairs_shortest_path() ve floyd_warshall() gibi NetworkX diğer yöntemler, daha vardır.

Ve all_pairs_shortest_path_length(), sonuç, kaynak ve hedef düğümü ile anahtarlanmış en kısa yol uzunlukları sözlüğü olarak döndürür.

Muhtemelen bunlardan biri sizin için işe yarayabilir?

+0

Bunun sebebi, bir src'den dest'e giden tüm en kısa yolların bir listesini veren 'all_shortest_paths (graph, src, dest)' yöntemini kullanıyorum. Bunu neden bir dict içinde saklamak istiyorum, bu yüzden neden bilmiyorum –

+0

Bu asıl sorudan biraz farklı, açıklığa kavuşturmak için düzenleyebilir misin? Grafiği veya en kısa yolları temsil etmek ister misiniz? – paisanco

+0

Teşekkürler. Haklısın. Soruyu yeni güncelledim. –

İlgili konular