Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2018, 12:42   #1
QuadroX
323787261
Пользователь
 
Аватар для QuadroX
 
Регистрация: 19.12.2008
Сообщений: 49
По умолчанию Графы и расчет вероятности в Delphi (надежность сети)

Необходимо написать учебную программу для построения графов в дельфи и графика изменения вероятности. Интерфейс похожий на тот что на скриншотах. Логика вычислений будет относительно простая, несмотря на много текста. =) Очень важный момент это разделить интерфейсный модуль по работе с UI и логический модуль (отдельный *.pas файл) где будет представлен тот же граф матрицей смежности и будут заданы функции и процедуры для вычисления. Логический модуль выполнить в процедурном стиле, без конструкторов, объектов и т.п..

Требования к программе:

1. Предусмотреть три вкладки, одну (Граф) с Canvas для постоения графа, другую (Матрица смежности) для табличного представления этого графа, и третью вкладку (Результаты) для построения графика зависимости вероятности.
2. На первой вкладке при нажатии на Canvas левой кнопкой мыши появляются вершины в виде кружков с номерами 1, 2, 3, и т.д. в зависимости от того сколько раз нажать в пустое место.
3. Если зажать левую кнопку мыши и протянуть от одной вершины до другой (mouse drag) то будет строится линия связи между этими вершинами. См. скриншот.
4. Также на первой вкладке предусмотреть checkbox "Ориентированный граф" который по умолчанию снят, если поставить его произойдет очистка текущего графа, и при следующем построении графа на линиях связи будет появлятся стрелочка в направлении движения. Если потом снять эту галочку (граф изначально был ориентированным) то просто убираются стрелочки с линий и граф не очищается.
5. Как уже было сказано выше, во время рисования графа ведется его матрица смежности в логическом модуле (какая вершина с какой соединенина, значения 1 или 0). В случае ориентированного графа связь только в одном направлении, в случае неориентированного связь в двух направлениях.
6. На этой же владке предусмотреть кнопку "Расчет" по нажатию на которую появится окно для ввода данных (можно сделать без окна на той же вкладке справа). Задается начальная вершина и конечная, две галочки Случайное удаление 1) узлов, 2) ребер. Также TextBox где вводится маскимальное количество опытов (можно без валидации на цифры). После нажатия на кнопку Расчет идет переключение на вторую вкладку (Результаты) с графиком.
7. На вкладке Результаты строится график от 0 до 1 по обоим осям. При нулевой вероятности потерь вершин и ребер вероятность доставки сообщения из начального в конечный пункт равна 1. При вероятности потерь 1 (100% потерь) соотвественно доставка не возможна и вероятность доставки будет равна нулю.
8. Количество опытов влияет на точность определния вероятности на графике, например для средней точки мы можем получить вероятность 0.5 в первом опыте, 0.45 во втором, 0.49 в третьем и если всего три опыта то на графике будет 0.48 (среднее значение по этим опытам). По какому закону убираются узлы и ребра на графике для этой симуляции все равно. Можно взять самый простой (например 1 случайный узел и (или) одно случайное ребро за прогон) и таких прогонов сделать пока вероятность передачи сообщения из начальной в конечную вершину не станет равна нулю (путь в графе нельзя будет проложить). Главное этот закон четко вынести в функцию и описать в комментариях чтобы было понятно что происходит.
9. На второй вкладке всегда выводится текущая матрица смежности для графа первой вкладка. Она обновляется по мере добавления вершин в структуре данных памяти и как только пользователь открывает вкладку матрица смежности она там отрисовывается.

Убедительная просьба написать понятный код и покрыть комментариями. Все логические вычисления не связанные с оконным интерфейсом производить в отдельном модуле в процедурном стиле. Среда Delphi 7.

Лучше писать в ЛС.
Изображения
Тип файла: png Graph1.png (18.3 Кб, 69 просмотров)
Тип файла: png Graph2.png (21.0 Кб, 74 просмотров)
ICQ: 323787261
Email: pschegolevatykh@gmail.com

Последний раз редактировалось QuadroX; 28.07.2018 в 13:00.
QuadroX вне форума Ответить с цитированием
Старый 28.07.2018, 22:09   #2
Thread
 
Аватар для Thread
 
Регистрация: 08.06.2011
Сообщений: 4
По умолчанию

Обращайтесь, если возможно использовать другую среду разработки. К примеру VisualStudio и язык C#

Контакты
cyber4401@gmail.com
вконтакте
Thread вне форума Ответить с цитированием
Старый 29.07.2018, 13:39   #3
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Пишите: larbossfreelance@yandex.ru
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 29.07.2018, 18:50   #4
QuadroX
323787261
Пользователь
 
Аватар для QuadroX
 
Регистрация: 19.12.2008
Сообщений: 49
По умолчанию

Отдал заказ, пока не актуально.
ICQ: 323787261
Email: pschegolevatykh@gmail.com
QuadroX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С#, расчет плотности вероятности функции Krasi Общие вопросы .NET 3 29.01.2016 18:09
Расчет вероятности лотерейной игры coNsept Общие вопросы C/C++ 0 22.01.2014 00:24
Программа по расчету вероятности : delphi set_genius Помощь студентам 1 23.05.2012 22:54
Сапер: расчет вероятности нахождения мины Explode Помощь студентам 0 04.10.2010 00:33
[Delphi]: Выпадение чисел с опредёлнным процентом вероятности. Kolhan Помощь студентам 3 19.04.2009 17:16