Расстояние до ближайшего палиндрома - PullRequest
0 голосов
/ 11 марта 2012

Мне бы хотелось, чтобы алгоритм предоставил какую-то меру того, насколько симметрична строка. Просматривая предыдущие вопросы, я нашел один при нахождении количества букв, которые необходимо добавить в строку, чтобы превратить ее в палиндром. Это близко к тому, что я ищу, но слишком ограничено в наборе допустимых операций редактирования.

Моя мотивация для этого заключается в том, что я хотел бы сделать улучшенную версию видео, которое я выложил на Youtube, под названием «Числа красочны». На этом видео показаны базы Golden Ratio и пара других связанных систем, использующих иррациональные основы. Удивительно, но одна система должна начинаться с полностью симметричной. но другие демонстрируют частичную симметрию, которую я хотел бы выделить.

1 Ответ

0 голосов
/ 11 марта 2012

Вы ищете повторение или симметрию?До сих пор я не видел ни одного примера, который бы указывал на симметрию только на повторение.1001010.0010101 не является симметричным.Они связаны круговым сдвигом, то есть взять первый набор цифр [1001010], сдвинуть его влево на 1 [0010101] и теперь у вас есть правая сторона.

Если вы не укажете, что выпытаясь определить, этот вопрос слишком плохо определен, чтобы дать разумный ответ.Если вы действительно имеете в виду симметричный, покажите мне пример симметрии.С тем же успехом вы можете сказать: «Я вижу здесь интересный паттерн», который настолько плохо определен, что его трудно определить количественно.

Тем не менее, цифровая обработка сигналов - это та область, в которую вы могли бы обратиться для выявления интересных паттернов.Например, если вы ищете повторение, я предлагаю вам попытаться использовать алгоритм, предназначенный для обнаружения повторяющихся шаблонов.

Считайте цифры в вашем номере входным сигналом.Выполните частотный анализ этого сигнала, чтобы обнаружить повторяющиеся участки чисел.Если у вас есть сильный повторяющийся компонент в вашей серии цифр, это должно относиться к сильному частотному компоненту в вашем анализе.Вы можете измерить силу этого шаблона, определив основную частоту, выполнив преобразование Фурье и суммировав все гармоники для наиболее значимого бина частоты.Разделите это на общую энергию сигнала, и это даст вам меру между 0 и 1 для того, насколько «повторяющийся» сигнал, а также определит периодичность сигнала.Возможно, вам лучше использовать алгоритмы во временной области, такие как автокорреляция, AMDF или метод оценки YIN.(В частности, AMDF)

Подобный подход может быть принят, если вы должны учитывать фактическую симметрию (т.е. числа все еще очень похожи, когда вы обращаете их). Возьмите ваш входной номер, создайте новый сигнал, изменив его,а затем измерить их "одинаковость" на каждом дискретном этапе.Если у вас есть цифра длины N, вы можете рассмотреть ее заполнение нулями до длины 2N перед выполнением сравнения сигнала с инвертированным «я», чтобы рассмотреть возможность того, что цифры лежат за пределами длины числа.

Методы во временной области, скорее всего, сработают, потому что на них не так сильно влияют разрывы.Они буквально сравнивают «одинаковость» сигнала, либо вычисляя разницу всех точек на каждой фазе, либо умножая числа вместе на каждой фазе.В случае вычитания вы надеетесь получить 0, когда они похожи.В случае умножения вы надеетесь получить максимум в функции, когда числа вернутся в фазе.Однако они более подвержены шуму (что в данном контексте означает цифры, которые не совсем верны).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...