เปรียบเทียบสองโครงสร้างต้นไม้


13

ฉันมีเวลายากที่จะพยายามอธิบายสิ่งนี้ในแง่ที่ถูกต้องดังนั้นฉันจะให้รายละเอียดมากที่สุดเท่าที่จะเป็นไปได้และหวังว่าจะมีคนรู้ว่าฉันพยายามทำอะไร = -)

ฉันพยายามเปรียบเทียบต้นไม้สองโหนดเพื่อหาว่ามีความเหมือนหรือแตกต่างกันอย่างไรในโครงสร้าง ในแผนภาพด้านล่างของฉันทั้งสองตัวอย่างมีจำนวนลูกหลานและจำนวนเท่ากันในตัวอย่างที่ 1 รูทมีลูกที่มีลูกสองคน แต่ในตัวอย่างที่สองรูทนั้นไม่มี

ฉันอาจจะคิดออกวิธีวนซ้ำวนซ้ำและนับจำนวนแต่ละระดับมีและเปรียบเทียบที่ให้ฉันคิดว่าต้นไม้คล้ายกัน แต่เพียงทำแบบนั้นมันจะดูเหมือนว่าพวกเขาเหมือนกัน แต่ ในความเป็นจริงพวกเขาไม่ได้

มีใครรู้เรื่องนี้บ้าง หรือแม้แต่ศัพท์เทคนิคสำหรับสิ่งนี้คืออะไร?

แก้ไข:นอกจากนี้ยังอยู่ใน C # และฉันใช้รายการเพื่อเก็บวัตถุเหล่านี้และลูก ๆ ของพวกเขา

ตัวอย่างที่ 1

ป้อนคำอธิบายรูปภาพที่นี่

ตัวอย่างที่ 2

ป้อนคำอธิบายรูปภาพที่นี่


1
คุณพยายามทำอะไรให้สำเร็จ ฟังดูเหมือนปัญหา XYเล็กน้อย
msell

วิธีที่ดีที่สุดที่ฉันสามารถอธิบายได้คือการเปรียบเทียบโครงสร้าง 'โมเลกุล' ที่ผู้ใช้สร้างหนึ่งโมเลกุลในแต่ละครั้ง ตัวอย่างที่ 1 จะเป็นโครงสร้างที่ผู้ใช้สร้างขึ้นและตัวอย่างที่ 2 อาจเป็นส่วนหนึ่งของรายการโครงสร้างที่กำหนดไว้ล่วงหน้าเพื่อช่วยในการพิจารณาว่าผู้ใช้สร้างโครงสร้างที่ถูกต้องหรือไม่ รูตมอร์ฟิซึมของต้นไม้นั้นเห็นได้ชัดว่าฉันกำลังมองหา = -)
Mungoid

คำตอบ:


11

สิ่งที่คุณกำลังมองหาคือ Rooted Tree Isomorphism ซึ่งเป็นเวอร์ชั่นพิเศษของGraph Isomorphismยกเว้นต้นไม้และโหนดรากได้รับการแก้ไข

คำอธิบายที่ให้ไว้ในการมอบหมายนี้ใช้คุณสมบัติสองอย่าง:

  • มีจำนวนระดับเท่ากัน (ระยะห่างระหว่างรูตและโหนดลีฟ)
  • แต่ละระดับมีจำนวนโหนดเท่ากัน

ใช้คุณสมบัติทั้งสองนี้ทำงานจากทางด้านซ้ายไปยังรูททำเลเบลแต่ละโหนดด้วยจำนวนลูกตามลำดับพจนานุกรม ตัวอย่างเช่นรูทของคุณในตัวอย่างที่ 1 จะมีป้ายกำกับ (0, 0, (0, 1)) - มันมีลูกสามคนครั้งแรก / วินาทีมีลูก 0 คนและคนที่สามมีลูก 2 คนซึ่งมีลูก 0 และ 1 คนตามลำดับ ในที่สุดคุณก็แค่เปรียบเทียบป้ายรากเพื่อดูว่าต้นไม้เหมือนกันหรือไม่

ฉันยังไม่ได้ทำเรื่องแบบนี้และฉันเพิ่งอ่านบทความนี้เมื่อไม่กี่นาทีที่ผ่านมาดังนั้นฉันจึงไม่สามารถรับรองความถูกต้องได้ หวังว่ามันจะช่วยต่อไป


เยี่ยมมากนั่นคือสิ่งที่ฉันกำลังมองหา! ฉันจะต้องปล่อยมันไป ขอบคุณ!
Mungoid

ฉันคิดว่ามันจะทำงานได้ก็ต่อเมื่อคุณมีรูตโหนด แต่ในกรณีนี้อาจเป็นเช่นนั้น: D +1
Roy T.

หากไม่ได้ระบุโหนดรูทคุณยังคงสามารถใช้เทคนิคนี้ แต่ลองใช้ทุกรูท เมื่อเปรียบเทียบต้นไม้สองต้นหมายความว่าสามารถทำซ้ำได้สูงสุดnครั้ง
congusbongus

ใช่มันทำงานเหมือนมีเสน่ห์ ใช้เวลาสักครู่เพื่อทำความเข้าใจ แต่ใช้งานได้ดี = -)
Mungoid

ขอบคุณสำหรับสิ่งนี้ดูเหมือนว่าบางสิ่งที่ฉันสามารถใช้ได้เช่นกันฉันรักอัลกอริทึมในการค้นหาศูนย์กลางของต้นไม้ ฉลาดมาก.
oodavid

4

ปัญหาในการดูว่ากราฟสองรายการมีเหตุผลเหมือนกันหรือไม่เรียกว่ากราฟ Isomorphishmดังนั้นคุณอาจต้องการเริ่มจากตรงนั้น

โปรดทราบว่าปัญหา Isomorphism กราฟโดยทั่วไปอยู่ใน NP แต่สำหรับกรณีพิเศษนี้อาจมีทางลัดฉันไม่แน่ใจเพราะดูเหมือนว่ามีเหตุผลที่จะทราบความแตกต่างที่คุณต้องตรวจสอบว่าพวกเขาจะเท่ากัน


ใช่นั่นคือสิ่งที่ฉันต้องการ จะไม่เคยคิดออกสิ่งที่เรียกว่า ขอบคุณ = -)
Mungoid
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.