Yuval không cần phải đánh đổi. Toàn bộ chuỗi chỉnh sửa tối ưu có thể được tính trong không gian và không gian , sử dụng hỗn hợp lập trình động và phân chia và chinh phục được mô tả đầu tiên bởi Dan Hirschberg. ( . Một thuật toán không gian tuyến tính để tính subsequences chung tối đa . Commun ACM 18 (6): 341-343, 1975.)O ( n + m )O(nm)O(n+m)
Theo trực giác, ý tưởng của Hirschberg là tính toán một thao tác chỉnh sửa duy nhất giữa chừng trình tự chỉnh sửa tối ưu, và sau đó tính toán đệ quy hai nửa của chuỗi. Nếu chúng ta nghĩ về trình tự chỉnh sửa tối ưu là một đường dẫn từ một góc của bảng ghi nhớ sang góc khác, chúng ta cần một phép lặp lại được sửa đổi để ghi lại nơi đường dẫn này đi qua hàng giữa của bảng. Một lần tái phát hoạt động như sau:
Half(i,j)=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪∞jHalf(i−1,j)Half(i,j−1)Half(i−1,j−1)if i<m/2if i=m/2if i>m/2 and Edit(i,j)=Edit(i−1,j)+1nếu tôi > m / 2 và Edi t ( i , j ) =Edi t ( i , j - 1 ) + 1nếu không thì
Các giá trị của có thể được tính toán cùng lúc với bảng khoảng cách chỉnh sửa , sử dụng thời gian . Vì mỗi hàng của bảng ghi nhớ chỉ phụ thuộc vào hàng phía trên nó, nên tính toán cả và chỉ yêu cầu không gian .E d i t ( i , j ) O ( m n ) E d i t ( m ,Hmột l f( tôi , j )Edtôi t ( i , j )O ( m n )H a l f ( m , nEdtôi t ( m , n )O ( m + n )Hmột l f( m , n )O ( m + n )
Cuối cùng, trình tự chỉnh sửa tối ưu chuyển đổi các chuỗi đầu vào thành bao gồm các chuỗi tối ưu biến đổi thành theo sau là chuỗi tối ưu biến đổi thành . Nếu chúng ta tính toán hai lần sau đó theo cách đệ quy, thì thời gian chạy tổng thể tuân theo sự tái diễn sau:
Không khó để chứng minh rằngMột [ 1 .. m ]B [ 1 .. n ]A [ 1 . . m / 2 ]B [ 1 . . Hmột l f( m , n ) ]A [ m / 2 + 1 . . m ]B [ Hmột l f( m , n ) + 1 . . n ]
T( M , n ) = ⎧⎩⎨Ô ( n )Ô ( m )O ( m n ) + tối đah( T( m / 2 , h ) + T( m / 2 , n - h ) )nếu m ≤ 1nếu n ≤ 1nếu không thì
T( m , n ) = O ( m n ). Tương tự, vì chúng ta chỉ yêu cầu không gian cho một lần lập trình động tại một thời điểm, nên tổng không gian bị ràng buộc vẫn là . (Không gian cho ngăn xếp đệ quy là không đáng kể.)
O ( m + n )