Графы де Брюина — различия между версиями
(→Основные свойства) |
|||
| Строка 1: | Строка 1: | ||
| + | {| class="wikitable" align="center" style="color: red; background-color: black; font-size: 56px; width: 800px;" | ||
| + | |+ | ||
| + | |-align="center" | ||
| + | |'''НЕТ ВОЙНЕ''' | ||
| + | |-style="font-size: 16px;" | ||
| + | | | ||
| + | 24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян. | ||
| + | |||
| + | Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием. | ||
| + | |||
| + | Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей. | ||
| + | |||
| + | Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить. | ||
| + | |||
| + | ''Антивоенный комитет России'' | ||
| + | |-style="font-size: 16px;" | ||
| + | |Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению. | ||
| + | |-style="font-size: 16px;" | ||
| + | |[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки]. | ||
| + | |} | ||
| + | |||
{{Определение | {{Определение | ||
|id = de_bruijn_graph | |id = de_bruijn_graph | ||
Версия 07:35, 1 сентября 2022
| НЕТ ВОЙНЕ |
|
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян. Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием. Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей. Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить. Антивоенный комитет России |
| Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению. |
| meduza.io, Популярная политика, Новая газета, zona.media, Майкл Наки. |
| Определение: |
| Графом де Брюина (англ. De Bruijn graph) с параметром для -буквенного алфавита называется ориентированный граф , где множество всех слов длины в заданном алфавите, и слово длины в заданном алфавите такое, что и . Обозначается как |
Содержание
Основные свойства
| Лемма (об эйлеровости графа): |
эйлеров |
| Доказательство: |
| Ориентированный граф является эйлеровым, если число входящих рёбер равно числу исходящих. Докажем, что это верно для . А именно, что верно, что . Докажем первое равенство, второе аналогично. Существует ровно символов алфавита, которые можно добавить в конец слова , соответствующему вершине . Получим ровно различных слов. И у всех этих слов различные суффиксы длины . Таким образом, из вершины выходит ровно рёбер и входит тоже рёбер. Значит, граф де Брюина эйлеров. |
| Лемма (о количестве вершин и рёбер в графе): |
В |
| Доказательство: |
| Число вершин очевидно находится из определения графа и равно . Число рёбер следует из доказательства предыдущей леммы: каждой вершине инцидентно ровно ребер. Значит, по лемме о рукопожатиях. |
| Лемма (о равносильном определении): |
В |
| Доказательство: |
|
Составим слово длины , тогда . Если выбрать как первый и последний символ слов соответственно, и взять , то ребро между этими вершинами есть по определению. Возьмём подстроку слова (из определения) без крайних символов (её длина ). Так же из определения следует, что это будет суффиксом строки, соответствующей вершине , и префиксом для строки, соответствующей . |
| Лемма (о графе с ): |
полный граф. |
| Доказательство: |
| Действительно, для любых (необязательно различных) вершин , где слова (символы), соответствующие вершинам . И тогда очевидно, что существует ребро . |
Алгоритм построения
| Задача: |
| Дан алфавит длины и длина слов . Построить по ним граф де Брюина. |
Алгоритм:
1. Создаём пустой граф из вершин. Установим в алфавите отношение порядка и будем рассматривать его символы как цифры в -значной системе счисления.
2. Генерируем минимальное в лексикографическом порядке слово длины , которое ещё не было использовано (порядок может быть любым, главное перебрать все такие слова без повторений).
3. Считаем префикс и суффикс длины для текущего.
4. Проводим ребро в графе. Переходим к пункту , пока не будут перебраны все слова длины .
Корректность: перебраны все слова длины , следовательно, были рассмотрены все возможные пары вершин, между которыми проведено ребро.
Время работы: , где время генерации слова, а так же поиска префикса и суффикса в нём.
Применение графов де Брюина
| Задача: |
| Известно, что пароль имеет длину , и состоит из цифр от до . Требуется вывести кратчайшую последовательность цифр, которая гарантированно содержит пароль как подстроку. |
Решение:
1. Составим граф де Брюина .
2. Найдём в построенном графе эйлеров цикл. Он существует, так как граф де Брюина эйлеров по первой лемме.
3. Слово, соответствующее первой вершине цикла, возьмём полностью ( символов), затем будем последовательно добавлять в конец строки последний символ слова вершины, в которую был осуществлён переход. Так как рёбер , получим последовательность длиной .
Корректность:
1. Очевидно, что последовательность меньшей длины составить нельзя: в полученной последовательности ровно подстрок длины , и именно столько чисел можно составить из цифр от до .
2. Двум разным рёбрам соответствует два различных слова длины . Иначе и . То есть это одно и то же ребро, при этом кратных рёбер в графе нет.
Вывод:
Из доказательства корректности следует, что в последовательности содержится различных подстрок длины . И короче последовательность получить нельзя. Мы получили ответ за , то есть за время построения графа де Брюина .
| Задача: |
| Даны неповторяющиеся последовательности нуклеотидов (риды) длины . Известно, что все подстроки генома длины входят в данное множество ридов. Построить возможный геном. |
Пояснение:
Геном (как и его части риды) является словом из -символьного алфавита , где символы так же называются нуклеотидами. В реальности длины ридов находятся обычно в диапазоне - нуклеотидов, а геном может содержать от нуклеотидов у простейших организмов. При этом учёные могут получать информацию только о ридах (в силу размера последовательностей) физическим путем (метод секвенирования).
Решение:
Решение этой задачи очень простое после решения предыдущей задачи. Построим граф , где вершинами будут являться суффиксы и префиксы длины всех ридов. Получили подграф графа де Брюина (подграф, так как в нём есть не обязательно все вершины), где каждому ребру соответствует рид. Найдём в нём эйлеров путь. Он существует, так как на геном было наложено условие о том, что все его подстроки длины входят в наше множество ридов. Этот путь является возможным ответом. Очевидно, что единственно верный ответ (коим является реальный геном реального существа) получить можно не всегда, так как не всегда в графе есть единственный эйлеров путь.
Комментарий:
К сожалению, кроме того, что алгоритм работает за , в реальности есть немало технических проблем:
1. Как можно догадаться из пояснения: едва ли риды обязательно будут неповторяющимися.
2. Данные о ридах могут быть получены лишь с некоторой вероятностью (как правило, ошибка в нуклеотиде имеет вероятность около , но вблизи "края" генома она может достигать и ).
3. Риды не могут иметь фиксированную длину в силу особенностей метода секвенирования.
Вывод:
Несмотря на то, что задача не решается в общем случае приведённым алгоритмом, граф де Брюина действительно используется в ассемблерах (программах, собирающих геном или его большие части из ридов), но с заметными усложнениями.