Exemplo n.º 1
0
void fill_row_q(int imin, int imax, int q,
                std::vector< std::vector<ldouble> > & S,
                std::vector< std::vector<size_t> > & J,
                const std::vector<ldouble> & sum_x,
                const std::vector<ldouble> & sum_x_sq,
                const std::vector<ldouble> & sum_w,
                const std::vector<ldouble> & sum_w_sq,
                const enum DISSIMILARITY criterion)
{
  // Assumption: each cluster must have at least one point.
  for(int i=imin; i<=imax; ++i) {
    S[q][i] = S[q-1][i-1];
    J[q][i] = i;
    int jmin = std::max(q, (int)J[q-1][i]);
    for(int j=i-1; j>=jmin; --j) {
      ldouble Sj(S[q-1][j-1] +
        dissimilarity(criterion, j, i, sum_x, sum_x_sq, sum_w, sum_w_sq)
                   // ssq(j, i, sum_x, sum_x_sq, sum_w)
      );

      if(Sj < S[q][i]) {
        S[q][i] = Sj;
        J[q][i] = j;
      }
    }
  }
}
Exemplo n.º 2
0
int main(void){

	take_input();
	total_bigram();
	printf("%d",dissimilarity());

return 0;
}
Exemplo n.º 3
0
 double operator()(data_point a, data_point b){
   return dissimilarity(a, a + dim, b);
 }
Exemplo n.º 4
0
 double operator()(data_point& a, data_point& b){
   return dissimilarity(a.begin(), a.end(), b.begin());
 }