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

53

02.2005

В.П. Пинчук.

Вычисления на графах.

Библиотека программных компонентов Algraph /C++ .

Запорожье: ЗНТУ, 2005.

Содержание

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. Представление графов

5. Функции создания графа

6. Операции над графами и граф-объектами

7. Ввод/вывод и преобразование файлов

8. Параметры граф-объекта, графа, его компонентов. Инварианты

9. Маршруты и метрика

10. Проверка наличия свойства или принадлежности к определенному виду

11. Сравнение и проверка эквивалентности

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

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

14. Утилиты

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

16. Примеры

Литература

Алфавитный указатель

1. Введение

Библиотека Algraph/C++ была создана с целью расширения возможнгстей программирования при решении задач, связанных с вычислениями на графах. Описание первой ее реализации опубликовано автором в 1998 году [1].

В стандартном варианте поставки пакет Algraph/C++ включает в себя три основных файла:syst.h,algraph.h,algraph.lib. В расширенной варианте в пакет поставки включается дополнительно: библиотечный модульgraphbase.h, специальная база данныхGraphBase, модуль реализации функций обслуживания базы данныхgraphbase.lib.

Файл syst.hсодержит глобальные определения, процедуры и функции общего назначения. Представленные в нем средства просты и очень полезны. Этот файл является автономным библиотечным модулем: наряду с прототипами функций и классов, файл содержит также их полные определения. Последнее дает возможность использовать его самостоятельно. Этот модуль хорошо показал себя при программировании работ вычислительного характера, в том числе при построении компьютерных моделей различного назначения. В течение ряда лет модульsyst.hактивно используется также и в учебном процессе при изучении основ программирования на языках С и С++, методов вычислений, выполнении различного вида учебных заданий.

Заголовочный файл algraph.hи его файл реализацииalgraph.libсоставляют ядро библиотекиAlgraph/C++. Они содержат программные компоненты (определения классов, процедур, функций, макросов и других объектов), которые используются при программировании различных операций с графами.

Библиотека ориентирована на решение задач высокой вычислительной сложности и оптимизирована для сложных вычислений. Этим, в частности, обусловлен выбор принципа открытой архитектуры для основных классов системы: все компоненты классов (включая и данные и функции) имеют атибут доступа public. С целью эффективного использования памяти все классы построены как динамические.

Все компоненты библиотеки соответствуют стандарту языка С++ ANSI/ISO.

2. Модуль общего назначения syst.H

2.1. Общие сведения

Файл syst.hрассчитан на компиляцию программ под 32-битовую платформу, используется, главным образом, для создания консольных приложений. Он содержит подключения наиболее часто используемых стандартных библиотечных модулей, а также ряд макросов, определений, функций и процедур общего назначения. Является простым и удобным средством для проблемного программирования в области научных и инженерных расчетов и компьютерного моделирования. Адаптирован к работе с потоками и библиотекой шаблоновSTL. Предназначен для работы с компиляторами, совместимыми с языком и библиотеками, соответствующими стандартуANSI/ISOC++.

Файл syst.hявляется автономным библиотечным модулем, он он содержит полные определения функций и процедур, а не только их прототипы и не имеет соответствующего файла реализации. Для работы файлsyst.hжелательно разместить в подкаталогеINCLUDEиспользуемой системы программирования. Модульsyst.hподключается директивой

#include <syst.h>

При этом расширение .hможно опускать:

#include <syst>

Для правильной работы некоторых функций из syst.hнеобходимо установить опцию:

Options  Project  Compiler  Code Generation  unsigned characters

Далее, при описании процедур и функций модуля syst.hсловоTypeявляется параметром шаблона и обозначает некоторый произвольный тип.

В модуле syst.hпредусмотрено подключение ряда наиболее часто используемых стандартных библиотечных модулей. Ниже приведен фрагмент текста модуляsyst.h, который выполняет подключение указанных библиотек.

#include <dos.h> // системные функции

#include <stdio.h> // функции ввода/вывода

#include <stdlib.h> // стандартные функции

#include <conio.h> // консольный ввод/вывод

#include <time.h> // операции со временем

#include <math.h> // математические функции

#include <string> // работа со строками STL

#include <fstream.h> // работа с потоками

using namespace std; // расширяет пространство имен для // работы с библиотекой шаблонов STL

В модуле syst.hсодержится ряд макроопределений #define:

pi- константа. Это имя действует наряду с системным именем этой константыM_PI, которое определено в стандартном библиотечном модулеmath.h. Значение этой контанты (также, как и других) представлено с точностью, соответствующей вещественному типуlongdouble;

sqr(x)- макрос-функция для возведения в квадрат;

cub(x)- такая же макрос-функция для возведения в куб;

ln(x)- более привычное имя функции - натурального логарифма (системное имяlog(x));

lg(x)- логарифм десятичный (то же, что иlog10(x));

tg(x)- тангенс (то же, что иtan(x)).

pause- макроопределение, которое может использоваться для создания паузы до нажатия произвольной клавиши. Пауза создается путем вызова функцииgetkey()из модуляsyst.h. Например, оператор

pause;

создаст паузу до нажатия клавиши. Этот оператор удобно использовать при отладочных пусках программы из инструментальной оболочки для удержания рабочего экрана после завершении работы программы.

С помощью оператора typedefопределены более короткие имена (byte,word,uint,ulong) для целых типов:

typedef unsigned char byte;

typedef unsigned short word;

typedef unsigned int uint;

typedef unsigned long ulong;

Модуль syst.hсодержит определения нескольких глобальных переменных и констант:

double CPU_Frequency = 2600; // Мгц

Значение этой переменной используется функцией stimer(микросекундный таймер). Для правильной работы этой функции в программе необходимо предусмотреть присвоение глобальной переменнойCPU_Frequency значения фактической тактовой частоты используемого процессора (в МГц).

const ulong RAND_MAXL = 0x80000000;

Используется для генерации случайных чисел (функции random,frand).

clock_t START_TIME;

Используются функциями таймера runtimerиtimer.

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