- •Общие положения
- •Цель и задачи курсовой работы
- •Порядок выполнения
- •Требования к оформлению пояснительной записки
- •Краткие теоретические сведения
- •Основные определения теории графов
- •Способы представления графов в памяти эвм
- •Матрица смежностей графа
- •Матрица инцидентностей графа
- •Задание графа массивом преемников вершин (fo-представление графа)
- •Задание графа массивом предшественником вершин (fi-представление)
- •Модифицированное fo-представление графа (mfo-представление)
- •Модифицированное fi-представление графа (mfi-представление)
- •Сокращенные mfо и mfi-представления неорграфов
- •Нисходящее проектирование
- •Технология проектирования алгоритмов
- •Принципы нисходящего проектирования:
- •Варианты заданий для курсовой работы
- •Варианты расчетных заданий
- •Организация защиты курсовой работы
- •Постановка задачи
- •Входные данные
- •Аномалии
- •Функциональные тесты
- •Нисходящее проектирование
- •Основной алгоритм
- •Нисходящее проектирование на класcах
- •Методы public Kurs_Proekt ()
- •Библиографический список
- •Содержание
Входные данные
Входные данные приведены в табл.2, входные формы изображены на рис. 18, входной формат текстового файла показан на рис. 19:
Таблица 2
Номер п/п |
Наименование |
Тип |
Диапазон |
Назначение |
1 |
n1 |
Целый |
1<n1<=20 |
Количество вершин 1-го графа |
2 |
m1 |
Целый |
1<m1<=50 |
Количество ребер 1-го графа |
3 |
Fo1={ fo1[i]} |
Массив целых чисел |
0<=fo1[i]<=n1 1<=i<=2m1+n1 |
Fo-представление 1-го графа |
4 |
n2 |
Целый |
0<n2<=20 |
Количество вершин 2-го графа |
5 |
m2 |
Целый |
1<m2<=50 |
Количество ребер 2-го графа |
6 |
Fo2={ fo2[i]} |
Массив целых чисел |
0<=fo2[i]<=n2 1<=i<=2m2+n2 |
Fo-представление 2-го графа |
Входные формы
Рис. 15
Входной формат текстового файла
Рис. 16
Выходные данные
В зависимости от полученного результата сравнения графов пользователю будет выдано текстовое сообщение. Если графы эквивалентны, то результатом будет сообщение (рис. 20):
«Графы эквивалентны».
В противном случае результатом работы программы будет сообщение:
«Графы не эквивалентны».
Выходные формы
Рис. 20
Метод решения
В зависимости от значения переключателя на форме осуществляется ввод данных с клавиатуры или из текстового файла, с контролем корректности ввода данных. При вводе графов строят матрицы смежности (MS). Для получения радиуса графа необходимо вначале вычислить матрицу расстояний графа (MR).Максимальное значение в этой матрице и будет диаметром графа. Ниже приведен алгоритм получения матрицы MR.
Пусть r - вычисленные значения расстояний в матрице MR. Используем две вспомогательные матрицы В1 и В2:
r=1, В1= MS , MR= MS;
В2=В1* MS, r=r+1;
если (MR[I,j]=0 и B2[I,j] <>R[I,j]) то MR[I,j]= r ;
если в п.3) матрица расстояний не изменялась, то конец вычислений, иначе
В1=В2 и повторить п.2).
Аномалии
В нашей программе аномалии в основном связаны с контролем входных данных.
Все возможные аномалии указаны в табл.3.
Таблица 3
Номер п/п |
Наименование |
Условия возникновения |
Реакция |
1 |
Некорректный ввод количества вершин 1-го графа (при вводе с файла) |
(n1>20) или (n1<0) |
Вывод сообщения: ”Ошибка ввода количества вершин 1-го графа! “ (Образец 1) |
2 |
Некорректный ввод количества ребер 1-го графа (при вводе с файла) |
(m1>50) или ( m1<0)
|
Вывод сообщения: ”Ошибка ввода количества ребер 1-го графа!” (Образец 2) |
3 |
Элемент массива Fо 1-го графа недопустим (при вводе с экрана) |
(Fо1i<0) или (Fo1i>n1) |
Вывод сообщения: ”Элемент Fо1 1-го графа недопустим!“ (Образец 3) |
4 |
Количество элементов массива Fо1 1-го графа неверно (при вводе с экрана) |
K<>2m1+n1 |
Вывод сообщения: ” Количество элементов массива Fо1 1-го графа неверно!“ (Образец 4)
|
5 |
Элемент массива Fо 2-го графа недопустим (при вводе с экрана) |
(Fо2i<0) или (Fo2i>n1) |
Вывод сообщения: ”Элемент Fо2 2-го графа недопустим!“ (Образец 5) |
6 |
Количество элементов массива Fо2 2-го графа неверно (при вводе с экрана) |
K<>2m2+n2 |
Вывод сообщения: ” Количество элементов массива Fо2 2-го графа неверно!“ (Образец 6)
|
Окончание таблицы 3
Номер п/п |
Наименование |
Условия возникновения |
Реакция |
7 |
Некорректный ввод кол-ва вершин графа (при вводе с файла) |
(n >20) или (n <0)
|
Вывод сообщения: ”Ошибка ввода количества вершин графа!” (Образец 7) |
8 |
Некорректный ввод кол-ва ребер графа (при вводе с файла) |
(m>50) или (m<0) |
Вывод сообщения: ”Ошибка ввода количества ребер графа! “ (Образец 8) |