Tôi đang đọc về Lập trình động khi tôi thấy đoạn trích dẫn sau
Một thuật toán lập trình động sẽ kiểm tra tất cả các cách có thể để giải quyết vấn đề và sẽ chọn giải pháp tốt nhất. Do đó, chúng ta có thể nghĩ đại khái về lập trình động như một phương pháp thông minh, mạnh mẽ cho phép chúng ta đi qua tất cả các giải pháp có thể để chọn ra phương pháp tốt nhất . Nếu phạm vi của vấn đề là đi qua tất cả các giải pháp khả thi là có thể và đủ nhanh, lập trình động đảm bảo tìm ra giải pháp tối ưu
Ví dụ sau đây đã được đưa ra
Ví dụ: giả sử bạn phải đi từ điểm A đến điểm B càng nhanh càng tốt, trong một thành phố nhất định, trong giờ cao điểm. Một thuật toán lập trình động sẽ xem xét toàn bộ báo cáo giao thông, xem xét tất cả các kết hợp đường có thể bạn có thể đi và chỉ sau đó sẽ cho bạn biết đường nào là nhanh nhất. Tất nhiên, bạn có thể phải đợi một lúc cho đến khi thuật toán kết thúc và chỉ sau đó bạn mới có thể bắt đầu lái xe. Con đường bạn sẽ đi sẽ là con đường nhanh nhất (giả sử rằng không có gì thay đổi trong môi trường bên ngoài)
Brute Force đang thử mọi giải pháp có thể trước khi quyết định giải pháp tốt nhất.
Lập trình động khác với Brute Force như thế nào nếu nó cũng trải qua tất cả các giải pháp có thể trước khi chọn giải pháp tốt nhất , điểm khác biệt duy nhất tôi thấy là Lập trình động tính đến các yếu tố bổ sung (điều kiện giao thông trong trường hợp này).
Tôi có đúng không khi nói rằng Lập trình động là một tập hợp con của phương thức Brute Force ??
intelligent, brute force
, nhưng rồi quên mô tả phần "thông minh"