Bài tốn các đoạn thẳng khơng giao nhau.

Một phần của tài liệu Thuật toán và một số thuật toán sơ cấp (Trang 65 - 68)

- Nếu ga > gb ta cĩ thể thay thế cơng việ cb trong J bởi cơng việ ca và được một tập mới tốt hơn J Điều này là khơng thể vì J tối ưu.

3.4. Bài tốn các đoạn thẳng khơng giao nhau.

Bài tốn: Cho một tập hợp các khoảng C = {(a1,b1),..., (an,bn)}. Tìm một tập S chứa

Cĩ một số phương án khác nhau cĩ thể suy nghĩ áp dụng kỹ thuật tham lam để giải quyết bài tốn này.

Ta cĩ thể ưu tiên chọn khoảng cĩ độ dài nhỏ nhất ở mỗi bước. Tuy nhiên cĩ thể gặp tình huống là khoảng này giao với tất cả các khoảng cịn lại.

Chẳng hạn xét ví dụ sau: C = {(1,6),(5,8), (7,12)}. Khi đĩ thuật tốn chỉ chọn được một khoảng là (5,8) trong khi rõ ràng phương án tối ưu chọn được hai khoảng (1,6) và (7,12).

Một phương án khác cĩ thể xem xét là tại mỗi bước ta chọn khoảng giao ít nhất với những khoảng cịn lại, sau đĩ loại bỏ các khoảng cĩ giao với khoảng vừa chọn.

Chẳng hạn cĩ thể mơ tả như sau: Lặp cho tới khi C rỗng

Chọn khoảng I giao ít nhất với các khoảng trong C Bổ sung I vào S

Loại khỏi C các khoảng cĩ giao với S.

Việc xác định phương án này cĩ phải là một thuật tốn đúng (dẫn đến lời giải tối ưu) hay khơngđược coi như một bài tập.

Ta xét thuật tốn tham lam A như sau: Lặp cho tới khi C rỗng

Chọn khoảng I trong C cĩ đầu mút bên phải nhỏ nhất Bổ sung I vào S

Loại I và các khoảng cĩ giao với S khỏi C Chứng minh tính đúng đắn của thuật tốn:

Giả sử thuật tốn nêu trên khơng đúng tức là cĩ một tình huống C mà áp dụng thuật tốn này khơng cho lời giải tối ưu. Gọi kết quả của thuật tốn là A(C) ứng với đầu vào C và giả sử O là một phương án tối ưu cĩ giao nhiều nhất với A(C) (tức là cĩ chung các khoảng được chọn với A(C) nhiều nhất).

Trước tiên ta nhận xét rằng A(C) là cĩ triển vọng (tức là các khoảng trong A(C) là khơng giao nhau).

Giả sử X là khoảng bên trái nhất của A(C) khơng nằm trong O. Một khoảng X như vậy phải tồn tại, vì nếu khơng thì hoặc A(C) = O mâu thuẫn với giả thiết A(C) khơng tối ưu, hoặc A(C) là tập con thực sự của O, khi đĩ lại nảy sinh mâu thuẫn với thuật tốn vì khi đĩ thuật tốn sẽ chọn khoảng cuối cùng trong O.

Giả sử Y là khoảng bên trái nhất của O mà khơng cĩ trong A(C), một khoảng như vậy phải tồn tại vì nếu khơng O sẽ là tập con của A(C), mâu thuẫn.

Rõ ràng đầu mút bên phải của X phải nhỏ hơn đầu mút bên phải của Y vì nếu khơng thì thuật tốn sẽ chọn Y.

Xét tập O’ = O – Y + X.

Tập O’ là cĩ triển vọng: X khơng giao với các khoảng bên trái nĩ trong O’ vì các khoảng này cũng nằm trong A(C). X khơng giao với các khoảng bên phải nĩ trong O’ vì nếu cĩ khoảng Z như vậy thì Z sẽ giao với Y trong O.

O’ cĩ số lượng khoảng bằng số lượng khoảng của O. O’ cĩ số khoảng chung với A(C) nhiều hơn so với O.

3.5. BÀI TẬP

Một phần của tài liệu Thuật toán và một số thuật toán sơ cấp (Trang 65 - 68)

Tải bản đầy đủ (PDF)

(71 trang)