Вы здесь

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

 

Примеры применения пакета 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. Пример вычисления максимального потока и наиболее коротких путей для заданного графа

 


Top.Mail.Ru