Có sự khác biệt giữa lập trình động từ trên xuống và từ dưới lên không?


33

Có sự khác biệt cơ bản giữa lập trình động từ trên xuống và từ dưới lên không?

Cụ thể, có một vấn đề có thể được giải quyết từ dưới lên nhưng không phải từ trên xuống? Hay cách tiếp cận từ dưới lên chỉ là một cách giải quyết sự tái phát trong cách tiếp cận từ trên xuống?

Câu trả lời:


27

Để sử dụng phương pháp từ dưới lên, bạn cần có khả năng xác định hiệu quả "đáy" là gì, điều này thường có nghĩa là bạn cần một không gian vấn đề bị hạn chế rất nhiều. Nếu bạn biết các phép tính mức thấp nhất sẽ là gì và thứ tự phụ thuộc sẽ tăng lên, thì việc lặp lại chúng theo thứ tự đúng và lưu trữ các kết quả đó là điều hợp lý. Các yếu tố, Fibonacci ngây thơ và mối quan hệ tái phát Euler cho các phân vùng đều là những ví dụ điển hình cho các vấn đề phù hợp với phương pháp này.

Một số vấn đề không có thứ tự đáy hoặc phụ thuộc dễ dàng xác định cho các tính toán. Ví dụ, các đánh giá vị trí cờ được ghi nhớ một cách hữu ích theo vị trí, với điểm đánh giá được lưu trữ để không cần phải tính toán lại. Các vị trí có thể lặp lại ở nhiều cấp độ của cây tìm kiếm do di chuyển và lặp lại do đó việc lưu kết quả đánh giá là đáng giá. Nhưng không có cách nào để biết các vị trí ở mức thấp nhất của cây sẽ là gì nếu không giảm dần theo cách đệ quy (và tính đến việc cắt tỉa trung gian) vì vậy từ trên xuống thực sự là phương pháp khả thi duy nhất.


4
  • Cách tiếp cận từ trên xuống: Đây là sự sụp đổ trực tiếp của công thức đệ quy của bất kỳ vấn đề nào. Nếu giải pháp cho bất kỳ vấn đề nào có thể được lập thành đệ quy bằng cách sử dụng giải pháp cho các vấn đề phụ của nó và nếu các vấn đề phụ của nó bị chồng chéo, thì người ta có thể dễ dàng ghi nhớ hoặc lưu trữ các giải pháp cho các vấn đề phụ trong bảng. Bất cứ khi nào chúng tôi cố gắng giải quyết vấn đề phụ mới, trước tiên chúng tôi sẽ kiểm tra bảng để xem nó đã được giải quyết chưa. Nếu một giải pháp đã được ghi lại, chúng ta có thể sử dụng nó trực tiếp, nếu không, chúng ta sẽ giải quyết vấn đề phụ và thêm giải pháp của nó vào bảng.

  • Cách tiếp cận từ dưới lên: Một khi chúng ta xây dựng giải pháp cho một vấn đề theo cách đệ quy như về các vấn đề phụ của nó, chúng ta có thể thử cải cách vấn đề theo cách từ dưới lên: thử giải quyết các vấn đề phụ trước và sử dụng các giải pháp của chúng để xây dựng trên và đi đến các giải pháp cho các vấn đề phụ lớn hơn. Điều này cũng thường được thực hiện dưới dạng bảng bằng cách lặp lại các giải pháp cho các vấn đề phụ lớn hơn và lớn hơn bằng cách sử dụng các giải pháp cho các vấn đề nhỏ. Ví dụ: nếu chúng ta đã biết các giá trị của F41 và F40, chúng ta có thể tính trực tiếp giá trị của F42.

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.