В данной работы реализован алгоритм Дейкстры-Прима на языке С#, с графической, пошаговой отрисовкой алгоритма на WinForms. Чтобы запустить проект требуется устновить Visual Studio 2013 или новее.
В ходе данного курсового проекта были детально описаны основные понятия теории графов, также были приведены основные виды представления графов при программировании. Для реализации графа в программе был выбран список дуг, так как данный метод предназначен для неориентированных взвешенных графов.
Также был проанализирован Алгоритм Крускала, приведен и описан пример работы данного алгоритма. Помимо этого, были объяснены принципы работ других похожих алгоритмов, таких как алгоритм Борувки и алгоритм Прима, и к ним также приведены примеры. После этого, было описано основное отличие алгоритма Крускала от других, которая заключается в решении задачи пересекающихся множеств.
Далее была создана и проанализирована программа реализующая и визуализирующая алгоритм Крускала, она состояла из двух файлов. В первом файле представлен граф, а во втором его визуализация и визуализация алгоритма Прима. Все методы класса реализующего граф, а также функционал интерфейса, который включал себя различные кнопки, каждая из которых выполняла определенную задачу, были подробно описаны, а также был продемонстрирован их код или же скриншот. При запуске данной программы требуется ввести начальные данные, после чего нажать соответствующую кнопку и произойдет визуализация алгоритма Прима для заданного графа.
Содержание пояснительной записки:
Фрагмент программного кода:
private void button2_Click(object sender, EventArgs e)
{
int a1, a2, a3;
a1 = Convert.ToInt32(textBox2.Text);
a2 = Convert.ToInt32(textBox3.Text); a3 = Convert.ToInt32(textBox4.Text);
this.textBox2.Text = "";this.textBox3.Text = "";
this.textBox4.Text = "";g.AddVer(rebra,a1,a2,a3);
rebra++;
Graphics u = pictureBox1.CreateGraphics();
Pen k = new Pen(Color.DarkRed, 2);
System.Drawing.Fontshr = new System.Drawing.Font(FontFamily.GenericSansSerif, 8.0F, FontStyle.Regular);
u.DrawLine(k, cordx[a1 - 1], cordy[a1 - 1], cordx[a2 - 1], cordy[a2 - 1]);
u.DrawString(Convert.ToString(a3),shr, Brushes.DarkOrange,(cordx[a2 - 1] + cordx[a1 - 1]) / 2+7, (cordy[a2 - 1] + cordy[a1 - 1]) / 2+3);
u.FillEllipse(Brushes.White, cordx[a1 - 1] - 9, cordy[a1 - 1] - 9, 18, 18);
u.FillEllipse(Brushes.White, cordx[a2 - 1] - 9, cordy[a2 - 1] - 9, 18, 18);
u.DrawString(Convert.ToString(a1), shr, Brushes.Blue, cordx[a1 - 1] - 5, cordy[a1 - 1]-9);
u.DrawString(Convert.ToString(a2), shr, Brushes.Blue, cordx[a2 - 1] - 5, cordy[a2 - 1]-9); }
Содержание архива:
- Исходный код приложения на языке программирования С#
- Пояснительная записка (29 страниц)
Телеграм
-