Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> प्रोग्रामिंग

ग्राफ के लिए डेप्थ फर्स्ट सर्च (DFS)


डेप्थ फर्स्ट सर्च (DFS) एक ग्राफ ट्रैवर्सल एल्गोरिदम है। इस एल्गोरिदम में एक प्रारंभिक वर्टेक्स दिया जाता है, और जब एक आसन्न वर्टेक्स मिलता है, तो यह पहले उस आसन्न वर्टेक्स पर जाता है और उसी तरीके से ट्रैवर्स करने का प्रयास करता है।

ग्राफ के लिए डेप्थ फर्स्ट सर्च (DFS)

यह पूरे डेप्थ के माध्यम से चलता है, जहां तक जा सकता है, उसके बाद यह नए पथ खोजने के लिए पिछले वर्टेक्स पर वापस जाता है।

DFS को इटरेटिव तरीके से लागू करने के लिए, हमें स्टैक डेटा संरचना का उपयोग करने की आवश्यकता है। यदि हम इसे रिकर्सिवली करना चाहते हैं, तो बाहरी स्टैक की आवश्यकता नहीं है, इसे रिकर्सन कॉल के लिए आंतरिक स्टैक द्वारा किया जा सकता है।

इनपुट: ग्राफ का एडजेसेंसी मैट्रिक्स।

 A B C D E F
A 0 1 1 1 0 0
B 1 0 0 1 1 0
C 1 0 0 1 0 1
D 1 1 1 0 1 1
E 0 1 0 1 0 1
F 0 0 1 1 1 0

आउटपुट: DFS ट्रैवर्सल: C F E B D A

एल्गोरिदम

dfs(vertices, start)

इनपुट − सभी वर्टेक्स की सूची, और प्रारंभिक नोड।

आउटपुट − ग्राफ में सभी नोड्स को ट्रैवर्स करें।

Begin
    प्रारंभ में सभी नोड्स के लिए स्थिति को अनविजिटेड बनाएं
    प्रारंभ को स्टैक में पुश करें
    while स्टैक खाली नहीं है, do
        स्टैक से एलिमेंट पॉप करें और u पर सेट करें
        नोड u प्रदर्शित करें
        यदि u विजिटेड नहीं है, then
            u को विजिटेड के रूप में चिह्नित करें
            u से जुड़े सभी नोड्स i के लिए, do
                यदि iवां वर्टेक्स अनविजिटेड है, then
                    iवें वर्टेक्स को स्टैक में पुश करें
                    iवें वर्टेक्स को विजिटेड के रूप में चिह्नित करें
                done
        done
End

उदाहरण (C++)

#include 
#include 
using namespace std;
#define NODE 6
typedef struct node{
    int val;
    int state; //स्थिति
}node;
int graph[NODE][NODE] = {
    {0, 1, 1, 1, 0, 0},
    {1, 0, 0, 1, 1, 0},
    {1, 0, 0, 1, 0, 1},
    {1, 1, 1, 0, 1, 1},
    {0, 1, 0, 1, 0, 1},
    {0, 0, 1, 1, 1, 0}
};
void dfs(node *vertex, node start){
    node u;
    stack myStack;
    for(int i = 0; i < NODE; i++){
        vertex[i].state = 0; //विजिट नहीं किया
    }
    myStack.push(start);
    while(!myStack.empty()){
        //पॉप और प्रिंट नोड
        u = myStack.top();
        myStack.pop();
        cout << char(u.val+'A') << " ";
        if(u.state != 1){
            //वर्टेक्स स्थिति को विजिटेड में अपडेट करें
            u.state = 1;
            vertex[u.val].state = 1;
            for(int i = 0; i < NODE; i++){
                if(graph[i][u.val]){
                    if(vertex[i].state == 0){
                        myStack.push(vertex[i]);
                        vertex[i].state = 1;
                    }
                }
            }
        }
    }
}
int main(){
    node vertices[NODE];
    node start;
    char s;
    for(int i = 0; i < NODE; i++){
        vertices[i].val = i;
    }
    s = 'C'; //प्रारंभिक वर्टेक्स C
    start.val = s-'A';
    cout << "DFS Traversal: ";
    dfs(vertices, start);
    cout << endl;
}

आउटपुट

DFS Traversal: C F E B D A
  1. ग्राफ के लिए ब्रेडथ फर्स्ट सर्च (BFS) ग्राफ के लिए ब्रेडथ फर्स्ट सर्च (BFS)

    ब्रेडथ फर्स्ट सर्च (BFS) ट्रैवर्सल एक एल्गोरिदम है, जिसका उपयोग दिए गए ग्राफ के सभी नोड्स को विजिट करने के लिए किया जाता है। इस ट्रैवर्सल एल्गोरिदम में एक नोड चुना जाता है और फिर सभी आसन्न नोड्स को एक-एक करके विजिट किया जाता है। सभी आसन्न वर्टेक्स को पूरा करने के बाद, यह दूसरे वर्टेक्स की जांच करने

  1. डेटा संरचना में डायग्राफ पर डेप्थ-फर्स्ट सर्च (Depth-First Search on a Digraph) डेटा संरचना में डायग्राफ पर डेप्थ-फर्स्ट सर्च (Depth-First Search on a Digraph)

    ग्राफ के लिए डेप्थ-फर्स्ट सर्च समान हैं। लेकिन डायग्राफ या निर्देशित ग्राफ (directed graphs) के लिए, हम कुछ प्रकार के किनारे ढूंढ सकते हैं। DFS एल्गोरिदम एक ट्री बनाता है जिसे DFS ट्री कहा जाता है। चार प्रकार के किनारे होते हैं: ट्री एज (Tree Edge - T) – वे किनारे जो DFS ट्री में मौजूद हैं फॉरवर्ड

  1. फेसबुक ग्राफ सर्च के लिए अपने खाते की गोपनीयता तैयार करें [साप्ताहिक फेसबुक टिप्स] फेसबुक ग्राफ सर्च के लिए अपने खाते की गोपनीयता तैयार करें [साप्ताहिक फेसबुक टिप्स]

    हर बार जब फेसबुक हमारे दोस्तों के बारे में अधिक जानने के लिए एक नई सुविधा जारी करता है, तो बहुत से लोगों को एहसास होता है कि उनकी गोपनीयता सेटिंग्स अब पर्याप्त नहीं हैं। उनकी नवीनतम नई सुविधा, फेसबुक ग्राफ सर्च, कोई अपवाद नहीं है - बहुत से लोग इस बारे में थोड़ा चिंतित हैं कि किस तरह की चीजें मिलेंगी