Специфікації програмного забезпечення
Объекты Которые принимают участие в программе:
Пользователь вводит количество вершин графа, а так же указывает начальную вершину графа. Программа вычисляет путь посещения всех вершин неориентированного графа с максимальным весом всего пути.
Процессы и действия:
Пользователь вводит Необходимые исходные данные в форму и запускает программу. Программное обеспечение считывает Введенный данные, создает неориентированный граф с заданным количеством вершин.
Пусть:
• Вершина А - Руководитель предприятия;
• Вершина В - главный бухгалтер;
• Вершина D - логист;
• Вершина С - главный механик;
Функция случайно генерирует вес для каждого ребра графа. Затем рекурсивно вычисляются все Возможные пути прохождения всех вершин графа и вычисляется путь с максимальным весом.
Алгоритм нахождения веса путей:
Создаем массив всех возможных комбинаций обхождения графа из начальной вершины. (Вершины - A, B, C, D; Начальная - A; ABCD, ABDC, ACBD, ACDB, ADCB, ADBC)
Подсчитываем вес каждого пути, Суммируя вес каждого ребра.
Перебором по ассоциативно щиты (Путь: вес) находим самое максимальное значение веса и запоминай его ключ.
Входные и выходные данные, а так же их организация:
Пользователь вводит в экранную форму (рисунок 1), через запятую, вершины графа. Максимальное количество - 10 именем вершины должна появятся буква английского алфавита. Из введенных вершин пользователей должен указать название начальной вершины.
Рисунок 1 - Экранная форма для ввода входных значений.
Результат
работы программы будет выведен в поле
под меткой «Результат» (Рисунок 1).
Тестування
ПЗ з
об’єктно-орієнтованою архітектурою
3.1.
Структура програмного забезпечення
Рисунок 2 - DFD діаграма програмного забезпечення із структурною архітектурою
Словник даних:
@ ІМ'Я = Вихідні дані
@ ТИП = Груповий, зовнішній, дискретний потік даних
@ БНФ = <Вказує, що користувач ввів дані> | <2 {Символу англійського алфавіту} + (Символ початкової вершини)>
@ ІМ'Я = Вершини графа і початкова вершина
@ ТИП = Груповий, внутрішній, дискретний потік даних
@ БНФ = <Вказує, що користувач ввів коректні дані> | <2 {Символу англійського алфавіту} + (Символ початкової вершини)>
@ ІМ'Я = Вершини графа
@ ТИП = Простий, внутрішній, дискретний потік даних
@ БНФ = <Вказує, що користувач ввів коректні дані> | <2 {Символу англійського алфавіту}>
@ ІМ'Я = Вага ребер
@ ТИП = Простий, внутрішній, дискретний потік даних
@ БНФ = <Вказує, що кожної пари вершин графа було згенеровано ребро і вирахуваний вага> | <2 {Вершина ребра} 2 + Вага ребра>
@ ІМ'Я = Шляхи графа
@ ТИП = Простий, внутрішній, дискретний потік даних
@ БНФ = <Вказує, що були згенеровані всілякі шляхи проходження графа> | <1 {Шлях проходження графа}>
@ ІМ'Я = Шляхи графа і вага ребер
@ ТИП = Груповий, внутрішній, дискретний потік даних
@ БНФ = <Вказує, що згенеровані шляху графа і ваги ребер> | <"Вага ребер" + "Шляхи графа">
@ Ім'я = Вага Шляхів
@ ТИП = Простий, внутрішній, дискретності Потік даніх
@
БНФ = <Вказує, що ваги шляхів вирахувані>
| <1 {Шлях графа} + Сума ребер колії>
@ ІМ'Я = Шлях з максимальною вагою
@ ТИП = Простий, відкритий, дискретний потік даних
@ БНФ = <Вказує, що система визначила найкращий шлях> | <1 {Шлях графа} 1 +1 {Вага шляхів} 1>
