0

文字列がどの程度対称であるかを測定する何らかのアルゴリズムを提供するアルゴリズムが必要です.以前の質問を調べたところ、文字列を回文に変換するために文字列に追加する必要がある文字数を見つけることに関する質問が見つかりました. これは私が探しているものに近いですが、許容される編集操作のセットが制限されすぎています。

これに対する私の動機は、YouTube に投稿した "Numbers are Colorful" というビデオの改良版を作りたいということです。このビデオでは、黄金比の基数と、無理数の基数を使用したその他の関連システムをいくつか示しています。驚くべきことに、1 つのシステムは完全に対称的なものから始まります。しかし、他のものは私が強調したい部分的な対称性を示しています.

4

1 に答える 1

0

繰り返しや対称性をお探しですか?これまでのところ、対称性のみを指す例は見たことがありません。1001010.0010101は対称ではありません。それらは循環シフトによって関連付けられます。つまり、最初の数字のセット[1001010]を取り、それを1 [0010101]だけ左にシフトすると、右側になります。

何を特定しようとしているのかを明確にしない限り、この質問の定義が不十分であるため、賢明な答えを出すことはできません。あなたが本当に対称を意味するなら、私に対称の例を見せてください。定義が不十分で定量化が難しい「ここに興味深いパターンが見られる」という意味かもしれません。

とは言うものの、デジタル信号処理は、興味深いパターンを特定するために調査する可能性のある種類の領域です。たとえば、繰り返しを探している場合は、繰り返しパターンを検出するために設計されたアルゴリズムを使用することをお勧めします。

番号の数字を入力信号と見なします。この信号の周波数分析を実行して、数値の繰り返しセクションを検出します。一連の数字に強い繰り返し成分がある場合、これは分析の強い周波数成分に関連しているはずです。このパターンの強度は、フーリエ変換を実行して基本周波数を特定し、最も重要な周波数ビンのすべての高調波を合計することで測定できます。これを信号の総エネルギーで割ると、信号の「反復性」が0から1の間で測定され、信号の周期性も識別されます。自己相関、AMDF、またはYIN推定器などの時間領域アルゴリズムを使用する方がよい場合があります。(特にAMDF)

実際の対称性を考慮する場合は、同様のアプローチを採用できます(つまり、数値を逆にした場合でも、数値は非常に似ています)。入力した数値を取得し、それを逆にして新しい信号を作成し、各離散での「同一性」を測定します。段階。長さNの数字がある場合は、信号とその反転した自己との比較を実行する前に、長さ2Nまで0で埋めることを検討して、数字が数字の長さの外側にある可能性を検討できます。

時間領域の手法は、不連続性の影響をあまり受けないため、機能する可能性が高くなります。それらは、各フェーズですべてのポイントの差を計算するか、各フェーズで数値を乗算することによって、信号の「同一性」を文字通り比較します。減算の場合、それらが類似しているときに0になることを望んでいます。乗算の場合、数値が同相に戻ったときに関数のピークを取得したいと考えています。ただし、ノイズが発生しやすくなります(このコンテキストでは、数値が正しくないことを意味します)。

于 2012-03-11T08:03:22.527 に答える