Tôi đã làm việc về lập trình động một thời gian. Cách chính tắc để đánh giá đệ quy lập trình động là bằng cách tạo một bảng gồm tất cả các giá trị cần thiết và điền vào từng hàng. Xem ví dụ Cormen, Leiserson et al: "Giới thiệu về thuật toán" để biết giới thiệu.
Tôi tập trung vào sơ đồ tính toán dựa trên bảng theo hai chiều (điền theo từng hàng) và nghiên cứu cấu trúc của các phụ thuộc ô, tức là các ô nào cần được thực hiện trước khi có thể tính toán các ô khác. Chúng tôi biểu thị với tập các chỉ số của các tế bào tế bào i phụ thuộc vào. Lưu ý rằng Γ cần phải được chu kỳ miễn phí.
Tôi trừu tượng từ chức năng thực tế được tính toán và tập trung vào cấu trúc đệ quy của nó. Chính thức, tôi coi việc tái diễn là lập trình động nếu nó có dạng
với , ~ Γ d ( i ) = { ( j , d ( j ) ) | j ∈ Γ d ( i ) } và f một số chức năng (tính toán) mà không làm sử dụng d khác hơn là qua ~ Γ d .
Khi hạn chế granularity của đến các vùng khó khăn (bên trái, phía trên bên trái, hàng đầu, phía trên bên phải, ... của tế bào hiện hành) một nhận xét rằng về cơ bản có ba trường hợp (lên đến đối xứng và xoay) của giá trị thu hồi lập trình động thông báo làm thế nào bảng có thể được điền:
Các khu vực màu đỏ biểu thị (overapproximations của) . Trường hợp một và hai thừa nhận tập hợp con, trường hợp ba là trường hợp xấu nhất (chuyển đổi chỉ số). Lưu ý rằng nó không phải là yêu cầu nghiêm ngặt rằng toàn bộ khu vực màu đỏ được bao phủ bởi Γ ; một số ô trong mỗi phần màu đỏ của bảng là đủ để tô màu đỏ. Các khu vực màu trắng được yêu cầu rõ ràng để không chứa bất kỳ tế bào cần thiết.
Ví dụ cho trường hợp một là khoảng cách chỉnh sửa và chuỗi con chung dài nhất , trường hợp hai áp dụng cho Bellman & Ford và CYK . Các ví dụ ít rõ ràng hơn bao gồm các hoạt động trên các đường chéo thay vì các hàng (hoặc cột) vì chúng có thể được xoay để phù hợp với các trường hợp được đề xuất; xem câu trả lời của Joe cho một ví dụ.
Tôi không có ví dụ (tự nhiên) cho trường hợp ba, mặc dù! Vì vậy, câu hỏi của tôi là: ví dụ cho trường hợp ba vấn đề / vấn đề lập trình động là gì?