Теорема Фари — различия между версиями
Valery (обсуждение | вклад) |
м (rollbackEdits.php mass rollback) |
||
(не показано 18 промежуточных версий 3 участников) | |||
Строка 3: | Строка 3: | ||
{{Определение | {{Определение | ||
|id=def1 | |id=def1 | ||
− | |definition='''Триангуляция графа''' {{---}} представление планарного графа на плоскости в таком виде, что каждая его грань ограничена тремя ребрами (является треугольником). | + | |definition='''Триангуляция графа''' (англ. ''triangulation'') {{---}} представление [[Укладка графа на плоскости#defplanar | планарного графа]] на плоскости в таком виде, что каждая его грань ограничена тремя ребрами (является треугольником). |
}} | }} | ||
{{Определение | {{Определение | ||
|id=def2 | |id=def2 | ||
− | |definition='''Разделяющий треугольник''' {{---}} цикл длины <tex>3</tex> в графе <tex>G</tex>, внутри и снаружи которого находятся вершины графа. | + | |definition='''Разделяющий треугольник''' (англ. ''separating triangle'') {{---}} цикл длины <tex>3</tex> в графе <tex>G</tex>, внутри и снаружи которого находятся вершины графа. |
}} | }} | ||
Строка 21: | Строка 21: | ||
|proof= | |proof= | ||
− | Докажем теорему для плоской триангуляции графа <tex>G</tex>. Ее можно достичь, добавив в <tex>G</tex> необходимое количество ребер. Применим индукцию по числу вершин <tex>V</tex>. | + | Докажем теорему для плоской триангуляции графа <tex>G</tex>. Ее можно достичь, добавив в <tex>G</tex> необходимое количество ребер. Применим индукцию по числу вершин <tex>|V|</tex>. |
− | База | + | База индукции, когда <tex>|V|=3</tex>, выполняется тривиальным образом. |
− | + | Предположим, что графы с любым числом вершин меньше <tex>|V| \geqslant 4</tex>, мы можем нарисовать требуемым образом. | |
− | + | Рассмотрим ребро <tex>vw</tex>, [[Матрица инцидентности графа#definc | инцидентное]] внутренней вершине глубочайшего разделяющего треугольника, то есть такого, который не содержит внутри себя других разделяющих треугольников. Если в графе нет разделяющих треугольников, то возьмём любое ребро. Тогда <tex>vw</tex> {{---}} граница двух граней <tex>vwp</tex> и <tex>vwq</tex>. | |
− | |||
− | Предположим, что графы с числом вершин | ||
− | Рассмотрим ребро <tex>vw</tex>, инцидентное внутренней вершине глубочайшего разделяющего треугольника, то есть такого, который не содержит внутри себя других разделяющих треугольников. Если в графе нет разделяющих треугольников, то возьмём любое ребро. Тогда <tex>vw</tex> {{---}} граница двух граней <tex>vwp</tex> и <tex>vwq</tex>. | ||
[[File:Fary2.png|250px|Рисунок 2]] | [[File:Fary2.png|250px|Рисунок 2]] | ||
− | + | Так как мы взяли вершины внутри самого глубого разделяющего треугольника, то у вершин <tex>v</tex> и <tex>w</tex> может быть только два общих соседа <tex>p</tex> и <tex>q</tex>. | |
− | Пусть <tex>(vp, vw, vq, vx_1, vx_2 ... vx_k)</tex> и <tex>(wq, wv, wp, wy_1, wy_2 ... wy_m)</tex> | + | Пусть <tex>(vp, vw, vq, vx_1, vx_2 ... vx_k)</tex> и <tex>(wq, wv, wp, wy_1, wy_2 ... wy_m)</tex> {{---}} обход по часовой стрелке ребер, исходящих соостветсвенно из <tex>v</tex> и <tex>w</tex>. |
Пусть <tex>G'</tex> {{---}} граф, полученный из <tex>G</tex> стягиванием ребра <tex>vw</tex> в вершину <tex>s</tex>. Заменим пары параллельных ребер <tex>vq</tex> и <tex>wq</tex> на <tex>sq</tex> и <tex>vp, wp</tex> на <tex>sp</tex>. Получим вершину <tex>s</tex>, из которой исходят ребра <tex>(sp, sy_1, sy_2 ... sy_m, sq, sx_1, sx_2 ... sx_k)</tex> {{---}} по часовой стрелке. | Пусть <tex>G'</tex> {{---}} граф, полученный из <tex>G</tex> стягиванием ребра <tex>vw</tex> в вершину <tex>s</tex>. Заменим пары параллельных ребер <tex>vq</tex> и <tex>wq</tex> на <tex>sq</tex> и <tex>vp, wp</tex> на <tex>sp</tex>. Получим вершину <tex>s</tex>, из которой исходят ребра <tex>(sp, sy_1, sy_2 ... sy_m, sq, sx_1, sx_2 ... sx_k)</tex> {{---}} по часовой стрелке. | ||
[[File:Fary3.png|250px|Рисунок 3]] | [[File:Fary3.png|250px|Рисунок 3]] | ||
− | Мы получили граф <tex>G'</tex>, с меньшим числом вершин | + | Мы получили граф <tex>G'</tex>, с меньшим числом вершин равным <tex>V - 1</tex>, то есть его можно уложить на плоскости требуемым образом: все ребра прямые (и сохранен обход по часовой стрелке ребер, инцидентных <tex>s</tex>). |
Для любого <tex>\varepsilon > 0</tex> обозначим <tex>C_{\varepsilon}(s)</tex> {{---}} круг радиуса <tex>\varepsilon</tex>, с вершиной <tex>s</tex> в центре. | Для любого <tex>\varepsilon > 0</tex> обозначим <tex>C_{\varepsilon}(s)</tex> {{---}} круг радиуса <tex>\varepsilon</tex>, с вершиной <tex>s</tex> в центре. | ||
− | Для каждого соседа <tex>t</tex> вершины <tex>s</tex> в графе <tex>G'</tex> обозначим <tex>R_{\varepsilon}(t)</tex> | + | Для каждого соседа <tex>t</tex> вершины <tex>s</tex> в графе <tex>G'</tex> обозначим <tex>R_{\varepsilon}(t)</tex> объединение всех отрезков, проведённых из <tex>t</tex> в <tex>C_{\varepsilon}(s)</tex>. |
Возьмем <tex>\varepsilon</tex> равным минимуму из всех расстояний от вершины <tex>s</tex> до инцидентных ей вершин и до отрезков, проходящих мимо нее. | Возьмем <tex>\varepsilon</tex> равным минимуму из всех расстояний от вершины <tex>s</tex> до инцидентных ей вершин и до отрезков, проходящих мимо нее. | ||
Строка 46: | Строка 43: | ||
[[File:Fary5.png|250px|Рисунок 4]] | [[File:Fary5.png|250px|Рисунок 4]] | ||
− | Тогда получим, что все соседи <tex>t</tex> вершины <tex>s</tex> находятся снаружи <tex>C_{\varepsilon}(s)</tex> и только ребра <tex>G'</tex>, | + | Тогда получим, что все соседи <tex>t</tex> вершины <tex>s</tex> находятся снаружи <tex>C_{\varepsilon}(s)</tex> и только ребра <tex>G'</tex>, инцидентные <tex>s</tex>, могут пересекать <tex>R_{\varepsilon}(t)</tex>. |
[[File:Fary4.png|250px|Рисунок 5]] | [[File:Fary4.png|250px|Рисунок 5]] | ||
− | Проведем линию <tex>L</tex> через вершину <tex>s</tex> так, чтобы вершина <tex>p</tex> лежала с одной ее стороны, а <tex>q</tex> {{---}} с другой (иначе | + | Проведем линию <tex>L</tex> через вершину <tex>s</tex> так, чтобы вершина <tex>p</tex> лежала с одной ее стороны, а <tex>q</tex> {{---}} с другой (такая линия существует, иначе рёбра <tex>sp</tex> и <tex>sq</tex> накладывались бы друг на друга) и никакое из ребер <tex>\{sx_i : 1 < i < k\}</tex> и <tex>\{sy_i : 1 < i < m\}</tex> не лежало на <tex>L</tex>. |
Ребра <tex>sq</tex> и <tex>sq</tex> разбивают <tex>C_{\varepsilon}(s)</tex> на две дуги: первая пересекает ребра <tex>\{sx_i : 1 < i < k\}</tex>, а вторая {{---}} ребра <tex>\{sy_i : 1 < i < m\}</tex>. | Ребра <tex>sq</tex> и <tex>sq</tex> разбивают <tex>C_{\varepsilon}(s)</tex> на две дуги: первая пересекает ребра <tex>\{sx_i : 1 < i < k\}</tex>, а вторая {{---}} ребра <tex>\{sy_i : 1 < i < m\}</tex>. | ||
<tex>L</tex> пересекает <tex>C_{\varepsilon}(s)</tex> в двух точках. Расположим <tex>v</tex> и <tex>w</tex> в этих точках: <tex>v</tex> на дуге, пересекающей <tex>\{sx_i : 1 < i < k\}</tex>, а <tex>w</tex> с другой стороны. | <tex>L</tex> пересекает <tex>C_{\varepsilon}(s)</tex> в двух точках. Расположим <tex>v</tex> и <tex>w</tex> в этих точках: <tex>v</tex> на дуге, пересекающей <tex>\{sx_i : 1 < i < k\}</tex>, а <tex>w</tex> с другой стороны. | ||
Строка 62: | Строка 59: | ||
Получим, что <tex>vw</tex> лежит на <tex>L</tex>. Так как <tex>p</tex> и <tex>q</tex> лежат с разных сторон <tex>L</tex>, ребра, инцидентные <tex>v</tex> и <tex>w</tex>, не пересекаются. | Получим, что <tex>vw</tex> лежит на <tex>L</tex>. Так как <tex>p</tex> и <tex>q</tex> лежат с разных сторон <tex>L</tex>, ребра, инцидентные <tex>v</tex> и <tex>w</tex>, не пересекаются. | ||
По выбору <tex>\varepsilon</tex>, ребра, инцидентные <tex>v</tex> и <tex>w</tex>, не пересекают и другие ребра <tex>G</tex>. Таким образом желаемая укладка графа <tex>G</tex> достигнута. | По выбору <tex>\varepsilon</tex>, ребра, инцидентные <tex>v</tex> и <tex>w</tex>, не пересекают и другие ребра <tex>G</tex>. Таким образом желаемая укладка графа <tex>G</tex> достигнута. | ||
− | Теперь мы можем удалить | + | Теперь мы можем удалить добавленные нами ребра, оставив в графе лишь исходные (уже прямые) ребра. |
}} | }} | ||
− | == | + | ==См. также== |
+ | * [[Теорема Понтрягина-Куратовского]] | ||
+ | * [[Укладка графа на плоскости]] | ||
+ | |||
+ | ==Источники информации== | ||
* [[wikipedia:Fáry's_theorem | Wikipedia {{---}} Fáry's theorem ]] | * [[wikipedia:Fáry's_theorem | Wikipedia {{---}} Fáry's theorem ]] | ||
− | |||
* [http://arxiv.org/abs/cs/0505047 Доказательство теоремы Фари] | * [http://arxiv.org/abs/cs/0505047 Доказательство теоремы Фари] | ||
+ | |||
+ | [[Категория: Алгоритмы и структуры данных]] | ||
+ | [[Категория: Укладки графов ]] |
Текущая версия на 19:11, 4 сентября 2022
Теорема была независимо доказана Клаусом Вагнером (Klaus Wagner) в 1936ом году и Иштваном Фари (István Fáry) в 1948ом году. Иногда ее называют теоремой Фари-Вагнера.
Определение: |
Триангуляция графа (англ. triangulation) — представление планарного графа на плоскости в таком виде, что каждая его грань ограничена тремя ребрами (является треугольником). |
Определение: |
Разделяющий треугольник (англ. separating triangle) — цикл длины | в графе , внутри и снаружи которого находятся вершины графа.
Разделяющий треугольник изображён ниже. Относительно него существует три вида вершин: внешние, внутренние и лежащие на самом треугольнике.
Теорема (Фари): |
Любой планарный граф имеет плоское представление, в котором все ребра представлены в виде отрезков прямых. |
Доказательство: |
Докажем теорему для плоской триангуляции графа . Ее можно достичь, добавив в необходимое количество ребер. Применим индукцию по числу вершин .База индукции, когда инцидентное внутренней вершине глубочайшего разделяющего треугольника, то есть такого, который не содержит внутри себя других разделяющих треугольников. Если в графе нет разделяющих треугольников, то возьмём любое ребро. Тогда — граница двух граней и . , выполняется тривиальным образом. Предположим, что графы с любым числом вершин меньше , мы можем нарисовать требуемым образом. Рассмотрим ребро ,Так как мы взяли вершины внутри самого глубого разделяющего треугольника, то у вершин и может быть только два общих соседа и . Пусть и — обход по часовой стрелке ребер, исходящих соостветсвенно из и . Пусть — граф, полученный из стягиванием ребра в вершину . Заменим пары параллельных ребер и на и на . Получим вершину , из которой исходят ребра — по часовой стрелке.Мы получили граф , с меньшим числом вершин равным , то есть его можно уложить на плоскости требуемым образом: все ребра прямые (и сохранен обход по часовой стрелке ребер, инцидентных ). Для любого обозначим — круг радиуса , с вершиной в центре. Для каждого соседа вершины в графе обозначим объединение всех отрезков, проведённых из в .Возьмем равным минимуму из всех расстояний от вершины до инцидентных ей вершин и до отрезков, проходящих мимо нее.Тогда получим, что все соседи вершины находятся снаружи и только ребра , инцидентные , могут пересекать .Проведем линию через вершину так, чтобы вершина лежала с одной ее стороны, а — с другой (такая линия существует, иначе рёбра и накладывались бы друг на друга) и никакое из ребер и не лежало на . Ребра и разбивают на две дуги: первая пересекает ребра , а вторая — ребра . пересекает в двух точках. Расположим и в этих точках: на дуге, пересекающей , а с другой стороны.Удалим и инцидентные ей ребра, нарисуем прямые ребра , инцидентные и .Получим, что Теперь мы можем удалить добавленные нами ребра, оставив в графе лишь исходные (уже прямые) ребра. лежит на . Так как и лежат с разных сторон , ребра, инцидентные и , не пересекаются. По выбору , ребра, инцидентные и , не пересекают и другие ребра . Таким образом желаемая укладка графа достигнута. |