İki ağaç yapısının karşılaştırılması


13

Ben mümkün olduğunca çok ayrıntı verecek bu yüzden doğru terimlerle anlatmaya çalışırken zorlanıyorum ve umarım birisi ne yapmaya çalışıyorum bilir = -)

Yapısal olarak ne kadar benzer / farklı olduklarını belirlemek için iki düğüm ağacını karşılaştırmaya çalışıyorum. Aşağıdaki şemalarda, her iki örnek de aynı sayıda çocuğa, torunlara vb. Sahiptir. Örnek 1'de, Kök iki çocuklu bir çocuğa sahiptir, ancak iki örnekte kök yoktur.

Muhtemelen özyinelemeli olarak nasıl döngü yapılacağını ve her seviyenin kaçının olduğunu sayabilirim ve bunları karşılaştırabilirim, bana ağaçların ne kadar benzer olduğuna dair bir fikir verdim, ama sadece bu şekilde yaptıklarında, aynı gibi görünecekler, ancak aslında değiller.

Bunu bilen var mı? Ya da bu ne için teknik terim?

Düzenleme: Ayrıca, bu C # ve ben bu nesneleri ve çocuklarını depolamak için Listeler kullanıyorum.

örnek 1

resim açıklamasını buraya girin

ÖRNEK 2

resim açıklamasını buraya girin


1
Aslında ne elde etmeye çalışıyorsunuz? Bu biraz XY problemine benziyor .
msell

Bunu tanımlamanın en iyi yolu, kullanıcının her seferinde bir molekül oluşturduğu 'moleküler' yapıları karşılaştırmaktır. Örnek 1, kullanıcının oluşturduğu bir yapı ve örnek 2, kullanıcının doğru yapıyı oluşturup oluşturmadığını belirlemeye yardımcı olmak için önceden tanımlanmış yapılar listesinin bir parçası olabilir. Kök ağaç izomorfizmi aradığım şey = -)
Mungoid

Yanıtlar:


11

Aradığınız şey , Ağaçlar ve kök düğümü hariç , Grafik İzomorfizminin özel bir versiyonu olan Köklü Ağaç İzomorfizmi .

Verilen açıklama bu ödev iki özelliklerini kullanır:

  • Aynı sayıda seviyeye sahip (kök ve yaprak düğümleri arasındaki mesafe)
  • Her seviye aynı sayıda düğüme sahiptir

Bu iki özelliği kullanarak, yapraklardan köke doğru ilerleyerek her düğümü sözlük numaralarına göre çocuk sayısı ile etiketleyin. Örneğin, Örnek 1'deki Kökünüz (0, 0, (0, 1)) olarak etiketlenecektir - üç çocuğu vardır, ilk / saniyenin 0 çocuğu vardır ve üçüncünün sırasıyla 0 ve 1 çocuğu olan 2 çocuğu vardır. Son olarak, ağaçların aynı olup olmadığını görmek için kök etiketleri karşılaştırırsınız.

Bu tür bir konu yapmadım ve bu makaleyi sadece birkaç dakika önce okudum, bu yüzden doğruluğunu garanti edemiyorum; Umarım yine de yardımcı olur.


Harika, tam olarak aradığım şey bu! Bir şans vermeliyim. Teşekkürler!
Mungoid

Bu sadece bir kök düğümünüz varsa işe yarıyor, ama bu durumda böyle olabilir: D +1
Roy T.

Kök düğümü verilmezse, yine de bu tekniği kullanabilirsiniz, ancak her kökü deneyebilirsiniz. İki ağacı karşılaştırırken, bu n defaya kadar tekrarlanması anlamına gelir .
congusbongus

Evet, bir cazibe gibi çalıştı. Anlamak için biraz zaman aldı ama mükemmel çalışıyor = -)
Mungoid

Bunun için teşekkürler, ben de kullanabileceğim bir şey gibi görünüyor, bir Ağacın Merkezini bulmak için algoritmayı seviyorum. Çok zeki.
oodavid

4

İki grafiğin mantıksal olarak aynı olup olmadığını görmek için problem Grafik Isomorphishm olarak adlandırılır, böylece oradan başlayabilirsiniz.

Genel Grafik İzomorfizmi sorununun NP'de olduğunu unutmayın, ancak bu özel durum için bir kısayol olabilir, emin değilim çünkü eşit olup olmadığını kontrol etmeniz gereken farklılıkları bilmek mantıklı görünüyor.


Evet ihtiyacım olan şey bu. Ne denir anladım asla. Teşekkürler = -)
Mungoid
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.