में सबसे छोटा रास्ता जावास्क्रिप्ट में सबसे कम पथों की गणना करने के लिए मैं सप्ताहों की खोज कर रहा हूं। मैं ग्रोनर (उपयुक्त नाम से) https://github.com/loiane/javascript-datastructures-algorithms/tree/master/chapter09 पर डेटा स्ट्रक्चर और एल्गोरिदम पुस्तक के साथ खेल रहा हूं।जावास्क्रिप्ट
मुझे जो परेशानी मिलती है वह यह है कि कोड इतना अनुकूलित किया गया है कि वांछित परिणाम देने के लिए पुनः लिखना लगभग असंभव है। मैं ग्रोनर कोड के रूप में किसी दिए गए कशेरुक से किसी भी अन्य से सबसे छोटा रास्ता प्राप्त करने में सक्षम होना चाहता हूं, बस ए से सबकुछ की सूची, मैं प्राप्त करने में सक्षम होना चाहता हूं, उदाहरण के लिए, पथ एफ बी को, या ए
को सी से पूर्ण कोड यहाँ है: http://jsfiddle.net/8cn7e2x8/
किसी को भी मदद कर सकते हैं?
var graph = new Graph();
var myVertices = ['A','B','C','D','E','F'];
for (var i=0; i<myVertices.length; i++) {
graph.addVertex(myVertices[i]);
}
graph.addEdge('A', 'B');
graph.addEdge('B', 'C');
graph.addEdge('B', 'E');
graph.addEdge('C', 'D');
graph.addEdge('C', 'E');
graph.addEdge('C', 'G');
graph.addEdge('D', 'E');
graph.addEdge('E', 'F');
graph.dfs();
console.log('********* sortest path - BFS ***********');
var shortestPathA = graph.BFS(myVertices[0]);
//from A to all other vertices
var fromVertex = myVertices[0];
for (i = 1; i < myVertices.length; i++) {
var toVertex = myVertices[i],
path = new Stack();
for (var v = toVertex; v !== fromVertex; v = shortestPathA.predecessors[v]) {
path.push(v);
}
path.push(fromVertex);
var s = path.pop();
while (!path.isEmpty()) {
s += ' - ' + path.pop();
}
console.log(s);
}
मुझे डर है कि मुझे समझ में नहीं आता कि इस फ़ंक्शन का उपयोग कैसे करें, हालांकि: जब मैं var 'code' start = myVertices [1] की तरह कुछ कोशिश करता हूं; var end = myVertices [5]; BFS (अंत); मुझे एक त्रुटि संदेश मिलता है कि "ग्राफ [यू] अपरिभाषित है।" मैं सिर्फ एक प्रारंभ और अंत बिंदु इनपुट करने में सक्षम होना चाहता हूं, और यह एक उचित प्रत्यक्ष पथ का काम करता है। इसका कोई मतलब भी है क्या? – Tyler330
आपको आश्चर्यजनक गति के लिए धन्यवाद - अगर मैं इसे जल्दी और सटीक रूप से कोड कर सकता हूं, तो मैं एक खुश व्यक्ति बनूंगा। यह वही है जो मैं ढूंढ रहा हूं: हफ्तों के बाद ए * की कोशिश करने के बाद, मुझे एहसास हुआ कि वास्तव में एक उचित प्रत्यक्ष पथ बेहतर काम कर सकता है, क्योंकि यह यातायात-जाम को कम करेगा। – Tyler330
मैंने आपको उस ग्राफ लाइब्रेरी की मशीनरी के साथ इंटरफेस करने की कोशिश करने के बजाय एक सामान्य बीएफएस कार्यान्वयन दिया है। लाइब्रेरी को देखने के बाद, मैं देखता हूं कि इसके साथ काम करने में कठिनाई के बारे में आपका क्या मतलब है। मुझे लगता है कि यह बेहद जटिल है। कृपया मेरा संशोधित उत्तर देखें। मैंने एक संक्षिप्त ग्राफ कार्यान्वयन जोड़ा है और एक नई चौड़ाई लिखी है- पहली खोज जो दो दिए गए शीर्षकों के बीच सबसे छोटा रास्ता प्रदर्शित करती है। –