Obergrenze von fib (n + 2)


8

Ich habe ein Hausaufgabenproblem, das mich verwirrt, weil die Mathematik über das hinausgeht, was ich getan habe, obwohl uns gesagt wurde, dass es unnötig sei, dies mathematisch zu lösen. Geben Sie einfach eine enge Obergrenze an und begründen Sie diese.

Sei Geben Sie eine asymptotische Obergrenze für als .

f(n)=|{w{a,b}n:aaw}|.
fn

Bisher:

nstringscompared to 2n122n0232n1352n3482n85132n186212n43

Die Mathematik, die mir eine genaue Grenze gibt, ist mir ein Rätsel. Offensichtlich ist eine Obergrenze, obwohl sie nicht besonders eng ist.O(2n)

Irgendwelche Vorschläge, was ich versuchen sollte?


1
Willkommen in der Informatik! Der von Ihnen gewählte Titel eignet sich nicht gut zur Darstellung Ihrer Frage. Bitte nehmen Sie sich etwas Zeit, um es zu verbessern. Wir haben hier einige Ratschläge gesammelt . Vielen Dank!
Raphael

Viele Leute würden fib (n + 1) als einen vollkommen feinen Ausdruck für eine Obergrenze betrachten. Noch besser, da es genau ist :-)
gnasher729

Antworten:


8

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=ϵeeeeeeeeee
eϵ1aba+babca×b×c
e1+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.11e

In ähnlicher Weise ist . Dies bedeutet, dass wir in e+=eee1ew

w11(b1b×a)×b1b

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(bab)b1bba

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=b
w(z)=w(z,z)=z1zz2=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 daranwk1zz2=(zϕ)(zψ)z(zϕ)(zψ)=Azϕ+Bzψ

Azϕ+Bzψ=z(zϕ)(zψ)
A+B=1,Aψ+Bϕ=0AB11x=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ϕ)11zϕ+(Bψ)11zψ=(Aϕ)(1+ϕ1z+ϕ2z2+)+(Bψ)(1+ψ1z+ψ2z2+)
wk=(Aϕ)ϕk+(Bψ)ψk
ϕ1+52ψ=ϕ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+wn2+2wn1
wnist die Fibonacci-Sequenz, also , was bedeutet, dass Daher istwn1+wn2=wn
f(n)=(wn+wn1)+(wn2+wn1)=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.


7

Lee Gaos Antwort ist ausgezeichnet. Hier ist ein anderer Account. Betrachten Sie den folgenden Automaten:

Automat für die Sprache

Dies ist ein eindeutiger endlicher Automat (UFA) ohne Übergänge: eine NFA, bei der jedes Wort genau einen akzeptierenden Pfad hat. Die Anzahl der Wörter der Länge ist somit die Anzahl der Pfade der Länge vom Startzustand in einen akzeptierenden Zustand (da es keine Übergänge gibt).ϵnnϵ

Wir können die Anzahl der Pfade in einem Graphen mithilfe der linearen Algebra zählen. Sei die Übergangsmatrix des Automaten: ist die Anzahl der Pfeile von bis (jeder Pfeil ist einem einzelnen Symbol zugeordnet). Dann ist was genau die Anzahl der Pfade der Länge 2 von nach . In ähnlicher Weise ist die Anzahl der Pfade der Länge von bis . In unserem Fall wollen wir die Anzahl der Pfade der Länge ab zählenMM(qi,qj)qjqi

M2(qi,qj)=kM(qi,qk)M(qk,qj),
qjqiMn(qi,qj)nqjqinq0 bis und so Die Standardmethode zur Berechnung eines solchen Ausdrucks ist die Diagonalisierung von (oder allgemeiner die Berechnung der Jordan-Form von ). Die Eigenwerte von leicht als berechnet werden , und so für einige Matrix , {q0,q1}
f(n)=(11)(1110)n(10).
MMM1±52P
f(n)=(11)P((1+52)n00(152)n)P1(10)=A(1+52)n+B(152)n,
für einige Koeffizienten . Um zu bestimmen können wir entweder explizit diagnostizieren oder einfach ein lineares System unter Verwendung bekannter Werte von einrichten . Da und , zeigt der letztere Ansatz, dass A,BA,BMff(0)=1f(1)=2
A+B=11+52A+152B=2
Wenn wir dieses System lösen (z. B. unter Verwendung der Gaußschen Eliminierung), stellen wir fest, dass und . Daher Der gleiche Ansatz funktioniert für jede reguläre Sprache.A=5+3510B=53510
f(n)=5+3510(1+52)n+53510(152)n=Θ(λmaxn), where λmax=1+52.

Dies ist ein lustiger Ansatz! Ich liebe es immer, lineare algebraische Reduktionen für
Lee

4

@ Lee Gao's ist zu komplex (ich habe noch nicht einmal das Ganze gelesen), hier ist ein vereinfachter Ansatz:

Sei f (n) alle gewünschten Strings, von denen a (n) Strings sind, die bei a enden, und b (n) Strings sind, die bei b enden.

Jetzt können wir für jede Zeichenfolge, die mit b endet, a direkt hinzufügen, um ba als Endung und eine gültige Zeichenfolge zu erhalten: Beachten Sie, dass wir a nicht bis zum Ende von Zeichenfolgen hinzufügen können, die ende an einem sonst haben wir aa am ende.

(1)a(n)=b(n1)

Wir können jedem String hinzufügen:

(2)b(n)=a(n1)+b(n1)

Nun in und Substitution in : Also ist b (n) fib (n) und da a ( n) ist b (n-1), daher ist a (n) fib (n-1). Jetzt ist f (n): Da fib (n) , ist f (n) , . (Nehmen Sie als Konstante und vernachlässigen Sie für großes , um eine Asymptote zu erhalten.)( 1 ) ( 2 ) b ( n ) = b ( n - 2 ) + b ( n - 1 ) f ( n ) = a ( n ) + bnn1(1)(2)

b(n)=b(n2)+b(n1)
( φ n - φ - n ) /
f(n)=a(n)+b(n)=fib(n)+fib(n1)=fib(n+1)
O(φn)φ= 1 + (φnφn)/5O(φn)φ/φ=1+521.618 φ - n nφ/5φnn

Anmerkung: fib (0) = 0, fib (1) = 1.


Ihre Obergrenze ist jedoch nicht sehr gut: Jede Sprache über hat höchstens Wörter der Länge ! 2 n n{a,b}2nn
Yuval Filmus

@YuvalFilmus, was ist das Problem, Sie möchten eine engere Grenze, dann verwenden Siefib(n)=(ϕnϕn)/5
RE60K

Das ist toll! Ich dachte auch an die paarweisen induktiven Konstruktionen von und . bab
Lee
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.