Справка программы Графоанализатор 1.3 - http://grafoanalizator.unick-soft.ru









Справка по программе Графоанализатор 1.3

Официальный сайт:

http://grafoanalizator.unick-soft.ru









2010 год

Оглавление

Оглавление 2

Графоанализатор 1.3 что это? 4

Визуализация графов и алгоритмов. 4

Редактирование графа 4

20 алгоритмов для работы с графом 5

Вспомогательные функции 5

Лицензионное соглашение 6

Распространение программы 6

Отказ от последствий 6

Использование программы 6

Быстрый обзор 7

Как пользоваться программой 7

Интерфейс программы 9

Остальные функции 10

Для чего можно использовать программу 11

Типичные задачи 11

Пример решения задач: Поиск минимального пути проезда, Поиск минимальных затрат при найме сотрудников, Поиск минимальных затрат на прокладку проводки или компьютерной сети. 11

Поиск минимального пути проезда 11

Поиск минимальных затрат на прокладку проводки или компьютерной сети 14

Поиск минимальных затрат при найме сотрудников 14

Пример решения задач: Распределение работы между несколькими работниками; Расчет пропускной способности компьютерной или дорожной сети 18

Расчет пропускной способности компьютерной или дорожной сети 18

Распределение работы между несколькими работниками 20

Пример решения задач: Поиск самого дешёвого варианта прокладки проводки. Поиск самого дешёвого варианта соединения дорог. 24

Пример решения задач: Проверка возможности соединения электронных элементов на плате 26

Пример решения задач: Поиск метода раскраски карты минимальным числом краски 27

Пример решения задач: Решение задачи коммивояжёра 28

Задание графа 30

Создание графа 30

Сохранение графа 31

Сохранения визуального представления 31

Загрузка графа 31

Добавление вершины 32

Добавление дуги 32

Добавление текста 32

Удаление объекта 32

Перемещение объектов 33

Переименование объектов 33

Редактирование матрицы смежности 33

Режимы обработки мыши 34

Режим конструктора 34

Режим поиска пути 34

Режим карты 34

Настройка режима карты 35

Использование режима карты 35

Настройка внешнего вида вершин, дуг и текста 35

Настройка внешнего вида вершин 36

Настройка внешнего вида дуг 36

Настройка внешнего вида надписей 36

Настройка фонового изображения 36

Преобразование графа 37

Изменения типа графа 37

Алгоритмы 38

Алгоритмы поиска пути 39

Алгоритм Терри 39

Алгоритм Дейкстры 39

Алгоритм Форда-Белммана 39

Алгоритм Флойда 40

Алгоритм фронта волны 40

Алгоритмы поиска эйлеровых и гамильтоновых маршрутов 40

Алгоритм нахождения эйлерового пути и цикла 40

Алгоритм нахождения гамильтонова пути и цикла 41

Определение хроматического числа 41

Определение минимального оставного дерева 41

Определение максимального потока 41

Поиск пропускной способности для одного истока и стока 41

Поиск пропускной способности для нескольких истоков и стоков 42

Проверка на связность 42

Поиск эксцентриситета вершины 42

Нахождение радиуса и диаметра графа 42

Проверка является ли граф деревом 42

Проверка на планарность 42

Поиск критического пути 42

Поиск циклов 43

Максимального полного подграфа 43

Дополнительная информация 44

Системные требования 44

Обратная связь и поддержка 44

Регистрация 44

История версии 44



Графоанализатор 1.3 что это?


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


Визуализация графов и алгоритмов.


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





Редактирование графа


Для редактирования графа можно использовать различные методы: визуально редактировать граф или редактировать матрицу смежности графа.



20 алгоритмов для работы с графом



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




Вспомогательные функции


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

Лицензионное соглашение


Графоанализатор 1.3, далее в соглашении «программа».


Распространение программы


Программа является абсолютно бесплатной и поставляется «как есть». Пользователь не имеет права зарабатывать деньги путём продажи программы или сдачи её в аренду. При размещении программы на электронных носителях или страницах Интернет, необходимо указать ссылку на официальный сайт программы http://grafoanalizator.unick-soft.ru.


Отказ от последствий


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


Использование программы


Запрещено использовать программу с целью, нарушающую законодательство РФ или другой страны, на территории которой используется программа.

При попытки использовать программу после 1 октября 2010 года включительно, необходимо бесплатно регистрировать копии программы по адресу: http://grafoanalizator.unick-soft.ru/registration/.

Быстрый обзор


Как пользоваться программой



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

После необходимо добавить вершины и дуги. Для редактирования веса дуг можно использовать матрицу смежности или делать это визуальным методом. Если вы строите граф на основе карты, вы можете использовать режим карты. Для упрощения создания графа можно использовать режим конструктора.

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

После создания графа вы можете применить один из алгоритмов:

Результат алгоритма можно увидеть визуально или в окне вывода результата алгоритма, отчёт можно просмотреть в формате HTML и текстовом формате.

После работы с графом его можно сохранить. Если вы нашли в программе недостатки, или вам необходимо добавить какую-то функциональность, то можете написать об этом автору.

Для использования программы после 1 октября 2010 года необходимо зарегистрироваться. Регистрация абсолютно бесплатная. Подробно о регистрации вы можете узнать в разделе «Регистрация».

Интерфейс программы


Главная форма программы представлена ниже:




1 — главное меню программы;

2 — рабочая область;

3 — окно матрицы смежности;

4 — поле вывода результата работы;

5 — кнопки быстрого доступа.

Рисунок 3.1 — Главное окно программы


Описание остальных диалоговых окон находится в соответствующих разделах.


Остальные функции


Остальные функции программы описаны в разделах «Задание графа» и «Алгоритмы».

Для чего можно использовать программу

Типичные задачи


Программу Графоанализатор 1.2 можно использовать для решения множества задач, которые можно свести к математической модели графов. Ниже приведён список типичных задач:

Пример решения задач: Поиск минимального пути проезда, Поиск минимальных затрат при найме сотрудников, Поиск минимальных затрат на прокладку проводки или компьютерной сети.


Решение всех задач сводится к поиску минимального маршрута в нагруженном графе.

Поиск минимального пути проезда


Нам необходимо проехать от дома до магазина, причём путь должен быть минимальный. Предположим, мы имеем карту улиц.



Рисунок 3.2 — Карта города


Для начала загружаем карту улиц как задний фон для рабочей области.



Рисунок 3.3 — Загруженный задний фон


Затем устанавливаем масштаб (сколько метров в 10 пикселях карты)




Рисунок 3.4 — Задание масштаба


Затем чертим граф на основе карты.




Рисунок 3.5 — Граф на основе карты


А теперь находим кратчайший путь, используя один из методов (Форда-Беллмана, Дейкстры или Флойда). После поиска кратчайшего пути мы увидим оптимальный путь.




Рисунок 3.6 — Граф с найденным минимальным путём


Как мы видим, кратчайший путь равен 460.

Поиск минимальных затрат на прокладку проводки или компьютерной сети


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

Поиск минимальных затрат при найме сотрудников


Задача о найме сотрудников сводится к нахождению минимального пути.

Предположим, нам необходимо нанять сотрудников, отвечающих на телефонные звонки с 8 часов утра до 20 часов. У нас есть список сотрудников, которые согласны работать в различное время за различную плату:

Дядя Петя:

Наталья Ивановна

Мальчик Вова

Робот

Василий Иванович


Данные в таком виде выглядят очень непонятно, тогда представим их виде временной диаграммы.


Время





Работники

С 8 до 9

С 9 до 10

С 10 до 11

С 11 до 12

С 12 до 13

С 13 до 14

С 14 до 15

С 15 до 16

С 16 до 17

С 17 до 18

С 18 до 19

С 19 до 20

Дядя Петя

200 р





500 р


50 р

Наталья Ивановна

350 р




700 р

Мальчик Вова


290 р



190 р



250 р

Робот



350 р



250 р


Василий Иванович



700 р



70 р



Как видно из диаграммы, альтернатив найма несколько, хотя их количество не велико, но это только пример, в реальной жизни может быть всё сложнее.

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



Рисунок 3.7 — Граф на основе графика работы


Теперь, найдя наикратчайший путь из первой вершины в последнюю, мы определим минимальные затраты и метод найма.



Рисунок 3.8 — Найденный минимальный маршрут


В результате правильным решением будет следующее, выделенное зелёным цветом:


Время





Работники

С 8 до 9

С 9 до 10

С 10 до 11

С 11 до 12

С 12 до 13

С 13 до 14

С 14 до 15

С 15 до 16

С 16 до 17

С 17 до 18

С 18 до 19

С 19 до 20

Дядя Петя

200 р





500 р


50 р

Наталья Ивановна

350 р




700 р

Мальчик Вова


290 р



190 р



250 р

Робот



350 р



250 р


Василий Иванович



700 р



70 р



Пример решения задач: Распределение работы между несколькими работниками; Расчет пропускной способности компьютерной или дорожной сети


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


Расчет пропускной способности компьютерной или дорожной сети


Предположим, у нас есть участок сети дорог, представленный на рисунке ниже.



Рисунок 3.9 — Карта дорог


Нам необходимо просчитать пропускную способность сети дорог в одном из направлений. Например, слева на право. Мы строим ориентированный граф, и задаём веса дуг равные пропускной способности. Все правые и левые дороги соединяем с истоком и стоком. В результате получим граф:




Рисунок 3.10 — Граф на основе карты дорог


Осталось только просчитать пропускную способность. В результате получаем такое распределение потока.



Рисунок 3.11 — Максимальная пропускная способность дорог

Распределение работы между несколькими работниками


Распределение работ между работниками тоже сводится к поиску пропускной способности. Пусть мы имеем список работников:

Также имеется список работ, необходимых для выполнения:

Каждый из работников может выполнять различные типы работ. Ниже приведён список, кто какие виды работы может выполнять.

Нам необходимо распределить работников так, что бы максимальное количество работ выполнялось. Сделать это вручную трудоёмкая задача, если число работников велико.

Для решения представим нашу задачу в виде графа. Левый столбик вершин графа – это работники, правый – это типы работ. Также мы добавили сток и исток.

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



Рисунок 3.12 — Граф на основе работников и видов работ


После соединяем исток со всеми работниками, а сток соединяем с видами работ. Вес также равен 1.



Рисунок 3.13 — Граф на основе работников и видов работ


Теперь ищем пропускную способность.



Рисунок 3.14 — Способ распределения работников


Пропускная способность нам показала, какой работник должен выполнять какую работу. Например, Петров должен тратить деньги, Дядя Петя должен копать.

Пример решения задач: Поиск самого дешёвого варианта прокладки проводки. Поиск самого дешёвого варианта соединения дорог.


При строительстве дорог или при прокладке кабелей может существовать несколько путей соединения города или компьютера, но необходимо это сделать одним определённым способом. Причём, желательно, чтобы выбранный способ был наиболее экономичным с точки зрения временных или денежных затрат.

Пусть мы имеем несколько городов и возможные способ соединения их.

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




Рисунок 3.15 — Карта городов


А теперь осталось найти наименьшее оставное дерево.



Рисунок 3.16 — Минимальная стоимость постройки дорог


В результате мы затратим всего 73 условные единицы.


Пример решения задач: Проверка возможности соединения электронных элементов на плате


При соединении элементов на электронной плате, необходимо чтобы соединения не пересекались. Для этого эклектическую цепь необходимо представить в виде графа. Если граф является планарным, то можно соединить все элементы цепи без пересечений.

Пример решения задач: Поиск метода раскраски карты минимальным числом краски


Если существует карта, на которой находятся страны, и необходимо найти такой метод раскраски чтобы две соседние страны имели разные цвета.

Пусть имеется карта:



Рисунок 3.17 — Карта стран


Для представления карты в виде графа, страны будут являться вершинами графа, а границы дугами. Тогда граф будет выглядеть так:



Рисунок 3.18 — Граф на основе карты стран

После ищем хроматическое число графа, и получаем такой результат:



Рисунок 3.19 — Способ раскраски графа

Пример решения задач: Решение задачи коммивояжёра


Предположим, у фирмы или курьера, или коммивояжёра имеются клиенты, и необходимо посетить всех клиентов только один раз.

Представим наших клиентов в виде графа.



Рисунок 3.20 — Карта расположения клиентов


Для поиска необходимого пути, выбираем алгоритм поиска Гамильтоновой цепи.



Рисунок 3.21 — Маршрут обхода клиентов


Задание графа


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

  1. создание графа и выбор его типа;

  2. добавление вершин и дуг графа;

  3. настройка внешнего вида.

Создание графа


Для создания графа сначала необходимо выбрать его тип. На рисунке 4.1 приведена форма создания графа.




Рисунок 4.1 — Форма создания графа


Если установить галочку «Орграф», тогда граф будет ориентированным. Если установить галочку «Нагруженный граф», граф будет нагруженным.

Для того, что бы создать граф необходимо вызвать меню «Создать».


Рисунок 4.2 — Меню программы «Граф»


Сохранение графа


Для сохранения графа с целью его дальнейшего использования необходимо выбрать пункт меню «Файл» – «Сохранить граф».




Рисунок 4.3 — Изображение меню «Файл»


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

Сохранения визуального представления


Для сохранения визуального представления графа, необходимо выбрать пункт меню «Граф» — «Сохранить изображение». В результате в файле будет сохранено, то что вы ведите в рабочей области.

Загрузка графа


Для возобновления работы с ранее сохраненным графом необходимо загрузить граф, используя меню «Файл» – «Загрузить граф».



Рисунок 4.4 — Изображение меню «Файл»



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


Добавление вершины


Добавление вершины можно произвести несколькими методами:

  1. Использовать горячую клавишу «F3».

  2. Кнопку на панели.

  3. Использовать пункт из меню Граф.



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

Добавление дуги


Добавление дуги можно произвести несколькими методами:

  1. Использовать пункт меню из меню «Граф». После необходимо ввести номер вершины, из которой будет идти дуга и в какую. Также можно использовать горячую клавишу «F4».

  2. Второй метод – это графический. Сначала необходимо выделить вершину, кликнув на неё левой клавишей мышки, потом кликнуть правой кнопкой по второй вершине, и из контекстного меню выбрать «Чертить дугу». Для упрощения можно использовать режим конструктора.

  3. Редактировать матрицу смежности, вводом значения в соответствующую клетку.


Добавление текста


Для создания поясняющих надписей существует возможность добавления текста. Для добавления текста необходимо выбрать соответствующий пункт из меню «Граф» или нажать кнопку на панели быстрого доступа. После этого необходимо выбрать место для расположения надписи, а потом ввести текст надписи.


Удаление объекта


Для удаления объектов (вершин графа, дуг или надписей) необходимо их выделить, кликнув на них правой кнопкой мышки, а потом выбрать пункт из меню «Граф» или нажать кнопку на панели.


Перемещение объектов


Для перемещения объектов (вершин графа, дуг или надписей) необходимо нажать на объект левой кнопкой мышки, и не отпуская её, произвести перемещение мыши.


Переименование объектов


Для переименования вершин, изменения веса дуг и переименования надписей, необходимо выбрать интересующий элемент. Зайти в пункт меню Изменить и выбрать один из пунктов:

- для редактирования название вершины, в режиме названий, задаваемых пользователем.


- для редактирования веса дуг, для нагруженных графов.

- для изменения текста надписи.

Редактирование матрицы смежности


Редактирование матрицы смежности можно осуществить 2 различными методами.

Первый метод заключается в использовании панели матрицы смежности для редактирования весов дуг.



Рисунок 4.5 — Окно редактирования матрицы смежности


При редактировании неорграфа второе значение будет добавлено автоматически. При введении некорректных значений, будет выведено сообщение.

Второй метод редактирования – это задание матрицы смежности. Для этого необходимо выбрать пункт меню Граф Редактировать матрицу смежности. В появившемся окне можно ввести новую или редактировать старую матрицу смежности. Значения в матрице смежности разделяются знаком «,». После применения матрицы смежности, если она была корректна, будет создан граф, положение всех вершин будет случайно.


Режимы обработки мыши


Режим обработки мыши определяет обработку правого клика мышки. Существует 2 режима обработки мышки:

  1. режим конструктора;

  2. режим поиска пути.


Режим конструктора


В режиме конструктора при клике правой кнопкой мышки по вершине, автоматически создастся дуга.


Режим поиска пути


В режиме поиска пути при клике правой кнопкой мышки по вершине появляется контекстное меню с выбором метода поиска пути или для создания дуги.


Режим карты


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



Рисунок 4.6 — Меню режима карты

Настройка режима карты


Для настройки создания карты необходимо вызвать элемент меню Режим работы — Режим карты — Настроить масштаб.


Р
исунок 4.7 — Диалог настройки масштаба


В диалоговом окне можно ввести сколько веса дуги будет в 10 пикселях карты.


Использование режима карты


Для активирования режима необходимо вызвать элемент меню Режим работы — Режим карты — Включить. После создания дуги вес будет добавляться автоматически. Этот режим лучше использовать вместе с фоновым изображением.


Настройка внешнего вида вершин, дуг и текста



Для улучшения визуального восприятия существует возможность настройки вида вершин, дуг и текста. Каждая из настроек состоит из 2 типов: настройка нормального и активного вида.

Нормальный тип это то, как выглядит элемент в нормальном состоянии. Активный тип это то, как выглядит элемент, когда он выделен.

Для настройки внешнего вида необходимо выбрать пункт меню Вид — Настроить...




Рисунок 4.8 — Диалог настройки внешнего вида

Настройка внешнего вида вершин


Для вершин можно настроить цвет линий, цвет заливки, цвет текста и размер вершин. Изменить атрибуты можно, кликнув на соответствующий кружок.


Настройка внешнего вида дуг


Для дуг можно настроить цвет линий, цвет текста и толщину линии.


Настройка внешнего вида надписей


Для настройки надписей можно настроить цвет текста, цвет фона и атрибуты шрифта.


Настройка фонового изображения

Для загрузки фонового изображения необходимо выбрать элемент меню Вид — Загрузить фон.

Для удаления фонового изображения необходимо выбрать элемент меню Вид — Очистить фон.

Преобразование графа


Преобразование графа используется для изменения типа графа. Для преобразования графа необходимо использовать пункты меню «Граф»- «Преобразование графа»:

  1. «...в неорграф» - преобразует граф в не ориентированные;

  2. «...в орграф» - преобразовать граф в ориентированный граф;

  3. «...в нагруженный» - преобразовать граф в нагруженный граф;

  4. «...в не нагруженный» - преобразовать граф в не нагруженный граф.


Изменения типа графа


Для изменения типа графа необходимо выбрать меню Граф — Свойство графа.



Рисунок 4.9 — Настройка свойства графа

Используя диалог можно изменить тип графа и тип нумерации.



Алгоритмы


Доступ к алгоритмам можно осуществить через меню Алгоритмы, Особые алгоритмы или контекстное меню.

Приведём сводную таблицу алгоритмов и их ограничений.


Название алгоритма

Поддерживает неорграфы

Поддерживает орграфы

Поддерживает ненагруженные графы

Поддерживает нагруженные графы

Алгоритм Дейкстры

Да

Да

Нет

Да

Алгоритм Флойда

Да

Да

Нет

Да

Алгоритм Форда-Белмана

Да

Да

Нет

Да

Алгоритм фронта волны

Да

Да

Да

Нет

Алгоритм Терри

Да

Да

Да

Нет

Поиск цепи Эйлера

Да

Нет

Да

Да

Поиск цикла Эйлера

Да

Нет

Да

Да

Поиск цепи Гамильтона

Да

Нет

Да

Да

Поиск цикла Гамильтона

Да

Нет

Да

Да

Поиск минимального оставного дерева

Да

Нет

Да

Да

Поиск хроматического числа

Да

Нет

Да

Да

Проверка на связность

Да

Нет

Да

Да

Поиск эксцентриситета

Да

Да

Да

Да

Поиск радиуса и диаметра

Да

Нет

Да

Да

Поиск максимального потока

Нет

Да

Нет

Да

Поиск максимального потока для нескольких стоков и истоков

Нет

Да

Нет

Да

Проверка на планарность

Да

Нет

Да

Да

Проверка является ли граф деревом

Да

Нет

Да

Да

Поиск критического пути

Нет

Да

Нет

Да

Поиск циклов

Да

Да

Да

Да

Максимального полного подграфа

Да

Нет

Да

Да


Алгоритмы поиска пути


Поиск пути включает в себя несколько алгоритмов, для поиска пути и поиска кратчайшего пути в нагруженный и ненагруженный графы.


Алгоритм Терри


Алгоритм Терри служит для нахождения не кратчайшего пути. Другими словами, для проверки достижимости.

Алгоритм обходит граф пока не дойдёт до конечной вершины или не обойдёт все вершины.


Алгоритм Дейкстры


Служит для поиска кратчайшего пути в нагруженном графе.

На каждой шаге алгоритм обновляет расстояние от начальной вершины до всех остальных. Сначала рассматриваются вершины соседние с начальной, потом соседние с соседней.


Алгоритм Форда-Белммана


Алгоритм служит для нахождения пути в нагруженном графе.

Кратно описать алгоритм можно следующим образом:

Обозначим через МинРс(1, f, к) наименьшее расстояние между 1 вершиной и вершину с номером f менее чем через k вершин. Для поиска остальных значений прибегнем к формуле:

МинРс (1, f, k+1) = наименьшему из чисел МинРс(1, f, k) и МинРс(1, i, k) + a[i][f] (i=1..n).


Алгоритм Флойда


Алгоритм находит все кратчайшие расстояния в графе.

Алгоритм основан на том предположении, что расстояние между вершинами А и Б, может быть больше, чем расстояние от А до В + от В до Б.

В виде псевдокода изобразить алгоритм можно следующим образом:

for k = 1 to n

for i = 1 to n

for j = 1 to n

W[i][j] = min(W[i][j], W[i][k] + W[k][j])


Алгоритм фронта волны


Алгоритм фронта волны подходит для не нагруженных графов.

Алгоритм помечает расстояния от начальной вершины. Ответом будет являться число, которое было записано в конечную вершину.

Алгоритмы поиска эйлеровых и гамильтоновых маршрутов


Эйлеровым считается путь, который проходит по всем дугам графа равно 1 раз. Гамильтоновым считается путь, который проходит через 1 вершину только один раз.

Алгоритм нахождения эйлерового пути и цикла


Для нахождения эйлеровго цикла в графе должны быть все вершины чётной степени. При нахождении пути в графе должны быть 2 вершины не чётной степени, и соединив, их задача сведётся к нахождению эйлерового цикла.

Для нахождения эйлерового цикла необходимо найти последовательно циклы и удалять из графа дуги этих циклов.

Алгоритм нахождения гамильтонова пути и цикла


Для нахождения гамильтонова пути и цикла используется поиск методом перебора. В связи с этим, для больших графов поиск может занять много времени.

Определение хроматического числа


Хроматическое число – это минимальное число цветов для раскраски графа.

Для поиска хроматического числа используется 2 алгоритма. Первый из них из меню Алгоритмы — Определение Хроматического числа:

Найдем вершину с максимальным количество дуг. Данная вершина раскрашивается в первый цвет. Берётся одна из соседних вершин и раскрашивается в цвет 2, ещё одна соседняя – в минимальный цвет его соседний плюс 1.

Второй алгоритм из меню Особые Алгоритмы — Определение хроматического числа альтернатив алгоритмам:

Все вершины сортируются по числу дуг и раскраска начинается от вершины с максимальным количеством дуг.

Стоит отметить что оба алгоритма не идеальны и могут не всегда выдавать корректный результат.



Определение минимального оставного дерева


Минимальное оставное дерево – подграф с минимальной суммой дуг, соединяющий все вершины.

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

Определение максимального потока


Поток в графе, если его величина максимальна, называется максимальным. В программе реализовано 2 метода поиска максимального потока: поиск максимального потока для одного истока и стока и для нескольких истоков и стоков.

Поиск пропускной способности для одного истока и стока


Поиск производится по алгоритму Форда-Фалкерсона. На графе визуализируется поток.


Поиск пропускной способности для нескольких истоков и стоков


Для начала граф преобразуется к виду, когда все истоки соединяются с псевдо истоком, вес дуг при этом равен 30000 (условная бесконечность). Также исток соединяется с псевдо истоком.

После, поиск потока производится по алгоритму Форда-Фалкерсона.

Проверка на связность


Проверка выдаёт как результат связный граф или нет. Алгоритм использует метод заливки.

Поиск эксцентриситета вершины


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

Нахождение радиуса и диаметра графа


Радиус графа – это наименьший эксцентриситет, а максимальный эксцентриситет называется диаметром. Результатом алгоритма будет 2 значения радиуса и диаметра.

Проверка является ли граф деревом


Дерево – связный граф, не имеющий циклов.

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

Проверка на планарность


Граф является планарным если его можно расположить на плоскости, чтобы его дуги не пересекались.

Алгоритм работает исходя из необходимого условия и достаточного условия.


Поиск критического пути


Поиск критического пути графа для нагруженного орграфа. Алгоритм поддерживает множество начальных точек и множество конечных, при этом считается что все начальные точки происходят в одно и тоже время, как и все конечные.


Поиск циклов


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


Максимального полного подграфа


Поиск максимального полного подргафа с использованием алгоритма Брона-Кербоша.

Дополнительная информация


Системные требования


Программа «Графоанализатор 1.3» протестирована под операционными системами Windows XP, Windows Vista, Windows 7.

Обратная связь и поддержка


Официальный сайт программы: http://grafoanalizator.unick-soft.ru.

Написать автору можно по адресу soft_support@list.ru.

В программу встроена форма обратной связи, для открытия формы необходимо вызвать пункт меню «Справка» — «Обратная связь».

Если в программе найдены ошибки или необходимо расширить её функционал, то пишете об этом автору.


Регистрация


Для отключения окна регистрации или использования программы после 1 октября 2010 года необходимо зарегистрировать свою копию программы. Для этого необходимо зайти на страницу регистрации: http://grafoanalizator.unick-soft.ru/registration/

Заполнить форму и ввести полученный код активации в форму регистрации: Справка — Регистрация.

Регистрация помогает нам в сборе статистики о пользователях программы и улучшению нашей программы.


История версии


Что было нового в версии 1.3


Изменение интерфейса:

Добавлена возможность выбора типа индексации вершин.

Добавлена возможность переименовывать вершин, надписей и изменения веса дуг.

Добавлена настройка шрифта и толщины рёбер.

Улучшена форма отчётов.

Добавлены элементы меню последних файлов.

Изменён формат сохранения графов.


Изменения алгоритмов:

Исправлена ошибка при поиске радиуса.

Добавлен поиск критического пути.

Добавлен алгоритм поиска циклов.

Добавлен алгоритм поиска максимального полного подграфа.

Улучшен алгоритм проверки на планарность.


Другие улучшения:

Добавлена возможность отмены действий.

Добавлен интерфейс на английском языке.

Добавлена регистрация.


Что было нового в версии 1.2:


Изменения интерфейса:

Добавлена панель изменения матрицы смежности

Добавлен диалог задания матрицы смежности

Добавить подсказки для основных элементов управления

Добавлено возможность добавления текста.

Улучшена визуализация дуг графа

Улучшено меню программы

Изменён диалог настройки размера вершины.


Изменения алгоритмов:

Добавлен алгоритм поиска макс потока для нескольких истоков и стоков

Добавлен алгоритм проверки дерево или нет

Добавлен режим задания графа карта.

Добавлен алгоритм проверки на планетарность

Добавлена возможность преобразования графа

Улучшены алгоритмы нахождения эйлерового цикла и пути


Другие улучшения:

Добавлено возможность оставлять мнение о программе

Уменьшена нагрузка на компьютер при перемещение объектов

В файл сохранения графа также добавляется его тип

Переделать справку


Что было нового в версии 1.1:

При сохранение графа сохраняется также расположение вершин на рабочем поле.

Добавлена возможность изменять размер рабочей области.

Добавлена возможность изменять размер вершин графа.

Можно ставить фоновый рисунок на рабочую область.

Настройки программы также сохраняются в файле.





46