Зарегистрируйтесь, чтобы продолжить обучение

Подграфы Теория графов

В этом уроке мы разберем, что такое подграфы, какие они бывают и как выглядят. Эти инструменты упростят работу со сложными графами

Что такое подграфы

Подграф — это часть графа, в которой мы берем некоторые его вершины и ребра. Другими словами, граф H является подграфом графа G, если вершины и ребра H являются подмножеством вершин и ребер G.

Ниже слева показан граф. Части исходного графа, которые не являются частью подграфа, показаны серым цветом и пунктирными линиями, хотя обычно их просто опускают:

eyJpZCI6IjYxY2VkNDhjZGZhYzE2YTFhNjJhYmY0MTEyODdmMjY1LnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=c787137dcdeea5ab95730d1e180d22e6de849d8fbdf96ec1b160c8bf0e89b16c

Обратите внимание, что если ребро входит в подграф, то обе его конечные точки должны входить в него. Не имеет смысла иметь ребро без конечной точки.

Существует несколько видов подграфов, которые мы и разберем далее в уроке.

Индуцированные подграфы

Чтобы лучше понять этот вид подграфов, обратимся к еще одному понятию — инцидентным вершинам. Так называют вершины, если у них есть общее ребро. Например, если между вершинами A и B есть ребро, значит A и B считаются инцидентными.

Индуцированными называют подграфы, в которых все вершины включает в себя все ребра исходного графа, инцидентные этой вершине.

Для наглядности посмотрим на графы ниже:

eyJpZCI6IjYxNjYyYjkwNjczNGQ0YjdlYWIzNmQ3YWYxMjliMGZkLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=a1fe22cb892437ace5ab09ebbe20e5657e0dc3973a0a8ecd082c8550bb6a6d63

Здесь изображено три графа:

  • Исходный граф, из которого следуют следующие два подграфа

  • Неиндуцированный подграф. Он включает вершины и , но не повторяет все ребра с этими вершинами. На исходном графе показаны пять ребер с этими вершинами . На подграфе всего два ребра — не хватает и

  • Индуцированный подграф. Он включает вершины и и повторяет все ребра с этими вершинами —

Когда нам нужно удалить вершины из графа, мы также должны удалить все ребра, инцидентные этим вершинам. Посмотрим на таком примере:

eyJpZCI6IjE1NDkyZDAyMzk0NzdlZDI2NzQzNDM0M2ZlNWUzOWNmLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=6477f39088da2e4816a3f55a4440194caf8d8c4f281c1564808ad58c61437e07

Ниже показан граф и два подграфа после удаления вершин:

  • Исходный граф

  • Подграф с удаленной вершиной — значит, мы должны удалить четыре ее ребра

  • Подграф с удаленными вершинами и — значит, мы должны удалить ребра с этими вершинами и в итоге разбить граф на две части

Если — граф, а — подмножество его вершин, то мы удалить вершины и обозначить новый граф через . Если состоит только из одной вершины , то вместо этого мы будем писать . Если удаляем только одно ребро , обозначим это .

Подграфы и клики

В работе с подграфами часто употребляется термин «клика» — это подмножество вершин графа, любые две из которых соединены ребром. Другими словами, это объединение смежных вершин.

Посмотрим на примере:

eyJpZCI6ImZmNjllOWY0ZWMyY2FiNjEzYTdmZDU0YzY5OGEyZmRhLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=28d9e23dfb7104430300211c69d8da108be90f70af2f58cabba13f2c8d320510

На этом графе у нас есть две клики:

  • Из четырех вершин в левом нижнем углу (обозначена красным)

  • Из трех вершин в правом верхнем углу (обозначена зеленым)

Чтобы точнее понять, что такое клика, представьте социальную сеть. По сути — это граф. Люди — это вершины, а ребра — это отношения людей между собой. Кликой в этом графе можно назвать группу друзей, коллег или любых других знакомых людей.

Особенно часто клики упоминают в работе с циклами и путями в графах. Примеры пути и цикла в графе:

eyJpZCI6IjBjMGQyYWEzYTQ0YzZkODI0ZTczMWY2ZmM0ZTNlOTRlLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=de4c994c78dbe4f7aa0880003416e73185da90fe1eb2b2c80e801bbc39537942

Когда мы говорим, что граф содержит путь или цикл, значит, в нем есть подграф с кликой в несколько вершин, который является путем или циклом.

Независимое множество

Существует и противоположность клики — независимое множество. Это набор вершин в графе, в котором ни одна вершина не является смежной с другой.

Снова представим граф — социальную сеть. Независимое множество в нем — это набор людей, которые все незнакомы друг с другом.

Так независимое множество выглядит в графе:

eyJpZCI6ImM3OWM0ZTM2NWVlNzBjM2U0ZmJhMjYzY2ExYWY1NjQ0LnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=0d355b3ff9e2eb2d33652e421a5e7e589facab8d1ee82a8d81ea58dc58488ac2

Выводы

В этом уроке вы узнали больше о подграфах, кликах и независимых множествах. Теперь вы сможете эффективнее работать с сложными графами и большим количеством вершин, ведь вы сможете разделить запутанный граф на несколько подграфов и изучить отдельные клики.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу