ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.11.2023
Просмотров: 72
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
КУРСОВОЙ ПРОЕКТТЕМА: ПОИСК ЭЙЛЕРОВОЙ ЦЕПИ ГРАФА Руководитель _________________________________________________________ подпись, датаИсполнитель студент ________________________________________________ подпись, датаТула 2023Содержание
Содержание 2
Введение 2
2 Схема алгоритма 4
Данный раздел содержит схемы алгоритмов. 4
2.1 Пошаговый алгоритм и его словесное описание 4
2.1Схема алгоритма 5
3.1 Входные данные 6
3.2 Выходные данные 6
3Аспекты реализации на языке C# 6
5 Руководство пользователя 6
6.2 Тест второй 7
Заключение 8
Список использованных источников 9
Приложение А 10
ВведениеДанная работа нацелена на проверку существования эйлерова цикла в графе.Эйлеров цикл - это эйлеров путь, являющийся циклом.Эйлеров путь (эйлерова цепь) в графе - это путь, проходящий по всем рёбрам графа и притом только по одному разу. Ясно, что эйлеров цикл содержит не только все ребра по одному разу, но и все вершины графа (возможно, по несколько раз). Очевидно также, что эйлеровым циклом может быть только связный граф.1 Постановка задачи курсового проектированияРазработка алгоритма и выполнение его программно для проверки существования эйлеровой цепи в графе. 2 Схема алгоритма Данный раздел содержит схемы алгоритмов. 2.1 Пошаговый алгоритм и его словесное описаниеСуть алгоритма, необходимого для решения задачи, в следующем. Пусть STACK – упорядоченное множество, которое будет содержать вершины графа, куда изначально помещается одна произвольная вершина. При каждой итерации вытаскиваем из STACK вершину и заносим в STACK все смежные с ней вершины, которые еще не занесены в массивaccess. Массив accessсодержит значения, которые указывают на достижимость i-той вершины графа. Повторяем эти действия до тех пор, пока STACKне пуст. Если все элементы accessистины, то следовательно можно добраться до каждой из вершин – граф связный. Далее проверяем количество ребер каждой вершины. Если у какой-либо вершины количество ребер нечетное, следовательно, по определению эйлерова цикла, он не существует, а если количество ребер четное, то эйлеров цикл существует.
Рисунок 2 – Результат работы программы 6.2 Тест второйБыл создан граф с 6-ю вершинами. Эйлеров цикл в этом графе существует. Матрица смежности и полученный результат на рисунке 3.Рисунок 3– Результат работы программы ЗаключениеВ данной курсовой работе разработан алгоритм, позволяющий проверить существования эйлерова цикла в графе, и его программная реализация на языке C#. В результате тестирования была проверена правильность работы разработанного алгоритма и созданного приложения. Список использованных источников1. Эйлеров цикл [Электронный ресурс]. – Режим доступа: http://ru.wikipedia.org/wiki/Эйлеров_цикл Приложение А(обязательное)private bool Way(){bool result = true;Stack dots = new Stack();
bool[] access = new bool[V];
access[0] = true;
dots.Push(0);
while (dots.Count > 0)
{
int current = dots.Pop();
for (int i = 0; i < V; i++)
{
if (mas[current, i] != 0 && access[i] == false)
{
dots.Push(i);
access[i] = true;
}
}
}
foreach (bool b in access)
if (b == false)
result = false;
return result;
}
private void button2_Click(object sender, EventArgs e)
{
mas = new double[V, V];
for (int i = 0; i < V; i++)
{
for (int j = 0; j < V; j++)
{
if (dataGridView1[j, i].Value != null)
mas[i, j] = Convert.ToInt32(dataGridView1[j, i].Value);
else
mas[i, j] = 0;
}
}
if (Way())
{
for (int i = 0; i < V; i++)
{
int kol = 0;
for (int j = 0; j < V; j++)
{
if (mas[i, j] != 0)
kol++;
}
if (kol % 2 != 0)
{
MessageBox.Show("Эйлеров цикл не существует");
return;
}
}
MessageBox.Show("Эйлеров цикл существует");
}
else
{
MessageBox.Show("Эйлеров цикл не существует");
}
}
Содержание 2
Введение 2
2 Схема алгоритма 4
Данный раздел содержит схемы алгоритмов. 4
2.1 Пошаговый алгоритм и его словесное описание 4
2.1Схема алгоритма 5
3.1 Входные данные 6
3.2 Выходные данные 6
3Аспекты реализации на языке C# 6
5 Руководство пользователя 6
6.2 Тест второй 7
Заключение 8
Список использованных источников 9
Приложение А 10
- Схема алгоритма
- Аспекты реализации на языке C#
Рисунок 2 – Результат работы программы 6.2 Тест второйБыл создан граф с 6-ю вершинами. Эйлеров цикл в этом графе существует. Матрица смежности и полученный результат на рисунке 3.Рисунок 3– Результат работы программы ЗаключениеВ данной курсовой работе разработан алгоритм, позволяющий проверить существования эйлерова цикла в графе, и его программная реализация на языке C#. В результате тестирования была проверена правильность работы разработанного алгоритма и созданного приложения. Список использованных источников1. Эйлеров цикл [Электронный ресурс]. – Режим доступа: http://ru.wikipedia.org/wiki/Эйлеров_цикл Приложение А(обязательное)private bool Way(){bool result = true;Stack
bool[] access = new bool[V];
access[0] = true;
dots.Push(0);
while (dots.Count > 0)
{
int current = dots.Pop();
for (int i = 0; i < V; i++)
{
if (mas[current, i] != 0 && access[i] == false)
{
dots.Push(i);
access[i] = true;
}
}
}
foreach (bool b in access)
if (b == false)
result = false;
return result;
}
private void button2_Click(object sender, EventArgs e)
{
mas = new double[V, V];
for (int i = 0; i < V; i++)
{
for (int j = 0; j < V; j++)
{
if (dataGridView1[j, i].Value != null)
mas[i, j] = Convert.ToInt32(dataGridView1[j, i].Value);
else
mas[i, j] = 0;
}
}
if (Way())
{
for (int i = 0; i < V; i++)
{
int kol = 0;
for (int j = 0; j < V; j++)
{
if (mas[i, j] != 0)
kol++;
}
if (kol % 2 != 0)
{
MessageBox.Show("Эйлеров цикл не существует");
return;
}
}
MessageBox.Show("Эйлеров цикл существует");
}
else
{
MessageBox.Show("Эйлеров цикл не существует");
}
}