Автор: Пользователь скрыл имя, 03 Апреля 2011 в 18:46, курсовая работа
Первая работа по теории графов, принадлежащая известному швейцарскому математику Л. Эйлеру, появилась в 1736 г. Толчок к развитию теория графов получила на рубеже ХIX и ХХ столетий, когда резко возросло число работ в области топологии и комбинаторики, с которыми ее связывают самые тесные узы родства. Графы стали использоваться при построении схем электрических цепей и молекулярных схем. Как отдельная математическая дисциплина теория графов была впервые представлена в работе венгерского математика Кенига в 30-е годы ХХ столетия.
ЗАДАНИЯ. - 2 -
РЕФЕРАТ - 3 -
СОДЕРЖАНИЕ. - 4 -
ВВЕДЕНИЕ - 5 -
1 РАЗРАБОТКА ПРОГРАММЫ ДЛЯ РЕАЛИЗАЦИИ ГРАФА. - 6 -
1.1 АНАЛИЗ МАТЕМАТИЧЕСКИХ ТРЕБОВАНИЙ. - 8 -
1.2 КОДИРОВАНИЕ. - 18 -
1.3 ТЕСТИРОВАНИЕ. - 19 -
ЗАКЛЮЧЕНИЕ. - 21 -
ПРИЛОЖЕНИЕ А. - 22 -
ПРИЛОЖЕНИЕ Б. - 23 -
ПРИЛОЖЕНИЕ В. - 28 -
СПИСОК ЛИТЕРАТУРЫ: - 32 -
}
void MatrixGraph::addNode(int n)
{
int temp_n=n,countVertex;
temp_n--;
int** tempgraph;
if(temp_n<=0)
{
return;
}
if(temp_n>0&&temp_n<
{
if(graph[temp_n][
{
deleteNode(
}
}
else
{
countVertex=n-
n=countVertex+
tempgraph=new int*[n];
for(int i=0;i<n;i++)
{
tempgraph[i]
for(int j=0;j<n;j++)
{
tempgr
}
}
for(int i=0;i<vertexNumber;i++)
{
for(int j=0;j<vertexNumber;j++)
{
tempgr
}
}
delete [] graph;
graph=tempgraph;
vertexNumber+=
}
}
void MatrixGraph::deleteNode(int n,bool flag)
{
if(n<0||n>=vertexNumber)
{
return;
}
if(flag)
{
for(int i=0;i<vertexNumber;i++)
{
for(int j=0;j<vertexNumber;j++)
{
graph[
graph[
}
}
}
else
{
for(int i=0;i<vertexNumber;i++)
{
for(int j=0;j<vertexNumber;j++)
{
graph[
graph[
}
}
}
}
void MatrixGraph::PrintMatrix()
{
for(int i=0; i<=vertexNumber; i++)
{
cout.width(3);
if(i==0){cout<<" "; i++;}
cout<<"X"<<i;
}
cout<<endl<<endl;
for(int i=0;i<vertexNumber;i++)
{
cout.width(4);
cout<<"X"<<i+1;
for(int j=0;j<vertexNumber;j++)
{
cout.width(
if(graph[i][
{
cout<<
}
else
{
cout<<
}
}
cout<<endl<<endl;
}
}
void MatrixGraph::addArc(int from,int to)
{
if(from<0||from>=
return;
graph[from][to]=1;
}
void MatrixGraph::deleteArc(int from,int to)
{
if(from<0||from>=
return;
graph[from][to]=0;
}
int MatrixGraph::hasArc(int from,int to)
{
if(from<0||from>=
return false;
return graph[from][to];
}
void MatrixGraph::ComplementGraph()
{
for(int i=0;i<vertexNumber;i++)
{
for(int j=0;j<vertexNumber;j++)
{
if(graph[i][
{
graph[
}
else
{
if(
{
}
}
}
}
for(int i=0;i<vertexNumber;i++)
{
for(int j=0;j<vertexNumber;j++)
{
if(i==j)
{
graph[
}
}
}
}
void MatrixGraph:: ShowUnion(MatrixGraph a)
{
int max,min;
a.Size()>vertexNumber ? max=a.Size():max=vertexNumber;
a.Size()<vertexNumber? min=a.Size():min=vertexNumber;
MatrixGraph c(max);
for(int i=0;i<max;i++)
{
for(int j=0;j<max;j++)
{
if(a.hasArc(
{c.addArc(i,
}
}
c.PrintMatrix();
}
Файл «Kursach.cpp»
#include "stdafx.h"
#include<windows.h>
#include<iostream>
#include"MatrixGraph.h"
using namespace std;
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251)
MatrixGraph
a(6),b(6);
a.addArc(0,1);
a.addArc(1,2);
a.addArc(1,4);
a.addArc(2,3);
a.addArc(3,2);
a.addArc(4,0);
cout<<"Матрица А."<<endl;
a.PrintMatrix();
b.addArc(0,1);
b.addArc(1,4);
b.addArc(4,0);
b.addArc(4,3);
cout<<"Матрица B."<<endl;
b.PrintMatrix();
int n,from,to,vertex;
do
{
cout.width(3);
cout<<"///////////
cout<<"// 1.Добавить дугу в матрицу А. //\n";
cout<<"// 2.Удалить дугу из матрицы А. //\n";
cout<<"// 3.Добавить дугу в матрицу B. //\n";
cout<<"// 4.Удалить дугу из матрицы B. //\n";