繰り返しのない文字列の数の式は何ですか?


8

文字列の数を数えたい s 有限のアルファベット以上 A、それは繰り返しを含まず、それによって私は任意の部分文字列を意味します ts1<|t|<|s|、のばらばらのコピーはありません ts。例として、A={a,b}。その後aaa ある部分文字列のため以来、私はカウントしたい文字列のいずれかaa、ばらばらのコピーはありません。しかしながら、abab そのような繰り返しが含まれています。

誰かがすでに有用な式を見つけている場合は、リンクしてください。それ以外の場合は、誰かの回答を使用する場合、私が書く記事でこの投稿を参照します。

別の例を示します。長い文字列を作成してみましょう{a,b}、繰り返しを含まない:

aaa(aにすることはできません)
   aaab(aまたはb)
     aaabbb(bに することはできません)
       aaabbba(bまたはaにする
   ことはできません)aaaba(aまたはbにすることはできません)

ツリーを構築した場合、ノードの数を数えることができますが、式が必要です。

編集: まあ、私たちがこれをビンを選択する問題に変換するかどうか最初に考えたほど難しくはありません。少なくとも1回の繰り返しを持つ長さkの文字列のセットは、デカルト積のすべての順列の和集合であるセットに等しくなります。 A×A××A(k-4 times)×R×R どこ R必要な繰り返しです。それが役に立ったかどうかはわかりませんが、プロのように聞こえます:)とにかく、| A |にしましょう ビン、繰り返しになる任意の2つ(同じものであっても)を選択し、次にk4もっと増やして掛けます(最初の4つはすでに選択されています、参照してください?)。今、私は離散数学からその式を見つける必要があります。


1
なぜばらばらなコピーがないのか aaa?じゃないt=a の有効な部分文字列 s=aa、 あれは、 s=tt?何を数えるべきか、数えるべきでないかを明確にするために、さらにいくつかの例を挙げられますか?
Ran G.

1
通知 1<|t|要件。投稿をより明確に書けるかどうか、またはどのように書けるかを教えてください。
Dan Donnelly

ええ、私はこの要件を逃しました。今ではもっと理にかなっています。
Ran G.

1
(たとえば2文字のアルファベットを使用して)長さが(たとえば)10の文字列を繰り返しなしで作成する方法がわかりません。所望の数の上位nのk個の独立したいくつかの関数で囲まれなければならないIE
スレシュ

2
サイズのアルファベットで言えます n 繰り返しのない最長の文字列は、
2(n2)+3n
3n あなたは長さの文字列を持つことができるからです 3 同じ要素で 2(n2) あなたはただ持っているからです 2(n2)この要素の異なる組み合わせ、および新しい組み合わせを追加すると繰り返しが発生します。(私はあなたがばらばらの繰り返しについて言うと思った)。

回答:


1

これは、サイズごとに繰り返されない単語の数の後にある質問に答え、目的の量が存在することを意味します。

定義:呼び出しwΣ 因子が含まれていない場合に限り、繰り返しなしxyxxΣ2 そして yΣ

主張:特定の有限アルファベットΣ|Σ|=k、長さを超える繰り返しのない単語はありません 2k2+1

証明のアイデア:鳩の穴の原理による。一言w 長さの 2k2+2 (またはより長い単語であり、この長さのプレフィックスを考慮する)、すなわち w=a0a0ak2ak2。想定するwリピートフリーです。つまりaiaiajaj すべてのために ij(それ以外の場合は、繰り返しがありました)。したがって、k2+1シンボルの多くのペア。これは矛盾します|Σ2|=k2。そうw リピートフリーではありません。

これは大まかな証明であることに注意してください:要因 aiai+1 より早くリピートを作成する可能性があります。


表記:

  • Σk=i=kΣi=Σi=0k1Σi
  • "因子" = "サブワード" = "サブストリング"

これは実際には質問の答えにはなりません。あなたは非常に大雑把でかなり明白な上限を証明しただけで、質問は正確な公式を求めました。
Gilles「SO-悪をやめ

@ギレス:私は最初に質問を読み間違えましたが、ここに書いたものを他の人(たとえば、そのような言葉は無限にあると主張したKaveh)に任せることができると思いました。
ラファエル

私のコメントはあなたの答えよりもきついです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.