Chuỗi lũy thừa mã hóa một dãy số dưới dạng hệ số, biến bài toán tổ hợp thành bài toán đại số.
Trực giácHàm sinh là gì?
Hãy tưởng tượng một sợi dây phơi có vô hạn cái móc, đánh số 0,1,2,3,…. Để mô tả một dãy số a0,a1,a2,…, ta treo số an lên móc thứ n. Hàm sinh chính là sợi dây phơi này được viết lại thành một đối tượng đại số duy nhất: số an trở thành hệ số của xn trong một chuỗi lũy thừa. Biến x không bao giờ được thay bằng một con số cụ thể — nó chỉ giữ mỗi số hạng đúng ô của nó, nhờ vậy cộng, nhân hay dịch chuyển dãy số trở thành các phép đại số bình thường trên đa thức.
Đồ thị đa thức bậc ba $1+x+x^2+x^3$ xấp xỉ hàm sinh $\frac{1}{1-x}$.
Đường cong này là đa thức bậc ba 1+x+x2+x3, bốn số hạng đầu của 1−x1=∑n=0∞xn, hàm sinh của dãy hằng an=1. Mỗi hệ số (kéo a,b,c,d) là một móc của dãy số được gói vào đường cong.
Phổ thôngGói một dãy số vào chuỗi lũy thừa
Định nghĩa: Hàm sinh thường
Hàm sinh thường (OGF) của dãy số a0,a1,a2,… là chuỗi lũy thừa hình thức G(x)=∑n=0∞anxn. "Hình thức" nghĩa là ta coi tổng này như một biểu thức đại số, không phải một hàm số cần tính giá trị bằng số; câu hỏi về sự hội tụ tại các giá trị cụ thể của x không liên quan tới tổ hợp.
G(x)=n=0∑∞anxn
Khối xây dựng đơn giản nhất là dãy an=1 với mọi n≥0, có hàm sinh là chuỗi cấp số nhân 1−x1=∑n=0∞xn. Đẳng thức này là động cơ đứng sau phần lớn các lập luận dùng hàm sinh: nó nói rằng 1−x1 mã hóa "chọn n vật từ một nguồn cung không giới hạn, không quan tâm thứ tự, mỗi cách một lần".
Cho F0=0,F1=1 và Fn=Fn−1+Fn−2 với n≥2. Khi đó hàm sinh thường F(x)=∑n=0∞Fnxn bằng F(x)=1−x−x2x.
Vì sao đúng?
Một hệ thức truy hồi tuyến tính với hệ số hằng luôn trở thành một phương trình đại số (thực chất là phương trình hữu tỉ) đơn giản một khi ta nhân với xn rồi lấy tổng theo mọi n — hệ thức truy hồi trở thành phép nhân với một đa thức theo x.
Chứng minh
Nhân hệ thức truy hồi Fn=Fn−1+Fn−2 (đúng với n≥2) với xn rồi lấy tổng theo n≥2: ∑n≥2Fnxn=∑n≥2Fn−1xn+∑n≥2Fn−2xn.
Vế trái bằng F(x)−F0−F1x=F(x)−x. Tổng đầu tiên ở vế phải là x∑n≥2Fn−1xn−1=x∑m≥1Fmxm=x(F(x)−F0)=xF(x). Tổng thứ hai là x2∑n≥2Fn−2xn−2=x2∑k≥0Fkxk=x2F(x).
Vậy F(x)−x=xF(x)+x2F(x), tức là (1−x−x2)F(x)=x.
Giải phương trình theo F(x) ta được F(x)(1−x−x2)=x, suy ra F(x)=1−x−x2x, một hàm hữu tỉ duy nhất gói trọn toàn bộ dãy Fibonacci vô hạn.
Với φ=21+5 và ψ=21−5, các nghiệm của 1−x−x2 cho công thức đóng Fn=51(φn−ψn) với mọi n≥0.
Vì sao đúng?
Mọi hàm sinh hữu tỉ có mẫu số là tích các nhân tử tuyến tính khác nhau đều tách được thành tổng các chuỗi cấp số nhân đơn giản, và mỗi chuỗi cấp số nhân cho ngay một công thức tường minh cho hệ số.
Chứng minh
Phân tích mẫu số: vì các nghiệm của 1−x−x2=0 là x=1/φ và x=1/ψ, ta có 1−x−x2=(1−φx)(1−ψx).
Viết 1−x−x2x=1−φxA+1−ψxB với hằng số A,B. Quy đồng mẫu số và so khớp số hạng tự do cùng hệ số của x ta được một hệ phương trình tuyến tính có nghiệm A=51, B=−51, do đó 1−x−x2x=51(1−φx1−1−ψx1).
Khai triển mỗi số hạng thành chuỗi cấp số nhân: 1−φx1=∑n≥0φnxn và 1−ψx1=∑n≥0ψnxn.
Lấy hệ số của xn ở hai vế ta được Fn=51(φn−ψn), gọi là công thức Binet.
Đại họcỨng dụng thực tiễn và ví dụ minh họa
Hàm sinh là một công cụ dùng được trong thực tế, không chỉ là một điều thú vị lý thuyết: các nhà khoa học máy tính dùng chúng để tìm thời gian chạy chính xác và tiệm cận của các thuật toán đệ quy, các nhà vật lý dùng hàm phân hoạch có liên hệ mật thiết trong cơ học thống kê, còn các nhà xác suất mã hóa toàn bộ phân phối xác suất thành hàm sinh để tính mô-men bằng cách lấy đạo hàm thay vì lấy tổng.
Ví dụ: Đổi tiền với hai loại xu
Có bao nhiêu cách để tạo ra số tiền 4 đơn vị bằng cách dùng không giới hạn xu 1 đơn vị và xu 2 đơn vị, nếu thứ tự các đồng xu không quan trọng?
Lời giải
Mỗi cách tạo ra số tiền là một lựa chọn số xu 1 đơn vị và số xu 2 đơn vị dùng, nên hàm sinh là tích của hàm sinh cho xu 1 đơn vị, 1−x1, và hàm sinh cho xu 2 đơn vị, 1−x21: hàm sinh kết hợp là (1−x)(1−x2)1.
Khai triển hai thừa số thành chuỗi cấp số nhân rồi nhân lại: (∑i≥0xi)(∑j≥0x2j). Hệ số của x4 đếm số cặp (i,j) với i+2j=4 và i,j≥0.
Các cặp hợp lệ là (4,0), (2,1), (0,2), vậy có 3 cách: bốn xu 1 đơn vị; hai xu 1 đơn vị và một xu 2 đơn vị; hai xu 2 đơn vị.
Ví dụ: Công thức Binet từ hàm sinh
Dùng công thức đóng F(x)=1−x−x2x và công thức Binet Fn=51(φn−ψn) để tính F5 trực tiếp, không cần liệt kê lần lượt F0,…,F4.
Lời giải
Theo định lý ở trên, φ=21+5 và ψ=21−5 là các nghiệm dùng trong công thức Binet Fn=51(φn−ψn).
Về mặt số học, φ≈1.618 và ψ≈−0.618, nên φ5≈11.09 và ψ5≈−0.09.
Khi đó F5=51(φ5−ψ5)≈51(11.09−(−0.09))=511.18≈5.
Quả thực F5=5, khớp với giá trị thu được khi lặp hệ thức truy hồi 0,1,1,2,3,5 — nhưng công thức Binet cho phép ta nhảy thẳng tới bất kỳ Fn nào mà không cần tính các số hạng trước đó.
Hàm sinh thường của dãy hằng an=1 với mọi n≥0 là gì?
Hệ số của x3 trong (1−x)21 bằng bao nhiêu?
Bài toán nào sau đây được giải một cách tự nhiên nhất bằng hàm sinh?
Hàm sinh của dãy Fibonacci F(x)=∑Fnxn thỏa mãn công thức đóng nào?