Giả sử tôi có hai chuỗi. Gọi cho họ và . Cả chuỗi đều không có ký tự lặp lại.
Làm cách nào tôi có thể tìm thấy chuỗi thao tác chèn, di chuyển và xóa ngắn nhất biến thành , trong đó:
insert(char, offset)
chènchar
tạioffset
các chuỗi đã chomove(from_offset, to_offset)
di chuyển nhân vật hiện đang được bùfrom_offset
sang vị trí mới để nó được bùto_offset
delete(offset)
xóa nhân vật tạioffset
Ứng dụng ví dụ: Bạn thực hiện một truy vấn cơ sở dữ liệu và hiển thị kết quả trên trang web của bạn. Sau đó, bạn chạy lại truy vấn cơ sở dữ liệu và phát hiện ra rằng kết quả đã thay đổi. Bạn muốn thay đổi những gì trên trang để khớp với những gì hiện có trong cơ sở dữ liệu bằng cách sử dụng số lượng hoạt động DOM tối thiểu. Có hai lý do tại sao bạn muốn chuỗi hoạt động ngắn nhất. Thứ nhất, hiệu quả. Khi chỉ có một vài bản ghi thay đổi, bạn muốn đảm bảo rằng bạn thực hiện thay vì hoạt động DOM, vì chúng rất tốn kém. Thứ hai, tính đúng đắn. Nếu một mục được di chuyển từ vị trí này sang vị trí khác, bạn muốn di chuyển các nút DOM được liên kết trong một thao tác, mà không phá hủy và tạo lại chúng. Nếu không, bạn sẽ mất trạng thái tập trung, nội dung của các yếu tố, v.v.<input>