Изменения

Перейти к: навигация, поиск

Графы де Брюина

285 байт добавлено, 00:30, 8 декабря 2017
Алгоритм построения
'''Алгоритм: '''
1. Создаём пустой граф из <tex> n^l </tex> вершин. Установим в алфавите отношение порядка и будем рассматривать его символы как цифры в <tex> n </tex>-значной системе счисления.
2. Генерируем минимальное в лексикографическом порядке слово длины <tex> l+1 </tex>, которое ещё не было использовано (порядок может быть любым, главное перебрать все такие слова без повторений).
3. Считаем префикс <tex> pref </tex> и суффикс <tex> suff </tex> длины <tex> l </tex> для текущего. Причём установим в алфавите отношение порядка и будем рассматривать его символы как цифры в <tex> n </tex>-значной системе счисления.
4. Проводим ребро <tex> (pref, suff) </tex> в графе. Переходим к пункту <tex> 2 </tex> (например, будем перебирать в порядке лексикографического возрастания), пока не будут перебраны все слова длины <tex> l+1 </tex>.
'''Корректность''': перебраны все слова длины <tex> l+1 </tex>, следовательно, были рассмотрены все возможные пары вершин, между которыми проведено ребро.
'''Время работы''': <tex> O(n^{l+1} \cdot substring) = O(|E| \cdot l) </tex>, где <tex> substring - </tex> время генерации слова, а так же поиска префикса и суффикса в нём.
== Применение графов де Брюина ==
Анонимный участник

Навигация