Теорема о гигантской компоненте. Поиск в ширину в случайном графе — различия между версиями
Cuciev (обсуждение | вклад) (Medium-sized changes) |
м (rollbackEdits.php mass rollback) |
||
(не показана 41 промежуточная версия 3 участников) | |||
Строка 1: | Строка 1: | ||
− | |||
− | |||
== Теорема о гигантской компоненте == | == Теорема о гигантской компоненте == | ||
− | Перед формулировкой основной теоремы данного раздела | + | Перед формулировкой основной теоремы данного раздела дадим определение некоторых понятий, которые будут использованы в дальнейшем, а также приведем необходимые далее утверждения. |
{{Определение | {{Определение | ||
|definition='''Простейший ветвящийся процесс.''' Пусть <tex>Z_1,\dotsc Z_n,\dotsc </tex> {{---}} независимые пуассоновские величины<ref>https://ru.wikipedia.org/wiki/Распределение_Пуассона</ref> с одним и тем же [[Математическое ожидание случайной величины | математическим ожиданием]] <tex>\lambda</tex>. Положим | |definition='''Простейший ветвящийся процесс.''' Пусть <tex>Z_1,\dotsc Z_n,\dotsc </tex> {{---}} независимые пуассоновские величины<ref>https://ru.wikipedia.org/wiki/Распределение_Пуассона</ref> с одним и тем же [[Математическое ожидание случайной величины | математическим ожиданием]] <tex>\lambda</tex>. Положим | ||
Строка 30: | Строка 28: | ||
Данный процесс очень похож на [[Обход в ширину|поиск в ширину]], этим свойством мы воспользуемся позднее.<br> | Данный процесс очень похож на [[Обход в ширину|поиск в ширину]], этим свойством мы воспользуемся позднее.<br> | ||
− | Обозначим число активных вершин в момент времени <tex>t</tex> через <tex>Y_t</tex>, число нейтральных вершин {{---}} через <tex>N_t</tex>, а число соседей вершины, которую собираемся пометить как неактивную, {{---}} через <tex>Z_t</tex>. Тогда <tex>Y_0 = 1,Y_t = | + | Обозначим число активных вершин в момент времени <tex>t</tex> через <tex>Y_t</tex>, число нейтральных вершин {{---}} через <tex>N_t</tex>, а число соседей вершины, которую собираемся пометить как неактивную, {{---}} через <tex>Z_t</tex>. Тогда <tex>Y_0 = 1,Y_t = Y_{t − 1} + Z_t − 1</tex>. Все введенные величины зависят от графа <tex>G</tex> и от последовательности выбираемых вершин <tex>v_1,\dotsc</tex>. |
Если <tex>G</tex> посчитать случайным, то при любом выборе вершин <tex>v_1,\dotsc</tex> получатся случайные величины <tex>Y_t, N_t, Z_t</tex> на пространстве <tex>G(n, p)</tex>. | Если <tex>G</tex> посчитать случайным, то при любом выборе вершин <tex>v_1,\dotsc</tex> получатся случайные величины <tex>Y_t, N_t, Z_t</tex> на пространстве <tex>G(n, p)</tex>. | ||
Строка 43: | Строка 41: | ||
|proof= | |proof= | ||
Приведем здесь идеи<ref>Введение в математическое моделирование транспортных потоков: Учебное пособие/Издание 2-е, испр. и доп. А. В. Гасников и др. Под ред. А. В. Гасникова.{{---}} М.: МЦНМО, 2013 {{---}} C.330-339 {{---}} ISBN 978-5-4439-0040-7</ref>, изложенные А.М. Райгородским, основанные на доказательстве<ref>Karp R. The transitive closure of a random digraph//Random structures and algorithms. 1990. V. 1. P. 73–94.</ref> Р. Карпа. Такой формат позволит понять основные идеи и логику рассуждений. Строгий вариант приведен в <ref name="trueproof">Алон Н., Спенсер Дж. Вероятностный метод. М.: Бином. Лаборатория знаний, 2007.</ref>. | Приведем здесь идеи<ref>Введение в математическое моделирование транспортных потоков: Учебное пособие/Издание 2-е, испр. и доп. А. В. Гасников и др. Под ред. А. В. Гасникова.{{---}} М.: МЦНМО, 2013 {{---}} C.330-339 {{---}} ISBN 978-5-4439-0040-7</ref>, изложенные А.М. Райгородским, основанные на доказательстве<ref>Karp R. The transitive closure of a random digraph//Random structures and algorithms. 1990. V. 1. P. 73–94.</ref> Р. Карпа. Такой формат позволит понять основные идеи и логику рассуждений. Строгий вариант приведен в <ref name="trueproof">Алон Н., Спенсер Дж. Вероятностный метод. М.: Бином. Лаборатория знаний, 2007.</ref>. | ||
+ | |||
+ | Здесь и далее: <tex>Binomial</tex> {{---}} биномиальное распределение. | ||
'''Случай <tex>c < 1</tex>'''. | '''Случай <tex>c < 1</tex>'''. | ||
− | Положим <tex>t_0=[\beta \ln n]</tex>, где <tex>\beta</tex> {{---}} константа, которая будет подобрана далее. Нам хочется доказать, что с большой вероятностью каждая из компонент случайного графа имеет размер <tex> | + | Положим <tex>t_0=[\beta \ln n]</tex>, где <tex>\beta</tex> {{---}} константа, которая будет подобрана далее. Нам хочется доказать, что с большой вероятностью каждая из компонент случайного графа имеет размер, меньший или равный <tex>t_0</tex>. |
Но размер компоненты {{---}} это момент вырождения процесса <tex>Y_t</tex> на случайном графе. Значит, интересующее нас утверждение можно записать в следующем виде: <tex>P_{n, p}(\exists v_1 : Y_{t_0} > 0) \rightarrow 0, n \rightarrow \infty</tex> | Но размер компоненты {{---}} это момент вырождения процесса <tex>Y_t</tex> на случайном графе. Значит, интересующее нас утверждение можно записать в следующем виде: <tex>P_{n, p}(\exists v_1 : Y_{t_0} > 0) \rightarrow 0, n \rightarrow \infty</tex> | ||
Поскольку <tex>P_{n, p}(\exists v_1 : Y_{t_0} > 0) \le nP_{n, p}(Y_{t_0} \ge 0)</tex>, достаточно найти такое <tex>\beta</tex>, при котором <tex>P_{n, p}(Y_{t_0} > 0) = o\left(\frac{1}{n}\right).</tex><br> | Поскольку <tex>P_{n, p}(\exists v_1 : Y_{t_0} > 0) \le nP_{n, p}(Y_{t_0} \ge 0)</tex>, достаточно найти такое <tex>\beta</tex>, при котором <tex>P_{n, p}(Y_{t_0} > 0) = o\left(\frac{1}{n}\right).</tex><br> | ||
<br> | <br> | ||
− | : <tex>P_{n, p}(Y_{t_0} > 0) = P_{n, p}(\xi_{t_o} | + | : <tex>P_{n, p}(Y_{t_0} > 0) = P_{n, p}(\xi_{t_o} \geq t_0) \thickapprox P_{n, p}(Binomial(n, 1 - (1 - p)^{t_0}) \geq t_0) \thickapprox</tex><br> |
: (с учетом асимптотики <tex>1 - (1 - p)^{t_0} \thicksim pt_0) </tex><br> | : (с учетом асимптотики <tex>1 - (1 - p)^{t_0} \thicksim pt_0) </tex><br> | ||
− | : <tex>\thickapprox P_{n, p}(Binomial(n, pt_0) | + | : <tex>\thickapprox P_{n, p}(Binomial(n, pt_0) \geq t_0) \thickapprox</tex><br> |
: (с учетом центральной предельной теоремы) <br> | : (с учетом центральной предельной теоремы) <br> | ||
: <tex> \thickapprox \int\limits_{\frac{t_0 - npt_0}{\sqrt{npt_0(1 - pt_0)}}}^\infty \frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}dx</tex>. | : <tex> \thickapprox \int\limits_{\frac{t_0 - npt_0}{\sqrt{npt_0(1 - pt_0)}}}^\infty \frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}dx</tex>. | ||
Строка 68: | Строка 68: | ||
Чтобы доказать, что есть гигантская компонента, необходимо, чтобы ветвящийся процесс на графе не вырождался даже | Чтобы доказать, что есть гигантская компонента, необходимо, чтобы ветвящийся процесс на графе не вырождался даже | ||
при <tex>t \thickapprox \gamma n</tex>, то есть:<br> | при <tex>t \thickapprox \gamma n</tex>, то есть:<br> | ||
− | <tex>P_{n, p}(Y_{ | + | <tex>P_{n, p}(Y_{t} \le 0)\rightarrow 0, t \thickapprox \gamma n, n \rightarrow \infty</tex> |
Так как по условию <tex>p = \dfrac{ c }{n}</tex>, то при <tex>t \thicksim \alpha n</tex> выполнено: | Так как по условию <tex>p = \dfrac{ c }{n}</tex>, то при <tex>t \thicksim \alpha n</tex> выполнено: | ||
<tex> 1 - (1 - p)^t \thicksim 1 - e^{-pt} \thicksim 1 - e^{-c\alpha}</tex> | <tex> 1 - (1 - p)^t \thicksim 1 - e^{-pt} \thicksim 1 - e^{-c\alpha}</tex> | ||
Применим центральную предельную теорему к | Применим центральную предельную теорему к | ||
− | <tex>P_{n, p}(Y_{ | + | <tex>P_{n, p}(Y_{t} \le 0)\thickapprox P_{n, p}(Binomial(n, 1 - e^{-c\alpha}) \le \alpha n).</tex> |
Пределы интегрирования в данном случае: от <tex>-\infty</tex> до <tex>\dfrac{\alpha n - n(1 - e^{-c\alpha})}{\sqrt{n(1 - e^{-c\alpha})e^{-c\alpha}}}</tex>. | Пределы интегрирования в данном случае: от <tex>-\infty</tex> до <tex>\dfrac{\alpha n - n(1 - e^{-c\alpha})}{\sqrt{n(1 - e^{-c\alpha})e^{-c\alpha}}}</tex>. | ||
Строка 83: | Строка 83: | ||
== Обход случайного графа == | == Обход случайного графа == | ||
− | Приведем ряд утверждений, которые будут использованы | + | Приведем ряд утверждений, которые будут использованы в дальнейшем. Их доказательство, а также более детальный рассказ можно найти здесь<ref name="chap4">Blum A. Random Graphs // CS 598 Topics in Algorithms (UIUC), 2015. URL: https://www.cs.cmu.edu/~avrim/598/chap4only.pdf</ref>. |
{{Лемма | {{Лемма | ||
|id=lemma1 | |id=lemma1 | ||
Строка 94: | Строка 94: | ||
|about=4 | |about=4 | ||
|statement=Пусть <tex>p = \frac{d}{n}, d > 1</tex>. <br> | |statement=Пусть <tex>p = \frac{d}{n}, d > 1</tex>. <br> | ||
− | + | <tex> | |
− | + | \begin{equation*} | |
+ | \begin{cases} | ||
+ | & \text{1) Найдутся такие $c_1, c_2$, что с $p \leq \frac{1}{n}$ $\exists cc: size(cc) \in (c_1\log n; c_2n)$;} \\ | ||
+ | & \text{2) Число вершин в компонентах размера $O(\ln n)$ а.п.н. $\leq cn, c < 1$.} \\ & \quad\:\text{Тогда с $p = 1 - o(1)$ существует компонента связности размера $\Omega (n)$;} \\ | ||
+ | \end{cases} | ||
+ | \end{equation*} | ||
+ | </tex> | ||
}} | }} | ||
=== Поиск в ширину === | === Поиск в ширину === | ||
− | Рассмотрим граф <tex>G(n, p)</tex>. Проанализируем его структуру по мере роста <tex>p</tex> | + | Рассмотрим граф <tex>G(n, p)</tex>. Проанализируем его структуру по мере роста <tex>p</tex>:<br> |
− | + | * <tex>p = 0:</tex> граф состоит только из изолированных вершин. С ростом <tex>p</tex> в нем появляются ребра, [[Отношение связности, компоненты связности|компоненты связности]] получающегося леса объединяются.<br> | |
− | + | * <tex>p = o\left(\frac{1}{n}\right):</tex> граф а.п.н. является лесом;<br> | |
+ | * <tex>p = \frac{d}{n}:</tex> появляются циклы. При <tex>d < 1</tex> размер каждой из компонент связности равен <tex>\Omega(\log n)</tex>. Число компонент связности, содержащих только один цикл {{---}} константа, зависящая от <tex>n</tex>. Таким образом, граф состоит из леса и компонент, содержащих единственный цикл без компонент размера <tex>\Omega(\log n)</tex>;<br> | ||
+ | * <tex>p = \frac{1}{n}:</tex> начинает образовываться гигантская компонента. Этот процесс происходит в два этапа:<br> | ||
+ | ** <tex>p = \frac{1}{n}: </tex> возникают компоненты из <tex>n^{\frac{2}{3}}</tex> вершин, а.п.н. являющиеся деревьями;<br> | ||
+ | ** <tex>p = \frac{d}{n}, d > 1: </tex> появляется гигантская компонента размером, пропорциональным количеству вершин во всем графе;<br> | ||
+ | * <tex>p \geq \frac{d}{n}:</tex> все неизолированные вершины оказываются в гигантской компоненте;<br> | ||
+ | * <tex>p \geq \frac{\ln n}{2n}:</tex> в графе остаются только изолированные плюс гигантская компонента;<br> | ||
+ | * <tex>p = \frac{\ln n}{n}:</tex> граф становится связным;<br> | ||
+ | * <tex>p = \frac{1}{2}:</tex> <tex>\forall \varepsilon > 0\;\exists C\subseteq G,\quad C</tex> {{---}} клика <tex>: |C| = (2 - \varepsilon )\log n</tex>;<br> | ||
<br> | <br> | ||
Чтобы вычислить размер компоненты связности, пройдемся с помощью [[Обход в ширину|поиска в ширину]] по ней, стартуя из произвольной вершины и переходя к очередной неисследованной вершине, только если ребро между ними существует (данный факт необходимо установить независимо от других ребер, с вероятностью <tex>p = \frac{d}{n}</tex>). Если ребро существует, пометим следующую вершину как "открытую". Алгоритм закончит свою работу (обойдет всю компоненту связности), когда множество неисследованных "открытых" вершин станет пустым. | Чтобы вычислить размер компоненты связности, пройдемся с помощью [[Обход в ширину|поиска в ширину]] по ней, стартуя из произвольной вершины и переходя к очередной неисследованной вершине, только если ребро между ними существует (данный факт необходимо установить независимо от других ребер, с вероятностью <tex>p = \frac{d}{n}</tex>). Если ребро существует, пометим следующую вершину как "открытую". Алгоритм закончит свою работу (обойдет всю компоненту связности), когда множество неисследованных "открытых" вершин станет пустым. | ||
Строка 107: | Строка 121: | ||
=== Проблема поиска в ширину === | === Проблема поиска в ширину === | ||
− | [[Файл:Bfs_problem_on_random_graph.png|300px|thumb| | + | [[Файл:Bfs_problem_on_random_graph.png|300px|thumb|left|Проблема поиска в ширину на случайном графе]] |
+ | На данном изображении представлены результаты работы поиска в ширину , начавшемся в вершине <tex>1</tex> на двух графах: в первом у всех ребер <tex>p = 1</tex>, во втором же факт существования ребра определялся по ходу работы алгоритма {{---}} ребра, отмеченные пунктиром, не существуют. Проблема возникает, когда алгоритм просто не доходит до каких-то ребер, не выясняя, существуют они или нет: находясь в вершине <tex>2</tex>, алгоритм не делал запрос о ребре <tex>(2, 3)</tex>, так как у этому моменту вершина <tex>3</tex> уже была исследована. Ребра, которые потенциально могли быть не изученными, помечены на рисунке точечным пунктиром. | ||
+ | <br> | ||
<br> | <br> | ||
− | + | <br> | |
+ | <br> | ||
+ | <br> | ||
+ | |||
=== Неоткрытые вершины === | === Неоткрытые вершины === | ||
Строка 122: | Строка 141: | ||
Рассмотрим натуральное случайное число <tex>y</tex>, обозначающее количество потомков у очередной исследованной вершины. Каждый раз это значение выбирается случайно и независимо.<br> | Рассмотрим натуральное случайное число <tex>y</tex>, обозначающее количество потомков у очередной исследованной вершины. Каждый раз это значение выбирается случайно и независимо.<br> | ||
Процесс построения дерева заканчивается, образуя конечное дерево, когда у каждой вершины построены все ее потомки. Данный процесс может продолжаться бесконечно. <br> | Процесс построения дерева заканчивается, образуя конечное дерево, когда у каждой вершины построены все ее потомки. Данный процесс может продолжаться бесконечно. <br> | ||
− | Пусть <tex>y \thicksim Binomial(s = n−c_1\log n, \frac{d}{n})</tex>. | + | Пусть: |
+ | * <tex>y \thicksim Binomial(s = n−c_1\log n, \frac{d}{n})</tex>.<br> | ||
+ | * <tex>p′</tex> {{---}} вероятность того, что <tex>size(cc(v)) = O(\log n)</tex> в модифицированном поиске в ширину.<br> | ||
+ | * <tex>q</tex> {{---}} вероятность окончания процесса.<br> | ||
+ | Тогда <tex>q \geq p′</tex>, поскольку поиск в ширину, заканчивающийся с <tex> \le c_1\log n</tex> вершинами, приводит к окончанию построения дерева.<br> | ||
<br> | <br> | ||
− | + | <tex>p_i = \binom{s}{i}(\frac{d}{n})^i(1 − \frac{d}{n})^{s − i}</tex> {{---}} вероятность, что <tex>y</tex> производит <tex>i</tex> потомков, а значит:<br> | |
<tex>\sum_{i = 0..s}p_i = 1</tex> и <tex>\sum_{i = 0..s}ip_i = E(y) = \frac{ds}{n} > 1</tex>.<br> | <tex>\sum_{i = 0..s}p_i = 1</tex> и <tex>\sum_{i = 0..s}ip_i = E(y) = \frac{ds}{n} > 1</tex>.<br> | ||
<br> | <br> | ||
Глубина дерева не меньше количества вершин, поэтому вероятность того, что процесс закончится с деревом глубины <tex>t</tex>, вычисляется по следующей формуле:<br> | Глубина дерева не меньше количества вершин, поэтому вероятность того, что процесс закончится с деревом глубины <tex>t</tex>, вычисляется по следующей формуле:<br> | ||
<tex>a_t = p_0 + \sum_{i = 1..s}p_ia^i_{t - 1}</tex><br> | <tex>a_t = p_0 + \sum_{i = 1..s}p_ia^i_{t - 1}</tex><br> | ||
+ | |||
=== Вычисление вероятности исчезновения === | === Вычисление вероятности исчезновения === | ||
{{Лемма | {{Лемма | ||
Строка 138: | Строка 162: | ||
|about=5 | |about=5 | ||
|id=th5 | |id=th5 | ||
− | |statement=Рассмотрим дерево, сгенерированное ветвящимся процессом. Пусть <tex>f(x)</tex> {{---}} производящая функция числа потомков каждой вершины | + | |statement=Рассмотрим дерево, сгенерированное ветвящимся процессом. Пусть <tex>f(x)</tex> {{---}} производящая функция числа потомков каждой вершины, а <tex>k</tex> {{---}} ожидаемое количество потомков в каждой вершине. Тогда верно следующее:<br> |
− | + | <tex> | |
− | + | \begin{equation*} | |
+ | \begin{cases} | ||
+ | k \le 1 &\text{—$\;$ вероятность исчезновения равна 1, если вероятность} \\ & \;\;\;\;\;\,\text{появления ровно одного ребенка равна $1$;}\\ | ||
+ | k > 1 &\text{—$\;$ вероятность исчезновения является }\\&\;\;\;\;\;\,\text{единственным решением $f(x) = x,\; x \in [0, 1)$;} | ||
+ | \end{cases} | ||
+ | \end{equation*} | ||
+ | </tex>. | ||
}} | }} | ||
− | |||
В данной статье нами рассматривается простой случай ветвящегося процесса, в котором распределение количества потомков одинаково для каждой вершины. <br> | В данной статье нами рассматривается простой случай ветвящегося процесса, в котором распределение количества потомков одинаково для каждой вершины. <br> | ||
Обозначим: | Обозначим: | ||
Строка 154: | Строка 183: | ||
Так как <tex>q</tex> {{---}} вероятность конечности алгоритма, то, если у корневой вершины <tex>i</tex> потомков, построение каждого из поддеревьев должно завершиться, и это произойдет с вероятностью <tex>q^i</tex>: <br> | Так как <tex>q</tex> {{---}} вероятность конечности алгоритма, то, если у корневой вершины <tex>i</tex> потомков, построение каждого из поддеревьев должно завершиться, и это произойдет с вероятностью <tex>q^i</tex>: <br> | ||
<tex>q = \sum_{i = 0..\infty}p_iq^i</tex><br> | <tex>q = \sum_{i = 0..\infty}p_iq^i</tex><br> | ||
− | + | Благодаря чему, <tex>q</tex> является корнем уравнения:<br> | |
<tex>x = \sum_{i = 0..\infty}p_ix^i \Leftrightarrow f(x) = x</tex><br> | <tex>x = \sum_{i = 0..\infty}p_ix^i \Leftrightarrow f(x) = x</tex><br> | ||
+ | [[Файл:Extinction_probability_equation_root_random_graph.png|thumb|300px|right|Решение уравнения f(x)=x]] | ||
<br> | <br> | ||
Рассмотрим решение данного уравнения на <tex>[0; 1]</tex>. <br> | Рассмотрим решение данного уравнения на <tex>[0; 1]</tex>. <br> | ||
Строка 161: | Строка 191: | ||
Введем обозначения: <tex>k</tex> {{---}} количество потомков вершины, а <tex>m = f'(1)</tex>, тогда <tex>m = f'(1) = \sum_{i = 1..\infty}ip_i = E(k)</tex>.<br> | Введем обозначения: <tex>k</tex> {{---}} количество потомков вершины, а <tex>m = f'(1)</tex>, тогда <tex>m = f'(1) = \sum_{i = 1..\infty}ip_i = E(k)</tex>.<br> | ||
Кажется, что при <tex>m > 1</tex> дерево будет расти вечно, так как каждая вершина в момент времени <tex>j</tex> должна иметь потомков, однако при <tex>p_0 > 0</tex> с положительной вероятностью у корня может вообще не быть потомков. В исходном <tex>G(n,\frac{d}{n})</tex> <tex>m</tex> играет роль <tex>d</tex>, ввиду того, что <tex>d = E(k)</tex>.<br> | Кажется, что при <tex>m > 1</tex> дерево будет расти вечно, так как каждая вершина в момент времени <tex>j</tex> должна иметь потомков, однако при <tex>p_0 > 0</tex> с положительной вероятностью у корня может вообще не быть потомков. В исходном <tex>G(n,\frac{d}{n})</tex> <tex>m</tex> играет роль <tex>d</tex>, ввиду того, что <tex>d = E(k)</tex>.<br> | ||
− | |||
Пользуясь [[#lemma2|леммой 2]] и [[#th5|теоремой 5]], можно доказать, что:<br> | Пользуясь [[#lemma2|леммой 2]] и [[#th5|теоремой 5]], можно доказать, что:<br> | ||
− | # <tex>m < 1 | + | # <tex>m < 1 \vee m = 1 \wedge p_1 < 1</tex> {{---}} вероятность исчезновения <tex> = 1</tex>;<br> |
− | # <tex>m = 1 | + | # <tex>m = 1 \wedge p_1 = 1</tex> {{---}} вероятность исчезновения <tex> = 0</tex>;<br> |
# <tex>m > 1</tex> {{---}} вероятность исчезновения <tex> < 1</tex>, но, если <tex>p_0 = 0</tex>, процесс не завершится, так как у каждой вершины найдется по крайней мере один потомок;<br> | # <tex>m > 1</tex> {{---}} вероятность исчезновения <tex> < 1</tex>, но, если <tex>p_0 = 0</tex>, процесс не завершится, так как у каждой вершины найдется по крайней мере один потомок;<br> | ||
Подробное описание доказательства данного факта, а также самих утверждений можно найти здесь<ref name="chap4" />. | Подробное описание доказательства данного факта, а также самих утверждений можно найти здесь<ref name="chap4" />. | ||
Строка 170: | Строка 199: | ||
== Вывод == | == Вывод == | ||
Используя результаты, полученные в предыдущей части, сделаем вывод о вероятности окончания работы поиска в ширину на случайном графе <tex>G(n, \frac{d}{n})</tex>. Рассчитав <tex>p_0</tex> и <tex>p_1</tex>, можно сделать следующие выводы:<br> | Используя результаты, полученные в предыдущей части, сделаем вывод о вероятности окончания работы поиска в ширину на случайном графе <tex>G(n, \frac{d}{n})</tex>. Рассчитав <tex>p_0</tex> и <tex>p_1</tex>, можно сделать следующие выводы:<br> | ||
− | + | <tex> | |
− | + | \begin{equation*} | |
− | + | \begin{cases} | |
+ | d < 1\;\vee\; d = 1\;\wedge\; p_1 < 1&\text{—$\;$ процесс завершится с вероятностью один;}\\ | ||
+ | d = 1\;\wedge\; p_1 = 1&\text{—$\;$ процесс будет протекать бесконечно;}\\ | ||
+ | d > 1&\text{—$\;$ вероятность исчезновения меньше единицы, но, если $p_0 = 0$, процесс не завершится, так как у каждой вершины}\\&\;\;\;\;\;\,\text{найдется по крайней мере один потомок;}\\ | ||
+ | \end{cases} | ||
+ | \end{equation*} | ||
+ | </tex> | ||
== См. также == | == См. также == | ||
Строка 183: | Строка 218: | ||
[[Категория: Дискретная математика]] | [[Категория: Дискретная математика]] | ||
+ | [[Категория: Дискретная математика и алгоритмы]] | ||
+ | [[Категория: Обходы графов]] | ||
+ | [[Категория: Связность в графах]] |
Текущая версия на 19:24, 4 сентября 2022
Содержание
Теорема о гигантской компоненте
Перед формулировкой основной теоремы данного раздела дадим определение некоторых понятий, которые будут использованы в дальнейшем, а также приведем необходимые далее утверждения.
Определение: |
Простейший ветвящийся процесс. Пусть [1] с одним и тем же математическим ожиданием . Положим . | — независимые пуассоновские величины
Представлять себе описанный только что процесс можно так: в начальный момент времени есть одна активная частица. Затем она создает
Говоря в терминах данного выше определения, и — количество активных и порожденных частиц в момент времени , соответственно.
Теорема (1): |
Пусть . Тогда с вероятностью 1 процесс вырождается, т.е. . |
Теорема (2): |
Пусть . Пусть — единственное решение уравнения . Тогда процесс вырождается с вероятностью , т.е. . |
Определение: |
Ветвящийся процесс на случайном графе. Пусть математическим ожиданием . Положим . | — независимые пуассоновские величины с одним и тем же
В произвольном графе
зафиксируем . Пометим ее как активную, а все остальные вершины — нейтральными. Выберем среди нейтральных вершин всех соседей вершины . После этого пометим вершину как неактивную , а смежных с ней — как активных, а все остальные вершины — нейтральными.Снова зафиксируем какую-нибудь активную вершину
, и повторим процесс, не меняя статус остальных уже активных вершин.Продолжая этот ветвящийся процесс, мы в конце концов получим лишь неактивные (образующие компоненту, содержащую
Данный процесс очень похож на поиск в ширину, этим свойством мы воспользуемся позднее.
Обозначим число активных вершин в момент времени
через , число нейтральных вершин — через , а число соседей вершины, которую собираемся пометить как неактивную, — через . Тогда . Все введенные величины зависят от графа и от последовательности выбираемых вершин .Если
посчитать случайным, то при любом выборе вершин получатся случайные величины на пространстве .Теорема о гигантской компоненте
Теорема (о гигантской компоненте): |
Рассмотрим модель . Пусть .
|
Доказательство: |
Приведем здесь идеи[2], изложенные А.М. Райгородским, основанные на доказательстве[3] Р. Карпа. Такой формат позволит понять основные идеи и логику рассуждений. Строгий вариант приведен в [4]. Здесь и далее: — биномиальное распределение.Случай .Положим
Поскольку Случай .В данном случае ветвящийся процесс на графе нужно «запускать» не один раз, а многократно. Только так удается доказать, что а.п.н. хотя бы в одном запуске возникнет гигантская компонента. Подробности можно найти в [4], мы же лишь поясним, откуда в текущей ситуации появляется из формулировки теоремы 2 и почему она совпадает с одноименной константой из той же теоремы. Чтобы доказать, что есть гигантская компонента, необходимо, чтобы ветвящийся процесс на графе не вырождался даже
при Так как по условию , то при выполнено: Применим центральную предельную теорему к Пределы интегрирования в данном случае: от до .Если , то мы получим искомое стремление вероятности к нулю.Если Таким образом, критическое значение , то вероятность, напротив, будет стремиться к единице. , вплоть до которого есть именно стремление к нулю, — это решение уравнения или, что равносильно, . А это и есть уравнение из теоремы 2, если заменить на . |
Обход случайного графа
Приведем ряд утверждений, которые будут использованы в дальнейшем. Их доказательство, а также более детальный рассказ можно найти здесь[5].
Лемма (1): |
Пусть . Тогда вероятность , что ( — компонента связности, содержащая ): — константа. |
Доказательство: |
Главная идея доказательства, которую мы будем использовать в дальнейшем — изменение алгоритма поиска в ширину таким образом, чтобы только что открытые вершины были выбраны из множества фиксированного размера. Такая модификация превращает поиск в ширину в ветвящийся процесс. |
Теорема (4): |
Пусть . |
Поиск в ширину
Рассмотрим граф
- компоненты связности получающегося леса объединяются.
-
-
-
начинает образовываться гигантская компонента. Этот процесс происходит в два этапа: -
-
-
-
-
Чтобы вычислить размер компоненты связности, пройдемся с помощью поиска в ширину по ней, стартуя из произвольной вершины и переходя к очередной неисследованной вершине, только если ребро между ними существует (данный факт необходимо установить независимо от других ребер, с вероятностью ). Если ребро существует, пометим следующую вершину как "открытую". Алгоритм закончит свою работу (обойдет всю компоненту связности), когда множество неисследованных "открытых" вершин станет пустым.
Проблема поиска в ширину
На данном изображении представлены результаты работы поиска в ширину , начавшемся в вершине
Неоткрытые вершины
Будем считать шагом алгоритма поиска открытие новой вершины. После первых
Вероятность исчезновения
От поиска в ширину к ветвящимся процессам
Пользуясь идеями, изложенными в доказательстве леммы 1, перейдем от модифицированного поиска в ширину к ветвящемуся процессу. Этот процесс используется для генерации случайных деревьев, возможно, бесконечного размера.
Определение: |
Вероятность исчезновения (extinction probability) — вероятность, того, что дерево ветвящегося процесса будет конечным (процесс завершится через конечное время). |
Рассмотрим натуральное случайное число
Процесс построения дерева заканчивается, образуя конечное дерево, когда у каждой вершины построены все ее потомки. Данный процесс может продолжаться бесконечно.
Пусть:
Тогда
— вероятность, что производит потомков, а значит:
и .
Глубина дерева не меньше количества вершин, поэтому вероятность того, что процесс закончится с деревом глубины , вычисляется по следующей формуле:
Вычисление вероятности исчезновения
Лемма (2): |
Пусть . Пусть — единственный корень на . Тогда для . |
Теорема (5): |
Рассмотрим дерево, сгенерированное ветвящимся процессом. Пусть — производящая функция числа потомков каждой вершины, а — ожидаемое количество потомков в каждой вершине. Тогда верно следующее:. |
В данной статье нами рассматривается простой случай ветвящегося процесса, в котором распределение количества потомков одинаково для каждой вершины.
Обозначим:
Для того, чтобы вычислить вероятность исчезновения, воспользуемся производящей функцией:
где — вероятность того, что
Так как — вероятность конечности алгоритма, то, если у корневой вершины потомков, построение каждого из поддеревьев должно завершиться, и это произойдет с вероятностью :
Благодаря чему, является корнем уравнения:
Рассмотрим решение данного уравнения на .
— всегда решение данного уравнения, так как .
Введем обозначения: — количество потомков вершины, а , тогда .
Кажется, что при дерево будет расти вечно, так как каждая вершина в момент времени должна иметь потомков, однако при с положительной вероятностью у корня может вообще не быть потомков. В исходном играет роль , ввиду того, что .
Пользуясь леммой 2 и теоремой 5, можно доказать, что:
Подробное описание доказательства данного факта, а также самих утверждений можно найти здесь[5].
Вывод
Используя результаты, полученные в предыдущей части, сделаем вывод о вероятности окончания работы поиска в ширину на случайном графе
См. также
Литература
- ↑ https://ru.wikipedia.org/wiki/Распределение_Пуассона
- ↑ Введение в математическое моделирование транспортных потоков: Учебное пособие/Издание 2-е, испр. и доп. А. В. Гасников и др. Под ред. А. В. Гасникова.— М.: МЦНМО, 2013 — C.330-339 — ISBN 978-5-4439-0040-7
- ↑ Karp R. The transitive closure of a random digraph//Random structures and algorithms. 1990. V. 1. P. 73–94.
- ↑ 4,0 4,1 Алон Н., Спенсер Дж. Вероятностный метод. М.: Бином. Лаборатория знаний, 2007.
- ↑ 5,0 5,1 Blum A. Random Graphs // CS 598 Topics in Algorithms (UIUC), 2015. URL: https://www.cs.cmu.edu/~avrim/598/chap4only.pdf