So sánh hai cấu trúc cây


13

Tôi đang gặp khó khăn khi cố gắng mô tả điều này một cách chính xác vì vậy tôi sẽ chỉ cung cấp càng nhiều chi tiết càng tốt và hy vọng ai đó biết tôi đang cố gắng làm gì = -)

Tôi đang cố gắng so sánh hai cây nút để xác định mức độ giống nhau / khác nhau của chúng. Trong sơ đồ của tôi dưới đây, cả hai ví dụ đều có cùng số con, cháu, v.v ... Trong ví dụ 1, Root có một con có hai con, nhưng trong ví dụ hai, root thì không.

Tôi có thể có thể tìm ra cách lặp lại đệ quy và đếm xem có bao nhiêu cấp độ và so sánh điều đó, cho tôi ý tưởng về những cái cây giống nhau như thế nào, nhưng chỉ cần làm theo cách đó, nó sẽ trông giống như chúng, nhưng thực tế họ không có.

Bất cứ ai tình cờ biết về điều này? Hoặc thậm chí những gì thuật ngữ kỹ thuật cho những gì này là?

Chỉnh sửa: Ngoài ra, đây là trong C # và tôi đang sử dụng Danh sách để lưu trữ các đối tượng này và con của chúng.

ví dụ 1

nhập mô tả hình ảnh ở đây

Ví dụ 2

nhập mô tả hình ảnh ở đây


1
Bạn thực sự đang cố gắng để đạt được điều gì? Điều này nghe có vẻ giống như vấn đề XY .
msell

Cách tốt nhất tôi có thể mô tả nó là để so sánh các cấu trúc 'phân tử' mà người dùng tạo ra một phân tử tại một thời điểm. Ví dụ 1 sẽ là cấu trúc do người dùng tạo và ví dụ 2 có thể là một phần của danh sách các cấu trúc được xác định trước để giúp xác định xem người dùng có tạo cấu trúc chính xác không. Sự đồng hình của rễ cây rõ ràng là thứ tôi đang tìm kiếm = -)
Mungoid

Câu trả lời:


11

Những gì bạn đang tìm kiếm là Rootom Tree Isomorphism, đây là phiên bản chuyên biệt của biểu đồ đẳng cấu đồ thị , ngoại trừ cây và nút gốc được cố định.

Giải thích được đưa ra trong bài tập này sử dụng hai thuộc tính:

  • Có cùng số cấp (khoảng cách giữa các nút gốc và lá)
  • Mỗi cấp có cùng số nút

Sử dụng hai thuộc tính này, làm việc theo cách của bạn từ lá đến gốc, ghi nhãn mỗi nút với số lượng con, theo thứ tự từ điển. Ví dụ, Root của bạn trong ví dụ 1 sẽ được gắn nhãn (0, 0, (0, 1)) - nó có ba con, thứ nhất / thứ hai có 0 con và thứ ba có 2 con có 0 và 1 con tương ứng. Cuối cùng bạn chỉ cần so sánh các nhãn gốc để xem các cây có giống nhau không.

Tôi đã không thực hiện loại chủ đề này và tôi chỉ đọc bài báo này một vài phút trước đây vì vậy tôi không thể đảm bảo tính chính xác của nó; hy vọng nó sẽ giúp


Tuyệt vời, đó chính xác là những gì tôi đang tìm kiếm! Tôi sẽ phải cho nó đi. Cảm ơn!
Mungoid

Tôi nghĩ rằng điều này chỉ hoạt động nếu bạn có một nút gốc, nhưng trong trường hợp này có thể là trường hợp: D +1
Roy T.

Nếu nút gốc không được cung cấp, bạn vẫn có thể sử dụng kỹ thuật này nhưng thử mọi root. Khi so sánh hai cây, điều này có nghĩa là lặp lại tới n lần.
congusbongus

Yep nó làm việc như một lá bùa. Mất một chút thời gian để hiểu nó nhưng hoạt động hoàn hảo = -)
Mungoid

Cảm ơn vì điều này, trông giống như một cái gì đó tôi cũng có thể sử dụng, tôi yêu thuật toán để tìm Trung tâm của một cái cây. Rất thông minh.
oodavid

4

Vấn đề để xem liệu hai biểu đồ có giống nhau về mặt logic hay không được gọi là Biểu đồ đẳng cấu để bạn có thể muốn bắt đầu từ đó.

Lưu ý rằng vấn đề chung về biểu đồ đồ thị là trong NP, tuy nhiên trong trường hợp đặc biệt này có thể có một phím tắt, tôi không chắc vì có vẻ hợp lý khi biết sự khác biệt bạn phải kiểm tra xem chúng có bằng nhau không.


Đúng đó là những gì tôi cần. Sẽ không bao giờ tìm ra những gì được gọi là. Cảm ơn = -)
Mungoid
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.