2016-04-12 45 views

cevap

0

Tüm düğümleri DFS ile çaprazlamak istiyorsanız, her düğüm için yinelemeli ve düğüme erişilip verilmediğini kontrol etmeli ve bir DFS'ye başlamak için düğümü kullanmalısınız.

procedure DFS(G,v): 
     label v as discovered 
     for all edges from v to w in G.adjacentEdges(v) do 
      if vertex w is not labeled as discovered then 
       recursively call DFS(G,w) 

    procedure traverse_by_DFS(G): 
     for v in G: 
      if v is dicovered: 
       continue 
      DFS(G, v) 
+0

Böylece, Ağaç kenarlarım bir> b> f> d> c gidecekti, sonra e> a'nın son ağacım kenarını elde etmek için DFS'ye (G, e) tekrarlayıcı bir çağrı yapardım. İlk DFS çağrımdan sonra, e. –

+0

@KyleDenHartog Bağlı olan bir haftadaki tüm düğümleri çaprazlamak istiyorsanız, tüm düğümleri yinelemeniz ve erişilip erişilmediğini kontrol etmelisiniz. Bir referans, https://www.csd.uoc.gr/~hy583/reviewed_notes/dfs_dags.pdf –

+0

@KyleDenHartog DFS grafik güçlü bir grafik olup olmadığını kontrol etmek için kullanılabilir. Örneğinizde olduğu gibi, düğümün (node) hiçbir ucu yoktur, eğer diğer düğümlerden başlarsanız, bir DFS'de e-postaya sonsuza kadar erişemez. –

0

Bu bir tuzak soru. Düğüm E'ye basmazsınız, çünkü A düğümünde başlatmaya zorlanırsınız. Bu, gerçek kök olmayan bir başlangıç ​​düğümü verilmek istenen etkidir - sonuç, tamamlanmamış bir geçiştir.