EDITIERT ZUM HINZUFÜGEN : Diese Frage ist jetzt im Wesentlichen beantwortet; Weitere Informationen finden Sie in diesem Blogeintrag . Vielen Dank an alle, die hier Kommentare und Antworten gepostet haben.
URSPRÜNGLICHE FRAGE
Dies ist eine hoffentlich intelligentere und besser informierte Version einer Frage, die ich in MathOverflow gestellt habe. Als ich diese Frage stellte, wusste ich nicht einmal, in welchem Bereich der Mathematik sich mein Problem befand. Jetzt bin ich mir ziemlich sicher, dass es in der algorithmischen Kombinatorik für Teilwörter liegt. (Aktuelles Buch zu diesem Thema hier .)
Ich möchte eine Liste von Wörtern auf Buchstaben erstellen. Jedes Wort hat eine Länge von genau . Der Deal ist, wenn in der Liste ist, wobei ein Platzhalter / egal-Symbol ist, dann kann nie wieder in der Liste erscheinen. (Dasselbe gilt, wenn oder wenn und daher das verbotene Unterwort .)
Beispiel mit und :
<- verboten, weil in der Zeile über
<erschien - verboten, weil in der ersten Zeile erschien
Die Literatur zu "vermeidbaren Teilwörtern", die ich gefunden habe, war alle unendlich - schließlich ist ein Wortmuster unvermeidlich, wenn die Wortgröße groß genug ist. Ich würde gerne Endversionen solcher Theoreme finden. Also, Frage:
Wie viele Wörter der Länge k vermeiden ein Teilwort der Form in einem Alphabet aus l Buchstaben und können explizit in Polynomzeit erzeugt werden?
Ich erwarte nicht, dass die obige Frage schwierig sein wird, und wenn es keine Subtilität gibt, die mir fehlt, könnte ich sie selbst berechnen. Der wahre Grund, warum ich auf dieser Website poste, ist, dass ich viel mehr über die Eigenschaften solcher Wortlisten für meine Anwendung wissen muss. Ich hoffe, dass jemand die folgende Frage beantworten kann:
Wurde dies allgemein untersucht? Was sind einige Artikel, die berücksichtigen, nicht nur, ob ein Teilwort letztendlich unvermeidbar ist, sondern "wie lange es dauert", bis es unvermeidlich wird?
Vielen Dank.
quelle
Antworten:
Hier ist ein Sonderfall: Die Anzahl der binären Wörter der Länge so dass keine zwei nacheinander erscheinen, ist F ( k + 3 ) , wobei F ( n ) die n t h Fibonacci-Zahl ist (beginnend mit F ( 1 ) = 1 , F ( 2 ) = 1 ). Der Nachweis erfolgt über die Zeckendorfer Darstellung .k F.( k + 3 ) F.( n ) nt h F.( 1 ) = 1 , F.( 2 ) = 1
EDIT: Wir können diesen anfänglichen Sonderfall auf den etwas größeren Sonderfall von . Betrachten Sie Zeichenfolgen der Länge k über einem Alphabet der Größe l + 1 , sodass der Buchstabe a nicht zweimal hintereinander erscheint. Sei f ( k ) die Anzahl solcher Strings (die wir "gültig" nennen werden). Wir behaupten, dass: f ( k ) = l ∗ f ( k - 1 ) + l ∗ f ( k - 2 )a ◊0ein k l + 1 ein f( k )
Sie können überprüfen, ob das Folgende eine geschlossene Form für die obige Wiederholung ist: wo wir verstehen wenn .(n
EDIT # 2: Lassen Sie uns einen weiteren Fall - a . Wir werden Strings über ein Element-Alphabet aufrufen , das nicht die Teilzeichenfolge , "valid", und die Menge der gültigen Strings der Länge . Weiter definieren wir als die Teilmenge von die aus Zeichenfolgen besteht, die mit und als Zeichenfolgen , die nicht mit . Schließlich sei,,.l a b S k k T k S k b U k b f ( k ) = | S k | g ( k ) = | T k | h ( k ) = | U k |◊0b,a≠b l ab Sk k Tk Sk b Uk b f(k)=|Sk| G( k ) = | T.k| h(k)=|Uk|
Wir beobachten, dass und . Als nächstes schließen wir die folgenden Wiederholungen: Das erste ergibt sich aus der Tatsache, dass das Hinzufügen eines zum Anfang eines Elements von ein Element von . Die zweite ergibt sich aus der Beobachtung, dass wir ein Element von konstruieren können, indem wir ein beliebiges Zeichen außer an die Vorderseite eines Elements von hinzufügen oder indem wir ein beliebiges Zeichen außer oder an die Vorderseite eines Elements hinzufügen in .g ( 1 ) = 1 , h ( 1 ) = l - 1 , f ( 1 ) = l g ( k + 1 )g(0)=0,h(0)=1,f(0)=1 g(1)=1,h(1)=l−1,f(1)=l bSkTk+1Uk+1bUkabTk
Als nächstes ordnen wir die Wiederholungsgleichungen neu an, um zu erhalten:
Wir können eine ziemlich undurchsichtige Lösung in geschlossener Form für diese Wiederholung erhalten, indem wir ein bisschen mit dem Generieren von Funktionsmaterial herumspielen oder, wenn wir faul sind, direkt zu Wolfram Alpha gehen . Mit ein wenig googeln und herumstöbern in OEIS stellen wir jedoch fest, dass wir tatsächlich haben: wobei das Chebyshev-Polynom der zweiten Art (!) .U k k t h
quelle
Ein völlig anderer Ansatz für die erste Frage verwendet die Antworten auf die jüngste Frage zur Erzeugung von Wörtern in einer regulären Sprache erneut : Es reicht aus, diese Algorithmen für die Länge auf die reguläre Sprache anzuwenden wo das Alphabet ist.Σ * a Σ j b Σ * Σk Σ∗aΣjbΣ∗ Σ
quelle
Aktualisiert: Diese Antwort ist falsch :
unter der Annahme festgelegt ist, können wir die Anzahl der Zählung Wege ein Muster angepaßt werden kann: der erste Symbol kann an einer bestimmten Position angepasst werden , und wir haben Möglichkeiten vor diesem Punkt, zwischen und und für den Rest der Zeichenkette, also insgesamt Fälle. Wie von Tsuyoshi Ito in den Kommentaren bemerkt, ist diese Anzahl nicht die Anzahl der verschiedenen Wörter, die mit übereinstimmena ◊ j b a 1 ≤ i ≤ k - j - 1 l i - 1 l j a b l k - j - i - 1 k - j - 1 ∑ i = 1 l i - 1 ⋅ l j ⋅ l k - j - i - 1 = ( k - jj a◊jb a 1≤i≤k−j−1 li−1 lj a b lk−j−i−1
Für die erste Frage, unter der Voraussetzung, dass nicht festgelegt ist, dh dass wir vermeiden möchten, das Wort :j ab
Für die zweite Frage habe ich nicht viel vorzuschlagen; Es gibt eine Beziehung zu Worteinbettungen, aber die Ergebnisse, die ich über schlechte Sequenzen für Higmans Lemma kenne, gelten nicht sofort.
quelle