Вы находитесь на странице: 1из 8

Цель работы: 1.

Освоение и изучение использования структур данных


– двухмерных матриц и связных списков – для различных способов задания
графов : с помощью матрицы инцидентности, матрицы смежности и списков
смежности.

2. Использование процедур преобразования информации из


списковых структуры в матричные и обратно с выдачей результатов на
дисплей.

Способы задания графа:


1)Матрица инцидентности — одна из форм представления графа, в которой
указываются связи между инцидентными элементами графа (ребро(дуга) и
вершина). Столбцы матрицы соответствуют ребрам, строки — вершинам.
Ненулевое значение в ячейке матрицы указывает связь между вершиной и
ребром (их инцидентность).
1 – конец пути
0 – если пути нет
-1 – если начало пути

2)Матрица смежности графа G с конечным числом вершин


n (пронумерованных числами от 1 до n) — это квадратная
матрица A размера n, в которой значение элемента aij равно числу рёбер из i-й
вершины графа в j-ю вершину.
Иногда, особенно в случае неориентированного графа, петля (ребро из i-й
вершины в саму себя) считается за два ребра, то есть значение диагонального
элемента aii в этом случае равно удвоенному числу петель вокруг i-й
вершины.

3)Список рёбер — это тип представления графа, подразумевающий, что


каждое ребро представляется двумя числами — номерами вершин этого
ребра.

Определения:
Граф- совокупность двух множеств.
Х-{множество точек}-непустое множество между которым существует
отношение инцидентности.
Е-{множество линий}
Если в элементарных множествах Е , допускается перестановка вершин,
тогда граф называется - неориентированным.
Граф называется связным, если две его различные вершины связаны цепью.

2
Максимальный по включению вершин связанный подграф, называется его
компонентом связности.
Несвязанный граф распадается на несколько частей, так же он называется
лесом. Отдельная часть-деревом.
Если в элементах множества Е не допускается перестановка вершин, тогда
граф называется ориентированным.
Граф называется связным, если любая пара его вершин связана цепью.
Граф называется сильно связанным, если любая пара его вершин связана
путём.
Существует два способа задания графов:
1) Графический
2) Аналитический

Матрица инцидентности:
X1 X2 X3 X4 X5 X6
e1 -1 1 0 0 0 0
e2 -1 0 1 0 0 0
e3 -1 0 0 0 1 0
e4 0 2 0 0 0 0
e5 0 -1 0 1 0 0
e6 0 -1 0 0 1 0
e7 0 1 -1 0 0 0
e8 0 0 2 0 0 0
e9 0 0 1 -1 0 0
e10 0 0 0 -1 1 0
e11 0 1 0 0 -1 0
e12 0 0 1 0 -1 0

Матрица смежности:

X1 X2 X3 X4 X5 X6
X1 0 1 1 0 1 0
X2 0 1 0 1 1 0
X3 0 1 1 0 0 0
X4 0 0 1 0 1 0

3
X5 0 1 1 0 0 0
X6 0 0 0 0 0 0

Список смежности:
1-2,3,5,0
2-2,4,5,0
3-2,3,0
4-3,5,0
5-2,3,0
6-0

Код программы:
#include <stdio.h>

#include<conio.h>

int Mat_int[20][20]={0}, Mat_smej[20][20]={0}, Spisok[20][20]={0};

int option, Kol_ver, Kol_sv;

int i,j,m,n;

int main()

while(1)

system("cls");

printf("1.Vvod matritsi intidentnosti.\n2.Vivod matritsi


intidentnosti.\n3.Vivod matritsi smejnosti.\n4.Vivod spiska smejnosti.\n5.Vihod iz
programmi.\n");

scanf("%d",&option);

if(option==1)

4
printf("\nVvedite kol-vo vershin: ");

scanf("%d",&Kol_ver);

printf("\nVvedite kol-vo sveazei: ");

scanf("%d",&Kol_sv);

printf("\nMatritsa intidentnosti:\n");

for(i=0;i<Kol_sv;i++)

for(j=0;j<Kol_ver;j++)

scanf("%d",&Mat_int[i][j]);

if(option==2)

printf("\nMatritsa intidentnosti:\n");

for(i=0;i<Kol_sv;i++)

printf("\n");

for(j=0;j<Kol_ver;j++)

printf(" %d",Mat_int[i][j]);

5
getch();

if(option==3)

printf("\nMatritsa smejnosti:\n");

for(i=0;i<Kol_sv;i++)

for(j=0;j<Kol_ver;j++)

if(Mat_int[i][j]==-1)

m=j;

if(Mat_int[i][j]==1)

n=j;

if(Mat_int[i][j]==2)

m=j;

n=j;

Mat_smej[m][n]=1;

6
}

for(m=0;m<Kol_ver;m++)

printf("\n");

for(n=0;n<Kol_ver;n++)

printf("%d ",Mat_smej[m][n]);

getch();

if(option==4)

printf("\nSpisok smejnosti:\n");

for(m=0;m<Kol_ver;m++)

printf("%d: ",m+1);

for(n=0;n<Kol_ver;n++)

if(Mat_smej[m][n]==1)

printf("%d",n+1);

printf("0\n");

7
getch();

if(option==5)

return(0);

8
Вывод: На данной лабораторной работе я реализовал способы хранения
графов в памяти ЭВМ такие, как: матрица инцидентности, матрица
смежности и список рёбер. Программа проработала без ошибок, данные
совпадают с вычислениями вручную, что свидетельствует о том, что
программа работает правильно.