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

न्यूनतम लागत पथ


भिन्न लागत का एक मैट्रिक्स दिया गया है। साथ ही डेस्टिनेशन सेल भी दिया गया है। हमें शुरुआती सेल (0, 0) से गंतव्य सेल तक पहुंचने के लिए न्यूनतम लागत पथ खोजना होगा।

मैट्रिक्स का प्रत्येक सेल उस सेल के माध्यम से पार करने की लागत का प्रतिनिधित्व करता है।

एक सेल से, हम कहीं भी नहीं जा सकते, हम गंतव्य तक पहुंचने के लिए या तो दाएं या नीचे या निचले दाएं विकर्ण सेल में जा सकते हैं।

इनपुट और आउटपुट

Input:
The cost matrix. And the destination point. In this case the destination point is (2, 2).
1 2 3
4 8 2
1 5 3

Output:
The minimum cost to reach to the destination from (0, 0). The minimum cost is 8.
न्यूनतम लागत पथ 

एल्गोरिदम

minCostPath(destX, destY, cost)

इनपुट - (x, y) गंतव्य का स्थान, और लागत मैट्रिक्स।

आउटपुट - गंतव्य तक पहुंचने के लिए न्यूनतम लागत।

Begin
   define matrix totalCost, whose order is same as cost matrix
   totalCost[0, 0] = cost[0, 0]

   for i := 1 to destX, do
      totalCost[i, 0] := totalCost[i-1, 0] + cost[i, 0]
   done

   for j := 1 to destY, do
      totalCost[0, j] := totalCost[0, j-1] + cost[0, j]
   done

   for all places (i, j) from (1, 1) to (destX, destY), do
      totalCost[i, j] := minimum of totalCost[i-1, j-1], totalCost[i-1, j] and (totalCost[i, j-1] + cost[i,j])
   done

   return totalCost[destX, destY]
End

उदाहरण

#include<iostream>
#define ROW 3
#define COL 3
using namespace std;

int cost[ROW][COL] = {
   {1, 2, 3},
   {4, 8, 2},
   {1, 5, 3}
};

int min(int a, int b, int c) {
   return (a<b)?((a<c)?a:c):((b<c)?b:c);
}

int minCostPath(int destX, int destY) {
   int totalCost[ROW][COL];

   totalCost[0][0] = cost[0][0];

   for (int i = 1; i <= destX; i++)
      totalCost[i][0] = totalCost[i-1][0] + cost[i][0];    //set first col of totalCost array

   for (int j = 1; j <= destY; j++)            //set first row of totalCost array
      totalCost[0][j] = totalCost[0][j-1] + cost[0][j];

   for (int i = 1; i <= destX; i++)            //for second row and column to all
      for (int j = 1; j <= destY; j++)
         totalCost[i][j] = min(totalCost[i-1][j-1], totalCost[i- 1][j], totalCost[i][j-1]) + cost[i][j];
   return totalCost[destX][destY];
}

int main() {
   cout << "Minimum Cost: "<< minCostPath(2, 2);    //destination (2, 2)
   return 0;
}

आउटपुट

Minimum Cost: 8

  1. बिल्कुल k किनारों वाला सबसे छोटा रास्ता

    एक निर्देशित ग्राफ प्रत्येक जोड़े के शीर्षों के बीच भार के साथ प्रदान किया जाता है, और दो शीर्ष u और v भी प्रदान किए जाते हैं। हमारा कार्य शीर्ष u से शीर्ष v तक की न्यूनतम दूरी ज्ञात करना है, जिसमें किनारों की संख्या k है। इस समस्या को हल करने के लिए, हम शीर्ष u से शुरू करेंगे और सभी आसन्न शीर्ष

  1. सी न्यूनतम लागत पथ के लिए कार्यक्रम

    यहां, हम सी में न्यूनतम लागत पथ की समस्या को हल करेंगे। निहितार्थ 2 डी-मैट्रिक्स पर किया जाता है जहां प्रत्येक सेल में यात्रा करने की लागत होती है। हमें न्यूनतम यात्रा लागत के साथ बाएं शीर्ष कोने से नीचे दाएं कोने तक का रास्ता खोजना होगा। आप किसी दिए गए सेल से केवल नीचे और दाएँ निचले सेल को पार कर स

  1. न्यूनतम लागत पथ के लिए पायथन कार्यक्रम

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