Я часто искал большой лес для множества разных фрагментов дерева и хотел бы, чтобы часть проверки равенства выполнялась быстрее, чем O (N). Идея заключается в «хэш-фрагменте» фрагментов дерева и рассматривает конфликты как равенство.Эффективное хеширование дерева
Моя древовидная структура представляет собой стандартный объект Node с полем значений int и дочерним полем. Я хотел бы, чтобы хэш-значение дерева, укорененного на определенном узле, зависело только от его дочерних элементов, и что, учитывая, что хэш-код ребенка изменился, относительно дешевого обновления можно применить к хэш-коду родителя ребенка. Если мы сможем выполнить операцию обновления O (1), то изменение значения на листовом узле приведет к появлению цепной реакции O (log n) вверх по дереву.
Я прочитал следующий вопрос: Hashing a Tree Structure
, который дает большой ответ. Однако у меня возникают проблемы с алгоритмом. Поскольку строки неотменяемы в Java, обновление в дочернем узле будет переводить на операцию обновления файла() в родительском элементе. Пожалуйста, исправьте меня здесь, если кажется, что я неправильно понял ответ выше.
Что такое возможная хеш-функция для того, что я ищу?
', учитывая, что hashcode ребенка изменился, относительно дешевого обновления можно применить к хэш-коду родителя ребенка'. Порекомендовал бы не иметь объектов, когда-либо меняющих свои хэш-коды. – Kon