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

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)

Перегружает операцию сравнения для проверки, совпадают ли два заданных -инварианта (упорядоченные векторы степеней вершин).

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