HOÁN VỊ, CHỈNH HỢP, TỔ HỢP TRONG PYTHON (itertools)

Các Hàm Hoán Vị, Chỉnh Hợp, Tổ Hợp trong Python (itertools)

Trong Python, đặc biệt khi giải các bài toán về tổ hợp, xác suất hoặc sinh dữ liệu thử nghiệm, thư viện itertools cung cấp các hàm mạnh mẽ để tạo ra:

  • Hoán vị (permutations)
  • Chỉnh hợp (permutations với số phần tử lấy ít hơn)
  • Tổ hợp (combinations)
  • Tổ hợp lặp (combinations_with_replacement)
  • Tích Đề Các (product)

1. Hoán vị (permutations)

Hoán vị là việc sắp xếp tất cả các phần tử theo mọi thứ tự có thể. Đây là dạng liệt kê phổ biến.


from itertools import permutations

items = [1, 2, 3]

# Hoán vị 3 phần tử
for p in permutations(items):
    print(p)

Kết quả:

  • (1, 2, 3)
  • (1, 3, 2)
  • (2, 1, 3)
  • (2, 3, 1)
  • (3, 1, 2)
  • (3, 2, 1)

Hoán vị chọn k phần tử (chỉnh hợp)


from itertools import permutations

items = ['A', 'B', 'C']

# Chỉnh hợp 2 phần tử
for p in permutations(items, 2):
    print(p)

2. Tổ hợp (combinations)

Tổ hợp chỉ quan tâm chọn phần tử, không quan tâm thứ tự.


from itertools import combinations

items = [1, 2, 3]

# Tổ hợp 2 phần tử
for c in combinations(items, 2):
    print(c)

Kết quả:

  • (1, 2)
  • (1, 3)
  • (2, 3)

3. Tổ hợp lặp (combinations_with_replacement)

Dùng khi phần tử được phép lặp lại trong tổ hợp.


from itertools import combinations_with_replacement

items = ['A', 'B', 'C']

for c in combinations_with_replacement(items, 2):
    print(c)

Kết quả:

  • ('A', 'A')
  • ('A', 'B')
  • ('A', 'C')
  • ('B', 'B')
  • ('B', 'C')
  • ('C', 'C')

4. Tích Đề Các (product)

product() tạo ra mọi kết hợp có lặp giữa các tập giá trị — rất hữu ích để mô phỏng.


from itertools import product

dice = [1, 2, 3, 4, 5, 6]

# Mô phỏng tung 2 viên xúc xắc
for p in product(dice, repeat=2):
    print(p)

5. Bảng so sánh nhanh

Hàm Mô tả Quan tâm thứ tự? Có lặp?
permutations(n) Hoán vị toàn bộ Không
permutations(n, k) Chỉnh hợp A(n, k) Không
combinations(n, k) Tổ hợp C(n, k) Không Không
combinations_with_replacement(n, k) Tổ hợp lặp Không
product(...) Tích đề các

6. Ứng dụng thực tế

  • Bài toán xác suất – thống kê.
  • Sinh mật khẩu thử (brute force).
  • Tạo dữ liệu test cho chương trình.
  • Dạy học về tổ hợp – hoán vị.

7. Ví dụ tổng hợp


from itertools import permutations, combinations, product

letters = ['A', 'B', 'C']

print("Hoán vị:")
print(list(permutations(letters)))

print("\nChỉnh hợp 2 phần tử:")
print(list(permutations(letters, 2)))

print("\nTổ hợp 2 phần tử:")
print(list(combinations(letters, 2)))

print("\nTích đề các (lặp):")
print(list(product(letters, repeat=2)))

Kết luận

Thư viện itertools là công cụ mạnh giúp Python xử lý các bài toán hoán vị, chỉnh hợp, tổ hợp và mô phỏng. Đây là nội dung rất phù hợp cho học sinh THCS – THPT khi học xác suất, tổ hợp hoặc lập trình.

Nhận xét