Аналіз результатів
Аналіз результатів полягає у вимірюванні швидкості роботи представленої програми та її залежності від розміру обробляємої інформації. У ході визначення цієї величини я прийшла до висновку, що швидкість програми ніяк не залежить від розміру графу, бо, якої б розмірності граф я не використовувала, час початку роботи програми та час її закінчення кожного разу збігався.
Практичне застосування
За допомогою цієї програми можно не тільки визначати, чи можливо перезнайомити усіх людей між собою через спільних знайомих. Даний метод можна також використовувати:
У відстежуванні розповсюдження вірусу в комп'ютерних мережах;
У визначенні можливості розповсюдження інформації від єдиного джерела;
У хвильовому алгоритмі в трассуванні друкованих плат;
В алгоритмі Форда-Фулкерсона;
У теорії сітей та теорії електронних сітей й тд.
ВИСНОВОК
У процесі проведеної роботи ми:
Вирішили основне запитання задачі;
Вивчили один з методів доказу зв’язності графу: пошук у ширину;
Навчились використовувати метод пошуку у ширину на практиці;
Створили зручну у користуванні програму вирішення даної задачі;
Дізнались про практичне застосування отриманої програми окрім заданої задачі;
Виходячи з цих пунктів можна сказати, що була проведена результативна й корисна для спільноти праця.
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
Кристофидес Н. Теория графов. Алгоритмический подход.- М.,1978
Харари Т. Теория графов.- М.,1973
Братко И. Алгоритмы искусственного интеллекта на языке Prolog, 3-е издание
Москинова Г. Дискретная математика. Математика для менеджера в примерах и упражнениях.- М., 2000
Новиков Ф. Дискретная математика для программистов.- С.-П., 2000
Ловас Л. Прикладные задачи теории графов. Теорія паросочетаний в математике, физике, химии.- USA, 1896
Ананий В. Левитин Алгоритмы: введение в разработку и аналіз - М., 2006.
ДОДАТОК
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include <dos.h>
int main(void)
{
struct dostime_t t;
_dos_gettime(&t); // оператори розрахунку часу
int const n=100; // максимальна кількість людей
int G[n][n]; // G- матриця суміжності
int i,j,k; // змінні для циклів
int N; // N – поточна кількість людей
int V[n]; // вектор досяжності
int kol=0,marker=0; // кількість досяжних людей для першої людини з урахуванням першої людини; помітка, приймає значення 1 чи 0, указує чи побувала вершина (людина) у векторі досяжності
FILE *f1,*f2; // файли для введення та запису даних
if ((f1 = fopen("fs1.txt","rt"))==0) // відкриття файлу в режимі читання й подальша перевірка на помилку відкриття
{
cout << "Error open file.";
return 0;
}
if ((f2 = fopen("fs2.txt","wt"))==0) // відкриття файлу або його створення та подальша перевірка на помилку відкриття
{
cout << "Error open file.";
return 0;
}
fscanf(f1,"%d",&N); // зчитує з файлу f1 ціле число й заносить у значення перемінної N
for (i=0; i<N; i++) // перебирає строки масиву
{
for (j=0; j<N; j++) // перебирає елементи строк масиву
{
fscanf(f1,"%d",&G[i][j]); // зчитує з файлу f2 матрицю суміжності G
}
}
fclose(f1); // після зчитування потрібної нам інформації, закриваємо файл f1
for(j=0;j<N;j++)
V[j]=0; // обнулююємо вектор досяжності
V[0]=1; // перший елемент вектора позначаємо як першу вершину графа
kol=1; // збільшує кількість людей, що потрапили до вектора досяжності
for (i=0;i<kol;i++)
{
for(j=0;j<N;j++)
{
if (G[i][j]==1) // якщо i-та людина знайома з j-тою
{
marker=0;
for(k=0;k<kol;k++)
{
if(V[k]==(j+1)) // перевірка на присутність людини у векторі досяжності
{
marker=1; // вказує на присутність людини у векторі
break;
}
}
if (marker==0) // якщо людина не присутня у векторі досяжності {
V[kol]=j+1; // то додаємо людину у вектор досяжності
kol++; // збільшуємо кількість людей, що потрапили до вектора досяжності
}
}
}
} // після перевірки усіх вершин графу (людей) підрахуємо їх кількість у векторі досяжності
if (kol==N) // якщо кількість людей у векторі досяжності дорівнює поточній кількості людей, то граф – зв’язний, тобто всіх людей можливо перезнайомити
{
fprintf(f2,"%s","Yes"); // у файл f2 заноситься слово "Yes"
}
else
{
fprintf(f2,"%s","No"); // інакше запишемо відповідь No до файлу f2
}
fprintf(f2,"\n @$The time of start is: %2d:%02d:%02d.%02d\n", t.hour, t.minute, t.second, t.hsecond); // у файл f2 вводиться час початку роботи програми
_dos_gettime(&t);
fprintf(f2,"\n @$The time of end is: %2d:%02d:%02d.%02d\n", t.hour, t.minute, t.second, t.hsecond); // у файл f2 вводиться час кінця роботи програми
fclose(f2); // закриваємо файл з результатами вирішення
return 0;
} // програма завершується
