मैं एक ग्राफ जो इसी adjMat [i, j] = 1 में 1 होने से नोड्स के बीच किनारों पटरियों के लिए एक adjaceny मैट्रिक्स है; इस adjaceny मैट्रिक्स के माध्यम से मैं लंबाई 4 जो ग्राफ में मौजूद है के सभी बंद रास्तों पता लगाने के लिए चाहते हैं। किसी को भी कृपया मुझे एक छद्म कोड के साथ प्रदान कर सकते हैं। धन्यवाद
एक ग्राफ में बंद रास्तों को खोजने के लिए छद्म कोड
गहराई सीमित जहां डीएफएस प्रारंभिक नोड पाता प्रत्येक नोड और रिकॉर्ड नोड्स को गहराई-पहले खोज को लागू करें। : खोज के लिए, छद्म कोड यहाँ देख http://en.wikipedia.org/wiki/Depth-limited_search । तुम बस की तरह कुछ जोड़ने की जरूरत
if(node' == node && node'.depth==4) memorize(node)
पाश की शुरुआत करने के लिए।
यह होमवर्क की तरह लगता है, तो मैं पूरी बात दूर नहीं देंगे। लेकिन यहाँ एक संकेत है: जब से तुम लंबाई 4 के चक्र की खोज में रुचि रखते हैं, निकटता मैट्रिक्स के 4 बिजली लेने के लिए और विकर्ण साथ स्कैन। अगर किसी भी प्रविष्टि एम [मैं, मैं] अशून्य है, वहाँ एक चक्र युक्त शिखर मैं है।
शायद यह यह (यह गणना करने के लिए इष्टतम तरीका नहीं है O(n^4)), लेकिन एक बहुत ही सरल तरीके से सभी कोने के माध्यम से स्कैन कर रहा है
a, b, c, d such that b > a, c > b, d > c
इसके बाद आप जाँच कर सकते हैं निम्नलिखित चक्र से प्रत्येक के लिए जाँच करें:
1. ([क, ख] && [ख, ग] && [सी, डी] && [घ, एक]) 2. ([क, ख] && [ख, घ] && [डी, सी] && [ग, एक]) 3. ([ए, डी] && [घ, ख] && [ख, ग] && [ग, एक]) 1: 2: 3: एक --- बी ए --- बाब | | \ / | \ / | | | एक्स | एक्स | | | / \ | / \ | डी --- सी डी --- सीसीडी
आप मूल रूप से 3 तरीके है कि वे एक चक्र बन सकती है के लिए कोने के हर आदेश दिया सेट (ए, बी, सी, डी) जाँच कर रहे हैं।
तो छद्म कोड होगा:
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













