2010-11-18 16 views
2

Bu kod, yönlendirilmiş grafikler için iki düğüm arasındaki bir yolu belirlemektir. piton yeni olmasıPython'un grafik teorisi makalelerindeki koddan bir soru

def find_path(graph, start, end, path=[]): 
     path = path + [start] 
     if start == end: 
      return path 
     if not graph.has_key(start): 
      return None 
     for node in graph[start]: 
      if node not in path: 
       newpath = find_path(graph, node, end, path) 
       if newpath: return newpath 
     return None 

, iki küçük ve önemsiz soru var: This kodudur. Umarım buna aldırmazsın.

Q1. Kodun ikinci son satırında if newpath: ne anlama geliyor?

Q2. Bu kod, yönlendirilen grafikte tüm olası yollarını veriyor mu?

Teşekkürler.

cevap

3

S1: Bu, find_path çağrısının gerçekten bir şey döndürüp döndürmediğini kontrol eder. Terimin hangi yönde yorumlanacağını öğrenmek için dil dokümanlarına bakın ve terimin türü başlangıçta boole değilse, yanlış olarak neyin yanlış olduğunu öğrenin. (Bu durumda, Hiçbiri false olarak değerlendirilmez).

S2: Hayır: bu işlev, baştan sona tam olarak bir yol verir.

+0

Teşekkür ederiz user507787. Hangi yolun olacağını söyleyebilir misin? Anahtarın ilk karşılaşılan değerinden mümkün olan yol bu mu? – Pupil

+0

Vikipedi'deki İlk Arama ve İlk Aramada İlk Arama hakkında bilgi edinin. Yukarıdaki kod tarafından uygulanan algoritma DFS'dir, yani her düğümde kenarların geçiş sırası verilirse, ilgili diziyi (m0, m1, m2, ...) seçeriz. mo-th kenarı, başlangıçta, dizinin sözlükbilgisi sırasına göre en küçük olduğu şekilde. – user507787

+0

Tamam. Teşekkürler :) – Pupil