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

Int cmp(const pinv& a, const pinv& b)

Лексикографическое сравнение двух -инвариантов (упорядоченных векторов степеней вершин). Возвращаемое значение:

-1, если a<b,

0, если a=b,

1, если a>b.

int cmpl(const graph& g, int i, int k)

Лексикографическое сравнение двух строк таблицы связей графа gс номерамиi,k. Возвращаемое значение формируется по тому же правилу, что и для функцииcmp.

int iso(const graph& A, const graph& B)

Проверить, являются ли графы A,Bизоморфными.Используется ПНВ-алгоритм [12].

int isos(const graph& A, const graph& B, int* p)

Получить изоморфную подстановку графа Aна графB. Если изоморфных подстановок несколько, функция находит одну из них. Найденная подстановка размещается в массивеp. Если подстановка найдена (т.е. графы изоморфны), функция возвращает 1, в противном случае - 0, при этом массивpобнуляется. Использован ПНВ-алгоритм [12].

int isulamequ(const graph& A, const graph& B)

Проверить, являются ли графы A,BУлам-эквивалентными.

ulong nisos(const graph& A, const graph& B)

Найти количество изоморфных подстановок графа Aна графB. ЕслиA=B, функция возвращает количество автоморфизмов графа А. Использован ПНВ-алгоритм[12].

12. Поиск клик, подграфов и компонентов графа

int cliq(const graph& g, vert* e)

Найти максимальную клику в графе g. Функция применима только в том случае, еслиg.form()=0 (неориентированный граф без петель и кратных ребер). ИспользуетсяVP-алгоритм. Вершины найденной клики заносятся в массивe. Возвращаемое значение - плотность графаg(число вершин найденной клики).

int findcycl(const graph& g, int j, int L, vert* e)

Найти цикл в графе g, который проходит через вершинуjи имеет длинуL. Найденный цикл заносится в массивe. Возвращаемое значение: 0 - если цикл не найден, 1 - если цикл найден. Если цикл не найден, массивeобнуляется.

int hamilt_c(const graph& g, int* e)

Найти гамильтонов цикл в графе g. Найденный цикл заносится в массивe. Возвращаемое значение: 0 - если цикл не найден, 1 - если цикл найден. Если цикл не найден, массивeобнуляется.

graph neib(const graph& g, int k)

Получить граф, который является подграфом ближайших соседей вершины номер kв графеg.

13. Другие функции и процедуры библиотеки

char* about_algraph()

Возвращает указатель на строку символов, которая содержит информацию о библиотеке Algraph. Например, выполнение строки

cout << about_algraph;

выводит на экран следующую информацию:

VP/C++ Library, ALGRAPH unit, rel. 08.2003

Computing on Graphs

V.P.Pinchuk, ZNTU, Ukraine

ph.(0612)636800, e-mail: vpinchuk@zntu.edu.ua

int ver(const graph& g)

Проверить правильность таблицы связей графа.

void one_two(int k, int& i, int& j);

По заданному номеру бита kбинарного кода находит индексы соответствующего элемента матрицы смежностиi,j.

int two_one(int i, int j);

По заданным индексам элемента матрицы смежности i,jнаходит и возвращает номер соответствующего бита бинарного кода.

14. Утилиты

Программа verr.exeосуществляет проверку целостности и правильностиr-файла. Выполняются следующие проверки:

- соответствие числа графов, указанного в заголовке r-файла, фактическому количеству графов, записанных вr-файле;

- соответствие контрольной суммы, указанной в заголовке r-файла, фактической контрольной суммеr-файла;

- имеют ли графы, представленные в r-файле, одинаковое число ребер.

Имя проверяемого r-файла должно быть указано в командной строке.

15. Компиляция программ

Модуль algraph.hможет использоваться совместно с пакетамиBorland5.xиBuilder4.0/5.0/6.0. Компиляция программ осуществляется с применением проектов. Для начала работы с системойalgraphнеобходимо выполнить копирование файловsyst.hиalgraph.hв системный п/каталогBC5 \INCLUDEи файлаalgraph.libв п/каталогBC5 \LIB.

Компиляция программы выполняется в следующей последовательности.

1. Создать или загрузить в рабочее окно исходный файл (например, test.cpp).

2. Создать проект путем выбора в главном меню п. FileNewProject. В окне

New Target установить:

Project Path and Name - d:\vp\test.ide

Target Model - Console

Libraries - Static

и нажать ОК.

3. В появившемся окне проекта Project:d:\vp\test.ideудалить узлыtest.defиtest.rc(это файл определений и файл ресурсов, присутствие их не обязательно, для удаления использовать правую кнопку мыши).

4. Щелкнуть правой кнопкой мыши на узле test.exe, выбратьAddnode. В появившемся окне, в окошкеFilenameнабратьalgraph.lib, нажать кнопкуOpen. В окне проекта должен появиться узелalgraph.lib, подключенный к узлуtest.exe.

5. Выполнить компиляцию программы путем выбора из главного меню п. ProjectBuildallили использовать соответствующую пиктограмму.

6. Если компиляция программы успешно завершена и работа с проектом далее не предполагается, закрыть все окна в оболочке Borlandи закрыть проект путем выбора п.ProjectClose.

7. Удалить файлы с расширениями .dsw, .mbt, .mrt, .obj.

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