Yuval'ın önerdiği değiş tokuşa gerek yok. Optimal düzenleme sekansının tamamı , ilk önce Dan Hirschberg tarafından tarif edilen dinamik programlama ve bölme ve fethetme karışımı kullanılarak süresi ve uzayında hesaplanabilir . ( Maksimum ortak alt dizileri hesaplamak için doğrusal bir uzay algoritması. Commun. ACM 18 (6): 341–343, 1975.)O ( n + m )O(nm)O(n+m)
Sezgisel olarak, Hirschberg'in fikri en uygun düzenleme dizisinin yarısında tek bir düzenleme işlemini hesaplamak ve ardından dizinin iki yarısını tekrar tekrar hesaplamaktır. Optimal düzenleme sırasını, not tablosunun bir köşesinden diğerine bir yol olarak düşünürsek, bu yolun tablonun orta satırından nerede geçtiğini kaydetmek için değiştirilmiş bir yinelemeye ihtiyacımız vardır. Çalışan bir nüks aşağıdaki gibidir:
'Ha l f( i , j ) = ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪∞j'Ha l f( i - 1 , j )'Ha l f( i , j - 1 )'Ha l f( i - 1 , j - 1 )eğer ben < m / 2Eğer i = m / 2Eğer i > m / 2 ve Edi t ( i , j ) = Edi t ( i - 1 , j ) + 1Eğer i > m / 2 ve Edi t ( i , j ) = Edi t ( i , j - 1 ) + 1aksi takdirde
değerleri zamanı kullanılarak Düzenleme mesafesi tablosunu aynı zamanda hesaplanabilir . Not tablosunun her satırı yalnızca üstündeki satıra bağlı olduğundan, hem hem de hesaplaması yalnızca alanı gerektirir.E d i t ( i , j ) O ( m n ) E d i t ( m , n ) H a l f ( m , n ) O ( m + n )'Ha l f( i , j )Edi t ( i , j )O ( m, n )Edit(m,n)Half(m,n)O(m+n)
Son olarak, giriş dizeleri transforme uygun düzenleme sekansı, içine transforme uygun dizilerinden oluşur olarak ardından yi dönüştüren optimal dizi izler . Bu iki alt diziyi yinelemeli olarak hesaplarsak, toplam çalışma süresi aşağıdaki yinelemeye uyar:
olduğunu kanıtlamak zor değilB [ 1 .. n ] A [ 1 . . m / 2 ] B [ 1 . . H , bir l f ( m , n ) ] bir [ m / 2 + 1 . . m ] B [ H , bir l f ( m , n ) + 1 . . nA[1..m]B[1..n]A[1..m/2]B[1..Half(m,n)]A[m/2+1..m]T ( m , n ) = { O ( n ) ise m ≤ 1 O ( m ) , eğer n ≤ 1 O ( m , n ) + maksimum h ( T ( m / 2 , s ) + T ( m / 2 , n- - h ) ) aksi takdirde T ( m , nB[Half(m,n)+1..n]
T(m,n)=⎧⎩⎨O(n)O(m)O(mn)+maxh(T(m/2,h)+T(m/2,n−h))if m≤1if n≤1otherwise
O ( m + n )T(m,n)=O(mn). Benzer şekilde, bir seferde yalnızca bir dinamik programlama geçişi için alan gerektiğinden, bağlı olan toplam alan hala . (Özyineleme yığını için alan önemsizdir.)
O(m+n)