, Tekabül eden adjMat [ij] 1 = bir 1, ile düğümler arasındaki kenarlar izleyen bir grafik için adjaceny matris sahiptir; Bu adjaceny matris sayesinde i grafikte var 4 uzunluğunda her kapalı yol bulmak istiyoruz. Herkes bir sözde kodu ile bana verir misiniz. teşekkür ederim
bir grafikte kapalı yol bulmak için sahte kod
DFS başlangıç düğümü bulduğu her düğüm ve kayıt düğümlerine bir derinlik sınırlı derinliği ilk-arama uygulayın. : Arama için, burada sözde kodunu görmek http://en.wikipedia.org/wiki/Depth-limited_search . Sadece böyle bir şey eklemem gerekiyor
if(node' == node && node'.depth==4) memorize(node)
döngünün başlangıcına.
Bu ödev gibi geliyor, bu yüzden uzakta şeyi vermeyecektir. Ama burada bir ipucu: Eğer uzunluğu 4 döngülerini bulmak istiyoruz, çünkü bitişiklik matrisi 4 gücünü almak ve diyagonal boyunca tarama. bir girişi M [i, i] sıfır ise, bir döngü içeren tepe i vardır.
Belki de onu (bu kadar hesaplamak için en uygun yol değildir O(n^4)), ancak çok düz bir yolu tüm köşe taramak edilir
a, b, c, d such that b > a, c > b, d > c
Daha sonra kontrol aşağıdaki döngüsünün her biri için kontrol edebilirsiniz:
1. ([a, b] && [b, c] && [c, d] && [d, e]) 2. ([a, b] && [b, d] && [D, C] && [c, e]) 3. ([a, d] && [d, b] && [b, c] && [c, e]) 1: 2: 3: A --- B A --- BAB | | \ / | \ / | | | X | X | | | / \ | / \ | D --- C D --- CCD
Temelde bir döngü oluşturabilir 3 yollarını köşe her sıralı kümesi (a, b, c, d) kontrol ediyoruz.
Yani sahte kod şöyle olacaktır:
for a = 0 to <lastVertex>
for b = a + 1 to <lastVertex>
for c = b + 1 to <lastVertex>
for d = c + 1 to <lastVertex>
if(IsCycle(a,b,c,d)) AddToList([a,b,c,d])
if(IsCycle(a,b,d,c)) AddToList([a,b,d,c])
if(IsCycle(a,c,b,d)) AddToList([a,c,b,d])
next d
next c
next b
next a













