GIỚI THIỆU BÀI TOÁN PHỦ TẬP HỢP

Một phần của tài liệu một số thuật toán giải bài toán phủ tập hợp và ứng dụng (Trang 27 - 76)

2.1.1. Một số ví dụ về bài toán phủ tập hợp

Bài toán phủ tập hợp (Set Covering Problem – SCP) là mô hình của nhiều ứng dụng quan trọng. Để hiểu rõ hơn về mô hình toán học của bài toán phủ tập hợp tổng quát chúng ta sẽ xét một số ví dụ sau đây:

Ví dụ 2.1. Bài toán phân lịch bác sĩ.

Một bệnh viện ER cần phải giữ cho các bác sĩ luôn sẵn sàng phục vụ yêu cầu cấp cứu, do đó mỗi bác sĩ đủ tiêu chuẩn sẵn sàng thực hiện tất cả các thủ tục y tế có thể theo yêu cầu ( Có một danh sách chính thức của các thủ tục đó). Với mỗi bác sĩ có trách nhiệm sẵn sàng phục vụ các yêu cầu cấp cứu, chúng ta có thể biết đƣợc mức lƣơng bổ sung mà họ đƣợc nhận và những thủ tục y tế mà họ có thể thực hiện. Mục tiêu để lựa chọn các bác sĩ sao cho mỗi thủ tục y tế đƣợc bao phủ với chi phí tối thiểu.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Ta có thể phát biểu lại bài toán trên nhƣ sau: Với m thủ tục y tế và n bác sĩ sẵn có, dữ liệu đƣợc biểu diễn nhƣ là: m n

A , trong đó aij 1 nếu bác sĩ j có thể thực hiện thủ tục y tế i và aij 0 ngƣợc lại. Hơn nữa, ta gọi cj,j 1,...,n là mức lƣơng bổ sung cần trả cho bác sĩ j cho trách nhiệm thực hiện yêu cầu cấp cứu.

Các biến: xj 1 nếu bác sĩ j là đang phục vụ, và 0 ngƣợc lại Công thức: 1 min nj c xj j (Mức lƣơng bổ sung) ij 1 1, 1,..., , {0,1}, 1,..., n j j j a x i m x j n ( ít nhất một bác sĩ phải thực hiện thủ tục y tế i)

Mô hình toán học của bài toán phân lịch bác sĩ đƣợc phát biểu dƣới dạng tổng quát:

Giả sử chúng ta cho tập M, Mj M j, 1,...,n là n tập con của M, và trọng số của các tập con là cj, j 1,...,n

Tập phủ: một tập T {1,..., }n sao cho j

j TM M

Trong ví dụ trên, M là toàn bộ tập các thủ tục y tế, Mj là tập hợp các thủ tục y tế mà bác sĩ j có thể thực hiện, và cj là mức lƣơng bổ sung của bác sĩ j.

T là tập các bác sĩ phục vụ cho yêu cầu cấp cứu, nhớ rằng nó phải là một tập

phủ của M. Trong bài toán trên chúng ta đi tìm trọng số nhỏ nhất của tập phủ:

1

min j: is cov er min j j: , {0,1}n

T

i T i

c T a c x Ax e x

Trong đó A là một ma trận liên thuộc, e là một vectơ của 1

Ví dụ 2.2. Bài toán đóng gói đƣợc phát biểu nhƣ sau:

Giả sử chúng ta cho tập M, Mj M j, 1,...,n là n tập con của M, và trọng số của các tập con là cj, j 1,...,n

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Khi đó trọng số lớn nhất của bài toán đóng gói đƣợc cho bởi công thức:

1 ax : is a packing ax : , {0,1} n n j j j T j T j m c T m c x Ax e x 2.1.2. Bài toán phủ tập hợp

Từ những ví dụ trên ta có thể định nghĩa một cách hình thức bài toán SCP nhƣ sau:

Giả sử A aij là ma trận nhị phân m nC cj là vector thực n chiều với các thành phần không âm. Ta ký hiệu tập M 1, 2,...,m ;N 1, 2,...,n . Chúng ta coi ma trận A bao gồm các hàng và các cột và cj là giá trị của cột j N. Ngƣời ta

nói rằng cột j N phủ hàng i M nếu aij 1. Một nghiệm chấp nhận đƣợc của SCP là tập con bất kỳ các cột S S, N, sao cho mỗi hàng i M đƣợc phủ ít nhất bởi một cột j S. Bài toán SCP chính là việc tìm kiếm nghiệm chấp nhận đƣợc có giá tối thiểu với mô hình toán học nhƣ sau:

min j j j N c x (14) Trên tập các ràng buộc: ij j 1, , j Q a x i M (15) 0,1 , j x j N (16) (adsbygoogle = window.adsbygoogle || []).push({});

Với xj 1 nếu j Sxj 0 nếu ngƣợc lại. Với mỗi dòng i Mta gọi ij

: 1

i

J j N a

Là tập hợp các cột phủ hàng i. Tƣơng tự, với mỗi cột j N ta gọi ij

Ij i M a: 1

Là tập con các dòng đƣợc phủ bởi cột j. Hơn nữa, ta gọi q i M j Naijlà số lƣợng các phần tử khác 0 của A.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Có rất nhiều thủ tục đƣợc đƣa ra nhằm làm giảm kích thƣớc của bài toán SCP bằng cách loại bỏ một số cột và hàng dƣ thừa. Hầu hết các thủ tục xem xét việc loại bỏ cột j khi tồn tại một cột k jIj Ikcj ck, hoặc cột j đƣợc loại bỏ khi

min :

j

j i I k i

c c k J , dòng i đƣợc loại bỏ nếu tồn tại một dòng h i sao cho

h i

J J và bao gồm các giải pháp của cột j bất kỳ mà Ji j với một số dòng i.

Những quy tắc này phải đƣợc áp dụng một cách cẩn thận, nhƣ việc thực hiện đơn giản một kiểm tra một cột hoặc một hàng là dƣ thừa có thể rất tốn thời gian trong trƣờng hợp bài toán có quy mô lớn, mặt khác điều đó có thể làm giảm đáng kể kích thƣớc trong các bài toán về thời gian.

2.2. MỘT SỐ KẾT QUẢ LÝ THUYẾT VỀ BÀI TOÁN PHỦ TẬP HỢP 2.2.1.Hƣớng tiếp cận giải bài toán SCP 2.2.1.Hƣớng tiếp cận giải bài toán SCP

Nhƣ chúng ta đã biết các phƣơng pháp giải bài toán SCP trong thực tế dựa trên nhiều cách tiếp cận khác nhau, trong số đó phƣơng pháp hiệu quả nhất là dùng giải thuật heuristic và giải thuật chính xác dựa trên phƣơng pháp giải quyết bài toán quy hoạch tuyến tính (LP) nới lỏng của bài toán SCP đƣợc định nghĩa giống nhƣ ở công thức (14) và (15) trong đó:

0 xj 1, j N (17)

Tuy nhiên, để đƣa ra lời giải chính xác cho bài toán nới lỏng này mà dựa trên những quy tắc chung của bài toán LP thông thƣờng là rất tốn thời gian, có rất nhiều thuật toán giải quyết bài toán SCP bằng cách sử dụng hàm Lagrangian nới lỏng kết hợp với dƣới hàm gradient tối ƣu nhằm xác định giải pháp gần tối ƣu nhất u là đối

ngẫu của bài toán LP nới lỏng đƣợc cho bởi:

ax : ( ), 0 ( )

j

i i j i

i M i I

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Tiếp theo đây chúng ta định nghĩa lại mô hình hàm Lagrangian nới lỏng dựa trên công thức (14)-(16) tƣơng tự nhƣ mệnh đề Lagrangian nới lỏng đƣợc trình bày trong [11]. Cho mỗi vectơ m

u R của nhân tử Lagrangian liên quan đến ràng buộc ở công thức (15), bài toán con Lagrangian có dạng:

( ) min j( ) j i j N i M L u c u x u (19) Trong đó: {0,1} j N j x (20) Với ( ) j j j i I i

c u c u là giá trị của hàm Lagrangian liên quan đến cột j N. Mặt khác, từ công thức (19) – (20) ta có x uj( ) 1, nếu c uj( ) 0,x uj( ) 0, nếu (adsbygoogle = window.adsbygoogle || []).push({});

( ) 0 à ( ) 0,1

j j

c u v x u thì c uj( ) 1. Chúng ta thấy rằng u x u, ( ) có thể đƣợc xác

định với độ phức tạp O(q). Bài toán Lagrangian đối ngẫu liên quan với công thức

(19) – (20) bao gồm việc tìm kiếm một vectơ phân tử Lagrangian * m

u R để làm cực đại hóa cận dƣới L u( ). Từ (19) – (20) ta tính đƣợc phần nguyên, bất kỳ giải pháp tối ƣu u* là đối ngẫu của phƣơng pháp LP nới lỏng của bài toán SCP cũng là giải pháp tối ƣu cho bài toán đối ngẫu Lagrangian [11]. Giải pháp khả thi cho bài toán đối ngẫu chỉ chọn các nhân tử Lagranian là không âm, tuy nhiên không phải tất cả vector nhân tử tƣơng ứng thỏa mãn yêu cầu đó. Mặt khác, với mỗi vector nhân tử có khả năng đƣợc dùng để tính cận dƣới bằng cách gán cho nó những giá trị Lagrangian âm, cái mà vi phạm ràng buộc đối ngẫu tƣơng ứng. Hơn nữa, ta có một vectơ nhân tử dễ dàng sửa đổi để có một giải pháp đối ngẫu khả thi mà không làm giảm (hoặc làm tăng) ràng buộc cận dƣới. Việc này đƣợc thực hiện bằng cách chọn tham lam một cột j sao cho c uj( ) 0, phù hợp với việc làm giảm giá trị của ui với

j

i I cho đến khi c uj( ) 0và lặp lại bƣớc tham lam đó cho đến khi không còn cột nào có giá trị lagrangian âm. Chi tiết hơn chúng ta có thể tham khảo ví dụ của Balas và Carrera [3]. Vì vậy, chúng ta sẽ xác định vectơ nhân tử Lagrangian gần tối ƣu

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

tƣơng ứng theo hƣớng giải pháp heuristic cho đối ngẫu của phƣơng pháp LP nới lỏng.

Chúng ta biết rằng, theo hƣớng tiếp cận để tìm vectơ nhân tử gần tối ƣu với thời gian tính toán ngắn thì sử dụng vectơ dƣới hàm gradient s u( ) Rm, liên quan vectơ phân tử u là giải pháp mở rộng tƣơng ứng x(u), đƣợc định nghĩa nhƣ sau:

( ) 1 ( ),

i

i j

j J

s u x u i M (21)

Phƣơng pháp tiếp cận này tạo ra một dãy 0 1

, ,...

u u của vectơ nhân tử Lagrangian không âm, với u0đƣợc xác định một cách tùy ý. Khi đó ta định nghĩa u kk, 1 là khả năng lựa chọn đƣợc cho bởi công thức sau:

1 2 ( ) ax ( ), 0 ( ) k k k k i i i k UB L u u m u s u s u với i M (22) Trong đó UB là một cận trên trên v SCP( ) và 0 là một tham số điều khiển theo phƣơng dƣới gradient s u( k). Với phƣơng pháp Held-Karp cổ điển tham số sẽ giảm một nửa trong trƣờng hợp p liên tiếp lặp lại mà không làm tăng cận dƣới.

2.2.2.Một số phƣơng pháp tìm giải pháp gần tối ƣu cho bài toán SCP

Một kỹ thuật thƣờng đƣợc sử dụng để làm giảm kích thƣớc của bài toán SCP là dựa trên việc quan sát giá trị hàm Lagrangian c uj( ) cho một cận dƣới để tăng cận dƣới L(u) nếu nhƣ xi đƣợc cố định là 1. Rõ ràng là, có thể cố định xi là 0 khi mà

( ) j( ) .

L u c u UB Tƣơng tự, chúng ta thấy rằng có thể cố định xi là 1 khi và chỉ khi ( ) j( )

L u c u UB (chúng ta có thể gọi giá trị Lagrangian đó là đối số). Kỹ thuật này đƣợc gọi là cố định giá trị hàm Lagrangian.

Sau đây là phần mô tả thủ tục tối ƣu dƣới gradient chuẩn có thể đƣợc cải tiến trong nhiều cách phổ biến, để đạt đƣợc sự hội tụ nhanh hơn cho một vectơ nhân tử

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

gần tối ƣu. Tiếp theo chúng ta sẽ minh họa một vài biến trong tài liệu.

Balas và Carrera [3], thay vì mở rộng ràng buộc trong công thức (15) tƣơng ứng với tất cả các dòng trong M, trong đó việc mở rộng các dòng trong tập con M sao cho Ji Jh với mọi i h, M i, h, và mở rộng hàm Lagrangian bằng cách chỉ lấy các dòng thuộc M M\ . Với ý tƣởng này chúng ta dễ dàng để giải quyết bài toán mở rộng với độ phức tạp tính toán là O q( ), và cận dƣới tốt nhất có thể đạt đƣợc thông qua bài toán nới lỏng này vẫn tƣơng ứng với giá trị theo phƣơng pháp LP nới lỏng. Hơn nữa, trong [3] thủ tục quy hoạch dƣới gradient đƣợc đề xuất, trong đó mỗi bƣớc lặp vectơ nhân tử Lagrangian u đƣợc đƣa vào trong phần giải pháp LP đối ngẫu khả thi. Bằng cách sử dụng giá trị hàm Lagrangian cố định, giá trị của một vài biến có thể đƣợc cố định trong các thủ tục tối ƣu hóa dƣới gradient.

Khi những trƣờng hợp không gian giải quyết bài toán là rất lớn, thời gian để máy tính giải quyết bài toán tối ƣu hóa dƣới gradient cũng rất lớn. Để giải quyết khó khăn này, Caprara, Fischetti và Toth [9] đã đƣa ra bài toán lõi bao gồm một tập các cột thích hợp, đƣợc lựa chọn từ những giá trị hàm Lagrangian thấp nhất, và sử dụng một lƣợc đồ biến định lƣợng để lặp lại việc cập nhật bài toán lõi trong một mạch giống nhƣ việc giải quyết bài toán quy hoạch tuyến tính quy mô lớn. Việc sử dụng định lƣợng trong phƣơng pháp dƣới gradient tối ƣu sẽ làm giảm thời gian tính toán rất lớn và đây là ý tƣởng chính cho việc thành công của thuật toán heuristic đƣợc đƣa ra trong [9]. Trong [9] các tác giả Moreover, Caprara, Fischetti và Toth đã cải cải tiến tiêu chuẩn xác định các kích thƣớc và hƣớng đi trong mỗi bƣớc của phƣơng pháp tối ƣu hóa dƣới gradient. (adsbygoogle = window.adsbygoogle || []).push({});

Một cách tiếp cận đối ngẫu gốc dƣới gradient đƣợc đề xuất bởi Ceria, Nobili và Sassano [10]. Đặc biệt, ngƣời ta có thể xác định lại vấn đề bài toán LP đối ngẫu (18) bằng cách áp dụng cận trên ci max c j: j Ji cho mỗi biến đối ngẫu u ii, M . Nếu ràng buộc

j i j

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

vectơ nhân tử x, thì chúng ta sẽ có đƣợc bài toán Lagrange đối ngẫu tƣơng đƣơng

với phƣơng pháp LP nới lỏng gốc của bài toán SCP, theo nghĩa là một giải pháp để có đƣợc một vector nhân tử tối ƣu.

Một thay thế cho hàm Lagrange nới lỏng là sử dụng hàm đại diện nới lỏng đƣợc Lorena và Lopes sử dụng. Đối với một vector m

v R của nhân tử đại diện, bài toán đại diện nới lỏng của SCP có dạng:

( ) min j j i N S u c x (23) Trong đó: j i j i j N i I i M v x v (24) 0,1 j x j N (25)

Nhƣ là bài toán Ba lô vẫn là bài toán NP-khó, nhƣng khả năng giải quyết trong thời gian giả đa thức rất hiệu quả nhƣ ví dụ của Martello và Toth [15]. Tuy nhiên, Lorena và Lopes tiếp tục mở rộng ràng buộc của công thức (25) và giải quyết bài toán này với độ phức tạp là O n( ) để tiếp tục mở rộng bài toán Ba lô. Mặc dù vậy, việc mở rộng này vẫn còn tƣơng đƣơng với cách giải quyết bằng phƣơng pháp LP mở rộng của bài toán SCP, các kết quả thực nghiệm đƣợc của Lorena và Lopes cho thấy rằng việc sử dụng hàm đại diện thay vì hàm lagrangrian nới lỏng trong việc tối ƣu hóa dƣới gradient cho phép tìm đƣợc phân tử gần tối ƣu trong một thời gian tính toán ngắn hơn.

Wedelin [17] đã trình bày một phƣơng pháp thay thế để tối ƣu hóa dƣới gradient mà các nhân tử gần nhƣ tối ƣu. Phƣơng pháp này xem xét ứng mỗi dòng i có thực hiện việc cập nhật vectơ nhân tử ui tƣơng ứng không. Với j Ji sẽ tính đƣợc giá trị Lagrangian '

( ) ( )

j j i

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Lagrangrian nhỏ nhất từ lần thứ hai, ta nói ' 1( ) c u và ' 2( ) c u và tập hợp những giá trị mới của ui bằng ' ' 1 2

( ( )c u c u( )) / 2. Ý tƣởng này cho ta một cột j Ji có giá trị Lagrangian âm. Bằng cách áp dụng phƣơng pháp này cho từng dòng trong một khoảng thời gian xác định chúng ta có thể sẽ nhận đƣợc những nhân tử gần tối ƣu. Wedelin đã sử dụng hai giá trị uiui để thay thế cho ui . Giá trị Lagrangian của cột j Ji với giá trị Lagrangian âm sau bƣớc lặp cuối cùng trên dòng i đƣợc tính

toán dựa trên giá trị ui , các giá trị của các cột còn lại trong Ji đƣợc tính dựa trên giá trị ui . Cách tiếp cận này đảm bảo hoạt động tốt hơn nếu đƣợc đƣa vào trong thuật toán Heuristic để giải quyết bài toán SCP.

Hầu hết các phƣơng pháp trên đƣợc sử dụng trong các thuật toán Heuristic, mục tiêu chính không phải là tính cận dƣới khả hẹp nhất có thể mà là điều khiển việc tìm giải pháp gần tối ƣu cho bài toán SCP. Vì vậy, thay vì tìm hiểu việc so sánh các phƣơng thức theo giá trị cận dƣới mà chúng tạo ra, chúng ta sẽ tìm hiểu việc so sánh hiệu quả thực hiện của các thuật toán Heuristic trong phần tiếp theo.

Trong nhiều trƣờng hợp, việc xác định cận dƣới bằng hàm Lagrangian hoặc phƣơng pháp thay thế nới lỏng là tệ hơn so với giải pháp tối ƣu giá trị theo phƣơng pháp LP nới lỏng. Theo chúng tôi, đây không phải là một nhƣợc điểm trong các thuật toán Heuristic, nơi mà mục tiêu chính là xác định giải pháp tốt cho bài toán

Một phần của tài liệu một số thuật toán giải bài toán phủ tập hợp và ứng dụng (Trang 27 - 76)