Các thuật toán lập trình động với nhật ký trong thời gian chạy


7

Hầu hết các ví dụ kinh điển về thuật toán lập trình động có thời gian chạy như n hoặc là n2. Có ví dụ tự nhiên nào vớiO(nlogn) thời gian chạy


Lấy một thuật toán phân chia và chinh phục để sắp xếp.
Nicholas Mancuso

4
@NicholasMancuso: Phân chia và chinh phục không phải là lập trình động, vì các bài toán con không chồng chéo.
A.Schulz

@ A.Schulz Thật ra, họ là như vậy. Điều tương tự có thể xuất hiện trong nhiều nhánh của sự tái phát (tôi đang nghĩ về sự tái phát của Mergesort). Chúng tôi bỏ qua điều này trong khi sắp xếp vì chúng tôi không cần tăng tốc nhiều hơn; thực tế là chúng ta chỉ phải thử một phân vùng cho mỗi đầu vào và tìm giải pháp (sắp xếp) tối ưu chi phối hiệu quả.
Raphael

Câu trả lời:


3

Một ví dụ tự nhiên là tìm ra chuỗi tăng dài nhất của chuỗi nsố. Các ứng cử viên có thể được liên kết trong chuỗi đầu vào. Đây là một bài tập khá phổ biến và cũng hoạt động cho các loại khác. Nó thực sự là bài tập 15.4-6 trong phiên bản thứ 3 của Cormen et al. sách quá. Đối với một thuật toán, xem Mục 2.2 trong các ghi chú này .


1

Để mở rộng nhận xét của tôi:

Trong khi sắp xếp không thực hiện "tra cứu bảng", hãy nhớ định nghĩa thực tế của DP:

Phương pháp giải quyết các vấn đề có cấu trúc tối ưu.

Chúng tôi thấy rằng một cách tiếp cận phân chia và chinh phục để sắp xếp thỏa mãn điều này.


1
Tôi quan tâm đến một định nghĩa sắc thái hơn về DP. Trong ví dụ của bạn, không có vấn đề phụ chồng chéo và không cần ghi nhớ.
Joe

Theo như tôi biết, không có thứ gọi là "định nghĩa thực tế của DP". Thuật ngữ "cấu trúc tối ưu" cũng không chính xác lắm. Về tuyên bố câu trả lời của bạn, nếu bạn mở rộng khái niệm DP về các vấn đề chuyển đổi dữ liệu (thường chỉ xem xét các vấn đề tối ưu hóa và quyết định), tôi nghĩ rằng việc gọi lại Mergesort là tái phát DP là hợp lý. Đó là một trường hợp rất đặc biệt vì chúng tôi chỉ phải thử một phân vùng.
Raphael

DP tự nhiên là từ dưới lên nhưng sự phân chia và chinh phục là trong sự hồi sinh (cũng điều này không liên quan đến việc ghi nhớ).

1
Tới mọi người. Tôi đồng ý rằng phân chia và chinh phục không thực sự phù hợp với hình thức DP điển hình nhất. Tôi luôn cảm thấy đó là một trường hợp đặc biệt vì lý do kỹ thuật (cấu trúc tối ưu, tức là Nguyên tắc Tối ưu của Bellman). Nhưng theo nhận xét của Joe, có lẽ tôi nên đưa ra một ví dụ thuyết phục hơn. ;)
Nicholas Mancuso
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.