У меня есть n секторов, нумерованные от 0 до n-1 против часовой стрелки. Границы между этими секторами являются бесконечными ветвями (n из них).
Секторы живут в комплексной плоскости, и даже п,
сектор 0 и n / 2 разделены пополам реальной осью, а сектора расположены равномерно.
Эти ветви встречаются в определенных точках, называемых соединениями. Каждый узел смежен с подмножеством секторов (по крайней мере, 3 из них).
Указание соединений (в порядке до исправления, скажем, начиная с соединения, смежного с сектором 0 и 1) и расстояния между соединениями однозначно описывает дерево.
Теперь, при таком представлении, как я могу увидеть, симметрична ли она относительно реальной оси?
Например, n = 6, дерево (0,1,5) (1,2,4,5) (2,3,4) имеет три соединения на реальной линии,
так что это симметрично относительно реальной оси.
Если расстояния между (015) и (1245) равны расстоянию от (1245) до (234),
это также симметрично относительно мнимой оси.
Дерево (0,1,5) (1,2,5) (2,4,5) (2,3,4) имеет 4 перехода, и это никогда не симметрично относительно мнимой или действительной оси, но он имеет симметрию вращения на 180 градусов, если расстояние между первыми двумя и последними двумя соединениями в представлении равно.
Edit:
Здесь все деревья с 6 ветками, расстояния 1.
http://www2.math.su.se/~per/files/allTrees.pdf
Итак, учитывая описание / представление, я хочу найти некоторый алгоритм, чтобы решить, является ли он симметричным относительно действительного, мнимого и поворота на 180 градусов. Последний пример имеет симметрию 180 градусов.
Редактировать 2:
Это на самом деле для моего исследования. Я также разместил вопрос в mathoverflow,
но мои дни в программировании соревнований говорят мне, что это больше похоже на задачу IOI.
Код в mathematica был бы превосходным, но достаточно java, python или любого другого языка, читаемого человеком.
(Эти симметрии соответствуют особым видам потенциала в уравнении Шредингера,
который имеет хорошие свойства в квантовой механике.)