हम एक ग्राफ क्लास बनाएंगे जो वजन और डायरेक्टेड व अनडायरेक्टेड दोनों प्रकार को सपोर्ट करता है। इसे एडजेसेंसी लिस्ट का उपयोग करके लागू किया जाएगा। जैसे-जैसे हम अधिक एडवांस कॉन्सेप्ट्स की ओर बढ़ेंगे, ग्राफ की वजन और डायरेक्टेड प्रकृति दोनों काम आएंगी।
एडजेसेंसी लिस्ट अलग-अलग लिस्ट का एक ऐरे A है। ऐरे का प्रत्येक एलिमेंट Ai एक लिस्ट है, जिसमें वे सभी वर्टेक्स होते हैं जो वर्टेक्स i से आसन्न हैं। हम इसे 2 मेंबर्स, नोड्स और एजेज का उपयोग करके परिभाषित कर रहे हैं।
आइए अपनी क्लास को परिभाषित करके और कुछ मेथड्स जोड़कर ग्राफ क्लास को सेट करते हैं जिनका उपयोग हम अपने ग्राफ में नोड्स और एजेज जोड़ने के लिए करेंगे।
हम शुरू में निम्नलिखित मेथड्स को परिभाषित करेंगे:
- addNode: ग्राफ में नोड जोड़ता है
- addEdge: ग्राफ में अनडायरेक्टेड एज जोड़ता है
- addDirectedEdge: डायरेक्टेड एज जोड़ता है
उदाहरण
class Graph {
constructor() {
this.edges = {};
this.nodes = [];
}
addNode(node) {
this.nodes.push(node);
this.edges[node] = [];
}
addEdge(node1, node2) {
this.edges[node1].push(node2);
this.edges[node2].push(node1);
}
addDirectedEdge(node1, node2) {
this.edges[node1].push(node2);
}
display() {
let graph = "";
this.nodes.forEach(node => {
graph += node + "->" + this.edges[node].join(", ") + "\n";
});
console.log(graph);
}
}
आप इन मेथड्स और हमारी क्लास का परीक्षण इस तरह कर सकते हैं:
उदाहरण
let g = new Graph();
g.addNode("A");
g.addNode("B");
g.addNode("C");
g.addNode("D");
g.addNode("E");
g.addEdge("A", "C");
g.addEdge("A", "B");
g.addDirectedEdge("A", "D");
g.addEdge("D", "E");
g.display();
आउटपुट
इससे निम्न आउटपुट मिलेगा:
A->C, B, D B->A C->A D->E E->D