Я пытаюсь решить проблему поиска максимального повторяющегося поддерева в дереве объектов.Построение максимального повторяющегося поддерева в дереве объектов
По дереву объектов я имею в виду дерево, где каждый лист и узел имеют имя. Каждый лист имеет тип и значение этого типа, связанные с этим листом. Каждый узел имеет набор листьев/узлов в определенном порядке.
Учитывая дерево объектов, которое - мы знаем - имеет повторяющееся поддерево в нем.
Повторяя, я имею в виду 2 или более поддерева, которые похожи во всем (имена/типы/порядок подэлементов), но значения листьев. Никакие узлы/листья не могут быть разделены между поддеревами.
Проблема заключается в том, чтобы идентифицировать эти поддеревья максимальной высоты.
Я знаю, что исчерпывающий поиск может сделать трюк. Я скорее ищу более эффективный подход.
Ницца, это должно работать. Я не отмечаю этого ответа, но надеясь получить больше идей. –
Не могли бы вы привести пример такой хэш-функции? Я бы склонен к тому, что хеш-функцию будет очень сложно реализовать. – GeneralBecos
Ну, для листьев мы можем использовать любое значение хеша для строки «LEAF | | » и для внутренних узлов »NODE | | <РЕБЕНОК-1-ХАШ> | <ДЕТЯ-2-ХАШ> | .... | <ДЕТИ-LAST-HASH>». –
Kwariz