|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.07.2018, 12:42 | #1 |
323787261
Пользователь
Регистрация: 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. Лучше писать в ЛС.
ICQ: 323787261
Email: pschegolevatykh@gmail.com Последний раз редактировалось QuadroX; 28.07.2018 в 13:00. |
28.07.2018, 22:09 | #2 |
Регистрация: 08.06.2011
Сообщений: 4
|
Обращайтесь, если возможно использовать другую среду разработки. К примеру VisualStudio и язык C#
Контакты cyber4401@gmail.com вконтакте |
29.07.2018, 13:39 | #3 |
Недо
Участник клуба
Регистрация: 11.08.2011
Сообщений: 1,394
|
Пишите: larbossfreelance@yandex.ru
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
|
29.07.2018, 18:50 | #4 |
323787261
Пользователь
Регистрация: 19.12.2008
Сообщений: 49
|
Отдал заказ, пока не актуально.
ICQ: 323787261
Email: pschegolevatykh@gmail.com |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С#, расчет плотности вероятности функции | 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 |