На этом шаге мы рассмотрим приложение, иллюстрирующее некоторые из рассмотренных ранее алгоритмов.
Описанное на этом шаге приложение было выполнено в среде программирования Delphi 6.0 студенткой факультета математики и информационных технологий Курганского государственного университета Н.Л.Скутиной в 2004 г.
Разработанная программа "Сетевые модели" позволяет изобразить сеть с помощью узлов и ребер (неориентированных и ориентированных), а также найти минимальное остовное дерево построенной сети и минимальный путь между любыми двумя узлами с помощью двух алгоритмов: алгоритма Дейкстры и алгоритма Флойда.
Рис.1. Внешний вид окна программы
Работу программы можно разделить на две части: построение сети и применение указанных алгоритмов к этой сети.
Для того чтобы добавлять новые узлы должна быть нажата кнопка панели инструментов "Новый узел" . Для ввода узла необходимо щелкнуть левой кнопкой мыши на рабочем поле.
Для того чтобы добавлять новые ребра должна быть нажата кнопка "Добавить путь" или "Добавить направленный путь" . Для ввода ребра необходимо щелкнуть левой кнопкой мыши на одном узле, затем на другом, при этом появляется диалоговое окно для ввода длины ребра (пока не введут длину перейти в окно программы нельзя).
При перемещении узла нажмите кнопку "Перемещение узла" на панели инструментов, щелкните левой кнопкой мыши на перемещаемый узел, затем, не отпуская кнопки мыши, на свободное место, куда вы хотите переместить узел.
Для удаления узла нажмите кнопку "Удаление узла" на панели инструментов, затем щелкните левой кнопкой мыши на узел, который хотите удалить.
Для сохранения сети в файле нажмите кнопку "Сохранить" . В появившемся окне диалога введите имя файла и выберите директорию, затем нажмите кнопку ОK.
Для загрузки сети из файла нажмите кнопку "Открыть" и в появившемся окне выберите нужный файл.
Чтобы очистить поле и ввести новую сеть нажмите кнопку "Новый" или выберите соответствующую команду в меню "Файл". Для получения помощи нажмите кнопку "Справка" или выберите соответствующую команду меню "Справка". Для очистки результатов действий алгоритмов нажмите кнопку "Обновить" или выберите соответствующую команду пункта меню "Вид".
Для нахождения минимального остовного дерева сети щелкните по кнопке "Построить остовное дерево" .
Если выбрать две различные вершины (для этого необходимо щелкнуть по кнопке "Выделить узлы" или выбрать соответствующую команду меню "Сеть", а затем щелкнуть на те узлы, которые надо выделить) и нажать на кнопку "Выполнить алгоритм Дейкстры" или "Выполнить алгоритм Флойда" , то программа найдет кратчайший путь между выделенными узлами. Если сеть является ориентированной, то очень важен порядок выделения узлов.
Для всех кнопок панели инструментов и команд главного меню в строке состояния отображается подсказка. При наведении мыши на кнопку панели инструментов появляется всплывающая подсказка. К некоторым командам есть горячие клавиши, которые отображаются справа от команды в главном меню или во всплывающей подсказке.
Текст этого приложения можно взять здесь.
Мы закончили изложение материала, связанного с динамическими структурами данных. Конечно, мы не охватили всего многообразия динамических структур. Может быть, в дальнейшем, мы к нему вернемся.