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