Ứng dụng thuật toán Heuristics giải bài toán SCP

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 37 - 46)

Các bƣớc cần thiết để áp dụng thành công thuật toán Meta-RaPS là thiết kế giải pháp cơ sở Heuristics và cải tiến nó một cách hiệu quả. Để giải quyết bài toán SCP, một giải pháp heuristic cơ sở sẽ đƣợc sử dụng ở bƣớc đầu và biểu diễn nó nhƣ thế nào để phát triển thành một thuật toán hiệu quả phối hợp với thuật toán Meta-RaPS.

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

Nỗ lực đầu tiên của nghiên cứu này là để sửa đổi thuật toán heuristic tham lam của Chvatal‟s (1979). Thuật toán heuristic tham lam đánh giá lại một cột j bằng một hàm f c k( ,j j) cj /kj, trong đó cjlà trọng số của cột j, và kj là số dòng không phủ hiện thời cái mà có thể đƣợc phủ bởi cột j, ta có kj i i: Ij \ n XIn , và luôn luôn thêm một giải pháp tập (X) những cột có giá trị cj /kj nhỏ nhất. Trong thuật toán Meta-RaPS, chúng ta sẽ chọn f c k( ,j j) cj/kj nhƣ là ràng buộc ƣu tiên, vì thế giá trị tham lam cho mỗi cột j(Pj) là cj /kj. Trong suốt thời gian %priority, cột có giá trị Pj nhỏ nhất sẽ đƣợc lựa chọn, trong khi đó thời gian yêu cầu, một cột từ tập CL sẽ đƣợc lựa chọn ngẫu nhiên. Sau khi một giải pháp khả thi đƣợc xây dựng, tất cả các cột dƣ thừa (cột j là dƣ thừa nếu X \ j vẫn còn là một tập phủ) sẽ đƣợc loại khỏi giải pháp giống nhƣ là cột dƣ thừa có giá trị lớn nhất sẽ đƣợc loại bỏ trƣớc tiên nhất. Hình 2.1 mô tả việc xác định của thuật toán heuristic greedy.

Mỗi cột trong giải pháp có một biến liên quan j để biết nó có phải là cột dƣ thừa hay không. Chúng ta định nghĩa min 1

j

j i I i , trong đó i là số cột đƣợc chọn mà có thể phủ dòng i. Do đó, cột j là dƣ thừa nếu và chỉ nếu j 0. Theo điều kiện đó biến kji có thể dễ dàng cập nhật trong suốt bƣớc lặp để thêm một cột cho giải pháp nhƣ trong Hình 2.2. Giá trị khởi tạo của kj Ij ,j J và giá trị khởi tạo của i 0,i I. Theo cách này, độ phức tạp để thực hiện việc thêm một cột và cập nhật giá trị kjiO q( ), trong đó thời gian cần thiết cho mỗi lần thực hiện dòng 4 là O n( ). Vì vậy, thời gian cần thiết để xây dựng thủ tục này là

( )

O rn q , trong đó r m là số lƣợng các giải pháp đƣợc tìm thấy. Vì thế số lƣợng trung bình của các giải pháp là m d q n/ , thời gian hoàn thành trung bình trong trƣờng hợp này là O q( ).

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

Hình 2.1. Thuật toán Meta-RaPS tìm giải pháp cơ sở

Hình 2.2. Thủ tục cập nhật

Để cải tiến giải pháp chất lƣợng hơn, một thủ tục tìm kiếm giải pháp láng giềng có thể đƣợc áp dụng sau khi có giải pháp cơ sở. Thủ tục tìm kiếm này sẽ xác định những giải pháp láng giềng nhƣ sau: nếu hai giải pháp chia sẻ ít nhất một cột, hai giải pháp này đƣợc gọi là giải pháp láng giềng, nghĩa là cho 2 giải pháp X1 và X2, nếu X1 X2 thì X1 và X2 là giải pháp láng giềng, ngƣợc lại chúng là giải pháp tách rời.

Một giải pháp láng giềng thu đƣợc qua hai bƣớc của một thủ tục. Bƣớc đầu tiên, một số cột đƣợc xác định bởi tham số ngƣời sử dụng định nghĩa, đƣợc loại bỏ ngẫu

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

nhiên từ giải pháp khả thi, vì thế những giải pháp này sẽ trở thành giải pháp không khả thi bởi vì chúng có những dòng không bị phủ. Sau đó từng phần giải pháp (giải pháp cục bộ) đƣợc làm khả thi bằng cách giải quyết bài toán SCP đã đƣợc giảm kích thƣớc đƣợc tạo thành từ các dòng không phủ và các cột có thể phủ các dòng này. Mã giả của thủ tục tìm kiếm láng giềng đƣợc thể hiện ở Hình 2.3. Tham số

search_magnitude đƣợc sử dụng để điều khiển việc loại bỏ một số cột từ giải pháp

hiện thời. Số cột đƣợc loại bỏ bằng X search_magnitude. Sau khi các cột đƣợc

loại bỏ, bài toán SCP giảm kích thƣớc đƣợc xác định ở Hình 2.4

' ' ' ij ' ' min j j: j 1, '; j 0 or 1, ' j J j J c x a x i I x j J Hình 2.3. Thủ tục tìm giải pháp láng giềng

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

Hình 2.4. Thuật toán Meta-RaPS giải bài toán SCP

Trong đó ' \ m m X I II và ' ' i i I JJ

Một thuật toán heuristic đơn giản, giống nhƣ là một thuật toán heuristic tham lam, có thể đƣợc sử dụng để giải quyết bài toán SCP giảm kích thƣớc trong trƣờng hợp này. Tuy nhiên, từ kinh nghiệm tính toán của chúng ta, việc áp dụng một cách ngẫu nhiên thuật toán heuristic cơ sở tham lam, Meta-RaPS SCP cơ sở, để làm giảm kích thƣớc bài toán SCP luôn luôn sinh ra giải pháp láng giềng tốt hơn. Sau khi kích thƣớc của bài toán SCP đƣợc làm giảm, một giải pháp láng giềng đƣợc thu đƣợc

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

bằng cách kết hợp các giải pháp của bài toán SCP nhỏ (X‟) và giải pháp thành phần (X) và việc loại bỏ các cột dƣ thừa. Số lƣợng giải pháp láng giềng để nghiên cứu đƣợc điều khiển bởi tham số imp_iteration.

Lƣu ý trong Hình 2.3 cho thấy rằng một khi các thủ tục cải tiến tìm thấy một giải pháp tốt hơn, việc tìm kiếm láng giềng kế tiếp sẽ đƣợc thực hiện xung quanh giải pháp tốt hơn này. Một chiến lƣợc tìm kiếm giải pháp láng giềng khác, trong đó việc tìm kiếm giải pháp láng giềng sẽ luôn đƣợc thực hiện quanh giải pháp khởi tạo, cũng đƣợc xem xét nhƣng thông thƣờng chúng cho kết quả kém.

Thời gian để hoàn thành thủ tục tìm kiếm giải pháp láng giềng là O r n( ' ' q'), trong đó r' m' là số các yếu tố của tập giải pháp để làm giảm kích thƣớc bài toán SCP, m' I' , 'n J' và ij

' '

'

i I j J

q a . Thời gian hoàn thành trong trƣờng hợp trung bình là O q( '). Khi phƣơng thức tìm kiếm giải pháp láng giềng đƣợc nhúng vào trong thuật toán Meta-RaPS, thời gian hoàn thành của tất cả các thủ tục là (adsbygoogle = window.adsbygoogle || []).push({});

[( ) ( ' ' ')]

O rm q r n q và thời gian trong trƣờng hợp trung bình là O q( q'), trong đó imp it ati n_ er o .

Ví dụ 2.3. Sử dụng thuật toán Heuristic tham lam giải bài toán phủ tập hợp với

yêu cầu chọn một số tối thiểu (của tập có kích thƣớc bất kỳ) của những tập sao cho những tập mà bạn chọn phải bao gồm tất cả các phần tử đƣợc chứa trong một tập bất kỳ của dữ liệu đầu vào. Ngoài ra bạn muốn giảm thiểu chi phí của các tập này.

Đầu vào:

- Các phần tử cơ sở, hoặc tập tổng quát U { ,u u1 2,..., }un

- Tập con S S1, 2,...,Sk U

- Giá trị tƣơng ứng c c1, 2,...,ck

Đầu ra:

tìm một tập I 1, 2,...,m nhằm giảm tổi thiểu i

i I

c sao cho i

i I

S U

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

Hƣớng giải quyết

Gọi C là tập các phần tử phủ hiện tại.

Gọi là chi phí trung bình cho mỗi nút mới đƣợc phủ. Thuật toán

1. C 0

2. While C Udo

Tìm tập có hiệu quả chi phí là nhỏ nhất ta gọi là S Cho c S( ) S C Với mỗi e S C, đặt p ic er e( ) C C S 3. Trả về tập đóng gói Ví dụ 2.4. Ví dụ về bài toán SCP Hình 2.5. Ví dụ bài toán SCP Chọn Z: ( ) 7 1 7 Z c Z S C Chọn X: ( ) 6 2 3 X c X S C

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Chọn Y: ( ) 15 7.5 2 Y c Y S C

Hình 2.6. Kết quả sau khi thực hiện thuật toán tham lam

Tổng giá trị = 6 + 15 + 7 = 28

Ví dụ 2.5. cho U 1, 2,..., 6 và S' S S1, 2,...,S10 . Phần tử và chi phí của mỗi tập đƣợc cho nhƣ sau: 1 1, 2 S c S( )1 3 2 3, 4 S c S( 2) 3 3 5, 6 S c S( 3) 3 4 1, 2,3, 4,5, 6 S c S( 4) 14 5 1 S c S( 5) 1 6 2 S c S( 5) 1 7 3 S c S( 7) 1 8 4 S c S( 8) 1 9 5 S c S( 9) 1 10 6 S c S( 10) 1

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

Hình ví dụ thuật toán tham lam

Chúng ta có một vài tập khả thi cho ví dụ này nhƣ là S S S1, 2, 3 và 2, 5, 6, 9, 10

S S S S S . Tuy nhiên tập phủ với chi phí nhỏ nhất là S S S S S S5, 6, 7, 8, 9, 10 có

chi phí là 6. Ví dụ nếu C S S S1, 2, 9 trong ví dụ này, ta có thể tính giá trị ứng với tập con S3nhƣ sau: (adsbygoogle = window.adsbygoogle || []).push({});

3 3 ( ) 3 3 | | 1 c S S C

Chúng ta gọi Hn in11 /i là số Harmonic n-th và ta có logn Hn logn 1.

Mệnh đề 2.1. Thuật toán tham lam là một thuật toán xấp xỉ Hn cho tập tối thiểu của bài toán phủ tập hợp, trong đó 1 1 ... 1 log

2 n H n n Chứng minh: i) Chúng ta biết r e( ) e U

p ic e = giá trị của thuật toán tam lam =

1 2

( ) ( ) ... ( m)

c S c S c S vì bản chất là cái chúng tôi phân chia giá trị của các phần tử. ii) Chúng ta thấy r e( ) 1 k OPT p ic e n k , trong đó eklà k-th phần tử đƣợc phủ. Ta nói tập tối ƣu là O O1, 2,...,Op

Vì thế, ( 1) ( 2) ... ( )

a

p

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

Bây giờ, giải sử thuật toán tham lam có các phần tử đƣợc phủ hiện tại trong C. Sau đó chúng tôi biết đƣợc các phần tử không phủ là U C là nhiều điểm giao nhau nhất của tất cả các tập tối ƣu giao nhau với những phần tử không phủ.

1 ( ) 2 ( ) ... ( )

b

p

U C O U C O U C O U C

Trong thuật toán tham lam, chúng ta chọn một tập có hiệu quả giá trị , trong

đó ( ) , 1.. ( ) c i i c O i p

O U C chúng ta biết điều này bởi vì thuật toán tham lam luôn chọn tập với giá trị hiệu quả là nhỏ nhất, cái này sẽ nhỏ hơn hoặc bằng với tập mà thuật toán tối ƣu chọn.

Công thức đại số: ( ) . ( ) c i i c O O U C ( ) . ( ) . a c b i i i i OPT c O O U C U C OPT U C Vì thế, giá của k-th phần tử là: ( 1) 1 OPT OPT n k n k

Từ (i) và (ii), chúng ta có đƣợc tổng giá trị của tập phủ:

1 1 1 1 r e( ) . 1 ... . 1 2 n n k n k k OPT p ic e OPT OPT H n k 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 37 - 46)