Sinh các phân hoạch tập hợp

Một phần của tài liệu Bài giảng môn tổ hợp Phân hoạch (Trang 65 - 70)

Bài toán

Xét tập Sn gồm nphần tử, Sn={1,2, . . . , n}. Hãy sinh mọi phân hoạch của tập S.

Dễ thấy, bài toán sinh các phân hoạch có cấu trúc đệ quy. Hãy tìm cấu trúc này?

Sinh các phân hoạch tập hợp

Nếu ta đã xây dựng được một phân hoạch πn−1 ={S1, S2, . . . , Sk}

của tập gồm n−1phần tử Sn−1={1,2, . . . , n−1} thì ta dễ dàng tìm được mọi phân hoạch của tậpSn. Đó là các phân hoạch:

               π1 n ={S1∪ {n}, S2, . . . , Sk} πn2 ={S1, S2∪ {n}, . . . , Sk} · · · · πk n ={S1, S2, . . . , Sk∪ {n}} πk+1 n ={S1, S2, . . . , Sk,{n}} (*)

Các phân hoạch liên tiếp trong danh sách trên khác nhau chỉ ở hai tập con dựa vào hai thao tác: bỏ phần tửnra khỏi một tập và đưa nó vào tập ngay sau. (Tập nằm sau tập cuối cùng là tập rỗng).

Sinh các phân hoạch tập hợp

Từ đó, ta có thể tìm các phân hoạch của tập Sn từ các phân hoạch của tập Sn−1 như sau:

Giả sửLn−1 là tập tất cả các phân hoạch của tậpSn−1.

Với mỗi phân hoạch πn−1={S1, S2, . . . , Sk}, ta xây dựng k+ 1

phân hoạch của Sn như trong (*) và đưa vàoLn:

Ln← Ln∪πnj, ∀j= 1,2, . . . , k, k+ 1.

Sinh các phân hoạch tập hợp

Ví dụ, sơ đồ sinh các phân hoạch của tập gồm ba phần tử {1,2,3}:

{1} {1,2}

{1,2,3} {1,2}{3}

{1}{2}

{1,3}{2} {1}{2,3} {1}{2}{3}

Bài tập

Bài tập 6. Hãy vẽ sơ đồ sinh các phân hoạch của tập gồm bốn phần tử{1,2,3,4}.

Bài tập 7. Viết chương trình sinh các phân hoạch của tập gồmn

phần tử.

Một phần của tài liệu Bài giảng môn tổ hợp Phân hoạch (Trang 65 - 70)

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

(118 trang)