Commit c4941a6a authored by Mathieu Giraud's avatar Mathieu Giraud

core/dynprog.{h,cpp}: best_score_on_i, returns the best score on a column of the matrix

parent 77af56b8
......@@ -358,6 +358,19 @@ int DynProg::compute()
return best_score ;
}
int DynProg::best_score_on_i(int i, int *best_j)
{
int best_score = MINUS_INF ;
for (int j=0; j<=n; j++)
if (B[i][j].score > best_score) {
  • Suite aux questions soulevées sur #3518 : se pourrait-il que nous sortions de la diagonale et allions dans des cases non pertinentes ?

  • Veux-tu dire qu'une optimisation type #3274 (closed) fait qu'on n'aurait pas calculé toutes les cases, et que certaines auraient donc des valeurs incorrectes ?

  • Mmmm... score_r[0] = dp_r.compute();, donc onlyBottomTriangle = false, ce n'est pas cela.

Please register or sign in to reply
*best_j = j ;
  • Après, il se peut qu'ici on n'assigne pas au bon endroit.

  • Vérifié au passage qu'on passe bien toujours une fois ici, bref *best_j (qui est la valeur de trim dans #3518) est bien assigné par cette ligne, qui donne les valeurs incorrectes 184/284/12.

    Edited by Mathieu Giraud
Please register or sign in to reply
best_score = B[i][j].score;
}
return best_score ;
}
void DynProg::backtrack()
{
// Tables for displaying the alignment
......
......@@ -126,6 +126,8 @@ class DynProg
string SemiGlobal_extract_best();
int best_score_on_i(int i, int *best_j);
friend ostream& operator<<(ostream& out, const DynProg& dp);
operation **B; // Score and backtrack matrix
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment