
- •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 gt_r(file* in, file* out)
Содержимое gt-файла с указателемinконвертируется вr-файл с указателемout. Взвращаемое значение - число графов, записанных в выходной файл.
void hread(FILE* f, word& nv, word& nr, ulong& Ng, ulong& KS)
Чтение заголовка r-файла с указателемf. Возвращаемые значения:nv- число вершин,nr- число ребер набора графов,Ng- количество графов в наборе,KS- контрольная сумма файла (по модулю232 ).
void hwrite(FILE* f, word nv, word nr, ulong Ng, ulong KS)
Запись заголовка r-файла с указателемf. В заголовке размещаются:nv- число вершин,nr- число ребер набора графов,Ng- количество графов в наборе,KS- контрольная сумма файла.
void print(const matad& M)
Вывод на экран матрицы смежности M.
void print(const pinv& P)
Вывод на экран значения -инвариантаP(упорядоченный по убыванию вектор степеней вершин).
ulong r_gt(FILE* in, FILE* out)
Конвертирование файлов: последовательность бинарных кодов графов из r-файлаinпереносится вgt-файлout.
int read_bic(FILE* in, int Nw, word* bic)
Чтение бинарного кода из r-файла. Бинарный код длинойNwсчитывается из файлаinи размещается в строкеbic. Возвращаемое значение - число единиц, содержащихся в бинарном коде (т.е. число ребер соответствующего графа).
int rver(FILE* in)
Проверить правильность r-файла. Возвращаемое значение:
0, если все в порядке,
1, если неправильная контр.сумма,
2, если число ребер не соответствует объявл. в заголовке,
3, если число графов, объявл. в заголовке, равно нулю,
4, если число вершин, которое объявлено в заголовке, > 1024,
5, если число графов в r-файле не соотвует заголовку.
int verification_r(FILE* f)
Выполняет такую же проверку r-файла, как и предыдущая функция, но, в отличие от нее, выводит на экран сообщение о характере ошибки, если возвращаемое значение не 0.
void write_bic(FILE* out, int Nw, word* bic)
Записать бинарный код размером Nwиз строкиbicвr-файлout.
8. параметры граф-объекта, графа, его компонентов.
инварианты
int graph::size()
int matad::size()
Функции возвращают размер размер соответствующего граф-объекта в байтах.
int graph::form()
int matad::form()
Эти функции возвращают значение форм-фактора графа, представленного соответствующим объектом.
int graph::nrib()
int matad::nrib()
Функции возвращают число ребер графа, представленного соответствующим граф-объектом.
int dens(graph g)
Вычислить плотность графа g(NB-метод, см.[8]).
int densi(const graph& g)
Вычислить плотность графа g(VP-алгоритм).
int dens_lo(const graph& g)
Найти нижнюю оценку плотности графа gпо методике[9].
int diameter(const graph& g)
Определить диаметр графа g.
ulong hamilt_n(const graph& g)
Найти количество гамильтоновых циклов в графе g.
int excenter(const graph& g, int i)
Найти эксцентриситет вершины номер iв графеg.
ulong naut(const graph& g)
Найти порядок группы автоморфизмов графа g, т.е. величинуNaut(g).
int nrib(const graph& g)
Определить число ребер графа g.
ulong ntriangls(const graph& g)
Найти число треугольников (циклов длиной 3) в графе g.
int radius(const graph& g)
Определить радиус графа g.
ulong sigma(const graph& g)
Вычислить значение s-инварианта для графаg. Целочисленныйs-инвариант графа представляет собой свертку табличного инварианта первого порядка[10,11].
9. Маршруты и метрика
int dist(const graph& g, int i, int k)
Найти расстояние между вершинами i,kв графеg.
10. Проверка наличия свойства или принадлежности к
определенному виду
Все функции этого раздела возвращают значение 1 (true), если искомое свойство обнаружено и значение 0 (false), если нет.
int isblock(const graph& g)
Проверить, является ли граф gблоком.
int iscomplete(const graph& g)
Проверить, является ли граф gполным графом.
int isconn(const graph& g)
Проверить, является ли граф gсвязным.
int isdual(const graph& g)
Проверить, является ли граф gдвудольным.
int isempty(const graph& g)
Проверить, является ли граф gпустым (не имеющим ни одной вершины).
int iseuler(const graph& g)
Проверить, является ли граф gэйлеровым.
int ishamilt(const graph& g)
Проверить, является ли граф gгамильтоновым.
int isisos(const graph& A, const graph& B, int* p)
Проверить, является ли подстановка p, отображающая множество вершин графаAна множество вершин графаB, изоморфной.
int isregular(const graph& g)
Проверить, является ли граф gрегулярным.
int isucycl(const graph& g)
Проверить, является ли граф gациклическим.
int isnonbridge(const graph& g)
Проверить, является ли граф gграфом без мостов.
int streg(const graph& g, int& m0, int& m1)
Проверить, является ли граф g сильнорегулярным. Через параметры-ссылки передаются параметры сильной регулярности: m0 - число общих соседей пары не смежных вершин, m1 - то же для пары смежных вершин.
11. Сравнение и проверка эквивалентности
int operator == (const graph& g1, const graph& g2)
Перегрузка операции сравнения "==" для проверки, являются ли таблицы связей g1 иg2 одинаковыми. Совместно с процедуройgraph::rgl() эту операцию можно использовать для проверки изоморфности помеченных графов.
int operator == (const matad& m1, const matad& m2)
Перегружает операцию сравнения для проверки, являются ли матрицы смежности m1 иm2 одинаковыми.
int operator == (const pinv& a, const pinv& b)
Перегружает операцию сравнения для проверки, совпадают ли два заданных -инварианта (упорядоченные векторы степеней вершин).