Примеры применения пакета networks
Рассмотрим некоторые избранные функции этого пакета, которые наиболее часто используются при работе с графами. Детали синтаксиса функций можно найти в справочной базе данных Maple 7.
Функции создания графов:
- new — создает пустой граф (без ребер и узлов);
- void — создает пустой граф (без ребер);
- duplicate — создает копию графа;
- complete — создает полный граф;
- random — возвращает случайный граф;
- petersen — создает граф Петерсена. Функции модификации графов:
- addedges — добавляет в граф ребро;
- addvertex — добавляет в граф вершины;
- connect — соединяет одни заданные вершины с другими;
- delete — удаляет из графа ребро или вершину. Функции контроля структуры графов:
- draw — рисует граф;
- edges — возвращает список ребер графа;
- vertices — возвращает список узлов графа;
- show — возвращает таблицу с полной информацией о графе; .
- ends — возвращает имена вершин графа;
- head — возвращает имя вершины, которая является головой ребер;
- tail — возвращает ими вершины, которая является хвостом ребер;
- incidence — возвращает матрицу инцидентности;
- adjacency — возвращает матрицу смежности;
- eweight — возвращает веса ребер;
- weight — возвращает веса вершин;
- isplanar — упрощает граф, удаляя циклы и повторяющиеся ребра, и проверяет его на планарность (возвращает true, если граф оказался планарным, и false — в противном случае).
Функции с типовыми возможностями графов:
- flow — находит максимальный поток в сети от одной заданной вершины к другой;
- shortpathtree — находит кратчайший путь в графе с помощью алгоритма Дейкстры.
Каждая из этих команд имеет одну или несколько синтаксических форм записи. Их можно уточнить с помощью справочной системы. С ее помощью можно ознакомиться и с назначением других функций этого обширного пакета. Проиллюстрируем его применение на нескольких типичных примерах.
На рис. 16. 9 показан пример создания Графа, имеющего четыре вершины, и графа Петерсона с выводом их графиков графической функцией draw.
На рис. 16.10 показан другой пример работы с графами — построение графа функцией complete и затем его преобразование путем удаления части вершин. Исходный и преобразованный графы строятся функцией draw.
В третьем примере (рис. 16.11) граф формируется по частям — вначале задается пустой граф функцией new, а затем с помощью функций addvertex и addedge в него включаются вершины и ребра. Далее функция connect соединяет вершину а с вершиной с, делая граф замкнутым. Функция draw строит сформированный таким образом граф, а функции head и tail используются для выявления «голов» и «хвостов» графа.
В четвертом примере, представленном на рис.,16.12, показано создание графа G2 (его изображение было приведено на рис. 16.10) с вычислением для этого графа максимального потока от вершины 1. Обратите внимание, что в параметрах функции flow, использованной для этого, заданы две переменные: eset — принимает значение множества с ребрами, по которым проходит максимальный поток, и соmр — принимает значение множества, в котором содержатся вершины, по которым проходит максимальный поток. Значения этих переменных выведены в области вывода. В заключительной части этого примера показано применение функции shortpathtree, ищущей наиболее короткий путь от вершины 1 до других вершин.
Рис. 16.9. Построение графов
Рис. 16.10. Преобразование графа удалением части вершин
Рис. 16.11. Формирование графа и определение его «голов» и «хвостов»
Рис. 16.12. Пример вычисления максимального потока и наиболее коротких путей для заданного графа
Содержание раздела