यह एल्गोरिदम ग्राफ़ में नोड्स को घुमाने का एक अच्छा काम करता है।सी # ग्राफ ट्रैवर्सल
Dictionary<Node, bool> visited = new Dictionary<Node, bool>();
Queue<Node> worklist = new Queue<Node>();
visited.Add(this, false);
worklist.Enqueue(this);
while (worklist.Count != 0)
{
Node node = worklist.Dequeue();
foreach (Node neighbor in node.Neighbors)
{
if (!visited.ContainsKey(neighbor))
{
visited.Add(neighbor, false);
worklist.Enqueue(neighbor);
}
}
}
मैं ग्राफ में लक्ष्य नोड खोजने के लिए इसका उपयोग कर सकता हूं। कार्यसूची को कार्यसूची के रूप में कार्यरत (या पॉप) आइटम को हटा दिया जाता है। एक बार जब मैं लक्ष्य प्राप्त कर लेता हूं तो मैं नोड को पूरा पथ कैसे वापस कर सकता हूं?
अद्यतन मैं यह समझने की कोशिश कर रहा हूं कि रूट के पथ को कैसे उलटया जाए। इस विधि को रूट नोड पर बुलाया जाता है, उसके बाद, बच्चों के दो माता-पिता हो सकते हैं, इसलिए यह प्रत्येक नोड पर मूल संपत्ति को कॉल करने और बैक अप लेने के समान आसान नहीं है।
विधि का लक्ष्य पथ खोजने के लिए है, सभी नोड्स को फिर से नहीं, या यह जांचने के लिए कि कोई नोड मौजूद है या नहीं।
आपके पास π.Add (पड़ोसी, विज़िट) है; और π शब्दकोश का मूल्य एक नोड है, आप मूल्य में क्या ट्रैकिंग कर रहे हैं? – blu
पूर्ववर्ती। यहां शब्दकोश वास्तव में एक समारोह के रूप में कार्य कर रहा है: इनपुट मान n के लिए, पूर्ववर्ती नोड दें। इनपुट कुंजी है, वापसी मूल्य मूल्य है। –
वह नहीं होगा π.Add (पड़ोसी, नोड) ;? अवधारणा अच्छी लगती है, लेकिन कोड मान्य नहीं है, मुझे लगता है कि यह एक टाइपो है। – blu