Quante parole di lunghezza


9

MODIFICATO PER AGGIUNGERE : a questa domanda ora si risponde essenzialmente; consulta questo post di blog per maggiori dettagli. Grazie a tutti coloro che hanno pubblicato commenti e risposte qui.


DOMANDA ORIGINALE

Questa è una versione speranzosamente più intelligente e meglio informata di una domanda che ho posto su MathOverflow. Quando ho posto questa domanda, non sapevo nemmeno il nome dell'area matematica in cui si trovava il mio problema. Ora sono abbastanza sicuro che risieda nella Combinatoria algoritmica sulle parole parziali. (Libro recente sull'argomento qui .)

Voglio fare un elenco di parole su lettere. Ogni parola ha lunghezza esattamente . L'affare è, se è nella lista, dove è un simbolo jolly / non importa, allora a j b non potrà mai più apparire nella lista. (Lo stesso vale se a = b o se j = 0 e quindi la subword vietata è a b .)k a j blkajbajba=bj=0ab

Esempio in cui k=4 e l=5 :

abcd
bdce
dcba <- vietato perchédc apparso nella riga sopra
aeed <- vietato perchéad apparso sulla prima riga

La letteratura sulle "parole parziali evitabili" che ho trovato è stata tutta infinita - alla fine un certo modello di parole è inevitabile se la dimensione delle parole è abbastanza grande. Vorrei trovare versioni finanziarie di tali teoremi. Quindi, domanda:

Dato una parola parziale di forma in un alfabeto di l lettere, quante parole di lunghezza k evitarlo, e possono essere prodotti in modo esplicito in tempo polinomiale?ajblk

Non mi aspetto che la domanda di cui sopra sia difficile e, a meno che non manchi una sottigliezza, potrei calcolarla da solo. Il vero motivo per cui sto postando su questo sito è perché ho bisogno di sapere molto di più sulle proprietà di tali elenchi di parole per la mia applicazione, quindi spero che qualcuno possa rispondere alla domanda di seguito:

Questo è stato studiato in generale? Quali sono alcuni articoli che considerano, non solo se una parola parziale alla fine è inevitabile, ma "quanto tempo ci vuole" prima che diventi inevitabile?

Grazie.


(1) Non riesco a capire la corrispondenza tra la tua prima domanda e l'esempio indicato prima. Qual è l'input nel tuo esempio? (2) Nella tua prima domanda, stai usando k per due scopi diversi?
Tsuyoshi Ito,

Per quanto riguarda (2), sì, ho fatto un errore, ora modificato, grazie.
Aaron Sterling,

Per quanto riguarda (1), vorrei sapere "quanto spazio mi è rimasto" una volta che appare una parola parziale. Ma sì, la vera domanda è come produrre elenchi come quello che appare nell'esempio (senza le parole parziali proibite). Quindi l'ingresso sarebbe i valori di e l , e un numero desiderato di parole di produrre in un elenco, ognuno dei quali aveva il "evitare di apparire precedentemente parole parziali proprietà". kl
Aaron Sterling,

2
@Aaron, non so quale sia la tua applicazione definitiva, ma le sequenze (e le generalizzazioni) di Davenport-Schinzel chiedono la lunghezza massima di una stringa che non contiene un particolare schema ripetitivo. È una nozione correlata.
Suresh Venkat,

1
Seth Pettie ha studiato alcune generalizzazioni molto raffinate anche a matrici proibite.
Suresh Venkat,

Risposte:


4

Ecco un caso speciale: il numero di parole binarie di lunghezza tale che nessuna di esse appare consecutivamente è F ( k + 3 ) , dove F ( n ) è il numero di Fibonacci n t h (che inizia con F ( 1 ) = 1 , F ( 2 ) = 1 ). La prova è tramite la rappresentazione Zeckendorf .kF(k+3)F(n)nthF(1)=1,F(2)=1

EDIT: Possiamo estendere questo caso particolare iniziale nel caso particolare leggermente più grande di . Considera stringhe di lunghezza k su un alfabeto della dimensione l + 1 in modo tale che la lettera a non appaia due volte consecutive. Sia f ( k ) il numero di tali stringhe (che chiameremo "valido"). Affermiamo che: f ( k ) = l f ( k - 1 ) + l f ( k - 2 )a0akl+1af(k)

f(k)=lf(k1)+lf(k2)
L'intuizione è che possiamo costruire una stringa valida di lunghezza k da uno: a) adiacente qualsiasi l lettere che non sono una di una stringa valida di lunghezza k - 1 , oppure b) adiacente alla lettera una e poi qualsiasi altra lettera ma una per una stringa valida di lunghezza k - 2 .
f(0)=1,f(1)=l+1
klak1aak2

Puoi verificare che quanto segue sia un modulo chiuso per la ricorrenza sopra: dove capiamo(n

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

EDIT # 2: eliminiamo un altro caso: a . Chiameremo stringhe su un alfabeto a l- elemento che non contenga la sottostringa a b , "valida" e lasceremo che S k denoti l'insieme di stringhe valide di lunghezza k . Inoltre, definiamo T k come sottoinsieme di S k costituito da stringhe che iniziano con b e U k per essere quelle che non iniziano con b . Infine, lascia che f ( k ) = | S0b,ablabSkkTkSkbUkb, g ( k ) = | T k | , h ( k ) = | U k | .f(k)=|Sk|g(k)=|Tk|h(k)=|Uk|

Osserviamo che e g ( 1 ) = 1 , h ( 1 ) = l - 1 , f ( 1 ) = l . Quindi, deduciamo le seguenti ricorrenze: g ( k + 1 )g(0)=0,h(0)=1,f(0)=1g(1)=1,h(1)=l1,f(1)=l Il primo deriva dal fatto che l'aggiunta di unaball'inizio di qualsiasi elemento diSkproduce un elemento diTk+1. Il secondo deriva dall'osservazione che possiamo costruire un elemento diUk+1aggiungendo qualsiasi carattere tranneball'inizio di qualsiasi elemento diUko aggiungendo qualsiasi carattere ma

g(k+1)=f(k)h(k+1)=(l1)h(k)+(l2)g(k)
bSkTk+1Uk+1bUk o b nella parte anteriore di qualsiasi elemento in T k .abTk

Successivamente, riorganizziamo le equazioni di ricorrenza per ottenere:

f(k+1)=g(k+1)+h(k+1)=f(K)+(l-1)*h(K)+(l-2)*g(K)=f(K)+(l-1)*f(K)-g(K)=l*f(K)-f(K-1)

Possiamo ottenere una soluzione in forma chiusa piuttosto opaca a questa ricorrenza facendo confusione con la generazione di elementi funzionali o, se siamo pigri, andando direttamente a Wolfram Alpha . Tuttavia, con un po 'di googling e frugando in OEIS , scopriamo che in realtà abbiamo: dove U k è il k t h Polinomio di Chebyshev del secondo tipo (!) .

f(K)=UK(l/2)
UKKth

È molto interessante, grazie.
Aaron Sterling,

2

Un approccio completamente diverso per la prima domanda riutilizza le risposte alla recente domanda sulla generazione di parole in una lingua normale : è sufficiente applicare questi algoritmi per la lunghezza sulla lingua normale Σ a Σ j b Σ dove Σ è l'alfabeto.KΣ*un'ΣjBΣ*Σ


Grazie. Mi chiedevo se potesse esserci una connessione, e la tua risposta qui mi ha dato la spinta di cui avevo bisogno per guardare i documenti a cui si fa riferimento lì, e uno di loro risolve definitivamente una parte di uno dei problemi che sto prendendo in considerazione.
Aaron Sterling,

0

Aggiornato: questa risposta non è corretta :

supponendo è fissa, si può contare il numero di modi un pattern una j b può essere abbinato: il primo un simbolo può essere abbinato ad una qualche posizione 1 i k - j - 1 , e abbiamo l i - 1 possibilità prima di tale momento, l j fra una e b , e l k - j - i - 1 per il resto della stringa, per un totale di kjajba1ikj1li1ljun'Blkji1casi. Come osservato da Tsuyoshi Ito nei commenti, questo conteggiononèil numero di parole diverse che corrispondonoajbpoiché una singola parola potrebbe corrispondere allo stesso modello in modi diversi. Ad esempioaa

Σio=1K-j-1lio-1ljlK-j-io-1=(K-j-1)lK-2
un'jBun'un'viene abbinato tre volte in , a b due volte in a b a b e a b due volte in a a b b . Possiamo provare a contare il numero di modi per abbinare i pattern più volte ed esibire un'espressione di "inclusione-esclusione", ma il modo in cui i pattern potrebbero sovrapporsi rende questo troppo lungo.un'un'un'un'un'Bun'Bun'Bun'Bun'un'BB

Per la prima domanda, sotto la comprensione che non è fisso, cioè che vogliamo evitare di incorporare la parola a b :jun'B

  • sia primo simbolo non appare, che rappresenta ( l - 1 ) k possibili parole,un'(l-1)K
  • o appare prima in una posizione 1 i k , quindi non possiamo usare b nel resto della parola: ci sono ( l - 1 ) i - 1 scelte per il fattore fino a a e ( l - 1 ) k - i scelte per il resto, dando in totale k i = 1 ( l - 1 ) i - 1( l - 1un'1ioKB(l-1)io-1un'(l-1)K-io parole possibili. Se a = b è irrilevante.Σio=1K(l-1)io-1(l-1)K-io=K(l-1)K-1un'=B

Per la seconda domanda, non ho molto da suggerire; c'è una relazione con gli incastonamenti di parole, ma i risultati che conosco delle cattive sequenze del Lemma di Higman non si applicano immediatamente.


Grazie mille, Sylvain, anche se non credo sia del tutto giusto. Possiamo usare più avanti in parola, se un compare. Non possiamo usare b se ci sono esattamente j lettere in mezzo una e B , se un j b apparso in precedenza. Forse sto fraintendendo la tua tesi. Bun'Bjun'Bun'jB
Aaron Sterling,

Scusa, non ero sicuro che fosse corretto o meno. Ho modificato anche la risposta con j fisso . jj
Sylvain,

1
Non penso che il caso fixed-j sia corretto. Ad esempio, se k = 4 e j = 1, la parola aabb viene sottratta due volte. Non ho letto il caso non fisso-j.
Tsuyoshi Ito,

@Tsuyoshi Ito: hai ragione, non esiste una corrispondenza unica in quel caso.
Sylvain,

Si prega di contrassegnare una risposta errata in quanto tale.
Tsuyoshi Ito,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.