जब एक बहुभुज में अप्रतिच्छेदी विकर्ण एक त्रिभुज बनाते हैं, तो इसे त्रिभुज कहते हैं। हमारा कार्य त्रिभुज की न्यूनतम लागत ज्ञात करना है।
त्रिभुज की लागत इसके घटक त्रिभुजों के भार का योग है। हम प्रत्येक त्रिभुज की भुजाओं को जोड़कर उसका भार ज्ञात कर सकते हैं, दूसरे शब्दों में, भार त्रिभुज का परिमाप है।
इनपुट और आउटपुट
Input: The points of a polygon. {(0, 0), (1, 0), (2, 1), (1, 2), (0, 2)} Output: The total cost of the triangulation. Here the cost of the triangulation is 15.3006.
एल्गोरिदम
minCost(polygon, n)
यहाँ लागत() का उपयोग त्रिभुज की परिधि की गणना के लिए किया जाएगा।
इनपुट: बहुभुज बनाने के लिए बिंदुओं का एक सेट, और कई बिंदु।
>आउटपुट - बहुभुज के त्रिभुज के लिए न्यूनतम लागत।
Begin if n < 3, then return 0 define table or order n x n i := 0 for gap := 0 to n-1, do for j := gap to n-1, do if j < i+2, then table[i,j] := 0 else table[i, j] = ∞ for k := i+1 to j-1, do val := table[i, k] + table[k, j] + cost(i, j, k) if table[i, j] > val table[i, j] := val i := i + 1 done done return table[0, n-1] End
उदाहरण
#include <iostream> #include <cmath> #include <iomanip> #define MAX 1000000.0 using namespace std; struct Point { int x, y; }; double min(double x, double y) { return (x <= y)? x : y; } double dist(Point p1, Point p2) { //find distance from p1 to p2 return sqrt(pow((p1.x-p2.x),2) + pow((p1.y-p2.y),2)); } double cost(Point triangle[], int i, int j, int k) { Point p1 = triangle[i], p2 = triangle[j], p3 = triangle[k]; return dist(p1, p2) + dist(p2, p3) + dist(p3, p1); //the perimeter of the triangle } double minimumCost(Point polygon[], int n) { if (n < 3) //when polygon has less than 3 points return 0; double table[n][n]; for (int gap = 0; gap < n; gap++) { for (int i = 0, j = gap; j < n; i++, j++) { if (j < i+2) table[i][j] = 0.0; else { table[i][j] = MAX; for (int k = i+1; k < j; k++) { double val = table[i][k] + table[k][j] + cost(polygon,i,j,k); if (table[i][j] > val) table[i][j] = val; //update table data to minimum value } } } } return table[0][n-1]; } int main() { Point points[] = {{0, 0}, {1, 0}, {2, 1}, {1, 2}, {0, 2}}; int n = 5; cout <<"The minimumcost: " <<minimumCost(points, n); }
आउटपुट
The minimumcost: 15.3006