Докажите и поясните теорему: в любом неориентированном графе сумма степеней всех вершин равна 2|E|; затем обсудите практические применения теории графов в информатике (маршрутизация, планирование задач, анализ зависимостей, сведение NP‑задач) и приведите пример редукции из задачи 3‑SAT к проблеме клики
Теорема. В любом неориентированном графе G=(V,E)G=(V,E)G=(V,E) выполняется ∑v∈Vdeg(v)=2∣E∣.
\sum_{v\in V}\deg(v)=2|E|. v∈V∑deg(v)=2∣E∣. Доказательство (двойной счёт). Рассмотрим все упорядоченные пары (v,e)(v,e)(v,e), где vvv — вершина, а e∈Ee\in Ee∈E — ребро, инцидентное vvv. С одной стороны, число таких пар равно сумме степеней вершин, т.е. #{(v,e)}=∑v∈Vdeg(v).
\#\{(v,e)\}=\sum_{v\in V}\deg(v). #{(v,e)}=v∈V∑deg(v).
С другой стороны, каждое ребро без петель инцидентно ровно двум вершинам и даёт 2 таких пары; петля (если разрешена) инцидентна одной вершине, но считается в степени дважды и тоже даёт 2 пары. Следовательно число пар равно 2∣E∣2|E|2∣E∣. Сравнивая, получаем требуемое равенство: ∑v∈Vdeg(v)=2∣E∣.
\sum_{v\in V}\deg(v)=2|E|. v∈V∑deg(v)=2∣E∣.
□ Практические применения теории графов в информатике (кратко): - Маршрутизация и сети: алгоритмы кратчайшего пути (Dijkstra, Bellman–Ford), остовные деревья (Kruskal, Prim), поток в сети (Ford–Fulkerson, Edmonds–Karp) для маршрутов, балансировки нагрузки, планирования каналов связи. - Планирование задач и расписаний: моделирование зависимостей как ориентированный ациклический граф (DAG), топологическая сортировка для порядка выполнения, критический путь для оценки времени выполнения. - Анализ зависимостей и управление пакетами: графы зависимостей, обнаружение циклов (неразрешимые зависимости), сильные компоненты для модульного анализа. - Сведение и теория вычислимости / сложности: сведение задач NP (например, 3‑SAT, Clique, Vertex Cover, Independent Set) позволяет переносить алгоритмические и сложностные результаты между задачами; структуры графов используются для моделирования физических и логических ограничений. Пример редукции из 3‑SAT в Clique. Пусть дана формула в КНФ с m \,m\,m клаузами C1,…,CmC_1,\dots,C_mC1,…,Cm, каждая клаузa содержит не более трёх литералов. Построим граф G=(V,E)G=(V,E)G=(V,E) и число kkk так: - Для каждого вхождения литерала в клаузу создаём вершину. Обозначим вершины вида vi,av_{i,a}vi,a — aaa-й литерал в клаузе CiC_iCi. Тогда V={vi,a∣1≤i≤m, a литерал в Ci}.
V=\{v_{i,a}\mid 1\le i\le m,\ a\ \text{литерал в }C_i\}. V={vi,a∣1≤i≤m,aлитералвCi}.
- Проведём ребро между двумя вершинами vi,av_{i,a}vi,a и vj,bv_{j,b}vj,b тогда и только тогда, когда i≠ji\ne ji=j и литералы, соответствующие этим вершинам, не являются противоречивыми (т.е. не одно есть xxx, а другое ¬x\neg x¬x). Заметим, что вершины одной и той же клаузулы не соединяем. - Положим целевой размер клики k=mk=mk=m. Утверждение: формула выполнима тогда и только тогда, когда в GGG есть клика размера m\,mm. Доказательство корректности редукции: - Если формула выполнима, возьмём некоторую удовлетворяющую переменную присвоение. В каждой клаузе CiC_iCi выберем один истинный литерал; соответствующие вершины vi,∗v_{i,*}vi,∗ принадлежат разным клаузам и не конфликтуют по значениям, значит между любыми двумя такими вершинами проведено ребро, т.е. они образуют клику из mmm вершин. - Обратно, если в GGG есть клика KKK размера mmm, то так как внутри каждой клаузулы вершины не соединены, вершины клики должны принадлежать разным клаузам — по одной из каждой клаузулы. По построению клики никакие две выбранные вершины не соответствуют противоположным литералам, значит можно присвоить выбранным литералам значение «истина» (любые остальные переменные можно присвоить произвольно), и это даёт удовлетворяющую оценку для всех mmm клауз. Сложность редукции: построение GGG даётся за полиномиальное время по размеру формулы (число вершин не превосходит суммарного числа литералов, рёбер — квадратично в этом числе), поэтому это корректное полиномиальное сведение. Так редукция показывает, что Clique NP‑трудна, поскольку 3‑SAT — NP‑полная; в комбинации с тем, что Clique лежит в NP, это доказывает NP‑полноту Clique. (Конец.)
∑v∈Vdeg(v)=2∣E∣. \sum_{v\in V}\deg(v)=2|E|.
v∈V∑ deg(v)=2∣E∣.
Доказательство (двойной счёт). Рассмотрим все упорядоченные пары (v,e)(v,e)(v,e), где vvv — вершина, а e∈Ee\in Ee∈E — ребро, инцидентное vvv. С одной стороны, число таких пар равно сумме степеней вершин, т.е.
#{(v,e)}=∑v∈Vdeg(v). \#\{(v,e)\}=\sum_{v\in V}\deg(v).
#{(v,e)}=v∈V∑ deg(v). С другой стороны, каждое ребро без петель инцидентно ровно двум вершинам и даёт 2 таких пары; петля (если разрешена) инцидентна одной вершине, но считается в степени дважды и тоже даёт 2 пары. Следовательно число пар равно 2∣E∣2|E|2∣E∣. Сравнивая, получаем требуемое равенство:
∑v∈Vdeg(v)=2∣E∣. \sum_{v\in V}\deg(v)=2|E|.
v∈V∑ deg(v)=2∣E∣. □
Практические применения теории графов в информатике (кратко):
- Маршрутизация и сети: алгоритмы кратчайшего пути (Dijkstra, Bellman–Ford), остовные деревья (Kruskal, Prim), поток в сети (Ford–Fulkerson, Edmonds–Karp) для маршрутов, балансировки нагрузки, планирования каналов связи.
- Планирование задач и расписаний: моделирование зависимостей как ориентированный ациклический граф (DAG), топологическая сортировка для порядка выполнения, критический путь для оценки времени выполнения.
- Анализ зависимостей и управление пакетами: графы зависимостей, обнаружение циклов (неразрешимые зависимости), сильные компоненты для модульного анализа.
- Сведение и теория вычислимости / сложности: сведение задач NP (например, 3‑SAT, Clique, Vertex Cover, Independent Set) позволяет переносить алгоритмические и сложностные результаты между задачами; структуры графов используются для моделирования физических и логических ограничений.
Пример редукции из 3‑SAT в Clique.
Пусть дана формула в КНФ с m \,m\,m клаузами C1,…,CmC_1,\dots,C_mC1 ,…,Cm , каждая клаузa содержит не более трёх литералов. Построим граф G=(V,E)G=(V,E)G=(V,E) и число kkk так:
- Для каждого вхождения литерала в клаузу создаём вершину. Обозначим вершины вида vi,av_{i,a}vi,a — aaa-й литерал в клаузе CiC_iCi . Тогда
V={vi,a∣1≤i≤m, a литерал в Ci}. V=\{v_{i,a}\mid 1\le i\le m,\ a\ \text{литерал в }C_i\}.
V={vi,a ∣1≤i≤m, a литерал в Ci }. - Проведём ребро между двумя вершинами vi,av_{i,a}vi,a и vj,bv_{j,b}vj,b тогда и только тогда, когда i≠ji\ne ji=j и литералы, соответствующие этим вершинам, не являются противоречивыми (т.е. не одно есть xxx, а другое ¬x\neg x¬x). Заметим, что вершины одной и той же клаузулы не соединяем.
- Положим целевой размер клики k=mk=mk=m.
Утверждение: формула выполнима тогда и только тогда, когда в GGG есть клика размера m\,mm.
Доказательство корректности редукции:
- Если формула выполнима, возьмём некоторую удовлетворяющую переменную присвоение. В каждой клаузе CiC_iCi выберем один истинный литерал; соответствующие вершины vi,∗v_{i,*}vi,∗ принадлежат разным клаузам и не конфликтуют по значениям, значит между любыми двумя такими вершинами проведено ребро, т.е. они образуют клику из mmm вершин.
- Обратно, если в GGG есть клика KKK размера mmm, то так как внутри каждой клаузулы вершины не соединены, вершины клики должны принадлежать разным клаузам — по одной из каждой клаузулы. По построению клики никакие две выбранные вершины не соответствуют противоположным литералам, значит можно присвоить выбранным литералам значение «истина» (любые остальные переменные можно присвоить произвольно), и это даёт удовлетворяющую оценку для всех mmm клауз.
Сложность редукции: построение GGG даётся за полиномиальное время по размеру формулы (число вершин не превосходит суммарного числа литералов, рёбер — квадратично в этом числе), поэтому это корректное полиномиальное сведение.
Так редукция показывает, что Clique NP‑трудна, поскольку 3‑SAT — NP‑полная; в комбинации с тем, что Clique лежит в NP, это доказывает NP‑полноту Clique.
(Конец.)