Dynamic Programming Algorithm for
Minimum Weight Triangulation
minWeight ():
   // D[i,j] is distance from v[i] to v[j]
   for i = 1 to n do
     C[i,i+1] = -D[i,i+1];
   for s = 3 to n do     // Problem size
     for i = 1 to n-s+1   //Start vertex
       j = i + s - 1       // End vertex
       C[i,j] = mini<k<j {
           C[i,k]+C[k,j]+D[i,k]+D[k,j]
           }
   return C[1,n].
Analysis
Time = O(n3)
Space = O(n2)
To remember the
triangulation
Set Mem[i,j] to k whenever
C[i,j] is set
CS409 - Spring 2000
19