Exemple #1
0
void  QP_basis_inverse<ET_,Is_LP_>::
copy_row_in_B_O(OutIt y_l_it, OutIt y_x_it, unsigned int r)
{
    typename Matrix::const_iterator  matrix_it;
    typename Row   ::const_iterator     row_it;
    unsigned int  count;
    
    // Q-block
    matrix_it = M.begin()+l+r;
    for (  row_it = matrix_it->begin(), count = 0;
           count < s;
	 ++row_it,  ++count,  ++y_l_it           ) {
        *y_l_it = *row_it;
    }
    
    // R-block: left of diagonal (including element on diagonal)
    for (  row_it = matrix_it->begin()+l; 
           row_it != matrix_it->end();
	 ++row_it,  ++y_x_it            ) {
        *y_x_it = *row_it;
    }
    
    // R-block: right of diagonal (excluding element on diagonal)
    for (  matrix_it = M.begin()+l+r+1, count = r+1;
           count < b;
	 ++matrix_it,  ++count,  ++y_x_it           ) {
        *y_x_it = (*matrix_it)[l+r];
    }

}
Exemple #2
0
 flow(const matrix& capacity)
             : capacity(capacity),
             flows(matrix(capacity.size(), row(capacity.size()))),
             edges(matrix(capacity.size(), row())) { 
     for (typename matrix::const_iterator row = capacity.begin(); row != capacity.end(); ++row) {
         for (typename row::const_iterator v = row->begin(); v != row->end(); ++ v) {
             if (*v > 0) {
                 edges.at(row - capacity.begin()).push_back(v - row->begin());
                 edges.at(v - row->begin()).push_back(row - capacity.begin());
             }
         }
     }
 }