Ich bin mir also nicht ganz sicher, aber ich denke, Sie möchten die Anzahl der Zeichenfolgen der Größe (über dem Alphabet ) zählen, bei denen der Faktor / Teilstring nicht richtig angezeigt wird.{ a , b } a an{a,b}aa
In diesem Fall gibt es einige kombinatorische Ansätze, die Sie verfolgen können. Sowohl Yuval als auch ADG haben einfachere und intuitivere Argumente vorgebracht, daher empfehle ich auf jeden Fall, ihre Antworten zu überprüfen! Hier ist einer meiner Favoriten, es ist ein bisschen seltsam, aber es ist ein sehr allgemeiner (und irgendwie lustiger) Ansatz.
Beginnen wir mit einer einfacheren Sprache, der von Wörtern, die mit beginnen und enden (auch ohne Teilzeichenfolgen von ). Wir können eine zulässige Zeichenfolge (z. B. ) als eine Liste von Sequenzen von s betrachten, die durch singuläre s getrennt sind. Dies ergibt die Konstruktion:
Wie zählen wir nun Sätze, die zu dieser Sprache gehören?a a b b b a b a b b b b b a w = ( b + a ) * b +baabbbababbbbba
w=(b+a)∗b+
Stellen wir uns vor, wir erweitern diese Ausdrücke. Was bedeutet ? Nun, es ist einfach
Nun, das macht sehr wenig Sinn, aber stellen wir uns vor, dass eine Variable über einem numerischen Feld ist. Insbesondere werden wir , und . Dies besagt dann, dass
. Versuchen wir, die Motivation hinter dieser seltsamen Interpretation zu erkennen. Dies ist fast eine bijektive Transformation. Insbesondere möchten wir die Anzahl der einzelnen beibehaltene * = & egr; | e | e e | e e e | e e e e | ... e & egr; → 1 a | b → a + b a b c → a × b × c e * → 1 + e + e e + e e e + … e n × be∗
e∗=ϵ∣e∣ee∣eee∣eeee∣…
eϵ→1a∣b→a+babc→a×b×ce∗→1+e+ee+eee+…
enWort, das wir, wie Sie leicht sehen können, tun. Es gibt jedoch einen entscheidenden Unterschied zwischen den Zeichenfolgenausdrücken und den numerischen Ausdrücken: Die Multiplikation (Verkettung in Zeichenfolgen, in numerischen Ausdrücken) ist jetzt kommutativ! Intuitiv lässt uns die Kommutativität alle Permutationen desselben Wortes als dasselbe behandeln; das heißt, wir unterscheiden nicht zwischen dem Ausdruck und ; beide repräsentieren eine Zeichenkette mit 4 s und einer . Daher können wir mit dieser Transformation die Anzahl der einzelnen Wörter einer bestimmten Anzahl von s und s beibehalten , aber jetzt können wir die überflüssigen Details, die uns nicht interessieren, ignorieren.
×bbbabbbabbbaab
Wenn Sie zu Precalculus zurückkehren, erkennen Sie diese Reihe möglicherweise als . Ich weiß, dass es keinen Sinn macht, diesen regulären Ausdruck als numerisch bewertete Funktion umzuschreiben, sondern nur einen Moment mit mir zu verbringen.11−e
In ähnlicher Weise ist . Dies bedeutet, dass wir in
e+=ee∗→e1−ew
w→11−(b1−b×a)×b1−b
Wir können dies wiederum vereinfachen bis
w(a,b)=b×11−(b+ba)
Dies sagt uns, dass die Sprache isomorph zur Sprache (deren direkte Übersetzung bereits ), ohne jemals auf eine Sprachtheorie zurückgreifen zu müssen Werkzeuge! Dies ist eine der Möglichkeiten, diese Reihen als geschlossene Funktionen zu behandeln: Wir können Vereinfachungen an ihnen vornehmen, die sonst kaum möglich sind, und sie so auf ein einfacheres Problem reduzieren.wb(b∣ab)∗b1−b−ba
Wenn Sie sich jetzt noch an einen Ihrer Kalkülkurse erinnern, werden Sie sich daran erinnern, dass bestimmte Arten von Funktionen (die sich gut genug verhalten) diese als Taylor-Erweiterungen bekannten Reihenrepräsentationen zulassen. Keine Sorge, wir müssen uns nicht wirklich um diese lästigen Calc 1-Problemstellungen kümmern. Ich möchte nur darauf hinweisen, dass diese Funktionen als die Summe
so dass die Anzahl der Wörter , die so , dass es genau Vorkommen von und Vorkommen von . Es ist uns jedoch nicht besonders wichtig, ob etwas ein oder ein
w(a,b)=∑i,jwijaibj
wijwiajbab. Vielmehr kümmern wir uns nur um die Gesamtzahl der Zeichen in der Zeichenfolge. Um ein "blindes Auge" zwischen und zu drehen , können wir sie einfach (buchstäblich) gleich behandeln, z. B. sei und erhalte
abz=a=bw(z)=w(z,z)=z1−z−z2=∑kwkzk
wobei die Anzahl der erfüllbaren Wörter der Länge .wkk
Jetzt müssen Sie nur noch finden . Der übliche kombinatorische Ansatz wäre hier, diese rationale Funktion in ihren Teilbruch zu zerlegen: Das heißt, wenn der Nenner , können wir umschreiben (Hier geht es um ein bisschen Algebra, Dies ist jedoch eine universelle Eigenschaft rationaler Funktionen (ein Polynom teilt ein anderes). Um dies zu lösen, können Sie
Dies erzeugt die Bedingungen . Unabhängig davon, was und sind, erinnern Sie sich daranwk1−z−z2=(z−ϕ)(z−ψ)z(z−ϕ)(z−ψ)=Az−ϕ+Bz−ψ
Az−ϕ+Bz−ψ=z(z−ϕ)(z−ψ)
A+B=1,Aψ+Bϕ=0AB11−x=1+x+x2+… , nun, wir können neu anordnen
daher ist
Hier ist der goldene Schnitt und ist sein Konjugat. Wir haben dann eine einfache Beschreibung des asymptotischen Verhaltens der Sprache: Sie läuft in
w(z)=−Aϕ−z+−Bψ−z=(−Aϕ)11−zϕ+(−Bψ)11−zψ=(−Aϕ)(1+ϕ−1z+ϕ−2z2+…)+(−Bψ)(1+ψ−1z+ψ−2z2+…)
wk=(−Aϕ)ϕ−k+(−Bψ)ψ−k
ϕ1+5√2ψ=−ϕ−1wΘ(ϕn). Wenn Sie alles erweitern, werden Sie feststellen, dass
Es gibt auch eine komplizierte Verbindung zu einer anderen gemeinsamen kombinatorischen Klasse. Dies sind nur die Fibonacci-Zahlen!
wk=ϕk−ψk5–√=⌈ϕk5–√⌉
Angenommen, Sie haben , das die Anzahl der Zeichenfolgen der Größe , die mit beginnen und enden (und auch keine Teilzeichenfolgen enthalten). Wie können wir eine Zeichenfolge erstellen, die mit einem beginnen oder enden kann ? Nun, es ist einfach: Eine zulässige Zeichenfolge ist entweder in (beginnt und endet mit ) oder es ist (beginnt mit ) oder es ist (endet mit ) oder es ist (beginnt und endet mit ). Deshalb:
Erinnere k k a a a W b a w a w eine einem a w eine einem f (wkkkaaawbawawaaawaa
f(n)=wn+wn−2+2∗wn−1
wnist die Fibonacci-Sequenz, also , was bedeutet, dass
Daher ist
wn−1+wn−2=wnf(n)=(wn+wn−1)+(wn−2+wn−1)=wn+1+wn=wn+2
f(n)=fib(n+2)=⌈ϕn+25√⌉
Jetzt müssen Sie diese Analyse wahrscheinlich nicht mehr durchführen, aber wenn Sie nur die Einsicht haben, dass diese Sequenz eine verschobene Fibonacci-Sequenz ist, sollten Sie sich ein Bild von anderen kombinatorischen Interpretationen machen, die Sie ausprobieren können.