Алгоритмизация в инженерных задачах
Разработано программу с графическим интерфейсом, реализующую нахождение минимального остова графа по алгоритму Краскала. В результате работы программы строиться граф и остов минимального веса с указанием всех вершин, выводится матрица смежности.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.02.2019 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1
Министерство образования Российской Федерации
Пензенский государственный университет
Кафедра «Информатика и вычислительная техника»
Пояснительная записка
к курсовой работе
Алгоритмизация в инженерных задачах
Выполнил: Исхаков Н.В.
студент группы 16ВВ2
Принял: Пащенко Д.В., Малютина Г.И.
Пенза
2017
Оглавление
- Введение
- Постановка задачи
- Теоретическая часть
- Описание алгоритма решения поставленной задачи
- Ручной просчет
- Описание программы
- Тесты
- Литература
- Введение
- Алгоритмизация задачи представляет собой процесс составления алгоритма ее решения. Алгоритм - строго определенная процедура, гарантирующая получение результата за конечное число шагов.
- Логика и основы алгоритмизации в инженерных задачах связанна с построением графов. Так как для решения задачи необходимо составить алгоритм и разработать программу, которая будет работать на основе расчетов.
- В графах основными элементами являются вершины и связи (ребра) между этими вершинами. Граф может изображать сеть улиц в городе, вершины графа -- перекрестки, стрелками обозначены улицы с разрешенным направлением движения. (Улицы могут быть с односторонним и двусторонним движением.)
- На этом применение графов не заканчивается. Можно составить граф любой позиционной игры: шахмат, шашек, «крестиков - ноликов».
- Здесь позиции станут вершинами, а направленные отрезки между ними будут означать, что одним ходом можно перейти от одной позиции к другой, по направлению стрелки.
- Графами являются блок - схемы программ для ЭВМ, а так же любые электрические цепи или электрическая сеть.
- Немало поводов для появления графов и в математике. Наиболее очевидный пример - любой многогранник в трёхмерном пространстве.
- Помимо этого графы можно использовать в: в психологии при исследовании межличностных отношений в группах, представить схему метрополитена, железных дорог, авиалиний, блок-схем, генеалогического древа.
- Постановка задачи
- Необходимо разработать программу с графическим интерфейсом, реализующую нахождение минимального остова графа по алгоритм Краскала.
- Необходимо написать и отладить программу, выполняющую нахождение остова минимального веса. В результате работы программы должен строиться граф и остов минимального веса с указанием всех вершин, а так же выводится матрица смежности для графа и остова со всеми значениями длин ребер. Программа должна позволять интерактивно изменять значения длины ребер, связывающих вершины графа. Программа должна иметь интуитивно понятный интерфейс, и меню помощи.
- Программа так же должна обладать дополнительными функциями, такими как: заполнение матрицы случайными числами, подсчет длины графа, меню помощи, оповещение о несуществовании остова.
- Сама программа должна быть реализована на языке Visual C (C++), так как этот язык имеет свои достоинства. Одно из главных достоинств - это высокое быстродействие написанной программы.
Теоретическая часть
Граф -- абстрактный математический объект, представляющий собой множество вершин графа и набор рёбер, то есть соединений между парами вершин.
Матрица смежности -- один из способов представления графа в виде матрицы. Матрица смежности неориентированного графа симметрична, а значит обладает действительными собственными значениями и ортогональным базисом из собственных векторов. Набор её собственных значений называется спектром графа, и является основным предметом изучения спектральной теории графов.
Остовное дерево -- ациклический связный подграф данного связного неориентированного графа, в который входят все его вершины.
Минимальное остовное дерево (или минимальное покрывающее дерево) в связанном взвешенном неориентированном графе -- это остовное дерево этого графа, имеющее минимальный возможный вес, где под весом дерева понимается сумма весов входящих в него рёбер.
Таким образом остовов у графа может быть несколько, а минимальный остов только один.
Алгоритм Краскала -- эффективный алгоритм построения минимального остовного дерева взвешенного связного неориентированного графа.
Необходимо написать программу, которая построит минимальный вес остова графа по алгоритму Краскала.
Пользователь должен задать матрицу смежности в программе, после чего нажать на кнопку «Расчет» для нахождения минимального веса остова графа, если таблицу слишком долго заполнять, то у пользователя должна быть возможность заполнения матрицы смежности случайными числами. Так же если человек первый раз видит программу у него должна быть возможность просмотреть описание программы и назначение каждой из клавиш.
После ввода всех необходимых данных программа должна построить граф и на основе алгоритма Краскала выводить матрицу смежности минимального остова графа и на основе этой матрицы выделить отличающимся цветом минимальный остов, по возможности вывести вес ребер, их сумму. Если граф сложный и остов большой, так, что чисел слишком много у пользователя должна быть возможность отключить численный вывод веса ребер на рисунке.
Описание алгоритма решения поставленной задачи
Для решения задачи используется алгоритм Краскала.
Рисунок 1. Алгоритм Краскала
алгоритмизация программа краскал
Вначале текущее множество рёбер устанавливается пустым. Затем, пока это возможно, проводится следующая операция: из всех рёбер, добавление которых к уже имеющемуся множеству не вызовет появление в нём цикла, выбирается ребро минимального веса и добавляется к уже имеющемуся множеству. Когда таких рёбер больше нет, алгоритм завершён. Подграф данного графа, содержащий все его вершины и найденное множество рёбер, является его остовным деревом минимального веса.
Существуют два способа окончания работы алгоритма Краскала. Если мы найдем V- 1 ребер, то мы уже построили остовное дерево и можем остановиться. Если мы просмотрим все вершины и не найдем V-- 1 древесных ребер, то это означает, что граф не является связным. Алгоритм приведен на рисунке 1
Ручной просчет
Рисунок 2. Начальный граф
Имеется граф (рис. 2), необходимо найти остов минимального веса.
Начало алгоритма Краскала:
Каждую вершину примем за отдельную компоненту.
Найдем ребро, имеющее минимальный вес и соединим две вершины.(рис. 3)
Возьмем следующее ребро, имеющее минимальный вес, так, чтобы оно соединяло две разные компоненты. (рис. 4)
После опять выбираем следующую по минимальному весу ребро и соединяем две разные компоненты. (рис. 5)
Рисунок 3
Рисунок 4
Рисунок 5
Следующее по минимальности веса ребро имеет 20 единиц, соединяющее 1 и 5 вершину, но их соединить нельзя, так как это ребро соединяет одну и ту же компоненту графа. Поэтому берем следующее ребро, которое имеет вес в 25 единиц и соединяет 3 и 4 вершину. Оно уже соединяет разные компоненты, а значит это ребро нужно использовать. (рис. 6)
Рисунок 6
Мы соединили 5 вершин 4 ребрами, поэтому нужно прекратить поиск следующих ребер, потому что минимальный остов уже построен.
Конец алгоритма Краскала.
Описание программы
Программа строит минимальный вес остова графа по алгоритму Краскала.
Язык программирования, на котором написана программа - Visual C(C++)
Пользователь должен задать матрицу смежности в программе с помощью ползунка, затем нажать на кнопку «ОК», после чего нажать на кнопку «Расчет» для нахождения минимального веса остова графа, если таблицу слишком долго заполнять, то у пользователя есть возможность заполнения матрицы смежности случайными числами. Так же если человек первый раз видит программу у него есть возможность просмотреть описание программы и назначение каждой из клавиш, нажав на кнопку «Помощь».
После ввода всех необходимых данных программа строит граф и на основе алгоритма Краскала выводит матрицу смежности минимального остова графа и на основе этой матрицы выделяет красным цветом минимальный остов, по возможности выводит вес ребер, их сумму. Если граф сложный и остов большой, так, что чисел слишком много у пользователя есть возможность отключить численный вывод веса ребер на рисунке.
Интерфейс программы (рис.7)
Рисунок 7. Интерфейс программы
Вверху находится панель управления, состоящая из четырех кнопок:
«ОК» - задать матрицу смежности (Существующая матрица будет обнулена)
«Расчет» - произвести расчет поиска минимального остова
«Рандом» - заполнить матрицу случайными числами
«Помощь» - вызвать меню помощи.
Ниже располагается сама матрица смежности графа.
Под этой матрицей расположена матрица смежности минимального остова, которая строится по мере расчета поиска минимального остова.
Программа может вывести помощь начинающему пользователю.(рис. 8)
Рисунок 8. Помощь
Слева от двух матриц расположено поле вывода графического изображения графа со всеми вершинами и связями. При возможности можно отключить или включить отображение веса ребер минимального остова. Так же программа выводит численный вес всего остова. (рис. 9)
Рисунок 9. Отображение веса
Тесты
Удачный запуск программы, остов минимального веса построен верно.(рис. 10)
Рисунок 10. Удачный запуск
Не удачный запуск программы, остов минимального веса не существует, так как граф разорван, программа выдает ошибку. (рис. 11)
Рисунок 11. Вывод ошибки
Литература
1. Алгоритм Краскала // Википедия. [2017--2017]. Дата обновления: 25.10.2017. URL: http://ru.wikipedia.org/?oldid=88545520
2. URL:https://forkettle.ru/vidioteka/programmirovanie-i-set/algoritmy-i-struktury-dannykh/108-sortirovka-i-poisk-dlya-chajnikov/5970-grafy-poisk-ostova-minimalnogo-vesa
3. Пауэрс Л., Снелл М . “Microsoft Visual Studio” 2008г.
4. Чарльз Петцольд “Программирование с использованием Microsoft Windows Forms”
Размещено на Allbest.ru
...Подобные документы
Программа формирования матрицы смежности по заданному списку окрестностей вершин ориентированного графа. Формирование динамического списка дуг ориентированного графа по заданному списку окрестностей. Анализ временной и емкостной сложности алгоритма.
курсовая работа [8,1 M], добавлен 07.09.2012Математические графы, области их применения. Способы раскраски вершин и ребер графов, задачи на их применение. Разработка алгоритма, работающего на основе операций с матрицей смежности. Описание логической структуры программы. Пример зарисовки графа.
курсовая работа [145,5 K], добавлен 27.01.2013Реализация алгоритмов Краскала и Прима для построения минимального остовного дерева взвешенного связного неориентированного графа. Анализ трудоемкости алгоритмов, их псевдокоды и тестирование. Применение алгоритма Краскала на практике в работе авиалиний.
курсовая работа [142,0 K], добавлен 25.12.2012Теоретическое обоснование теории графов. Методы нахождения медиан графа. Задача оптимального размещения насосной станции для полива полей. Алгоритм Флойда, поиск суммарного расстояния до вершин. Функция нахождения индекса минимального значения в массиве.
курсовая работа [336,8 K], добавлен 28.05.2016Разработка программной реализации решения задачи о минимальном покрывающем дереве графа (построение минимального остова), используя алгоритмы Прима и Крускала. Подсчет времени работы алгоритмов. Их программная реализация на практике с помощью Delphi 7.
курсовая работа [538,1 K], добавлен 29.08.2010Вершина в заданном графе с различным количеством вершин. Результаты обработки графа программой MyProject.exe. Сопряжение модулей программы. Модуль вывода матрицы смежности. Тесты черного ящика. Комбинаторное покрытие условий тестами черного ящика.
курсовая работа [44,8 K], добавлен 13.10.2012История и термины теории графов. Описание алгоритма Дейкстры. Математическое решение проблемы определения кратчайшего расстояния от одной из вершин графа до всех остальных. Разработка программы на объектно-ориентированном языке программирования Delphi 7.
контрольная работа [646,9 K], добавлен 19.01.2016Особенности создания виртуальных лабораторий с точки зрения дискретной математики. Специфика разработки виртуальной лаборатории, реализующей волновой алгоритм для поиска минимального маршрута и определения метрических характеристик заданного графа.
курсовая работа [3,2 M], добавлен 15.08.2012Создание программного обеспечения для реализации алгоритма, позволяющего находить кратчайшее расстояние от одной из вершин графа до всех остальных, при условии, что ребра графа не имеют отрицательного веса. Примеры выполнения алгоритма Дейкстра.
курсовая работа [1,1 M], добавлен 11.01.2015Теория графов. Основные понятия проверяющего теста для некоторой системы. Теорема проверяющего теста, критерий минимальности и его доказательство, алгоритм построения минимального проверяющего теста. Программа по исходной матрице смежности графа.
курсовая работа [439,9 K], добавлен 14.07.2012Разработка проекта приложения, при помощи которого можно задать граф с любым количеством вершин и ребер, построить его графическое изображение, автоматически рассчитать ребра полного графа. Выбор состава программных средств. Руководство пользователя.
курсовая работа [466,5 K], добавлен 21.11.2015Определение понятий - клика, подграф, неориентированный граф. Реализация алгоритма Брона-Кербоша псевдокодом для быстрого поиска клик. Описание классов для выполнения операций над графом и его матрицей. Использование в программе нестандартных компонентов.
курсовая работа [410,1 K], добавлен 02.01.2011Общее понятие графа, его виды и сущность вершинного покрытия. Написание точного алгоритма решения задачи о надежности сети, нахождение минимального покрытия. Реализация данного алгоритма на языке TurboC++. Код программы, решающий поставленную задачу.
курсовая работа [1,3 M], добавлен 27.06.2014Области применения теории графов. Алгоритм решения задачи поиска инвариантного и полного графа. Реализация программы с графическим интерфейсом пользователя на основе алгоритма. Реализация редактора графа и вывод полученных результатов в понятной форме.
курсовая работа [493,3 K], добавлен 27.12.2008Засвоєння засобів аналізу трудомісткості обчислювальних алгоритмів. Побудова графа алгоритму з отриманої блок-схеми. Мінімізація графа, його подання у вигляді стохастичної матриці. Знаходження кількості звернень до файлів за допомогою Microsoft Excel.
лабораторная работа [681,5 K], добавлен 02.06.2011Этапы нахождения хроматического числа произвольного графа. Анализ примеров раскраски графа. Характеристика трудоемкости алгоритма раскраски вершин графа Мейниеля. Особенности графов, удовлетворяющих структуру графов Мейниеля, основные классы графов.
курсовая работа [1,1 M], добавлен 26.06.2012Граф - совокупность точек и линий, в которой каждая линия соединяет две точки. Представление графов в ЭВМ. Составление алгоритм Краскала с использованием графов с оперделением оптимального пути прокладки телефонного кабеля в каждый из 8 городов.
курсовая работа [241,5 K], добавлен 23.12.2009Практическое использование алгоритмов для нахождения минимального пути в лабиринте. Разработка программы на языке С++ и в среде Visual C++. Основные способы поиска пути: метод волны и приоритетов. Описание разработанных функций и инструкция пользователя.
дипломная работа [54,3 K], добавлен 16.03.2012Модель распространения прав доступа Take-Grant, применяемая для систем защиты, использующая дискреционное разграничение доступа. Матрица смежности графа доступов. Возможность получения некоторого права субъектом на объект. Алгоритм работы программы.
лабораторная работа [846,2 K], добавлен 21.01.2014Разработка и реализация универсальной программной коллекции для абстрактного типа данных (АТД) "Простой статический граф" с графическим интерфейсом. Особенности использование ее для решения задач для неориентированных, ориентированных и взвешенных графов.
курсовая работа [502,3 K], добавлен 24.09.2013