Блог пользователя AlexanderBolshakov

Автор AlexanderBolshakov, 11 лет назад, По-русски

Не так давно я выдвинул одну гипотезу, доказать которую у меня не получилось.

Гипотеза:
Пусть у нас есть бор, состоящий из не более, чем N вершин. Возьмем все строки, соответствующие листьям этого бора. Я утверждаю, что в сумме у этих строк будет не более, чем N * K различных суффиксов, где K — размер алфавита.

Я выдвинул эту гипотезу из того соображения, что по такому бору можно построить суфавтомат, и в нем будет не более N * K переходов. Где логическая связь между этим высказыванием и моей гипотезой — именно это мне и хочется узнать.

UPD. Своеобразный feature-request: неплохо было бы иметь возможность убирать свои топики из прямого эфира, не переводя их в черновики.

  • Проголосовать: нравится
  • -4
  • Проголосовать: не нравится

»
11 лет назад, # |
  Проголосовать: нравится +18 Проголосовать: не нравится

Не правда же.

Возьмем длинную цепочку из букв a, и повесим в конец полное дерево высоты 2.

Тогда у нас NK^2 суффиксов и (N+K^2) вершин. Понятно что при достаточно большом N NK^2 > NK+K^3.

»
11 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

Она, кажется, неверна. Возьмем строчку s с Ω(N2) различных подстрок, и составим бор из всех префиксов этой строки, к каждому из которых припишем #. В этом боре, очевидно, O(N) вершин, но все различные суффиксы всех этих префиксов -- в точности все различные подстроки s, а таких Ω(N2).

  • »
    »
    11 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится +13 Проголосовать: не нравится

    Речь идет не про сжатый бор, а про обычный. А обычный бор по префиксам строки, в которой все символы разные, очевидно, содержит O(N^2) вершин. Я тупой, простите...

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Можно построить строку из символов 0 и 1, в которой различных подстрок. См. De Bruijn sequence

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      Рассмотрим строку aaa..abbb..bc с равным количеством символов a и b. В ней, очевидно, Ω(N2) различных подстрок. Бор всех префиксов этой строки содержит O(N) вершин. Количество различных суффиксов всех префиксов, тем не менее, есть Ω(N2).

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится +21 Проголосовать: не нравится

        Ох, я невероятно тупой (перепутал бор по префиксам строки с бором по суффиксам).

        Спасибо всем, гипотеза опровергнута.

»
11 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Пусть K=3. Построим очень длинную цепочку из букв 'a'. В её конце сделаем раздвоение: 'b'-'c', а на конце каждой из веток ещё по одному — 'b'-'c'. Тогда у нас есть 4 листа, каждому отвечает ~ N различных суффиксов (потому что у каждого из них уникальное окончание либо длина). Имеем ~ 4*N суффиксов.