Теорема о гигантской компоненте. Поиск в ширину в случайном графе — различия между версиями
Cuciev (обсуждение | вклад) (Обход случайного графа -- продолжение рассказа) |
Cuciev (обсуждение | вклад) м (file renaming) |
||
Строка 91: | Строка 91: | ||
Чтобы вычислить размер компоненты связности, пройдемся с помощью [[Обход в ширину|БФС]] по ней, стартуя из произвольной вершины и переходя к очередной неисследованной вершине, только если ребро между ними существует (данный факт необходимо установить независимо от других ребер, с вероятностью <tex>p = \frac{d}{n}</tex>). Если ребро существует, пометим следующую вершину как "открытую". Алгоритм закончит свою работу (обойдет всю компоненту связности), когда множество неисследованных "открытых" вершин станет пустым. | Чтобы вычислить размер компоненты связности, пройдемся с помощью [[Обход в ширину|БФС]] по ней, стартуя из произвольной вершины и переходя к очередной неисследованной вершине, только если ребро между ними существует (данный факт необходимо установить независимо от других ребер, с вероятностью <tex>p = \frac{d}{n}</tex>). Если ребро существует, пометим следующую вершину как "открытую". Алгоритм закончит свою работу (обойдет всю компоненту связности), когда множество неисследованных "открытых" вершин станет пустым. | ||
<br> | <br> | ||
− | [Файл: | + | [Файл:bfs_problem_on_random_graph.png|500px|center|Проблема БФС]] |
<br> | <br> | ||
На данном изображении представлены результаты работы БФС, начавшемся в вершине <tex>1</tex> на двух графах: в первом у всех ребер <tex>p = 1</tex>, во втором же факт существования ребра определялся по ходу работы алгоритма {{---}} ребра, отмеченные пунктиром, не существуют. Возникающая проблема состоит в том, что, к примеру, Проблема возникает, когда алгоритм просто не доходит до каких-то ребер, не выясняя, существуют они или нет: находясь в вершине <tex>2</tex>, алгоритм не делал запрос о ребре <tex>(2, 3)</tex>, так как у этому моменту вершина <tex>3</tex> уже была исследована. Ребра, которые потенциально могли быть не изученными, помечены на рисунке точечным пунктиром. | На данном изображении представлены результаты работы БФС, начавшемся в вершине <tex>1</tex> на двух графах: в первом у всех ребер <tex>p = 1</tex>, во втором же факт существования ребра определялся по ходу работы алгоритма {{---}} ребра, отмеченные пунктиром, не существуют. Возникающая проблема состоит в том, что, к примеру, Проблема возникает, когда алгоритм просто не доходит до каких-то ребер, не выясняя, существуют они или нет: находясь в вершине <tex>2</tex>, алгоритм не делал запрос о ребре <tex>(2, 3)</tex>, так как у этому моменту вершина <tex>3</tex> уже была исследована. Ребра, которые потенциально могли быть не изученными, помечены на рисунке точечным пунктиром. |
Версия 04:41, 22 мая 2020
Теорема о гигантской компоненте
Перед формулировкой основной теоремы данного раздела, дадим определение некоторых понятий, которые будут использованы в дальнейшем, а также приведем необходимые далее утверждения.
Определение: |
Простейший ветвящийся процесс. Пусть | — независимые пуассоновские величины с одним и тем же средним . Положим .
Представлять себе описанный только что процесс можно так. В начальный момент времени есть одна активная частица. Затем она делает
(можжет ыть достигнуто, так как величина равна нулю с положительной вероятностью) активных потомков и перестает быть активной. На следующем шаге все повторяется: какая-то частица (порядок роли не играет) порождает новых частиц, а сама перестает быть активной. И так далее. Данный процесс может как завершиться (частицы перестанут быть активными), так и продолжаться бесконечно.Теорема: |
Пусть . Тогда с вероятностью 1 процесс вырождается, т.е. . |
Теорема: |
Пусть . Пусть — единственное решение уравнения . Тогда процесс вырождается с вероятностью , т.е. . |
Определение: |
Ветвящийся процесс на случайном графе. Пусть | — независимые пуассоновские величины с одним и тем же средним . Положим .
Пусть дан граф
. Зафиксируем . Пометим ее как активную, а все остальные вершины — нейтральными. Выберем среди нейтральных вершин всех соседей вершины . После этого пометим вершину как неактивную , а смежных с ней — как активных, а все остальные вершины — нейтральными.Снова зафиксируем какую-нибудь активную вершину
, и повторим процесс. Не меняем статус остальных уже активных вершин.Продолжая этот ветвящийся процесс, мы в конце концов получим лишь неактивные (образующие компоненту, содержащую
) и нейтральные вершины.Обозначим число активных вершин в момент времени
через , число нейтральных вершин — через , а число соседей вершины, которую собираемся пометить как неактивную, — через . Тогда . Все введенные величины зависят от графа и от последовательности выбираемых вершин .Если
посчитать случайным, то при любом выборе вершин получатся случайные величины на пространстве .Теорема (о гигантской компоненте): |
Рассмотрим модель . Пусть .
Если Если же , то найдется такая константа , что а.п.н. размер каждой связной компоненты случайного графа не превосходит . , то найдется такая константа , что а.п.н. в случайном графе есть ровно одна компонента размера . Размер остальных компонент не превосходит . |
Доказательство: |
Приведем здесь идеи, изложенные А.М. Райгородским [1], основанные на доказательстве Р. Карпа [2]. Данное доказательство может быть, не настолько строгое, как приведенное в [3], однако отличается лаконичностью и наглядностью. Случай .Положим , где — константа, которую мы подберем позднее. Нам хочется доказать, что с большой вероятностью каждая из компонент случайного графа имеет размер . Но размер компоненты — это момент вырождения процесса на случайном графе. Значит, интересующее нас утверждение можно записать в следующем виде:
Поскольку , достаточно найти такое , при котором
Далее: центральной предельной теоремы) . с учетом асимптотики с учетомПоскольку , нижний предел интегрирования имеет порядок . Таким образом, весь интеграл не превосходит величины . Выберем таким, чтобы оказалось меньше, чем , и в случае теорема доказана.
В данном случае ветвящийся процесс на графе нужно «запускать» не один раз, а многократно. Только так удается доказать, что почти наверняка хотя бы в одном запуске возникнет гигантская компонента. Подробности можно найти в [3], мы же лишь поясним, откуда в текущей ситуации появляется константа предыдущей теоремы и почему она совпадает с одноименной константой из той же теоремы. из формулировкиЧтобы доказать, что есть гигантская компонента, необходимо, чтобы ветвящийся процесс на графе не вырождался даже при . Иными словами, необходимо, чтобы:Так как по условию центральную предельную теорему к Интегрирование пойдет от минус бесконечности до . , то при выполнено: ПрименимЕсли , то мы получим искомое стремление вероятности к нулю.Если Таким образом, критическое значение , то вероятность, напротив, будет стрметиться к единице. , вплоть до которого есть именно стремление к нулю, — это решение уравнения или, что равносильно, . А это и есть уравнение из предыдущей теоремы, если заменить на . |
Обход случайного графа
Воспользуемся полученными в предыдущем разделе знаниями.
Рассмотрим граф . Проанализируем его структуру по мере роста . При , граф состоит только из изолированных вершин. С ростом в нем появляются ребра, компоненты связности получающегося леса объединяются. При достижении граф а.п.н. является лесом. Когда , появляются циклы. При , размер каждой из компонент связности . Число комонент связности, содержащих только один цикл — константа, зависящая от . Таким образом, граф состоит из леса и компонент, содержащих единственный цикл без компонент размера .
Когда начинает образовываться гигантская компонента. Этот процесс происходит в два этапа: при возникают компоненты из вершин, а.п.н. являющиеся деревьями. При , появляется гигантская компонента размером, пропорциональным количеству вершин во всем графе.
После превышения значения , все неизолированные вершины оказываются в гигантской компоненте. При достижении , в графе остаются только изолированные плюс гигантская компонента. Когда становится равной граф становится связным. При верно: в существует клика размером . Озвученные выше факты будут доказаны далее.
Чтобы вычислить размер компоненты связности, пройдемся с помощью БФС по ней, стартуя из произвольной вершины и переходя к очередной неисследованной вершине, только если ребро между ними существует (данный факт необходимо установить независимо от других ребер, с вероятностью ). Если ребро существует, пометим следующую вершину как "открытую". Алгоритм закончит свою работу (обойдет всю компоненту связности), когда множество неисследованных "открытых" вершин станет пустым.
[Файл:bfs_problem_on_random_graph.png|500px|center|Проблема БФС]]
На данном изображении представлены результаты работы БФС, начавшемся в вершине на двух графах: в первом у всех ребер , во втором же факт существования ребра определялся по ходу работы алгоритма — ребра, отмеченные пунктиром, не существуют. Возникающая проблема состоит в том, что, к примеру, Проблема возникает, когда алгоритм просто не доходит до каких-то ребер, не выясняя, существуют они или нет: находясь в вершине , алгоритм не делал запрос о ребре , так как у этому моменту вершина уже была исследована. Ребра, которые потенциально могли быть не изученными, помечены на рисунке точечным пунктиром.
Литература
- 1. Введение в математическое моделирование транспортных потоков: Учебное пособие/Издание 2-е, испр. и доп. А. В. Гасников и др. Под ред. А. В. Гасникова.— М.: МЦНМО, 2013 — C.330-339 — ISBN 978-5-4439-0040-7
- 2. Karp R. The transitive closure of a random digraph//Random structures and algorithms. 1990. V. 1. P. 73–94.
- 3. Алон Н., Спенсер Дж. Вероятностный метод. М.: Бином. Лаборатория знаний, 2007.
- 4. Blum A. Random Graphs // CS 598 Topics in Algorithms (UIUC), 2015. URL: https://www.cs.cmu.edu/~avrim/598/chap4only.pdf