Phƣơng phỏp nhỏnh cận

Một phần của tài liệu Về các bài toán NP C và một số phương pháp giải (Trang 32 - 36)

Xột bài toỏn tối ưu tổ hợp tổng quỏt sau:

Min{f(x): x D},

trong đú

D = {x= (x1, x2,..., xn) A1 A2 A3 ... An }, A1, A2,..., An là cỏc tập hữu hạn.

Ta gọi bộ n thành phần x= (x1, x2,..., xn) thuộc D là phương ỏn đầy đủ hay lời giải đầy đủ của bài toỏn, bộ k<n thành phần (x1, x2,..., xk) với

là phương ỏn bộ phận hay lời giải bộ phận. Ta sẽ xõy dựng cỏc phương ỏn đầy đủ từ cỏc phương ỏn bộ phận, tức là sẽ phỏt triển dần cỏc phương ỏn bộ phận.

Ký hiệu là tập hợp tất cả cỏc phương ỏn đầy đủ cú thể phỏt

triển từ phương ỏn bộ phận . Để giảm thời gian tớnh toỏn chỳng ta

sẽ khụng phỏt triển tất cả cỏc phương ỏn bộ phận mà chỉ phỏt triển những

phương ỏn tiềm năng, tức là những phương ỏn mà

cú khả năng chứa lời giải tối ưu, và sẽ khụng phỏt triển cỏc phương ỏn bộ

phận mà chắc chắn khụng chứa lời giải tối ưu. Vấn

đề đặt ra là phải cú dấu hiệu để phỏt hiện là khụng tiềm năng.

Ta gọi cận dưới của phương ỏn bộ phận là số thỏa

món điều kiện

, (1)

Giả sử là phương ỏn tốt nhất trong số cỏc phương ỏn đầy đủ đó duyệt và . Ta gọi là giỏ trị kỷ lục hiện thời. Thế thỡ, nếu

từ (1) ta suy ra

Vỡ thế, tập khụng thể chứa lời giải tối ưu, và phương ỏn bộ phận

khụng cần phỏt triển tiếp.

Như vậy, để thực hiện tốt ý tưởng trờn cần:

Xỏc định được hàm cận dưới một cỏch dễ dàng hơn việc

giải bài toỏn tối ưu ở vế phải của (1). Xỏc định và cập nhật được giỏ trị kỷ lục.

Chỳ ý. Khi bài toỏn tối ưu đặt ra là Max{f(x): x D} thỡ thay cho hàm cận dưới ta phải xột hàm cận trờn thỏa món

. (2)

Gọi là giỏ trị kỷ lục hiện thời tức là giỏ trị lớn nhất của hàm mục tiờu trong

số cỏc phương ỏn đó duyệt. Khi đú nếu từ (2) suy ra

Vỡ thế, tập khụng thể chứa lời giải tối ưu, và phương ỏn bộ phận

khụng cần phỏt triển tiếp.

Nhận xột 1. Nếu minh họa bài toỏn xõy dựng lời giải (hay cấu

hỡnh/phương ỏn) tối ưu như xõy dựng cõy tỡm kiếm thỡ đối với mỗi nỳt (hay mỗi nhỏnh) của cõy cần xỏc định cận dưới đối với bài toỏn cực tiểu húa hoặc (adsbygoogle = window.adsbygoogle || []).push({});

cận trờn đối với bài toỏn cực đại húa và chỉ cần phỏt triển cỏc nhỏnh tiềm năng chứa lời giải tối ưu.

Khụng gian tỡm kiếm của phương phỏp nhỏnh cận cú thể được minh họa như sau

Nhận xột 2. Mỗi lời giải bộ phận cú thể xem như một bài toỏn con về chi phớ để hoàn thiện lời giải này. Trong ngữ cảnh bài toỏn cực tiểu húa để loại bỏ bài toỏn con ta cần phải được tin rằng chi phớ của nú lớn hơn chi phớ của một lời giải đầy đủ đó duyệt. Thuật toỏn nhỏnh cận trong trường hợp này cú thể được mụ tả như sau:

Start with some problem P0

Let , the set of active subproblems

bestsofar = (giỏ trị kỷ lục) Repeat while S is nonempty:

choose a subproblem (partial solution) and remove it from

S;

expand it into smaller subproblems

For each :

If is a complete solution: update bestsofar else if lowerbound( ) < bestsofar: add Pi to S return bestsofar

tức là

Bắt đầu bởi bài toỏn P0

Đặt , tập cỏc bài toỏn được kớch hoạt

(giỏ trị kỷ lục)

Lặp cho đến khi :

chọn bài toỏn con và loại nú ra khỏi ;

phõn hoạch nú thành cỏc bài toỏn con

đối với mỗi bài toỏn :

nếu là lời giải đầy đủ: cập nhật giỏ trị kỷ lục

nếu cận dưới của : bổ sung Pi vào S

Một phần của tài liệu Về các bài toán NP C và một số phương pháp giải (Trang 32 - 36)