public class minWeightTriangulation {
public static int weight[][]= {{0,2,3,5,6,4},{2,1,0,5,6,4},{3,1,2,6,5,4},
{3,5,6,2,3,5},{6,2,4,3,5,4},{6,5,4,2,2,3}};
public static void MinWeightTriangulation(int n,int [][]t,int [][]s) {
for(int i=1;i<=n;i++)t[i][i]=0;
for(int r=2;r<=n;r++) {
for(int i=1;i<=n-r+1;i++) {
int j=i+r-1;
t[i][j]=t[i+1][j]+weight(i-1,i,j);
s[i][j]=i;
for(int k=i+1;k<i+r-1;k++) {
int u=t[i][k]+t[k+1][j]+weight(i-1,k,j);
if(u<t[i][j]) {
t[i][j]=u;
s[i][j]=k;
}
}
}
}
}
private static int weight(int a, int b, int c) {
return weight[a][b]+weight[b][c]+weight[a][c];
}
public static void Traceback(int i,int j,int [][]s) {
if(i==j)return;
Traceback(i,s[i][j],s);
Traceback(s[i][j]+1,j,s);
System.out.println("三角形剖分顶点:V"+(i-1)+"V"+j+"v"+s[i][j]);
}
public static void main(String[] args) {
int [][]s=new int[7][7];
int [][]t=new int[7][7];
System.out.println("最优三角剖分值为:");
MinWeightTriangulation(5,t,s);
Traceback(1,5,s);
}
}
凸多边形最优三角剖分--算法设计与分析
最新推荐文章于 2024-04-28 06:27:06 发布