расположенные друг в друге.

Рис. 9.7. Еще один пример применения пакета geom3d

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

9.3. Пакет функций теории графов networks

9.3.1. Набор функций пакета networks

Графы широко используются при решении многих прикладных и фундаментальных задач. Пользователей, занятых решением таких задач, наверняка порадует пакет networks, содержащий весьма представительный набор функций. Список их имен выводит команда:

> with(networks);

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

9.3.2. Примеры применения пакета networks

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

new — создает пустой граф (без ребер и узлов);

void — создает пустой граф (без ребер);

duplicate — создает копию графа;

complete — создает полный граф;

random — возвращает случайный граф;

Petersen — создает граф Петерсена.

Функции модификации графов:

addedges — добавляет в граф ребро;

addvertex — добавляет в граф вершины;

connect — соединяет одни заданные вершины с другими;

delete — удаляет из графа ребро или вершину.

Функции контроля структуры графов:

draw — рисует граф;

edges — возвращает список ребер графа;

vertices — возвращает список узлов графа;

show — возвращает таблицу с полной информацией о графе;

ends — возвращает имена вершин графа;

head — возвращает имя вершины, которая является головой ребер;

tail — возвращает имя вершины, которая является хвостом ребер;

incidence — возвращает матрицу инцидентности;

adjacency — возвращает матрицу смежности;

eweight — возвращает веса ребер;

vweight — возвращает веса вершин;

isplanar — упрощает граф, удаляя циклы и повторяющиеся ребра, и проверяет его на планарность (возвращает true, если граф оказался планарным и false в противном случае).

Функции с типовыми возможностями графов:

flow — находит максимальный поток в сети от одной заданной вершины к другой;

shortpathtree — находит кратчайший путь в графе с помощью алгоритма Дейкстры.

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

На рис. 9.8 показан пример создания графа, имеющего четыре вершины, и графа Петерсона с выводом их графиков графической функцией draw.

Рис. 9.8. Построение графов

На рис. 9.9 показан другой пример работы с графами — построение графа функцией complete и затем его преобразование путем удаления части вершин. Исходный и преобразованный графы строятся функцией draw.

Рис. 9.9. Преобразование графа удалением части вершин

В третьем примере (рис. 9.10) граф формируется по частям — вначале задается пустой граф функцией new, а затем с помощью функций addvertex и addedge в него включаются вершины и ребра. Далее функция connect соединяет вершину a с вершиной с, делая граф замкнутым. Функция draw строит сформированный таким образом граф, а функции head и tail используются для выявления «голов» и «хвостов» графа.

Рис. 9.10. Формирование графа и определение его «голов» и «хвостов»

В четвертом примере, представленном на рис. 9.11, показано создание графа G2 (его изображение было приведено на рис. 9.9) с вычислением для этого графа максимального потока от вершины 1. Обратите внимание, что в параметрах функции flow, использованной для этого, заданы две переменные: eset — принимает значение множества с ребрами, по которым проходит максимальный поток, и comp — принимает значение множества, в котором содержатся вершины, по которым проходит максимальный поток. Значения этих переменных выведены в области вывода. В заключительной части этого примера показано применение функции shortpathtree, ищущей наиболее короткий путь от вершины 1 до других вершин.

Рис. 9.11. Пример вычисления максимального потока и наиболее коротких путей для заданного графа

9.3.3. Получение информации о графе

Приведенный ниже еще один пример иллюстрирует работу функции show, выдающей таблицу с полной информацией о графе, созданном функцией complete:

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату