Re[5]: Разборчивые строки
От: Serge  
Дата: 11.07.18 14:57
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, watchmaker, Вы писали:


К>>>но КАЖЕТСЯ, что мы действительно имеем дело с непересекающимися классами, поэтому можем суммировать как есть.

W>>Круто, но процитированные классы таки пересекаются.
W>>Например, строку "ABABA" можно получить из "ABAB" добавлением "A", либо из "ABA" добавлением суффикса "BA".
W>>То есть в этой уникальной строке повторяются разные подстроки: "ABABA" и "ABABA", и она оказывается посчитанной дважды.

К>Да, именно это у меня и вышло в брутфорсе.

К>Получается, что надо дробить класс Q(n) строк без повторов длины n на подклассы вида Q(n, t1,t2,...) где ti — длина паразитного повтора
К>
К>Подкласс t=2
К>xxxABA + BA = xxxABABA
К>                 --==
К>Подкласс t=3
К>xxxABCA + BCA = xxxABCABCA
К>                   ---===
К>Подкласс t=4
К>xxxABCDA + BCDA = xxxABCDABCDA
К>                     ----====

К>Подкласс t=2,4         --==
К>xxxABACA + CA   = xxxABACACA
К>xxxABACA + BACA = xxxABACABACA
К>                     ----====

К>Подкласс t=2,5
К>xxxABCADA + DA
К>xxxABCADA + BCADA

К>Подкласс t=3,5
К>xxxABACDA + CDA
К>xxxABACDA + BACDA
К>


К>Тогда формула будет выглядеть вот так:

К>
К>Q(n) = Q(n-1)*a
К>     - Q(n-1)             - повторы длины 1
К>     - Q(n-2) + Q(n-2,2)  - поскольку мы
К>     - Q(n-3) + Q(n-3,2) + Q(n-3,3)
К>     - Q(n-4) + Q(n-4,2) + Q(n-4,3) + Q(n-4,4) - Q(n-4,2,4)
К>     . . .
К>

К>(если ничего не путаю)

К>Длины паразитных повторов — это положения вхождений последней буквы, с конца.

К>И вот это мне очень не нравится: чтобы за ними проследить, нам придётся не расписывать формулу для каждого подкласса
К>Q(n,t1) = Q(n-1,t1)*a + ... — ...,
К>а в завуалированной форме рожать все строки. А их, понятное дело, экспонента по основанию мощности алфавита (a). (Ну, ближе к (a-1), но всё равно не сахар).

Что-то похожее на принцип включения-исключения. Но как его применить до конца пока не приходит в голову.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.