Скільки слів довжиною на літери уникають часткового слова?


9

ВИДАЛЕНО ДО ДОДАТИ : На це питання зараз по суті відповіді; будь ласка, дивіться цей запис у блозі для отримання більш детальної інформації. Дякуємо всім, хто розмістив тут коментарі та відповіді.


ОРИГІНАЛЬНЕ ПИТАННЯ

Це, сподіваємось, розумніша та краще обізнана версія запитання, яке я задав на MathOverflow. Коли я задав це запитання, я навіть не знав назви області математики, в якій була моя проблема. Зараз я впевнений, що це лежить в алгоритмічній комбінаториці на часткових словах. (Недавня книга з цього приводу тут .)

Я хочу скласти список слів на літери . Кожне слово має довжину рівно . Угода полягає в тому, що якщо списку , де є символом підстановки / небайдужий, то більше ніколи не може відображатися у списку. (Це ж справедливо, якщо , або якщо а отже, заборонене підслово .)lkajbajba=bj=0ab

Приклад, де і :k=4l=5

abcd
bdce
dcba <- заборонено, тому що з'явився у рядку над <- заборонено, оскільки першому рядку з'явивсяdc
aeedad

Література про "часткові слова, які можна уникнути", - це все, що інфінірується - зрештою, деякий шаблон слова неминучий, якщо розмір слова досить великий. Я хотів би знайти остаточні версії таких теорем. Отже, питання:

З огляду на часткове слово форми в алфавіті літер, скільки слів довжини уникають цього, і чи можна їх явно утворити в поліноміальний час?ajblk

Я не сподіваюсь, що вищезазначене питання буде складним, і, якщо немає тонкощів, яких я відсутній, я міг би сам це обчислити. Справжня причина, яку я публікую на цьому веб-сайті, полягає в тому, що мені потрібно знати набагато більше про властивості таких списків моїх заявок, тому я сподіваюся, що хтось зможе відповісти на подальше запитання:

Це було вивчено в цілому? Які статті розглядають не лише те, що часткове слово зрештою неминуче, а "скільки часу пройде", перш ніж воно стане неминучим?

Дякую.


(1) Я не можу зрозуміти відповідність між вашим першим запитанням та прикладом, поданим до нього. Який вхід у вашому прикладі? (2) У своєму першому запитанні ви використовуєте k для двох різних цілей?
Цуйоші Іто

Щодо (2), так, я помилився, зараз відредагований, дякую.
Аарон Стерлінг

Щодо (1), я хотів би знати, «скільки місця у мене залишилось», як тільки з’явиться часткове слово. Але так, справжнє питання полягає в тому, як скласти такі списки, як той, який відображається в прикладі (без заборонених часткових слів). Таким чином, вхідними даними будуть значення і , а також бажана кількість слів, які потрібно створити у списку, і всі вони мали "уникнення раніше появи властивості часткових слів". kl
Аарон Стерлінг

2
@Aaron, я не знаю, у чому полягає ваша кінцева заявка, але послідовності (та узагальнення) Давенпорта-Шінзеля запитують про максимальну довжину рядка, яка не містить конкретного повторюваного шаблону. Це споріднене поняття.
Суреш Венкат

1
Сет Петті також вивчає кілька надзвичайних узагальнень до заборонених підматриць.
Суреш Венкат

Відповіді:


4

Ось окремий випадок: кількість двійкових слів довжиною таким, що жодне з двох не з’являється послідовно, є , де - число Фібоначчі (починаючи з ). Доказ - через представництво Зекендорфа .kF(k+3)F(n)nthF(1)=1,F(2)=1

EDIT: Цей початковий спеціальний випадок ми можемо розширити на дещо більший спеціальний випадок . Розгляньте рядки довжиною над алфавітом розміром таким чином, що літера не з’являється двічі поспіль. Нехай - кількість таких рядків (які ми будемо називати "дійсними"). Ми стверджуємо, що: Інтуїція полягає в тому, що ми можемо побудувати дійсну рядок довжиною будь-яким: а) примиканням до будь-якої з літер що не до дійсної рядка довжиною , або b) примикання до літериa0akl+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: Викреслимо ще один випадок - . Ми будемо називати рядки над алфавітом -елементу, які не містять підрядку , "допустимим", а позначатиме набір дійсних рядків довжиною . Далі визначимо як підмножину що складається з рядків, що починаються з а - тими, що не починаються з . Нарешті, нехай,,.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оскільки одне слово може по-різному відповідати одній і тій же схемі. Наприклад, порівнюється три рази в , два рази в , а два рази в . Ми можемо спробувати порахувати кількість способів узгодження шаблонів у кілька разів та виявити вираз "включення-виключення", але способи, що можуть перекриватись, робить це занадто довгим.aaaaaaababababaabb

Для першого питання, розуміючи, що не виправлено, тобто, що ми хочемо уникати вбудовування слова :jab

  • або ніколи не з'явиться перший символ, на частку якого припадає можливих слів,a(l1)k
  • або з'являється спочатку в деякому положенні , тоді ми не можемо використовувати в решті слова: є вибір для коефіцієнта до , і вибір на залишок, даючи в цілому можливі слова. Будь не має значення.a1ikb(l1)i1a(l1)kii=1k(l1)i1(l1)ki=k(l1)k1a=b

Щодо другого питання, я не маю багато що запропонувати; існує зв’язок із вбудовуванням слова, але результати, які я знаю про погані послідовності для леми Хігмана, не застосовуються одразу.


Дуже дякую, Сільвейн, хоча я не думаю, що це цілком правильно. Ми можемо використовувати в кінці слова , якщо НЕ з'явиться. Ми просто не можемо використовувати якщо між і є точно букви , якщо з'явився раніше. Можливо, я не розумію вашого аргументу. babjabajb
Аарон Стерлінг

Вибачте, я не був впевнений, чи було виправлено чи ні. Я також редагував відповідь з фіксованим . jj
Sylvain

1
Я не думаю, що випадок фіксованого j є правильним. Наприклад, якщо k = 4 і j = 1, слово aabb віднімається двічі. Я не читав нефіксованого випадку.
Цуйосі Іто

@Tsuyoshi Ito: ти маєш рацію, в цьому випадку немає унікальної відповідності.
Sylvain

Будь ласка, позначте неправильну відповідь як таку.
Цуйосі Іто
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.