Diferente pentru pd intre reviziile #57 si #58

Nu exista diferente intre titluri.

Diferente intre continut:

Să ne uităm mai atent la acest loop.
Fie un interval $[i,j]$ fixat. Acum, $opt[i][j] < opt[i][j']$, pentru orice $j < j'$. Similar, $opt[i][j] < opt[i'][j]$, pentru orice $i' < i$.
Atunci, există un indice $k$, $i \le k \le j$ astfel încât $max(opt[i][o-1], opt[o+1][j]) = opt[o+1][j]$, pentru orice $i \le o \le k$, şi $max(opt[i][o-1], opt[o+1][j]) = opt[i][o-1]$ pentru orice <tex>$k < o \le j$</tex>. După cum ştim, trebuie să aflăm <tex>\displaystyle\min_{i \le k \le j} \{a_{k} + \max( opt[i][k-1], opt[k+1][j] )\} </tex>. Să definim acum 2 matrici auxiliare:
Atunci, există un indice $k$, $i \le k \le j$ astfel încât $max(opt[i][o-1], opt[o+1][j]) = opt[o+1][j]$, pentru orice $i \le o \le k$, şi $max(opt[i][o-1], opt[o+1][j]) = opt[i][o-1]$ pentru orice <tex>$k < o \le j$</tex>. După cum ştim, trebuie să aflăm <tex>\displaystyle\min_{i \le k \le j} \{a_{k} + \max( opt[i][k-1], opt[k+1][j] )\} </tex>. Să definim acum 3 matrici auxiliare:
@to_left[ i ][ j ] = a_i + opt[ i + 1 ][ j ]@
@to_right[ i ][ j ] = a_j + opt[ i ][ j - 1 ]@
@inter[ i ][ j ] = <tex>\displaystyle\arg \max_{i \le k \le j}\{opt[i][k-1] \le opt[k+1][j]\} </tex>
 
Se observă că $inter[i][j]$ nu reprezintă altceva decât indicele $k$ tratat in paragraful precedent.
De asemenea, $inter$ poate fi calculată în $O(N^2)$ observând o proprietate simplă: <tex>$inter[i][j-1] \le inter[i][j] \le inter[i+1][j] $</tex>. Aceasta reiese imediat din monotonia lui $opt$ discutată mai sus.
 
Acum vine ideea decisivă pentru a reduce complexitatea loop-ului: pentru a afla $opt[i][j]$, este suficient să aflăm maximul dintre 2 valori:
 
* <tex>\displaystyle\min_{i \le k \le inter[i][j]} \{to_left[k][j]\} </tex> şi
* <tex>\displaystyle\min_{i \le k \le inter[i][j]} \{to_left[k][j]\} </tex>

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.