我想要一种算法来提供一种衡量字符串对称程度的方法。在查看之前的问题时,我找到一个关于找到需要添加到字符串中的字母数量以将其变为回文。这与我正在寻找的内容很接近,但在允许的编辑操作集中限制性太强。
我的动机是,我想在Youtube上制作一个改进版的视频,名为“Numbers are Colorful”。该视频显示了Golden Ratio基础以及其他一些使用非理性基础的相关系统。令人惊讶的是,一个系统是以完全对称的方式开始的。但其他人表现出部分对称性,我想强调一下。
答案 0 :(得分:0)
您在寻找重复还是对称?到目前为止,我没有看到任何仅仅重复对称的例子。 1001010.0010101不对称。它们通过循环移位相关联,即取第一组数字[1001010],将其向左移动1 [0010101],现在你有右侧。
除非你明确说明你想要识别的内容,否则这个问题的定义太差,无法给出明智的答案。如果你的意思是对称,请给我一个对称的例子。你可能也意味着“我可以在这里看到一些有趣的模式”,这个模式很难定义,很难量化。
也就是说,数字信号处理是您可能会想到的用于识别有趣模式的区域。例如,如果您正在寻找重复,那么我建议您尝试使用专为检测重复模式而设计的算法。
将数字中的数字视为输入信号。对此信号执行频率分析以检测重复的数字部分。如果您的数字系列中有一个强重复分量,则应与分析中的强频率分量相关。您可以通过执行傅立叶变换识别基频并对最重要频率仓的所有谐波求和来测量此模式的强度。将其除以信号的总能量,这将为您提供0到1之间的“重复”信号的度量,并且还将识别信号的周期性。您可能最好使用自相关,AMDF或YIN估算器等时域算法。 (特别是AMDF)
如果你考虑实际的对称性(即当你反转它们时数字仍然非常相似),可以采用类似的方法。。输入你的输入数字,通过反转它来创建一个新的信号,然后测量它们的“相同性”在每个离散阶段。如果你有一个长度为N的数字,你可以考虑用0到2的长度填充它,然后再将信号与它的倒置自身进行比较,以考虑数字位于数字长度之外的可能性。
时域技术更有可能发挥作用,因为它们不会受到不连续性的影响。它们通过计算每个阶段的所有点的差异或者在每个阶段将数字相乘来确实比较信号的“相同性”。在减法情况下,你希望在它们相似时达到0。在乘法情况下,您希望在数字重新同步时在函数中获得峰值。然而,它们更容易产生噪音(在这种情况下,这意味着数字并不完全正确)。