/* * OBST.java * * Created on November 8, 2001, 11:12 PM */ /** * * @author lziegler * @version */ public class OBST { /** Creates new OBST */ public OBST() { } static void FindBST(double [] p, double [] q, int N) { double [] [] W=new double[N][N]; double [] [] C=new double[N][N]; int [] [] R=new int[N][N]; int j,i,m,kmin,k; double BSTMin; int n=N-1; for(i=0;i<=n;i++) { W[i][i]=q[i]; C[i][i]=0.0; R[i][i]=0; } //Print block System.out.println(""); System.out.print(" "); for(i=0;i<=n;i++) System.out.print(i+" "); System.out.println(""); System.out.print(" "); for(i=0;i<=n;i++) System.out.print("_________"); System.out.println(""); System.out.print("W "); for(i=0;i<=n;i++) System.out.print(W[i][i]+" "); System.out.println(""); System.out.print("C "); for(i=0;i<=n;i++) System.out.print(C[i][i]+" "); System.out.println(""); System.out.print("R "); for(i=0;i<=n;i++) System.out.print(R[i][i]+" "); System.out.println(""); System.out.print(" "); for(i=0;i<=n;i++) System.out.print("_________"); System.out.println(""); System.out.print("W "); // for(i=0;iC[i][k-1]+C[k][j]) { BSTMin=C[i][k-1]+C[k][j]; kmin=k; } R[i][j]=kmin; C[i][j]=BSTMin+W[i][j]; } } //print the rest for(m=2;m<=n;m++) { System.out.println(""); System.out.print("W "); for(i=0;i<=n-m;i++) { j=i+m; System.out.print(W[i][j]+" "); } System.out.println(""); System.out.print("C "); for(i=0;i<=n-m;i++) { j=i+m; System.out.print(C[i][j]+" "); } System.out.println(""); System.out.print("R "); for(i=0;i<=n-m;i++) { j=i+m; System.out.print(R[i][j]+" "); } System.out.println(""); System.out.print(" "); for(i=0;i<=n-m;i++) System.out.print("_________"); } // } /** * @param args the command line arguments */ public static void main (String args[]) { double [] p={0,1.0/17.0,2.0/17.0,1.0/17.0,2.0/17.0,3.0/17.0}; double [] q={1.0/17.0,1.0/17.0,2.0/17.0,2.0/17.0,1.0/17.0,1.0/17.0}; FindBST(p,q,6); double [] p1={0.0,3.0/16.0,3.0/16.0,1.0/16.0,1.0/16.0}; double [] q1={2.0/16.0,3.0/16.0,1.0/16.0,1.0/16.0,1.0/16.0}; FindBST(p1,q1,5); } }