Tạo các hàm rất hữu ích khi bạn thiết kế các thuật toán đếm. Đó là, không chỉ khi bạn đang tìm kiếm số lượng đối tượng có một thuộc tính nhất định, mà cả khi bạn đang tìm cách liệt kê các đối tượng này (và có lẽ, tạo ra một thuật toán để đếm các đối tượng). Có một bài trình bày rất hay trong chương 7 của Toán học cụ thể của Ronald Graham, Donald Knuth và Oren Patashnik . Các ví dụ dưới đây là từ những cuốn sách này (những sai lầm và thiếu rõ ràng là của tôi).
Giả sử rằng bạn đang tìm cách để thay đổi với một bộ tiền xu nhất định. Ví dụ: với các mệnh giá phổ biến của Hoa Kỳ¹, các đồng tiền có thể là . Để thay đổi ¢ 42, một khả năng là ; một khả năng khác là . Chúng tôi sẽ viết . Tổng quát hơn, chúng ta có thể viết hàm tạo cho tất cả các cách để thay đổi:
Theo thuật ngữ kỹ thuật hơn, là một thuật ngữ trong không gian của chuỗi lũy thừa trong năm biến[1],[5],[10],[25],[100][25][10][5][1][1][10][10][10][10][1][1]42⟨[25][10][5][1]2⟩=⟨[10]4[1]2⟩
H=∑h≥0∑q≥0∑d≥0∑n≥0∑p≥0[100]h[25]q[10]d[5]n[1]p
H[100],[25],[10],[5],[1]. Xác định giá trị của một đơn thức trong không gian này bằng
Sau đó, các cách để thay đổi xu là số lượng đơn thức có định giá là . Chúng ta có thể diễn đạt theo cách tăng dần, bằng cách trước tiên viết ra các cách chỉ thay đổi đồng xu, sau đó là cách để thay đổi đồng xu và biệt hiệu, v.v. ( có nghĩa là không có tiền.)
⟨[100]h[25]q[10]d[5]n[1]p⟩=100h+25q+10d+5n+p
vvHPNIP=I+[1]+[1]2+[1]3+…=II−[1]N=(I+[5]+[5]2+[5]3+…)P=PI−[5]D=(I+[10]+[10]2+[10]3+…)N=NI−[10]Q=(I+[25]+[25]2+[25]3+…)D=DI−[25]H=(I+[100]+[100]2+[100]3+…)Q=QI−[100]
Nếu bạn muốn đếm và không chỉ liệt kê các cách để thay đổi, thì có một cách đơn giản để sử dụng chuỗi chính thức mà chúng tôi đã thu được. Áp dụng phép đồng hình
Hệ số của trong là số cách để thay đổi xu.
S:[1]↦X,[5]↦X5,[10]↦X10,[25]↦X25,[100]↦X100
XvS(C)v
Một ví dụ khó hơn: giả sử rằng bạn muốn nghiên cứu tất cả các cách để xếp hình chữ nhật với domino 2 × 1. Ví dụ: có hai cách để xếp hình chữ nhật 2 × 2, với hai domino ngang hoặc với hai domino dọc. Đếm số cách để xếp hình chữ nhật khá dễ dàng, nhưng trường hợp nhanh chóng trở nên không rõ ràng. Chúng ta có thể liệt kê tất cả các độ nghiêng có thể có của một dải ngang có chiều cao 3 bằng cách gắn các khối domino lại với nhau, điều này nhanh chóng tạo ra các mẫu lặp đi lặp lại:
2×n3×n
⎧⎩⎨⎪⎪⎪⎪⎪⎪U=o+LV+ΓΛ+≡UV=IU+=−VΛ=IU+−=Λ
trong đó các hình dạng ngộ nghĩnh đại diện cho các sắp xếp domino cơ bản: không phải là domino, là một domino thẳng đứng ở phía trên phần bên trái của một domino nằm ngang, là một domino thẳng đứng được xếp thẳng hàng với đáy của dải có chiều cao 3, là một domino nằm ngang được xếp thẳng hàng với đỉnh của dải cộng với hai domino nằm ngang bên dưới nó và một bước ở bên phải, v.v ... Ở đây, phép nhân biểu thị phép nối ngang và không giao hoán, nhưng có các phương trình giữa các mẫu cơ bản tạo thành các biến trong chuỗi lũy thừa này. Như trước đây với các đồng tiền, chúng ta có thể thay thế cho mỗi domino và nhận được một chuỗi tạo cho số lượng nghiêng của một
oLI−=X3×(2n/3)Hình chữ nhật (tức là hệ số của là số cách để xếp hình chữ nhật có diện tích , chứa domino và có chiều rộng ). Bộ này cũng có thể được sử dụng theo những cách linh hoạt hơn; ví dụ, bằng cách phân biệt các domino dọc và ngang, chúng ta có thể đếm các nghiêng với một số lượng domino dọc và ngang nhất định.
X3k6k3k2k
Một lần nữa, đọc Toán học cụ thể để trình bày ít vội vàng hơn.
¹ Tôi biết danh sách của tôi là không đầy đủ; giả sử một nước Mỹ đơn giản hóa phù hợp với các ví dụ toán
học.² ² Ngoài ra, nếu nó xuất hiện, giả sử các đồng tiền hình cầu.
³ Và typeset tốt hơn.