Per contare molti tipi di oggetti combinatori, come gli alberi in questo caso, esistono potenti strumenti matematici (il metodo simbolico) che consentono di derivare meccanicamente tali conteggi da una descrizione di come sono costruiti gli oggetti combinatori. Ciò comporta la generazione di funzioni.
Un eccellente riferimento è la Combinazione Analitica del compianto Philipe Flajolet e Robert Sedgewick. È disponibile dal link sopra.
Il libro di Il defunto Herbert Wilf generatingfunctionology è un'altra fonte gratuita.
E naturalmente Concrete Mathematics di GKP è un vero tesoro.
Per gli alberi binari va così: per prima cosa hai bisogno di una chiara definizione dell'albero.
Un albero binario è un albero radicato in cui ogni nodo non foglia ha esattamente il grado 2.
Quindi dobbiamo concordare ciò che vogliamo chiamare la dimensione di un albero.
A sinistra tutti i nodi sono uguali. Nel mezzo distinguiamo le foglie e le non foglie. Sulla destra abbiamo un albero binario potato dove sono state rimosse le foglie. Nota che ha rami unari di due tipi (sinistro e destro)!
Ora dobbiamo ricavare una descrizione di come sono costruiti questi oggetti combinatori. Nel caso di alberi binari è possibile una decomposizione ricorsiva .
Sia l'insieme di tutti gli alberi binari del primo tipo, quindi simbolicamente abbiamo:
A
Si legge come: "Un oggetto della classe di alberi binari è un nodo o un nodo seguito da due alberi binari." Questo può essere scritto come equazione di insiemi:
A={∙}∪({∙}×A×A)
Introducendo la funzione generatrice che enumera questa classe di oggetti combinatori possiamo tradurre l'equazione impostata in un'equazione che coinvolge la funzione generatrice.A(z)
A(z)=z+zA2(z)
La nostra scelta di trattare tutti i nodi allo stesso modo e di prendere il numero di nodi nella struttura come nozione della sua dimensione è espressa "marcando" i nodi con la variabile .z
Ora possiamo risolvere l'equazione quadratica per A ( z ) e ottenere, come al solito, due soluzioni, la forma esplicita chiusa della funzione generatrice:zA2(z)−A(z)+z=0A(z)
A(z)=1±1−4z2−−−−−−√2z
Ora abbiamo semplicemente bisogno del teorema binomiale (generalizzato) di Newton:
(1+x)a=∑k=0∞(ak)xk
con e x = - 4 z 2 per espandere la forma chiusa della funzione generatrice di nuovo in una serie di potenze. Lo facciamo perché, il coefficiente in z n è solo il numero di oggetti combinatori di dimensione n , tipicamente scritti come [ z n ] A ( za=1/2x=−4z2znn . Ma qui la nostra nozione di "dimensione" dell'albero ci costringe a cercare il coefficiente a z 2 n + 1 . Dopo un po 'di giocoleria con binomiali e fattoriali otteniamo:[ zn] A ( z)z2 n + 1
[ z2 n + 1] A ( z) = 1n + 1( 2nn) .
Se iniziamo con la seconda nozione della dimensione, la decomposizione ricorsiva è:
Otteniamo una diversa classe di oggetti combinatoria . Si legge: "Un oggetto della classe di alberi binari è una foglia o un nodo interale seguito da due alberi binari."B
Possiamo usare lo stesso approccio e trasformare in B = 1 + z BB= { □ } ∪ ( { ∙ } × B× B) . Solo che questa volta la variabile z segna solo i nodi interni, non le foglie, perché qui la definizione "dimensione" è diversa. Abbiamo anche una diversa funzione di generazione:B= 1 + zB2( z)z
B ( z) = 1 - 1 - 4 z-----√2 z
Estrazione dei rendimenti dei coefficienti
[ zn] B ( z) = 1n + 1( 2nn) .
Le classi e B concordano sui conteggi, perché un albero binario con n nodi interni ha n + 1 foglie, quindiUNBnn + 1 nodi in totale.2 n + 1
Nell'ultimo caso dobbiamo lavorare un po 'di più:
che è una descrizione di tentativi binari potati non vuoti. Lo estendiamo a
CD={∙}∪({∙}×C)∪({∙}×C)∪({∙}×C×C)={ϵ}∪({∙}×C×C)
e riscriverlo con le funzioni di generazione
C(z)D(z)=z+2zC(z)+zC2(z)= 1 +zC2(z)
risolvere le equazioni quadratiche
C(z)D (z)= 1 - 2z- 1 - 4 z-----√2 z= 1 - 1 - 4 z-----√2 z
e ottenere di nuovo
[ zn]C(z) = 1n + 1( 2nn)n ≥1[ zn] D (z) = 1n + 1( 2nn)n ≥ 0
Si noti che la funzione di generazione catalana è
E(z) = 1 - 1 - 4 z-----√2
enumera la classe degli alberi generali . Cioè gli alberi senza restrizioni sul grado del nodo.
E= { ∙ } × S E Q ( E)
Si legge come: "Un oggetto della classe di alberi generali è un nodo seguito da una possibile sequenza vuota di alberi generali."
E( z) = z1 - E( z)
Con la formula di inversione di Lagrange-Bürmann otteniamo
[ zn]E(z)=1n+1(2nn)
Quindi abbiamo dimostrato che ci sono tanti alberi generali quanti sono gli alberi binari. Non c'è da meravigliarsi che vi sia una biiezione tra il generale e gli alberi binari. La biiezione è nota come corrispondenza di rotazione (spiegata alla fine dell'articolo collegato), che ci consente di memorizzare due alberi generali come alberi binari.
Nota che se non distinguiamo il fratello destro e sinistro in classe otteniamo ancora un'altra classe di alberi T :CT
gli alberi binari unari.
Hanno anche una funzione generatrice
T ( z ) = 1 - z -
T={∙}×SEQ≤2(T)
tuttavia il loro coefficiente è diverso. Ottieni i numeri Motzkin
[zn]T(z)=1T(z)=1−z−1−2z−3z2−−−−−−−−−−√2z
[zn]T(z)=1n∑k(nk)(n−kk−1).
Oh, e se non ti piace generare funzioni, ci sono anche molte altre prove. Vedi qui , ce n'è uno in cui puoi usare la codifica degli alberi binari come parole di Dyck e ricavare una ricorrenza dalla loro definizione ricorsiva. Quindi risolvere quella ricorrenza dà anche la risposta. Tuttavia, il metodo simbolico ti evita in primo luogo di presentare la ricorrenza, poiché funziona direttamente con i progetti degli oggetti combinatori.