Chiến lược tham lam, xem xét trong chương trước, xây dựng một giải pháp cho một vấn đề tối ưu hóa của mảnh mảnh, luôn thêm vào một mảnh tối ưu tại địa phương để xây dựng một giải pháp một phần. Trong chương này, chúng ta thảo luận một cách tiếp cận khác nhau để thiết kế các thuật toán cho bài toán tối ưu. Nó bắt đầu với một số giải pháp khả thi (một giải pháp thỏa mãn tất cả các khó khăn của vấn đề) và tiền thu được để cải thiện nó bằng cách ứng dụng lặp đi lặp lại của một số bước đơn giản. Bước này thường liên quan đến một nhỏ, khu trú thay đổi năng suất một giải pháp khả thi với một giá trị được cải thiện của hàm mục tiêu. Khi không có sự thay đổi đó cải thiện giá trị của hàm mục tiêu, các thuật toán trả về các giải pháp khả thi nhất là
tối ưu và dừng lại. Có thể có một vài trở ngại cho việc thực hiện thành công ý tưởng này. Đầu tiên, chúng ta cần một giải pháp khả thi ban đầu. Đối với một số vấn đề, chúng tôi luôn luôn có thể bắt đầu với một giải pháp tầm thường hoặc sử dụng một giải pháp gần đúng thu được bằng một số khác (ví dụ, tham lam) thuật toán. Nhưng đối với những người khác, việc tìm kiếm một giải pháp ban đầu có thể đòi hỏi nhiều nỗ lực như giải quyết các vấn đề sau khi một giải pháp khả thi đã được xác định. Thứ hai, nó không phải là luôn luôn rõ ràng những gì thay đổi phải được cho phép trong một giải pháp khả thi để chúng ta có thể kiểm tra hiệu quả cho dù các giải pháp hiện tại là tối ưu cục bộ, và nếu không, hãy thay thế nó bằng một tốt hơn. Thứ ba và đây là difficulty- cơ bản nhất là một vấn đề của địa phương so với cực trị toàn cầu (tối đa hoặc tối thiểu). Hãy suy nghĩ về các vấn đề của việc tìm kiếm điểm cao nhất trong một khu vực đồi núi không có bản đồ vào một ngày đầy sương mù. Một điều hợp lý để làm là nên bắt đầu đi bộ "lên đồi" từ điểm bạn đang ở cho đến khi nó trở thành không thể làm như vậy vì không có hướng sẽ dẫn lên. Bạn sẽ đạt đến một điểm cao nhất ở địa phương, nhưng vì tính khả thi có hạn, sẽ không có cách nào đơn giản để nói cho dù điểm cao nhất (tối đa toàn cầu bạn là sau) trong toàn bộ khu vực. May mắn thay, có những vấn đề quan trọng mà có thể được giải quyết bằng các thuật toán lặp cải thiện. Điều quan trọng nhất của họ là tuyến tính lập trình. 345 346 Cải lặp Chúng ta đã gặp vấn đề này ở Mục 6.6. Ở đây, trong Phần 10.1, chúng tôi giới thiệu các phương pháp simplex, các thuật toán cổ điển dành cho lập trình tuyến tính. Được phát hiện bởi các nhà toán học Mỹ George B. Dantzig năm 1947, thuật toán này đã được chứng minh là một trong những thành tựu do hậu quả nhất trong lịch sử của algorithmics. Trong mục 10.2, chúng ta xem xét các vấn đề quan trọng của việc tối đa hóa số lượng dòng chảy có thể được gửi qua một mạng lưới liên kết với các năng lực hạn chế. Vấn đề này là một trường hợp đặc biệt của chương trình tuyến tính. Tuy nhiên, cấu trúc đặc biệt của nó làm cho nó có thể để giải quyết vấn đề bằng thuật toán hiệu quả hơn các phương pháp simplex. Chúng tôi vạch ra những thuật toán lặp cải thiện kinh điển cho vấn đề này, được phát hiện bởi các nhà toán học người Mỹ LR Ford, Jr., và DR Fulkerson trong những năm 1950.
đang được dịch, vui lòng đợi..
