Программирование на языке Ruby
Шрифт:
И все же у графов есть немало практических приложений. Возьмите обычную дорожную карту, на которой города соединены скоростными магистралями, или печатную плату. То и другое удобно представлять в виде графов. Компьютерную сеть тоже можно описать в терминах теории графов, будь то локальная сеть из нескольких десятков машин или весь Интернет, насчитывающий миллионы узлов.
Под графом мы обычно понимаем неориентированный граф. Попросту говоря, в нем не проставлены стрелки на соединительных линиях; две вершины либо соединены, либо нет. Между тем в ориентированном графе (орграфе) могут быть «улицы с односторонним движением»; из того, что вершина x соединена
В Ruby, как и во многих других языках, граф можно представить разными способами, например в виде настоящей сети взаимосвязанных объектов или в виде матрицы, в которой хранятся ребра графа. Мы рассмотрим оба способа и на примерах покажем, как можно манипулировать графами.
9.4.1. Реализация графа в виде матрицы смежности
Нижеприведенный пример основан на двух предыдущих. В листинге 9.3 неориентированный граф реализован в виде матрицы смежности с помощью класса
Отметим, что приведенная выше реализация не допускает ребер, ведущих из некоторого узла в него же. Кроме того, два узла могут быть соединены только одним ребром.
Мы позволяем задать начальный состав ребер, передавая пары в конструктор. Кроме того, можно добавлять и удалять ребра, а также проверять наличие ребра между двумя вершинами. Метод
Наконец, имеются два итератора
9.4.2. Является ли граф связным?
Не все графы связные. Иногда нет способа «добраться из одной точки в другую», то есть между двумя вершинами нет никакого пути, составленного из ребер. Связность — это важное свойство графа, его надо уметь вычислять. В связном графе любая вершина достижима из любой другой.
Похвали меня
Любовные романы:
зарубежные любовные романы
рейтинг книги
Звезды на приеме у психолога. Психоанализ знаменитых личностей
Научно-образовательная:
психология
рейтинг книги
"Княгиня Ольга". Компиляция. Книги 1-19
Княгиня Ольга
Приключения:
исторические приключения
рейтинг книги
Вавилон - 17 [Вавилон - 17. Нова. Падение башен]
Фантастика:
научная фантастика
рейтинг книги
Ошибки богов. Тетралогия
Ошибки богов
Фантастика:
фэнтези
рейтинг книги
Золото Вильгельма
Козы и Шекспир
Проза:
современная проза
рейтинг книги
Нас ждет Севастополь
Проза:
военная проза
советская классическая проза
рейтинг книги
10 вождей. От Ленина до Путина
Документальная литература:
биографии и мемуары
рейтинг книги
Шерас
Фантастика:
фэнтези
рейтинг книги
Неизвестный фактор (Романы)
Фантастика:
фэнтези
рейтинг книги
Вершитель
7. Андердог
Фантастика:
фэнтези
рпг
рейтинг книги
Неучтенный элемент. Том 3
3. Антимаг. Вне системы
Фантастика:
фэнтези
рейтинг книги
Ведьмак (большой сборник)
Ведьмак
Фантастика:
фэнтези
рейтинг книги
Темная Башня 4 (Колдун и Кристалл)
Фантастика:
боевая фантастика
фэнтези
научная фантастика
рейтинг книги