
- •1. Введение
- •2. Модуль общего назначения syst.H
- •2.1. Общие сведения
- •2.2. Системные функции и макрооперации
- •2.3. Операции ввода/вывода
- •2.4. Математические функции
- •2.5. Специальные классы. Класс Spline для интерполяции данных сплайнами
- •3. Представление графов, классы и граф-объекты
- •3.1. Представление графов
- •3.2. Таблица связей, класс graph.
- •3.3. Матрицы смежности, класс matad.
- •3.4. Бинарные коды
- •3.5. Таблицы связей с весами вершин, класс graph_v
- •3.6. Таблицы связей с весами ребер, класс graph_r
- •3.7. Таблицы связей с весами вершин и ребер, класс graph_vr
- •3.8. Таблицы связей с координатами вершин, класс imgraph
- •3.9. Класс pinv
- •4. Форматы данных и преобразование форматов
- •4.1. Нумерация вершин графа
- •4.2. Представление графов
- •Int biclen(int n)
- •Int bic_graph(const graph& g, word* bic)
- •Int bic_mat(const matad& m, word* bic)
- •5. Функции создания графа
- •Imgraph::imgraph()
- •Imgraph::imgraph(const imgraph&)
- •6. Операции над графами и граф-объектами
- •Void add_edge(graph& g, int I, int k)
- •7. Ввод/вывод и преобразование файлов
- •Int write_r(file*)
- •Int read_r(file*)
- •Int gt_r(file* in, file* out)
- •Int cmp(const pinv& a, const pinv& b)
- •16. Примеры
- •Литература
- •Алфавитный указатель функций
Int biclen(int n)
Функция возвращает размер бинарного кода (количество 16-битовых слов) по заданному числу вершин графа n. Функция используется для создания массивов, предназначенных для сохранения бинарных кодов графов.
Int bic_graph(const graph& g, word* bic)
Получение бинарного кода по заданной таблице связей g. Найденный бинарный код заносится в массивbic. Возвращаемое значение - размер бинарного кода (количество слов). Параметрgдолжен представлять неориентированный граф без петель и кратных ребер (значениеform-фактора должно быть равно 0).
Int bic_mat(const matad& m, word* bic)
Получение бинарного кода по заданной матрице смежности M. Полученный бинарный код заносится в массивbic. Возвращаемое значение - размер бинарного кода (количество слов). ПараметрMдолжен представлять неориентированный граф без петель и кратных ребер (значениеform-фактора должно быть равно 0).
graph graph_bic(int n, word* bic)
Функция возвращает graph-объект (таблицу связей), соответствующий бинарному кодуbicи числу вершинn.
matad mat_bic(int n, word* bic)
Функция преобразования бинарного кода в матрицу смежности. Параметры функции: n- число вершин графа,bic- массив, содержащий бинарный код.
5. Функции создания графа
Под созданием графа понимается создание объекта одного из возможных типов, представляющего граф. Каждый из классов, представляющего граф, имеет конструктор без параметров и конструктор копирования.
graph::graph()
matad::matad()
graph_v::graph_v()
graph_r::graph_r()
graph_vr::graph_vr()
Imgraph::imgraph()
Конструкторы без параметров. Вызов такого конструктора приводит к созданию объекта, соответствующего пустому графу (графу без вершин). Например, выполнение таких строк программы
graph g;
matad M;
graph_v gv;
graph_r gr;
graph_vr gvr;
imgraph img;
приведет к созданию переменных соответствующих типов, каждая из которых будет соответствовать пустому графу.
graph::graph(const graph&)
matad::matad(const matad&)
graph_v::graph_v(const graph_v&)
graph_r::graph_r(const graph_r&)
graph_vr::graph_vr(const graph_vr&)
Imgraph::imgraph(const imgraph&)
Конструкторы копирования. Вызов такого конструктора приводит к созданию объекта, который является самостоятельной копией объекта такого же типа. Например, после выполнения таких строк программы
graph g1(g2);
matad M1(M2);
graph_v gv1(gv2);
graph_r gr1(gr2);
graph_vr gvr1(gvr2);
imgraph img1(img2);
будут созданы переменные, которые будут представлять копии других объектов аналогичного типа.
graph::graph(const matad&)
Конструтор, позволяющий создать graph-объект, соответствующий заданной матрице смежности (matad-объекту).
matad::matad(const graph&)
Конструтор, позволяющий создать matad-объект, соответствующий заданной таблице связей (graph-объекту).
graph::graph(int)
matad::matad(int)
Конструктор, создает graph- илиmatad-объект, соответствующий безреберному графу с заданным числом вершин.
graph complete(int n)
Создание полного неориентированного графа с nвершинами.
graph fatring(int n, int c)
Создание графа типа fatringс числом вершинnи параметромc[6,7].
graph hamming(int n, int d)
Создание графа Хэмминга H(n,d) с числом вершин n и параметром d . О графах Хэмминга см. [6,7].
graph hcube(int m)
Создание графа типа гиперкуб, размерность которого равна m.
graph johnson(int n, int w, int d)
Создание графа Джонсона J(n,w,d) с числом вершин n и с параметрами w,d. О графах Джонсона см. [6,7].
graph k_line(int n, int k)
Создание графа типа k-lineсnвершинами. Определяется граф следующим образом[7]. Пустьg= (V,X). Создадим ребра по следующему правилу: еслиvi,vjV, то (vi ,vj)X, еслиijи |i-j|k, гдеk- параметрk-line-графа.
graph k_ring(int n, int k)
Создание графа типа k-ringсnвершинами. Граф типаk-ringопределяется следующим образом[7]. Пустьg= (V,X) ,n= |V| . Создадим ребра по следующему правилу: еслиvi,vjV, то (vi ,vj)X, еслиijиj= (i+s)modn,as{1, 2, ... ,k}, гдеk- параметрk-ring-графа. Является регулярным графом, степень графа = 2k.
graph keller(int n)
Создание графа Келлера с nвершинами. О графах Келлера см.[6,7].
graph line(int n)
Создание графа типа "линейная цепочка" с nвершинами.
graph o_graph(int n)
Создание графа типа О-граф (структура типа "кольцо") с nвершинами. Такой граф является регулярным графом степени 2.
graph petersentype(int n)
Создание графа типа графа Петерсена с nвершинами.
graph randgraph(int n, int r)
Создание случайного графа с числом вершин nи числом реберr.
graph randgraph(int n, float rx)
Создание случайного графа с числом вершин nи относительным реберным заполнениемrx.
graph sanchis(int n, int r, int d)
Создание графа Санчиса с числом вершин nи параметрамиr,d.
graph star(int n)
Создание графа типа звезда с nвершинами.
graph wheel(int n)
Создание графа типа колесо с nсекциями (и сn+1 вершинами).