Để đếm nhiều loại đối tượng tổ hợp, như cây trong trường hợp này, có các công cụ toán học mạnh mẽ (phương pháp biểu tượng) cho phép bạn lấy được số lượng như vậy từ mô tả cách xây dựng các đối tượng kết hợp. Điều này liên quan đến việc tạo các chức năng.
Một tài liệu tham khảo tuyệt vời là Combinatorics phân tích của Philipe Flajolet và Robert Sedgewick quá cố. Nó có sẵn từ các liên kết ở trên.
Chức năng tạo sách của Herbert Wilf là một nguồn miễn phí khác.
Và tất nhiên, Toán học cụ thể của GKP là một kho báu.
Đối với cây nhị phân, nó sẽ như thế này: Đầu tiên bạn cần một định nghĩa rõ ràng về cây.
Cây nhị phân là cây gốc trong đó mọi nút không lá có độ 2 chính xác.
Tiếp theo chúng ta phải đồng ý những gì chúng ta muốn gọi là kích thước của một cái cây.
Ở bên trái tất cả các nút bằng nhau. Ở giữa chúng ta phân biệt lá và không lá. Ở bên phải chúng ta có một cây nhị phân được cắt tỉa, nơi những chiếc lá đã bị loại bỏ. Lưu ý rằng nó có các nhánh đơn nhất gồm hai loại (trái và phải)!
Bây giờ chúng ta phải rút ra một mô tả về cách các đối tượng tổ hợp này được xây dựng. Trong trường hợp cây nhị phân có thể phân rã đệ quy .
Đặt là tập hợp của tất cả các cây nhị phân thuộc loại đầu tiên, theo nghĩa biểu tượng chúng ta có:
A
Nó đọc là: Một đối tượng của lớp cây nhị phân là một nút hoặc một nút theo sau bởi hai cây nhị phân. Điều này có thể được viết dưới dạng phương trình của các tập hợp:
A={∙}∪({∙}×A×A)
Bằng cách giới thiệu hàm tạo liệt kê lớp đối tượng tổ hợp này, chúng ta có thể dịch phương trình tập hợp thành một phương trình liên quan đến hàm tạo.A(z)
A(z)=z+zA2(z)
Sự lựa chọn của chúng tôi về việc xử lý tất cả các nút bằng nhau và lấy số lượng nút trong cây làm khái niệm về kích thước của nó được thể hiện bằng cách đánh dấu các nút với biến .z
Bây giờ chúng ta có thể giải phương trình bậc hai cho và nhận, như thường lệ, hai giải pháp, dạng đóng rõ ràng của hàm tạo:zA2(z)−A(z)+z=0A(z)
A(z)=1±1−4z2−−−−−−√2z
Bây giờ chúng ta chỉ cần định lý nhị thức (tổng quát) của Newton:
(1+x)a=∑k=0∞(ak)xk
với và để mở rộng dạng đóng của hàm tạo trở lại thành chuỗi . Chúng tôi làm điều này bởi vì, hệ số tại chỉ là số lượng đối tượng tổ hợp có kích thước , thường được viết là . Nhưng ở đây, khái niệm của chúng tôi về kích thước kích thước của cây buộc chúng ta phải tìm hệ số tại . Sau một chút tung hứng với nhị thức và giai thừa, chúng ta nhận được:a=1/2x=−4z2znn[zn]A(z)z2n+1
[z2n+1]A(z)=1n+1(2nn).
Nếu chúng ta bắt đầu với khái niệm thứ hai về kích thước thì phân rã đệ quy là:
Chúng ta có một lớp các đối tượng tổ hợp khác nhau . Nó đọc: Một đối tượng của lớp cây nhị phân là một chiếc lá hoặc một nút liên tiếp theo sau là hai cây nhị phân.B
Chúng ta có thể sử dụng cùng một cách tiếp cận và biến thành . Chỉ lần này, biến chỉ đánh dấu các nút bên trong chứ không phải các lá, bởi vì định nghĩa về kích thước thì ở đây là khác nhau. Chúng tôi cũng nhận được một chức năng tạo khác nhau:B={□}∪({∙}×B×B)B=1+zB2(z)z
B(z)=1−1−4z−−−−−√2z
Trích xuất năng suất hệ số
[zn]B(z)=1n+1(2nn).
Class và đồng ý về số lượng, bởi vì một cây nhị phân có nút nội bộ có lá, do đó tổng cộng nút.ABnn+12n+1
Trong trường hợp cuối cùng, chúng ta phải làm việc chăm chỉ hơn một chút:
đó là một mô tả về cố gắng nhị phân cắt tỉa không trống. Chúng tôi mở rộng điều này thành
CD={∙}∪({∙}×C)∪({∙}×C)∪({∙}×C×C)={ϵ}∪({∙}×C×C)
và viết lại nó với các hàm tạo
C(z)D(z)=z+2zC(z)+zC2(z)=1+zC2(z)
giải phương trình bậc hai
C(z)D(z)=1−2z−1−4z−−−−−√2z=1−1−4z−−−−−√2z
và nhận lại
[zn]C(z)=1n+1(2nn)n≥1[zn]D(z)=1n+1(2nn)n≥0
Lưu ý rằng hàm tạo Catalan là
E(z)=1−1−4z−−−−−√2
nó liệt kê các lớp của cây nói chung . Đó là những cây không có giới hạn về mức độ nút.
E={∙}×SEQ(E)
Nó đọc là: Một đối tượng của lớp cây nói chung là một nút theo sau là một chuỗi trống có thể có của cây nói chung.
E(z)=z1−E(z)
Với Công thức đảo ngược Lagrange-Bürmann, chúng ta có được
[zn]E(z)=1n+1(2nn)
Vì vậy, chúng tôi đã chứng minh rằng có nhiều cây nói chung cũng như có cây nhị phân. Không có gì ngạc nhiên khi có một sự lựa chọn giữa cây chung và cây nhị phân. Sự lựa chọn được gọi là sự tương ứng xoay vòng (được giải thích ở cuối bài viết được liên kết), cho phép chúng ta lưu trữ hai cây chung như một cây nhị phân.
Lưu ý rằng nếu chúng ta không phân biệt anh chị em bên trái và bên phải trong lớp chúng ta sẽ nhận được một lớp cây khác :CT
các cây nhị phân đơn nhất.
Chúng có chức năng tạo quá
tuy nhiên hệ số của chúng là khác nhau. Bạn nhận được các số Motzkin
T={∙}×SEQ≤2(T)
T(z)=1−z−1−2z−3z2−−−−−−−−−−√2z
[zn]T(z)=1n∑k(nk)(n−kk−1).
Ồ và nếu bạn không thích tạo chức năng thì cũng có rất nhiều bằng chứng khác. Xem ở đây , có một nơi mà bạn có thể sử dụng mã hóa cây nhị phân như các từ Dyck và rút ra một định kỳ từ định nghĩa đệ quy của chúng. Sau đó giải quyết sự tái phát đó cũng cho câu trả lời. Tuy nhiên, phương pháp tượng trưng giúp bạn không gặp phải sự tái phát ở nơi đầu tiên, vì nó hoạt động trực tiếp với bản thiết kế của các đối tượng tổ hợp.