이 경우 나무와 같은 많은 유형의 조합 객체를 계산하기 위해 조합 객체의 구성 방법을 설명에서 기계적으로 파생시킬 수있는 강력한 수학적 도구 (기호 방법)가 있습니다. 여기에는 함수 생성이 포함됩니다.
필립스 플라 졸레 (Philippe Flajolet)와 로버트 세지윅 (Robert Sedgewick )의 분석 조합 은 훌륭한 참고 자료입니다 . 위의 링크에서 사용할 수 있습니다.
허버트 윌프 (Herbert Wilf)의 책 생성 기능 은 또 다른 무료 소스입니다.
물론 GKP의 콘크리트 수학 은 보물입니다.
이진 트리의 경우 다음과 같이 진행됩니다. 먼저 명확한 트리 정의가 필요합니다.
이진 트리는 모든 비 리프 노드가 차수가 2 인 루트 트리입니다.
다음으로 우리는 나무 의 크기 라고 부르는 것에 동의해야합니다 .
왼쪽에서 모든 노드는 동일합니다. 중간에 우리는 잎과 잎이 아닌 잎을 구별합니다. 오른쪽에는 잎이 제거 된 가지 치기 이진 트리가 있습니다. 왼쪽과 오른쪽의 두 가지 유형의 단항 분기가 있습니다!
이제 우리는 이러한 조합 객체가 어떻게 구성되는지에 대한 설명을 도출해야합니다. 이진 트리의 경우 재귀 적 분해 가 가능합니다.
첫 번째 유형의 모든 이진 트리 세트로 보자 .
A
“이진 트리 클래스의 객체는 노드 또는 노드 다음에 2 개의 이진 트리가 있습니다.”이것은 집합 방정식으로 쓸 수 있습니다.
A={∙}∪({∙}×A×A)
이 클래스의 조합 객체를 열거 하는 생성 함수 를 도입함으로써 설정된 방정식을 생성 함수와 관련된 방정식으로 변환 할 수 있습니다.A(z)
A(z)=z+zA2(z)
모든 노드를 동일하게 취급하고 트리의 노드 수를 크기 개념으로 선택하는 것은 변수 노드를 "마킹"하여 표현됩니다 .z
이제 우리는 이차 방정식을 풀 수 에 대한 및 get, 상기 생성 함수의 명시적인 닫힌 형태로 두 용액을 평소처럼 :zA2(z)−A(z)+z=0A(z)
A(z)=1±1−4z2−−−−−−√2z
이제 우리는 뉴턴 (일반화) 이항 정리가 필요합니다.
(1+x)a=∑k=0∞(ak)xk
와 및 멱급수로 발생 기능 뒤로의 닫힌 형태를 확장. 의 계수는 일반적으로 로 쓰여진 크기 의 조합 객체의 수에 불과 하기 때문에 이렇게 합니다. 그러나 여기서 나무의“크기”라는 개념은 에서 계수를 찾아야합니다 . 이항과 계승으로 약간의 저글링 후에 우리는 다음을 얻습니다.a=1/2x=−4z2znn[zn]A(z)z2n+1
[z2n+1]A(z)=1n+1(2nn).
크기의 두 번째 개념으로 시작하면 재귀 적 분해는 다음과 같습니다.
우리는 다른 클래스의 조합 객체 얻습니다 . "이진 트리 클래스의 개체는 리프 또는 인터 널 노드이며 이진 트리 두 개가 있습니다."B
동일한 접근법을 사용하고 을 입니다. 이번에는 변수 가 정의의 크기가 다르기 때문에 변수 는 나뭇잎이 아닌 내부 노드 만 표시합니다. 우리는 다른 생성 기능도 얻습니다.B={□}∪({∙}×B×B)B=1+zB2(z)z
B(z)=1−1−4z−−−−−√2z
계수 수율 추출
[zn]B(z)=1n+1(2nn).
및 클래스 는 내부 노드가 있는 이진 트리에 리프가 있으므로 총 노드가 있으므로 카운트에 동의합니다 .ABnn+12n+1
마지막 경우에는 조금 더 열심히 노력해야합니다.
비어 있지 않은 이진 시도에 대한 설명입니다. 이를
CD={∙}∪({∙}×C)∪({∙}×C)∪({∙}×C×C)={ϵ}∪({∙}×C×C)
함수를 생성하여 다시 작성하십시오.
C(z)D(z)=z+2zC(z)+zC2(z)=1+zC2(z)
이차 방정식을 풀다
C(z)D(z)=1−2z−1−4z−−−−−√2z=1−1−4z−−−−−√2z
그리고 또 다시
[zn]C(z)=1n+1(2nn)n≥1[zn]D(z)=1n+1(2nn)n≥0
점을 유의 카탈루냐어 생성 함수 이고
E(z)=1−1−4z−−−−−√2
일반 트리 의 클래스를 열거합니다 . 그것은 노드 정도에 제한이없는 나무입니다.
E={∙}×SEQ(E)
"일반 트리 클래스의 객체는 가능한 빈 트리 시퀀스가 뒤 따르는 노드입니다."
E(z)=z1−E(z)
와 라그랑주 - Bürmann 반전 수식 우리 GET
[zn]E(z)=1n+1(2nn)
따라서 이진 트리만큼 일반 트리가 있음을 증명했습니다. 일반 트리와 이진 트리 사이에 이종이있는 것은 당연합니다. bijection은 로테이션 대응 (연결된 기사의 끝에 설명되어 있음 )으로 알려져 있으며 ,이를 통해 모든 일반 트리를 2 진 트리로 저장할 수 있습니다.
클래스에서 왼쪽과 오른쪽 형제를 구별하지 않으면 또 다른 클래스의 나무 .CT
단항 이진 트리.
생성 기능도
그러나 계수가 다릅니다. Motzkin 번호
T={∙}×SEQ≤2(T)
T(z)=1−z−1−2z−3z2−−−−−−−−−−√2z
[zn]T(z)=1n∑k(nk)(n−kk−1).
그리고 함수 생성을 좋아하지 않는다면 다른 많은 증거도 있습니다. 참조 여기 , 당신은 반다이 크 단어 이진 나무의 인코딩을 사용하고 자신의 재귀 적 정의에서 재발을 유도 할 수있는 일이있다. 그렇다면 그 재발을 해결하면 대답도 얻을 수 있습니다. 그러나 상징적 인 방법은 조합 객체의 청사진과 직접 작동하므로 처음부터 재발을 피할 수 있습니다.