bir grafikte kapalı yol bulmak için sahte kod

oy
-1

, 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

Oluştur 14/03/2009 saat 20:38
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
0

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.

Cevap 14/03/2009 saat 20:56
kaynak kullanıcı

oy
2

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.

Cevap 14/03/2009 saat 20:57
kaynak kullanıcı

oy
1

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
Cevap 14/03/2009 saat 21:15
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more