どのように多くの単語の長さの上文字は単語の一部を避けるため?


9

追加用に編集:この質問は本質的に回答されました。詳細については、このブログエントリを参照してください。ここにコメントと回答を投稿してくれた皆さんに感謝します。


元の質問

これは、私が MathOverflowで質問し質問の、より賢く、より情報に富んバージョンです。私がその質問をしたとき、自分の問題があった数学の分野の名前すら知りませんでした。今、それは部分的な単語のアルゴリズム的組み合わせにあると確信しています。(テーマに関する最近の著書こちら。)

字の単語リストを作りたい。各単語の長さは正確にです。取り決めは、がリストにある場合(はワイルドカード/ドントケア記号)がリストに再び表示されることはありません。(場合、または場合に禁止されているサブワードが場合同様です。)K jは B J B = BのJ = 0 Blkajbajba=bj=0ab

例えば及び:l = 5k=4l=5

B D C E D C B D C A E E D A Dabcd
bdce
dcba < -があるため禁止上記の行に登場ので禁止- <最初の行に登場dc
aeedad

私が見つけた「回避可能な部分的な単語」に関する文献はすべて無限です。最終的に、単語サイズが十分に大きければ、いくつかの単語パターンは避けられません。そのような定理の完全版を見つけたいのですが。だから、質問:

文字のアルファベットで形式の部分的な単語が与えられた場合、長さ単語がいくつ単語を回避し、多項式時間で明示的に生成できますか?LのKajblk

上記の質問が難しいとは思わないので、見逃していない微妙な点がない限り、自分で計算することができます。私がこのサイトに投稿している本当の理由は、アプリケーションのそのような単語リストのプロパティについて多くのことを知る必要があるためです。誰かがフォローアップの質問に答えられることを望んでいます。

これは一般的に研究されていますか?部分的な単語が最終的に不可避であるかどうかだけでなく、不可避になるまでに「どのくらい時間がかかるか」を考慮するいくつかの論文は何ですか?

ありがとう。


(1)最初の質問とその前の例の対応がわかりません。あなたの例の入力は何ですか?(2)最初の質問では、kを2つの異なる目的で使用していますか?
伊藤剛

(2)については、間違いありましたが、編集しました、ありがとうございます。
アーロンスターリング

(1)については、部分的な単語が出てきたら「あとどれくらいの部屋を残したか」を知りたい。しかし、はい、本当の問題は、例に表示されているようなリストを作成する方法です(禁止されている部分的な単語なしで)。したがって、入力はと値、およびリストで生成する必要な単語の数になります。これらはすべて、「以前に出現した部分的な単語のプロパティの回避」を備えていました。lkl
アーロンスターリング

2
@Aaron、私はあなたの最終的なアプリケーションが何であるかわかりませんが、Davenport-Schinzelシーケンス(および一般化)は、特定の繰り返しパターンを含まない文字列の最大長について尋ねます。これは関連する概念です。
Suresh Venkat、2011

1
Seth Pettieは、禁止された部分行列に対する非常に気の利いた一般化についても研究しています。
Suresh Venkat 2011

回答:


4

これは特別なケースです:2つが連続して出現しないような長さバイナリワードの数は。ここで、はフィボナッチ数(始まる)。証明は、ツェッケンドルフ表現を介して行われます。F k + 3 F n n t h F 1 = 1 F 2 = 1kF(k+3)F(n)nthF(1)=1,F(2)=1

編集:この最初の特殊なケースをの少し大きい特殊なケースに拡張できます。文字が2回連続して出現しないように、サイズアルファベット上の長さ文字列を考えます。してみましょう(私たちは「有効」呼びます)などの文字列の数です。次のように主張します: 直感は、有効な長さのストリングの任意の隣接する)のいずれかによってある文字をしない長さの有効な文字列に、またはb)文字隣接するのk L + 1 F K F K = L * F K - 1 + L * F K - 2 F 0 = 1 F 1 = L + 1 k l a k 1 a a k 2a0akl+1af(k)

f(k)=lf(k1)+lf(k2)
f(0)=1,f(1)=l+1
klak1aその後、他のどの文字が、長さの有効な文字列に。ak2

以下が上記の繰り返しの閉じた形式であることを確認できます: ここで、ときと理解し。

f(k)=i=0k(k+1ii)lki
(ni)=0i>n

編集#2:もう1つのケースノックアウトしましょう。私たちは、上の文字列を呼び出しますサブストリング含まれていません-elementアルファベット、「有効」としましょう長さの有効な文字列の集合表す。さらに、のは定義してみましょうのサブセットであることをで始まる文字列からなるとものと始まらないことを。最後に、、、。0b,ablabSkkTkSkbUkbf(k)=|Sk|g(k)=|Tk|h(k)=|Uk|

我々は、観察と。次に、次の繰り返しを推測します: 最初は、をの任意の要素のすると要素が生成されるという事実から来ています。第二は、我々はの要素構築することができることを観察することから来るの任意の文字が、添加することにより任意の要素の前面にまたは任意の文字が、添加することによりまたはいずれかの要素の前面にで。g(0)=0,h(0)=1,f(0)=1g(1)=1,h(1)=l1,f(1)=l

g(k+1)=f(k)h(k+1)=(l1)h(k)+(l2)g(k)
bSkTk+1Uk+1bUkabTk

次に、次の反復方程式を並べ替えて取得します。

f(k+1)=g(k+1)+h(k+1)=f(k)+(l1)h(k)+(l2)g(k)=f(k)+(l1)f(k)g(k)=lf(k)f(k1)

関数を生成したり、怠惰な場合は、Wolfram Alphaに直接進んだりすることで、この再帰に対するかなり不透明な閉じた形式のソリューションを取得できます。しかし、グーグルとの周り突っついの少しでOEIS、我々が実際に持っていることが判明: ある第二種のチェビシェフ多項式(!) 。

f(k)=Uk(l/2)
Ukkth

それはとても興味深いです、ありがとう。
アーロンスターリング

2

最初の質問に対するまったく異なるアプローチでは、通常の言語で単語生成する際の最近の質問に対する回答を再利用します。これらのアルゴリズムを長さで通常の​​言語に適用するだけで十分ですアルファベットです。kΣaΣjbΣΣ


ありがとう。関係があるのではないかと思っていましたが、ここでの回答により、そこで参照されている論文を確認する必要がありました。
アーロンスターリング

0

更新:この答えは正しくありません

が固定されていると仮定すると、パターンを照合できる方法の数を数えることができます。最初シンボルは、ある位置で照合できます、そしてその時点以前の可能性、間と、及びしたがって、文字列の残りのために、合計ケース。伊藤剛がコメントで述べたように、この数は一致異なる単語の数ではありませんjajba1ikj1li1ljablkji1

i=1kj1li1ljlkji1=(kj1)lk2
ajb単一の単語が異なる方法で同じパターンに一致する可能性があるためです。例えば、はで3回、はで2回、は 2回ます。パターンを照合する方法の数を数回カウントして、「包含-除外」式を示すこともできますが、パターンが重複する可能性があるため、これが長すぎます。aaaaaaababababaabb

最初の質問については、が固定されていない、つまりという単語の埋め込みを避けたいという理解の下で:jab

  • いずれかの最初のシンボルを占める、表示されません、可能な単語a(l1)k
  • あるいは、いくつかの位置に最初に表示される、我々は使用できないあります単語の残りの部分でまでの因子の選択肢、及びの残りの選択肢、合計で可能な単語。かどうかは関係ありません。a1ikb(l1)i1a(l1)kii=1k(l1)i1(l1)ki=k(l1)k1a=b

2番目の質問については、提案することはあまりありません。単語の埋め込みには関係がありますが、ヒグマンの補題の悪いシーケンスについて知っている結果はすぐには適用されません。


Sylvainさん、ありがとうございました。我々は使用することができ場合は、後で単語で表示されます。私達はちょうど使用することはできません正確に存在する場合文字が間におよびならば、早く登場しました。おそらく私はあなたの主張を誤解しているかもしれません。babjabajb
アーロンスターリング

申し訳ありませんが、が修正されているかどうかはわかりませんでした。答えもを修正して編集しました。jj
シルヴァン

1
fixed-jのケースが正しいとは思いません。たとえば、k = 4およびj = 1の場合、単語aabbは2回減算されます。non-fixed-jのケースをまだ読んでいません。
伊藤剛

@伊藤剛:その通りです。その場合、ユニークな一致はありません。
シルヴァン

そのように間違った答えをマークしてください。
伊藤剛
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.