Skip to main content

Table 3 The outside VMT algorithm

From: Reducing the worst case running times of a family of RNA and CFG problems, using Valiant’s approach

Outside-VMT (s, β)

   1:    Allocate a matrix A of size ||s|| × ||s||, and initialize all entries in A with ϕ elements.

   2:    Call Compute-Outside-Sub-Matrix ([0, n], [0, n]), where n is the length of s.

   3:    return A

Compute-Outside-Sub-Matrix (I, J)

pre-condition: The values in A[0,I], [J,n], excluding the values in A I,J , are computed.

   If μ i,j = q[0,i)(β q,i α q,j ), then A I,J = (β[0,I),I)T α[0,I),J. Else, if μ i,j = q(j,n](α i,q β j,q ), then A I,J = αI,(J,n] (βJ,(J,n])T.

post-condition: A[0,I], [J,n]= α[0,I], [J,n].

   1:    if I = [i, i] and J = [j, j] then

   2:       If ij, compute α i,j (in o (||s||) running time) by querying computed values in A and the value μ i,j which is stored in A i,j . Update A i,j α i,j .

   3:    else

   4:       if |I| ≤ |J| then

   5:          Let J1 and J2 be the two intervals such that J2J1 = J, and |J2| = |J|/2.

   6:          Call Compute-Outside-Sub-Matrix (I, J1).

   7:          if μ i,j is of the form q(j,n](α i,q β j,q ) then

   8:             Let L be the interval such that L(J, n] = (J2, n].

   9:             Update A I , J 2 A I , L ( β J 2 , L ) T A I , J 2 .

   10:          end if

   11:          Call Compute-Outside-Sub-Matrix (I, J2).

   12:       else

   13:          Let I1 and I2 be the two intervals such that I1I2 = I, and |I1| = |I|/2.

   14:          Call Compute-Outside-Sub-Matrix (I1, J).

   15:          if μ i,j is of the form q[0,i)(β q,i α q,j ) then

   16:             Let L be the interval such that [0, I)L = [0, I2).

   17:             Update A I 2 , J A I 2 , J ( β L , I 2 ) T A L , J .

   18:          end if

   19:          Call Compute-Outside-Sub-Matrix (I2, J).

   20:       end if

   21:    end if