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

C++ प्रोग्राम: नेटवर्क_फ्लो प्रॉब्लम इम्प्लीमेंट करना


यह फोर्ड-फुल्करसन एल्गोरिदम का उपयोग करके नेटवर्क_फ्लो प्रॉब्लम को इम्प्लीमेंट करने के लिए एक C++ प्रोग्राम है।

एल्गोरिदम:

Begin    function bfs() returns true if there is path from source s to sink t in    the residual graph which indicates additional possible flow in the graph. End Begin    function fordfulkarson() return maximum flow in given graph:    A) initiate flow as 0.    B) If there is an augmenting path from source to sink, add the path to flow.    C) Return flow. End

उदाहरण कोड

#include <iostream> #include <climits> #include <cstring> #include <queue> #define n 7 using namespace std; bool bfs(int g[n][n], int s, int t, int par[]) {    bool visit[n];    memset(visit, 0, sizeof(visit));    queue <int> q;    q.push(s);    visit[s] = true;    par[s] = -1;    while (!q.empty())    {       int u = q.front();       q.pop();       for (int v=0; v<n; v++)       {          if (visit[v]==false && g[u][v] > 0)          {             q.push(v);             par[v] = u;             visit[v] = true;          }       }    }    return (visit[t] == true); } int fordFulkerson(int G[n][n], int s, int t) {    int u, v;    int g[n][n];    for (u = 0; u < n; u++)    {       for (v = 0; v < n; v++)       g[u][v] = G[u][v];    }    int par[n];    int max_flow = 0;    while (bfs(g, s, t,par))    {       int path_flow = INT_MAX;       for (v=t; v!=s; v=par[v])       {          u = par[v];          path_flow = min(path_flow, g[u][v]);       }       for (v = t; v != s; v = par[v])       {          u = par[v];                g[u][v] -= path_flow;          g[v][u] += path_flow;       }       max_flow += path_flow;    }    return max_flow; } int main() {    int g[n][n] = {{0, 6, 7, 1},       {0, 0, 4, 2},       {0, 5, 0, 0},       {0, 0, 19, 12},       {0, 0, 0, 17},       {0, 0, 0, 0}};    cout << "The maximum possible flow is " << fordFulkerson(g, 0, 3);    return 0; }

आउटपुट

The maximum possible flow is 3
  1. - C++ प्रोग्राम: हीप सॉर्ट लागू करना

    एक हीप एक पूर्ण बाइनरी ट्री है जो या तो मिन हीप या मैक्स हीप है। एक मैक्स हीप में, रूट पर कुंजी हीप में मौजूद सभी कुंजियों में अधिकतम होनी चाहिए। यह गुण उस बाइनरी ट्री में सभी नोड्स के लिए पुनरावर्ती रूप से सत्य होना चाहिए। मिन हीप मिनहीप के समान है। फंक्शन विवरण void BHeap::Insert(int ele): हीप मे

  1. - C++ प्रोग्राम: बबल सॉर्ट लागू करना

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

  1. - C++ प्रोग्राम: रेडिक्स सॉर्ट लागू करना

    रेडिक्स सॉर्ट गैर-तुलनात्मक सॉर्टिंग एल्गोरिदम है। यह सॉर्टिंग एल्गोरिदम पूर्णांक कुंजियों पर काम करता है उन अंकों को समूहित करके जो समान स्थिति और मान साझा करते हैं। रेडिक्स एक संख्या प्रणाली का आधार है। जैसा कि हम जानते हैं कि दशमलव प्रणाली में रेडिक्स या आधार 10 है। इसलिए कुछ दशमलव संख्याओं को स