Алгоритм Прима
Программная реализация алгоритма построения минимального остовного дерева взвешенного связного неориентированного графа. Использование языка программирования C#, графического интерфейса и программной платформы .NET Framework для разработки приложения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 21.02.2019 |
Размер файла | 813,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Курсовой проект
по курсу "Логика и основы алгоритмизации в инженерных задачах"
на тему "Алгоритм Прима"
Содержание
- Введение
- 1. Постановка задачи
- 2. Теоретическая часть задания
- 3. Описание алгоритма решения поставленной задачи
- 4. Пример ручного расчета задачи и вычислений
- 5. Описание программы
- 6. Тесты
- Заключение
- Список литературы
- Приложение А. Листинги программы
- Приложение B. Результат работы программы
Введение
Первая работа по теории графов, принадлежащая известному швейцарскому математику Л. Эйлеру, появилась в 1736 г. В начале теория графов казалась довольно незначительным разделом математики, так как она имела дело в основном с математическими развлечениями и головоломками. Однако дальнейшее развитие математики и особенно её приложений дало сильный толчок развитию теории графов.
В настоящее время эта теория находит многочисленное применение в разнообразных практических вопросах: при установлении разного рода соответствий, при решении транспортных задач, задач о потоках в сети нефтепроводов, в программировании и теории игр, теории передачи сообщений. Теория графов теперь применяется и в таких областях, как экономика, психология и биология.
Тема данной курсовой является алгоритм Прима - алгоритм построения минимального остовного дерева взвешенного связного неориентированного графа. Алгоритм впервые был открыт в 1930 году чешским математиком Войцехом Ярником, позже переоткрыт Робертом Примом в 1957 году, и, независимо от них, Э. Дейкстрой в 1959 году.
Построение начинается с дерева, включающего в себя одну (произвольную) вершину. В течение работы алгоритма дерево разрастается, пока не охватит все вершины исходного графа. На каждом шаге алгоритма к текущему дереву присоединяется самое лёгкое из рёбер, соединяющих вершину из построенного дерева и вершину не из дерева.
1. Постановка задачи
Пользователь должен осуществить ввод матрицы весов исходного графа. По данной матрице весов будет построен и выведен граф. Затем будет найден остов исходного графа и выведен в интерфейсе программы.
Для осуществления ввода матрицы весов будет использоваться клавиатура, а также мышь для взаимодействия с интерактивной частью программы.
Программа должна иметь простой и понятный пользовательский интерфейс. С помощью графических библиотек будет построен исходный граф и граф "остов".
В качестве среды разработки была выбрана программа MS Visual Studio 2017, а языком программирования - C#. Созданная программа будет ориентирована на операционную систему MS Windows.
2. Теоретическая часть задания
Нам дана матрица весов С(G) графа G. Необходимо найти матрицу весов полученного остова и величину минимального остова.
Для того, чтобы найти остов, а также величину его минимального значения, необходимо выполнить следующие действия:
Выберем в графе G ребро х = v,w минимального веса и построим дерево G1 = (V1,X1), полагая V1 = {v,w}, X1 = {х}.
Если дерево Gк уже построено и k < n-1, то среди ребер, соединяющих вершины этого дерева с вершинами графа G, не входящими в Gк, выбираем ребро y минимального веса. Строим дерево Gк+1, присоединяя к Gк ребро y вместе с его не входящим в Gк концом.
По введенной пользователем матрице весов будет построен соответствующий граф G (рис. 1).
Затем исходя из той же матрицы будет найдена матрица весов графа остова T, путем перебора всех соединений вершин и выбора ребер с минимальным весом так, что каждая вершина графа остова будет связана хотя бы с одной другой вершиной, при этом граф не будет иметь циклов. А также построен граф T по найденной матрице (рис. 2).
Рисунок 2 (а, б) - Граф G и граф T
3. Описание алгоритма решения поставленной задачи
Изначально была проведена работа с теорией по данной теме. В результате был найден подходящий алгоритм для решения поставленной задачи. Был спроектирован интерфейс
В качестве среды программирования был выбран программный продукт Visual Studio 2010.
В первую очередь, с помощью форм был разработан интерфейс, удовлетворяющий решению задачи.
Затем была написана функция ReadMatrix(), которая считывает введенную пользователем матрицу и заносит ее в двумерный массив. В процессе считывания матрицы осуществляется проверка на корректность ввода. В случае некорректного ввода будет выдано сообщение об ошибке. Блок-схема данной функции изображена на рисунке 3.
Если ввод матрицы осуществлен успешно, то данный массив передается в функцию Calculate(), в ходе которой по полученной матрице будет построена матрица остова, путем циклического перебора всех ребер на предмет минимального веса. Блок-схема данной функции изображена на рисунке 4.
Затем рассчитываются координаты вершин в PictureBox1 и PictureBox2. И по матрице веса остова, с помощью графической библиотеки Graphics, будет осуществлена отрисовка вершин и инцидентных им ребер, а также веса каждого ребра.
Помимо этого в программе реализована функция DrawBaseGraph(), которая осуществляет отрисовку исходного графа. Блок-схема данной функции изображена на рисунке 5 и рисунке 6.
Рисунок 3 - Блок-схема функции ReadMatrix()
Рисунок 4 - Блок-схема функции Calculate()
Рисунок 5 - Блок-схема функции DrawBaseGraph() Начало.
Рисунок 6 - Блок-схема функции DrawBaseGraph() Продолжение.
4. Пример ручного расчета задачи и вычислений
На рисунке 7 изображен граф, выбранный для ручного расчета.
Рисунок 7 - Граф для ручного расчета
Выберем произвольную вершину. Для примера возьмем вершину номер 1. Ей инцидентны ребра (с неиспользованными вершинами): 1-2(5), 1-3(1), 1-5(2). В скобках указан вес ребра. Ребро с наименьшим весом 1-3(1). Включим его и инцидентную ему вершину в дерево.
Вершинам 1 и 3 инцидентны ребра (с неиспользованными вершинами): 1-2(5), 1-5(2), 3-2(3), 3-4(4). Ребро с наименьшим весом 1-5(2). Включим его и инцидентную ему вершину в дерево.
Вершинам 1, 3 и 5 инцидентны ребра (с неиспользованными вершинами): 1-2(5), 3-2(3), 3-4(4), 5-4(11). Ребро с наименьшим весом 3-2(3). Включим его и инцидентную ему вершину в дерево.
Вершинам 1, 2, 3 и 5 инцидентны ребра (с неиспользованными вершинами): 3-4(4), 5-4(11). Ребро с наименьшим весом 3-4(4). Включим его и инцидентную ему вершину в дерево.
Все вершины графа включены в дерево. Работа алгоритма завершена.
5. Описание программы
При запуске программы выводится окно с текстовым полем для ввода матрицы весов исходного графа, с текстовым полем для вывода матрицы весов полученного остова, элементы для графического отображения построенных графов исходной матрицы и остова, а также кнопка для реализации алгоритма, построения графов и матрицы остова и кнопка очистки окна. (Рис. 8).
Рисунок 8- Исходное состояние
В верхнее текстовое поле пользователь должен ввести матрицу весов исходного графа. При нажатии на кнопку "Найти остов и построить граф", программа считывает матрицу, выводит матрицу весов остова, строит исходный граф G и остов T. (рис. 9)
Рисунок 9- Результат работы
При нажатии на кнопку очистить программа удаляет содержимое все элементов вывода, для осуществления повторного ввода.
6. Тесты
В качестве среды разработки была выбрана программа Visual Studio 2013. Для отладки использовались такие инструменты как точка останова, выполнение кода по шагам, анализ содержимого локальных и глобальных переменных.
Тестирование проводилось в рабочем порядке, в процессе разработки, после завершения написания программы. В ходе тестирования было выявлено и исправлено множество проблем, связанных с считыванием и отрисовкой графа.
Также были добавлены проверки, связанные с вводом исходной матрицы весов.
Если пользователь неправильно вводит исходную матрицу смежности (допускает ошибку при вводе или указывает не соответствующее количество вершин), то после нажатия на кнопку расчета выдаётся окно с соответствующей ошибкой (Рис. 10).
Рисунок 10 - Пример неверно введенных данных
Заключение
алгоритм граф интерфейс программирование
В ходе выполнения данной курсовой работы были получены навыки обработки графов на ПК, расчета основных параметров графов. Разработаны алгоритмы построения и обработки графов. Был изучен и реализован алгоритм Прима для нахождения остова исходного графа.
Были получены навыки разработки приложения на языке программирования C# и навыки работы с графическим интерфейсом, а также программной платформой.NET Framework.
Список литературы
1. Язык Си: Б.В. Керниган, Д.М. Ричи - Санкт-Петербруг, Невский диалект, 2003г.
2. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C# - Джеффри Рихтер, Издательство: Питер, 2012г.
3. Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн - Алгоритмы: построение и анализ, 2-е издание. Пер. с англ. - М.:Издательский дом "Вильямс", 2010. - с.653 - 656.
4. Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн Алгоритмы: построение и анализ 2е изд. "Вильямс", 2006.
5. С. Дасгупта, Х. Пападимитриу, У. Вазирани. Алгоритмы. Глава 4. Пути в графах. Москва Издательство МЦНМО 2014 перевод с Английского.
6. Лекции по теории графов / Под ред. В.А. Емеличева., О.Н. Мельникова, В.И. Сарванова, Р.И. Тышкевич. - Москва, Наука, Гл. ред. физ.-мат. лит., 1990г. - 384 с.
Приложение А. Листинги программы
Файл Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections.Generic;
namespace ILCourseGparh
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int MWidth, MHieght,i=0,j=0;
List<int> VershX = new List<int>();
List<int> VershY = new List<int>();
List<int> DrawCoordinatsX = new List<int>();
List<int> DrawCoordinatsY = new List<int>();
List<int> weight = new List<int>();
int way = 0;
int min = 100, positionI = 0, positionJ = 0, count, numelement = 0;
List<int> OriginVershX = new List<int>();
List<int> OriginVershY = new List<int>();
List<int> OriginDrawCoordinatsX = new List<int>();
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
List<int> OriginDrawCoordinatsY = new List<int>();
List<int> Oweight = new List<int>();
private void button2_Click(object sender, EventArgs e)
{
Graphics drawc_ = this.CreateGraphics();
drawc_.FillRectangle(Brushes.WhiteSmoke, 0, 0, 1000, 1000);
textBox1.Text = "";
textBox2.Text = "";
pictureBox1.Image = null;
pictureBox2.Image = null;
VershX.RemoveRange (0,VershX.Count);
VershY.RemoveRange(0, VershY.Count);
DrawCoordinatsX.RemoveRange(0, DrawCoordinatsX.Count);
DrawCoordinatsY.RemoveRange(0, DrawCoordinatsY.Count);
weight.RemoveRange(0, weight.Count);
OriginVershX.RemoveRange(0, OriginVershX.Count);
OriginVershY.RemoveRange(0, OriginVershY.Count);
OriginDrawCoordinatsX.RemoveRange(0, OriginDrawCoordinatsX.Count);
OriginDrawCoordinatsY.RemoveRange(0, OriginDrawCoordinatsY.Count);
Oweight.RemoveRange(0, Oweight.Count);
MHieght = 0; MWidth = 0;
count = 0;
positionI = 0; positionJ = 0; count=0; numelement = 0;
way = 0;
}
double angle, plus, xc, yc;
private void read_mtarix(object sender, EventArgs e)
{
try
{
char[] CharV = textBox1.Text.ToCharArray();
MHieght = textBox1.Lines.Length;
for (int i = 0; i < CharV.Length; i++)
{
if (CharV[i] == ' ') continue;
else
{
if ((CharV[i] != '\r') && (CharV[i + 1] != ' ') && (CharV[i + 1] != '\r'))
{
MWidth++;
i++;
continue;
}
if ((CharV[i] != '\r'))
{
MWidth++;
}
else
{
break;
}
}
}
if (MHieght == MWidth)
{
int[,] vershini = new int[MWidth, MHieght];
int[,] OSTOV = new int[MWidth, MHieght];
int[,] M = new int[MWidth, MHieght];
for (int i = 0, x = 0, y = 0; i < CharV.Length; i++)
{
if (CharV[i] == ' ') continue;
else if ((CharV[i] != '\r') && (CharV[i] != '\n'))
{
if (i < CharV.Length - 1)
{
if (((CharV[i] != '\r') && (CharV[i] != '\n')) && ((CharV[i + 1] != '\r') && (CharV[i + 1] != '\n') && (CharV[i + 1] != ' ')))
{
string T1 = Convert.ToString(CharV[i]);
string T2 = Convert.ToString(CharV[i + 1]);
vershini[x, y] = int.Parse(T1 + T2);
y++;
i++;
}
else
{
vershini[x, y] = int.Parse(Convert.ToString(CharV[i]));
y++;
}
}
if (y >= MWidth) y = 0;
}
else
{
i++;
x++;
}
}
DrawBaseGraph(vershini);
Calculate(vershini, OSTOV,M);
}
else { MessageBox.Show("Некорректно введена матрица", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); }
}
catch
{
MessageBox.Show("Некорректно введена матрица.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
}
}
public void Calculate(int[,] vershini, int [,]OSTOV, int[,]M)
{
System.Drawing.SolidBrush elipse = new System.Drawing.SolidBrush(System.Drawing.Color.DeepSkyBlue);
System.Drawing.Graphics SolidElipse = pictureBox1.CreateGraphics();
System.Drawing.Font Font = new System.Drawing.Font("Arial", 12);
System.Drawing.Font Font2 = new System.Drawing.Font("Arial", 16);
System.Drawing.Font Font3 = new System.Drawing.Font("Arial", 12);
Graphics GrapWriterr = pictureBox1.CreateGraphics();
Graphics TextWriterr = this.CreateGraphics();
Pen GP = new Pen(Color.Red, 2);
count = MHieght;
j = 0; i = 0;
for(int i=0; i < MHieght; i++)
{
M[i, 0] = vershini[i, 0];
M[0, i] = vershini[0, i];
}
i = 0;
j = 0;
for (int d = 0; d < MWidth-1; d++)
{
for(int i=0;i<MWidth;i++)
{
for (int j = 0; j < MWidth; j++)
{
if ((M[i, j] < min) && (M[i, j] >= 1))
{
min = M[i, j];
positionI = i;
positionJ = j;
}
}
} ;
OSTOV[positionJ, positionI] = min;
OSTOV[positionI, positionJ] = min;
vershini[positionI, positionJ] = 0;
vershini[positionJ, positionI] = 0;
for (int i = 0; i < MHieght; i++)
{
M[i, positionJ] = vershini[i, positionJ];
M[positionJ, i] = vershini[positionJ, i];
M[i, positionI] = vershini[i, positionI];
M[positionI, i] = vershini[positionI, i];
}
numelement++;
min = 100; j = 0; count = MHieght;
}
numelement++;
for (i = 0; i < MHieght; i++)
{
for (j = 0; j < MWidth; j++)
{
textBox2.Text = textBox2.Text + OSTOV[i, j] + " ";
}
textBox2.Text = textBox2.Text + "\r\n";
}
weight.Add(0);
VershX.Add(0);
VershY.Add(0);
DrawCoordinatsX.Add(0);
DrawCoordinatsY.Add(0);
j = 1;
for (i = 1; i < MHieght + 1; i++, j = 1)
{
for (j = j + i; j < MWidth + 1; j++)
{
if (OSTOV[i - 1, j - 1] != 0)
{
weight.Add(OSTOV[i - 1, j - 1]);
VershX.Add(i);
VershY.Add(j);
}
}
}
angle = 360 / MHieght;
plus = angle;
for (i = 1; i <= MHieght; i++)
{
xc = 120 + (98 * Math.Cos((angle / 180D) * Math.PI));
yc = 120 + (98 * Math.Sin((angle / 180D) * Math.PI));
angle = angle + plus;
DrawCoordinatsX.Add(Convert.ToInt32(xc)); DrawCoordinatsY.Add(Convert.ToInt32(yc));
}
for (i = 1; i < VershX.Count; i++)
{
GrapWriterr.DrawLine(GP, DrawCoordinatsX[VershX[i]], DrawCoordinatsY[VershX[i]], DrawCoordinatsX[(VershY[i])], DrawCoordinatsY[VershY[i]]);
string num = Convert.ToString(weight[i]);
GrapWriterr.DrawString(num, Font2, Brushes.Black, ((DrawCoordinatsX[VershX[i]] + DrawCoordinatsX[(VershY[i])]) / 2) - 8, ((DrawCoordinatsY[VershX[i]] + DrawCoordinatsY[(VershY[i])]) / 2) - 10);
}
for (int i = 1; i <= numelement; i++)
{
string num = Convert.ToString(i);
SolidElipse.FillEllipse(elipse, new System.Drawing.Rectangle(DrawCoordinatsX[i] - 13, DrawCoordinatsY[i] - 13, 26, 26));
GrapWriterr.DrawString(num, Font, Brushes.Black, DrawCoordinatsX[i] - 8, DrawCoordinatsY[i] - 10);
}
for (int i = 0; i < weight.Count; i++)
way += weight[i];
string ways;
ways = "Величина минимального остова = " + Convert.ToString(way);
TextWriterr.DrawString(ways, Font3, Brushes.Black, 300, 470);
}
public void DrawBaseGraph(int[,] Overshini)
{
System.Drawing.SolidBrush elipse = new System.Drawing.SolidBrush(System.Drawing.Color.DeepSkyBlue);
System.Drawing.Graphics SolidElipse = pictureBox2.CreateGraphics();
System.Drawing.Font Font = new System.Drawing.Font("Arial", 12);
System.Drawing.Font Font2 = new System.Drawing.Font("Arial", 16);
Graphics GrapWriterr = pictureBox2.CreateGraphics();
Pen GP = new Pen(Color.Green, 2);
double angle, plus, xc, yc;
Oweight.Add(0);
OriginVershX.Add(0);
OriginVershY.Add(0);
OriginDrawCoordinatsX.Add(0);
OriginDrawCoordinatsY.Add(0);
j = 1;
for (i = 1; i < MHieght + 1; i++, j = 1)
{
for (j = j + i; j < MWidth + 1; j++)
{
if (Overshini[i - 1, j - 1] != 0)
{
Oweight.Add(Overshini[i - 1, j - 1]) ;
OriginVershX.Add(i);
OriginVershY.Add(j);
}
}
}
angle = 360 / MHieght;
plus = angle;
for (i = 1; i <= MHieght; i++)
{
xc = 120 + (98 * Math.Cos((angle / 180D) * Math.PI));
yc = 120 + (98 * Math.Sin((angle / 180D) * Math.PI));
angle = angle + plus;
OriginDrawCoordinatsX.Add(Convert.ToInt32(xc)); OriginDrawCoordinatsY.Add(Convert.ToInt32(yc));
}
for (i = 1; i < OriginVershX.Count; i++)
{
GrapWriterr.DrawLine(GP, OriginDrawCoordinatsX[OriginVershX[i]], OriginDrawCoordinatsY[OriginVershX[i]], OriginDrawCoordinatsX[(OriginVershY[i])], OriginDrawCoordinatsY[OriginVershY[i]]);
string num = Convert.ToString(Oweight[i]);
GrapWriterr.DrawString(num, Font2, Brushes.Black, ((OriginDrawCoordinatsX[OriginVershX[i]] + OriginDrawCoordinatsX[(OriginVershY[i])]) / 2) - 8, ((OriginDrawCoordinatsY[OriginVershX[i]] + OriginDrawCoordinatsY[(OriginVershY[i])]) / 2) - 10);
}
for (int i = 1; i <= MHieght; i++)
{
string num = Convert.ToString(i);
SolidElipse.FillEllipse(elipse, new System.Drawing.Rectangle(OriginDrawCoordinatsX[i] - 13, OriginDrawCoordinatsY[i] - 13, 26, 26));
GrapWriterr.DrawString(num, Font, Brushes.Black, OriginDrawCoordinatsX[i] - 8, OriginDrawCoordinatsY[i] - 10);
}
}
}
}
Приложение B. Результат работы программы
При вводе данной матрицы:
приложение выводит следующие данные (рис.11):
Рисунок 11 - Результат работы программы
Размещено на Allbest.ru
...Подобные документы
Реализация алгоритмов Краскала и Прима для построения минимального остовного дерева взвешенного связного неориентированного графа. Анализ трудоемкости алгоритмов, их псевдокоды и тестирование. Применение алгоритма Краскала на практике в работе авиалиний.
курсовая работа [142,0 K], добавлен 25.12.2012Разработка программной реализации решения задачи о минимальном покрывающем дереве графа (построение минимального остова), используя алгоритмы Прима и Крускала. Подсчет времени работы алгоритмов. Их программная реализация на практике с помощью Delphi 7.
курсовая работа [538,1 K], добавлен 29.08.2010Способы построения остовного дерева (алгоритма поиска в глубину и поиска в ширину). Вид неориентированного графа. Понятие и алгоритмы нахождения минимальных остовных деревьев. Последовательность построения дерева графов по алгоритмам Крускала и Прима.
презентация [22,8 K], добавлен 16.09.2013Применения языка логического программирования Пролог и языка программирования Haskell для реализации алгоритма поиска оптимального каркаса графа. Алгоритм Прима, преимущество перед другими алгоритмами нахождения оптимального каркаса, близких к полным.
курсовая работа [230,2 K], добавлен 13.06.2012Обоснование выбора языка и среды программирования. Обзор и анализ существующих программных решений. Разработка графического и пользовательского интерфейса. Алгоритм бинарного поиска. Методы добавления, удаления элемента из дерева и вывода на экран.
курсовая работа [1,3 M], добавлен 31.05.2016Особенности метода неопределенных множителей Лагранжа, градиентного метода и метода перебора и динамического программирования. Конструирование алгоритма решения задачи. Структурная схема алгоритма сценария диалога и описание его программной реализации.
курсовая работа [1010,4 K], добавлен 10.08.2014Обзор существующих технологий разработки программного обеспечения. Описание платформы NET Framework. Принцип работы платформы: компиляция исходного кода; процесс загрузки и исполнения кода; IL-код и верификация. Новые возможности платформы NET Framework.
реферат [30,7 K], добавлен 01.03.2011Общая характеристика сетевой игры с несколькими клиентами в программной среде MS Visual Studio 2010 на языке программирования C++ с использованием функций работы с сокетами. Реализация системного сервиса, разработки интерфейса, алгоритм его тестирования.
курсовая работа [495,3 K], добавлен 06.01.2013Программная реализация настольного приложения с использованием языка программирования C#. Проектирование и структура пользовательского интерфейса, требования к нему и оценка функциональности. Разработка руководства пользователя и его использование.
курсовая работа [297,6 K], добавлен 10.03.2015Проектирование игры "Жизнь" и ее реализация в среде разработки Visual Studio 2010, версия .Net Framework 4.0. Особенности языка программирования C#, основных принципов ООП на языке C#. Проектирование пользовательского интерфейса. Описание алгоритмов.
курсовая работа [990,0 K], добавлен 18.04.2013Разработка программы для рисования различных правильных многоугольников с помощью объектно-ориентированного языка программирования. Использование для разработки среды C++ Builder 6 и библиотеки VCL. Разработка интерфейса приложения и алгоритма его работы.
курсовая работа [616,4 K], добавлен 18.10.2010Основные расчеты электрических сетей. Отличия создаваемой программной системы. Обоснование выбора базовой платформы и языка программирования. Реализация программной системы. Принципы защиты информации. Передача мощных потоков энергии с минимумом потерь.
дипломная работа [882,3 K], добавлен 18.01.2014Знакомство с особенностями и этапами разработки приложения для платформы Android. Рассмотрение функций персонажа: бег, прыжок, взаимодействие с объектами. Анализ блок-схемы алгоритма генерации платформ. Способы настройки функционала рабочей области.
дипломная работа [3,4 M], добавлен 19.01.2017Виды социальных медиа. Критерии эффективности продвижения аккаунта в социальных сетях. Программная реализация алгоритма моделирования распространения информации в социальной сети "Twitter". Разработка клиентского приложения. Апробация интерфейса системы.
дипломная работа [5,4 M], добавлен 08.02.2016Основные методы объектно-ориентированного программирования поисковой системы. Выбор языка программирования и среды разработки приложения. Реализация паттерна, использование принципа сохраняемости. Описание пользовательского интерфейса поисковой системы.
курсовая работа [781,4 K], добавлен 29.04.2015Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.
курсовая работа [1,6 M], добавлен 19.04.2017Понятие графика функции и его представление на ЭВМ. Алгоритм реализации, блок-схема и функциональные тесты графического метода решения частного случая задачи нелинейного программирования, его математическая модель. Диалог программы с пользователем.
курсовая работа [1,6 M], добавлен 15.05.2012Исследование симметричных алгоритмов блочного шифрования. Минусы и плюсы алгоритма IDEA. Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA. Выбор языка программирования. Тестирование и реализация программного средства.
курсовая работа [314,2 K], добавлен 27.01.2015Разработка игрового проекта на игровом движке Unity 3D в среде программирования MS Visual Studio 2017. Блок-схема алгоритма работы приема сообщений с сервера на клиенте с упрощенным описанием выполняемых команд. Реализация пользовательского интерфейса.
курсовая работа [1,5 M], добавлен 10.07.2017Описание структуры обучающего блока. Проектирование его алгоритма и лингвистического и информационного обеспечения. Организация его взаимодействия с базой данных. Разработка графического интерфейса. Программная реализация основных функций приложения.
дипломная работа [2,1 M], добавлен 20.12.2015