Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АиПА / include / algraph.doc
Скачиваний:
13
Добавлен:
07.02.2016
Размер:
582.14 Кб
Скачать

3.5. Таблицы связей с весами вершин, класс graph_v

Для представления взвешенных по вершинам графов предусмотрен класс graph_v, который образуется путем наследования из базового классаgraph. Весовая функция - целочисленная, область значений соответствует типуint. Ниже приводится текст объявления классаgraph_v.

class graph_v: public graph

{ public:

int* wv; // веса вершин

};

3.6. Таблицы связей с весами ребер, класс graph_r

Для представления взвешенных по ребрам графов предусмотрен класс graph_r, который образуется путем наследования из базового классаgraph. Весовая функция - целочисленная, область значений соответствует типуint. Ниже приводится текст объявления классаgraph_r.

class graph_r: public graph

{ public:

int nr; // число ребер

int* wr; // веса ребер

};

3.7. Таблицы связей с весами вершин и ребер, класс graph_vr

Для представления графов, взвешенных как по вершинам, так и по ребрам, предусмотрен класс graph_vr, который образуется путем множественного наследования из базовых классовgraph_vиgraph_r. Обе весовые функции - целочисленные, области их значений соответствует типуint. Ниже приводится текст объявления классаgraph_vr.

class graph_vr: public graph_v, public graph_r

{

};

3.8. Таблицы связей с координатами вершин, класс imgraph

Класс imgraphпредставляет рисунок (точнее - геометрический образ) графа в 2-х или 3-х мерном пространстве. Фактически это взвешенный по вершинам граф, в котором в качестве весов используются координаты вершин. Классimgraphявляется параметризованным, в качестве параметра-шаблона используется целое число - размерность пространства геометрического образа (dim). Этот параметр может принимать значения 2 или 3.

Ниже приведен текст объявления класса imgraph.

template <int dim>

class imgraph: public graph

{ public:

};

3.9. Класс pinv

Класс pinvпредставляет упорядоченный вектор степеней вершин графа - один из простых инвариантов на множестве графов. Он может использоваться для построения процедур распознавания изоморфности графов как инструмент предварительного сравнения графов. Степени вершин упорядочиваются по убыванию. Объект классаpinvсодержит следующую информацию:

- число вершин графа nv;

- упорядоченный вектор степеней вершин v.

Ниже приводится текст объявления класса pinvс комментариями.

class pinv

{ public:

int nv; // число вершин

vert* v; // вектор степеней вершин

pinv(); // конструктор без параметров

pinv(const pinv&); // конструктор копирования

~pinv(); // деструктор

pinv& operator=(const pinv&); // перегрузка присваивания

pinv& operator=(const graph&); // присваивание с преобразованием

pinv& operator=(int); // создание pinv-значения для

}; // безреберного графа

Конструктор без параметров pinv() создает упорядоченный вектор степеней вершин пустого графа.

Конструктор копирования pinv(const pinv&)создает копиюpinv-объекта.

Задачей деструктора ~pinv()является удаление динамической компонентыpinv-объекта при его уничтожении.

Функция класса pinv& operator = (const pinv&) реализует операцию динамического присваивания дляpinv-объектов.

Функция класса pinv& operator =(graf&)перегружает операцию присваивания с преобразованием видаpinv=graf. Операция используется для ролучения упорядоченного вектора степеней вершин графа по его таблице связей.

Функция класса pinv& operator = (int)создаетpinv-значение для безреберного графа с заданным числом вершин.

Соседние файлы в папке include