COMPUTE-TRANSITION-FUNCTION'(P, m, P', m', ∑) r = 0 while k < m amd k < m' and P[r + 1] == P'[r + 1] r += 1 for q = 0 to m for each character a ∈ ∑ k = min {m, q + 1} while P[:k] is not a suffix of P[:q]a k = k – 1 δ(q, a) = k for each q = r + 1 to m' for each character a ∈ ∑ k = min {m, q + 1} while P'[:k] is not a suffix of P'[:q]a k = k – 1 if k <= r δ(q + m, a) = k else δ(q + m, a) = m + k return δ
COMPUTE-TRANSITION-FUNCTION-GAP(P, ∑, m) split P into Q[1], Q[2], ..., Q[k] by '◊' pre = 0 for i = 1 to k δt = COMPUTE-TRANSITION-FUNCTION-GAP(Q[i], ∑, |Q[i]|) for s = 0 to |Q[i]| for each character a ∈ ∑ δ(pre + s, a) = δt(s, a) pre = pre + |Q[i]| return δ