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

फ्लेरी का एल्गोरिदम


फ्लेरी का एल्गोरिदम दिए गए ग्राफ से यूलर पथ या यूलर सर्किट प्रदर्शित करने के लिए उपयोग किया जाता है। इस एल्गोरिदम में, एक किनारे से शुरू करके, यह पिछले शीर्षों को हटाकर अन्य आसन्न शीर्षों पर जाने का प्रयास करता है। इस ट्रिक का उपयोग करके, ग्राफ प्रत्येक चरण में सरल होता जाता है ताकि यूलर पथ या सर्किट मिल सके।

पथ या सर्किट प्राप्त करने के लिए हमें कुछ नियमों की जांच करनी होगी -

  • ग्राफ एक यूलर ग्राफ होना चाहिए।

  • जब दो किनारे हों, एक ब्रिज हो, दूसरा नॉन-ब्रिज हो, तो हमें पहले नॉन-ब्रिज को चुनना होगा।

शुरुआती शीर्ष का चयन भी मुश्किल है, हम किसी भी शीर्ष को शुरुआती बिंदु के रूप में उपयोग नहीं कर सकते, यदि ग्राफ में कोई विषम डिग्री वाले शीर्ष नहीं हैं, तो हम किसी भी शीर्ष को शुरुआती बिंदु के रूप में चुन सकते हैं, अन्यथा जब एक शीर्ष की डिग्री विषम हो, तो हमें उसे पहले चुनना होगा।

एल्गोरिदम

findStartVert(graph) इनपुट: दिया गया ग्राफ। आउटपुट: एल्गोरिदम शुरू करने के लिए शुरुआती शीर्ष खोजें। शुरू     ग्राफ में सभी शीर्ष i के लिए, करें       deg := 0       i के साथ आसन्न सभी शीर्ष j के लिए, करें         deg := deg + 1       किया       यदि deg विषम है, तो         वापस करें i     किया     जब सभी डिग्री सम हों तो 0 वापस करें अंत dfs(prev, start, visited) इनपुट: DFS करने के लिए पिछला और प्रारंभिक शीर्ष, और देखी गई सूची। आउटपुट: DFS के बाद नोड्स की संख्या गिनें। शुरू     count := 1     visited[start] := सच     ग्राफ में सभी शीर्ष b के लिए, करें       यदि prev, u नहीं है, तो         यदि u नहीं देखा गया है, तो           यदि start और u जुड़े हुए हैं, तो             count := count + dfs(start, u, visited)           अंत यदि         अंत यदि       अंत यदि     किया     count वापस करें अंत isBridge(u, v) इनपुट: प्रारंभ और अंत नोड। आउटपुट: जब u और v ब्रिज बना रहे हों तो सच। शुरू     deg := 0     v के साथ आसन्न सभी शीर्ष i के लिए, करें       deg := deg + 1     किया     यदि deg > 1, तो       वापस करें गलत     वापस करें सच अंत fleuryAlgorithm(start) इनपुट: प्रारंभिक शीर्ष। आउटपुट: यूलर पथ या सर्किट प्रदर्शित करें। शुरू     edge := ग्राफ में किनारों की संख्या प्राप्त करें     //यह अगले पुनरावृत्ति कॉल में आरंभ नहीं होगा     v_count = नोड्स की संख्या     //यह अगले पुनरावृत्ति कॉल में आरंभ नहीं होगा     start के साथ आसन्न सभी शीर्ष v के लिए, करें       विज़िटेड सरणी बनाएं और गलत मान से भरें       यदि isBridge(start, v), तो v_count को 1 से घटाएं       cnt = dfs(start, v, visited)       यदि cnt और v_count के बीच अंतर <= 2, तो         किनारे को प्रिंट करें (start → v)         यदि isBridge(v, start), तो v_count को 1 से घटाएं         start और v से किनारा हटाएं       edge को 1 से घटाएं       fleuryAlgorithm(v)       अंत यदि     किया अंत

उदाहरण

#include<iostream> #include<vector> #include<cmath> #define NODE 8 using namespace std; int graph[NODE][NODE] = {     {0,1,1,0,0,0,0,0},     {1,0,1,1,1,0,0,0},     {1,1,0,1,0,1,0,0},     {0,1,1,0,0,0,0,0},     {0,1,0,0,0,1,1,1},     {0,0,1,0,1,0,1,1},     {0,0,0,0,1,1,0,0},     {0,0,0,0,1,1,0,0} }; int tempGraph[NODE][NODE]; int findStartVert() {     for(int i = 0; i1) {       return false; //किनारा ब्रिज नहीं बना रहा     }     return true; //किनारा ब्रिज बना रहा है } int edgeCount() {     int count = 0;     for(int i = 0; i

आउटपुट

Euler Path Or Circuit: 0--1 1--2 2--3 3--1 1--4 4--5 5--6 6--4 4--7 7--5 5--2 2--0

  1. फोर्ड-फुल्करसन एल्गोरिदम फोर्ड-फुल्करसन एल्गोरिदम

    फोर्ड-फुल्करसन एल्गोरिदम का उपयोग दिए गए ग्राफ में प्रारंभ शीर्ष से सिंक शीर्ष तक अधिकतम प्रवाह का पता लगाने के लिए किया जाता है। इस ग्राफ में, प्रत्येक किनारे की क्षमता होती है। दो शीर्ष दिए गए हैं जिन्हें स्रोत और सिंक नाम दिया गया है। स्रोत शीर्ष में सभी जावक किनारे होते हैं, कोई आवक किनारा नहीं

  1. फ्लॉयड वार्शल एल्गोरिदम फ्लॉयड वार्शल एल्गोरिदम

    फ्लॉयड-वार्शल एल्गोरिदम का उपयोग दिए गए वेटेड ग्राफ से सभी जोड़े के सबसे छोटे पथ की समस्या को हल करने के लिए किया जाता है। इस एल्गोरिदम के परिणामस्वरूप, यह एक मैट्रिक्स जनरेट करेगा, जो ग्राफ में किसी भी नोड से अन्य सभी नोड्स तक की न्यूनतम दूरी को दर्शाएगा। सबसे पहले, आउटपुट मैट्रिक्स ग्राफ के दिए ग

  1. C++ में फ्लेयूरी एल्गोरिदम से ऑयलरियन पाथ या सर्किट प्रिंट करें C++ में फ्लेयूरी एल्गोरिदम से ऑयलरियन पाथ या सर्किट प्रिंट करें

    फ्लेयूरी एल्गोरिदम का उपयोग दिए गए ग्राफ़ से ऑयलर पाथ या ऑयलर सर्किट प्रदर्शित करने के लिए किया जाता है। इस एल्गोरिदम में, एक एज से शुरू करके, यह पिछले वर्टेक्स को हटाकर अन्य एडजेसेंट वर्टेक्स की ओर जाने का प्रयास करता है। इस ट्रिक का उपयोग करके, ग्राफ़ प्रत्येक चरण में सरल होता जाता है ताकि ऑयलर पा