İkili ağaçların sayılması


28

(Bazı matematiksel geçmişe sahip bir öğrenciyim ve belirli bir ikili ağaç sayısının nasıl sayılacağını bilmek istiyorum.)

İkili Ağaçlar için Wikipedia sayfasına bakarken, büyüklüğündeki köklü ikili ağaçların sayısının bu Katalanca Sayı olacağını iddia ettim : n

Cn=1n+1(2nn)

Ama kendim böyle bir sonucu nasıl bulabilirim anlamıyorum? Bu sonucu bulmak için bir yöntem var mı?

Şimdi, ya alt ağaçların sırası (hangisi sol, hangisi doğru) dikkate alınmazsa? Örneğin, benim açımdan, bu iki ağacın aynı olduğunu düşünüyorum:

   /\   /\
  /\     /\

Bu nesnelerin kaç tanesinin tam olarak n düğümü olduğunu saymak için benzer bir yöntem uygulamak mümkün olur mu?


Polya'nın köklü 2-ary ağaçlarındaki sayma teoremi burada uygulanabilir mi?
Nicholas Mancuso

Yanıtlar:


35

Bu türdeki ağaçlar gibi birçok türden kombinasyon nesnesini saymak için, bu tür sayıları birleştirici nesnelerin nasıl oluşturulduğunu açıklayan bir açıklamadan elde etmenize izin veren güçlü matematiksel araçlar (sembolik yöntem) vardır. Bu üretme işlevlerini içerir.

Mükemmel bir referans, Philipe Flajolet ve Robert Sedgewick’in Analitik Kombinatorikleridir . Yukarıdaki linkten erişilebilir.

Herbert Wilf'in kitap üretme işlevinin son dönemleri bir başka serbest kaynaktır.

Ve elbette GKP'nin Beton Matematiği bir hazine hazinesidir.


İkili ağaçlar için şöyle olur: İlk önce ağacın açık bir tanımına ihtiyacınız var.

Bir ikili ağaç, her yaprak olmayan düğümün tam olarak 2. dereceye sahip olduğu köklü bir ağaçtır.

Daha sonra bir ağacın büyüklüğünü ne demek istediğimize karar vermeliyiz .

görüntü tanımını buraya girin

Solda tüm düğümler eşittir. Ortada, yaprakları ve olmayanları ayırt ediyoruz. Sağ tarafta, yaprakların çıkarıldığı budanmış bir ikili ağaca sahibiz. İki tip tekli dallara sahip olduğuna dikkat edin (sol ve sağ)!

Şimdi bu birleşik nesnelerin nasıl inşa edildiğinin bir tanımını türetmeliyiz. İkili ağaçlar durumunda, özyinelemeli bir ayrışma mümkündür.

Let sonra ilk türdeki tüm ikili ağaçların sembolik olarak elimizdeki kümesi olsun: Agörüntü tanımını buraya girin

“İkili ağaç sınıfının bir nesnesi ya bir düğüm ya da iki ikili ağaç tarafından takip edilen bir düğümdür” şeklinde okur. Bu, kümelerin denklemi olarak yazılabilir:

A={}({}×A×A)

Bu birleşimsel nesne sınıfını kodlayan üretici işlevi tanıtılarak set denklemini üretici işlevi içeren bir denkleme çevirebiliriz.A(z)

A(z)=z+zA2(z)

Tüm düğümlere eşit davranma ve ağaçtaki düğüm sayısını büyüklük kavramı olarak alma seçimimiz, değişkenli düğümlerin “işaretlenmesi” ile ifade edilir .z

Şimdi bir kuadratik denklemi çözebilir için ve almak üretme fonksiyonunun açık, kapalı bir şekilde, iki çözeltinin, her zaman olduğu gibi:A ( z )zA2(z)A(z)+z=0A(z)

A(z)=1±14z22z

Şimdi Newton'un (genelleştirilmiş) Binom Teoremine ihtiyacımız var:

(1+x)a=k=0(ak)xk

ile ve , bir güç dizi üreten fonksiyonu arka kapalı formunu genişletmek. Bunu yaparız, çünkü katsayı , yalnızca olarak yazılan boyutundaki birleştirme nesnelerinin sayısıdır . Fakat burada ağacın “büyüklüğü” kavramı, bizi katsayısını aramaya zorlar . Binom ve factorials ile biraz hokkabazlık yaptıktan sonra:x = - 4 z 2 Z N , N [ z , n ] bir ( z ) Z 2 , n + 1a=1/2x=4z2znn[zn]A(z)z2n+1

[z2n+1]A(z)=1n+1(2nn).

Boyutun ikinci kavramına başlarsak özyinelemeli ayrışım şöyledir:

görüntü tanımını buraya girin

Farklı bir sınıfsal nesne sınıfı alıyoruz . “İkili ağaçlar sınıfının bir nesnesi bir yaprak veya iki ikili ağaç tarafından takip edilen bir interal düğümdür” diyor.B

Aynı yaklaşım kullanın ve dönebilir içine . Sadece bu kez değişkeni sadece iç düğümleri işaretler, yaprakları değil, çünkü “boyut” tanımı burada farklıdır. Farklı bir üretici işlevi de alıyoruz: B = 1 + z B 2 ( z ) zB={}({}×B×B)B=1+zB2(z)z

B(z)=114z2z

Katsayı verimlerinin çıkarılması

[zn]B(z)=1n+1(2nn).

Sınıf ve sayımlar üzerinde hemfikir çünkü iç düğümleri olan bir ikili ağaç yapraklara sahiptir, dolayısıyla toplamda düğüm vardır.B n n + 1 2 n + 1ABnn+12n+1

Son durumda biraz daha çalışmak zorundayız:

görüntü tanımını buraya girin

Bu, boş olmayan budanmış ikili denemelerin bir açıklamasıdır. Bunu

C={}({}×C)({}×C)({}×C×C)D={ϵ}({}×C×C)

ve üreten işlevlerle yeniden yazın

C(z)=z+2zC(z)+zC2(z)D(z)=1+zC2(z)

ikinci dereceden denklemleri çözebilir

C(z)=12z14z2zD(z)=114z2z

ve bir daha olsun

[zn]C(z)=1n+1(2nn)n1[zn]D(z)=1n+1(2nn)n0

Not Katalanca üretme fonksiyonu olan

E(z)=114z2

genel ağaç sınıfını sıralar . Düğüm derecesinde kısıtlama olmayan ağaçlar.

E={}×SEQ(E)

“Genel ağaçlar sınıfının bir nesnesi, ardından boş bir genel ağaç dizisi izleyen bir düğümdür” şeklinde yazıyor.

E(z)=z1E(z)

İle Lagrange-Burmann Inversion Formula biz olsun

[zn]E(z)=1n+1(2nn)

Böylece, ikili ağaçların olduğu kadar çok genel ağaç olduğunu da kanıtladık. Şüphesiz, genel ve ikili ağaçlar arasında bir çekişme var. Çekişme, her bir genel ağacı ikilik bir ağaç olarak saklamamıza izin veren rotasyon yazışmaları (bağlantılı makalenin sonunda açıklanmaktadır) olarak bilinir .

Unutmayın ki sol ve sağ kardeşi sınıfında , başka bir ağaç sınıfı elde ederiz :CT

görüntü tanımını buraya girin

tekli ikili ağaçlar. Onlar da üretici bir işleve sahiptir: ancak katsayıları farklıdır. Motzkin sayılarını alırsınız

T={}×SEQ2(T)
T(z)=1z12z3z22z
[zn]T(z)=1nk(nk)(nkk1).

Ve eğer fonksiyon üretmekten hoşlanmıyorsanız, başka birçok kanıt var. Bkz burada , sen Dyck kelimeler olarak ikili ağaçların kodlamasını kullanır ve ve bunların özyinelemeli tanımından tekrarlanmasını elde edebileceğini bir tane var. O zaman bu tekrarı çözmek de cevabı verir. Bununla birlikte, sembolik yöntem, doğrudan birleştirme nesnelerinin planları ile çalıştığı için, ilk etapta tekrarlama ile karşılaşmanızı önler.


Sadece Sedgewick ve Flajolet'in "Algoritma Analizine Giriş" ( aofa.cs.princeton.edu ) 'nun "Analitik Kombinatorik" kitabıyla aynı materyalin çoğunu kapsadığını, ancak daha erişilebilir bir formda bulunduğunu not etmek için.
vonbrand

7

Üreten işlevler çok güçlü ve çok kullanışlı bir sihirli değnek. İlk soruya aşağıdaki çözüm (neden ağaçları var) biraz daha az büyülü. Dolayısıyla, sevimli.Cn

Örnek. Bir ağaç oluşturmak için Biz olan bir dizi ile başlar düğümler oluşur kez ve oluşur kez. Örneğin, . En küçük (ve muhtemelen negatif) toplamı olan bu ön ekler arasında en uzun olanı seçin; bu durumda, . Bu öneki baştan al ve sonuna koy; Bu durumda, alırız . Şimdi yı ve ye ; bu durumda anlıyoruz . Bir baştan kaldırın , ekleyin5+15+115+++++++++++++++++TETTETETTETEETEsonunda; bu durumda anlıyoruz TETETTETEEE. Bu ağacın açıklaması T(E,T(E,T(T(E,T(E,E)),E))). Aşağıda bunun neden bir önyargı olduğunun bir açıklaması var. Buna ikna olduktan sonra saymak kolaydır. Var sekansları , o zaman bölü mümkün siklik permütasyon seçtik çünkü.(5+65)±15+6

İlk önyargı. ML'deki ağaçlar için tipik bir tanım type tree = T of tree * tree | E; yani, bir ağacın iki (sıralı) alt ağacı vardır veya boştur. İşte ağaçlar inşa edilir nasıl: T(T(E,E),T(T(E,E),T(E,E))). Hav bırakarak, basitçe yazabiliriz TTEETTEETEE. Tüm bu açıklamalar bir son bulacak Egereksiz yani,: TTEETTEETE. (Not boş ağaç hemen boş bir dizeye karşılık gelir.) Bu şeritler en az Es kadar Ts her ön ek olduğu özelliği vardır ve toplam sahip oldukları Ts ve Es, bir düğüm sayısı ağaç.nnn

İkinci önyargı. Şimdi T'yi +1 ve E'yi -1 ile değiştiriyoruz. Bu nedenle, değerleri +1 olan, değerleri -1 olan ve tüm öneklerin toplamları .nn0

Üçüncü önyargı. Şimdi önek gereksinimlerini biraz değiştiriyoruz: Boş olmayan her ön ekin toplamının . Bunun mümkün olması için değerlerinin +1 ve değerlerinin -1 olmasına izin verdik . (Aksi takdirde tüm dizgenin toplamı 0 olur ve öneklerin koşulunu yerine getirmez.) Bu dizilerin +1 ile başlaması gerekir. Bu nedenle, başlangıçta bir +1 sıkışması dışında, aslında öncekiyle aynılar.>0n+1n

Raney özelliği. Şimdi bir an için dizilerimizi ve toplamı 1 olan tam sayı dizisini düşünün: , , tamsayıları 1. Niye ya? Eh, bir yoktur herhalde öyle ki da olumlu olmayan tüm boş önekleri vardır. Daha sonra (başlayarak sekansının özelliği ve) (dizinin özelliği başlayarak ); bu nedenle,x1xmk1xk,,xm,x1,,xk1x1++xk11x1xk++xm1xkx1++xm2bu, tüm sekans için toplamın 1 olduğu varsayımına aykırıdır.

Üstelik, toplamı 1 olan bazı sıralar verildiğinde, her zaman boş olmayan tüm öneklerin pozitif toplamı olmasını sağlayan döngüsel bir permütasyon vardır. (Bu gerçek sayılar için bile geçerlidir.)

Sonuç. Şimdi ağaçları ile bijeksiyonda olan +1 ve -1 dizilerini sayalım. Dışında rakamlar almak gerekir + 1 eşit, diğerleri olacak -1. Bunu yapmak için yolları vardır. Ancak, şu ana kadar sayılan dizisinde sadece tanesi pozitif ön eke sahip. Yani, köklü, düzenli ikili ağaçların sayısı:n + 1 ( 2 n + 12n+1n+112n+1(2n+1n+1)12n+1

12n+1(2n+1n+1)=12n+12n+1n+1(2nn)=1n+1(2nn)

Çok iyi bir cevap, ancak aşağıdaki ifadenin bir açıklama yapması gerekiyor: "toplam 1 ile bazı sıralar verildiğinde, her zaman boş olmayan tüm öneklerin pozitif toplamı olmasını sağlayan döngüsel bir permütasyon vardır" .... en azından ispatın bir ipucu Güzel.
vog

1
@vog: ön eki en küçük toplamda al ve sonuna kadar taşı.
rgrig

1
@vog: aynı en küçük toplamda birden fazla olması durumunda en uzun önek de olmalıdır. Cevabı, başlangıçta bir örnek eklemek için düzenledim.
rgrig
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.