
- •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. Примеры
- •Литература
- •Алфавитный указатель функций
Литература
1. Пинчук В.П.
Проблемно-ориентированное расширение С++ для задач обработки структурной информации.Нові матеріали і технології в металургії та машинобудуванні / Запоріжжя, ЗДТУ, 1998, №2.- с. 104-107.
2. В.П.Пинчук
Конспект лекций по вычислительной математике для специальности 8.090801 "Микроэлектроника и полупроводниковые приборы".- Запорожье: ЗНТУ, 2002 (не опубликовано).
3. В.И.Грядун, В.П.Пинчук, В.П.Шаповалов
Моделирование функции Ланжевена цепной дробью.
Радіоелектроніка, інформатика, управління, 2001, № 1, с.68-71.
4. Дьяконов В.П.
Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ: Справочник.- М.: Наука, 1987.- 240 с.
5. Пінчук В.П., Засовенко В.Г.
Основи дискретної математики. Теорія та застосування. Конспект лекцій для студентів спеціальностей 7.080403, 7.091501, 7.091503 радіоприладобудівного факультету всіх форм навчання. - Запоріжжя: ЗДТУ, 2001.- 104 с.
6. Jonas Hasselberg, Panos Pardalos, George Vairaktarakis
Test Case Generators and Computational Results for the Maximum Clique Problem.-
Journal of Global Optimization 3: 463-482, 1993.
7. В.П.Пинчук
Глоссарий по теории графов.-
Запорожье, 2002 (не опубликовано).
8. В.П.Пінчук
NB-дерево та алгоритм визначення кiлькостi вершин максимальної клiки у графi.-
Міжнародна конференція "Питання оптимізації обчислень", 6-8 жовтня 1997 р., м. Київ: Праці / Київ; Ін-т кібернетики ім. В.М.Глушкова НАН України, 1997.- с. 258-262.
9. Fisher David C., Ryan Jenifer
Bounds on the number of complete subgraphs.
Discrete Math.- 1992,- 103, № 3.- pp. 313-320. [ РЖМ 9В342 ]
10. В.П.Пінчук
Табличні інваріанти і побудова ефективних обчислень на графах.
Теорія обчислень. Зб. наук. праць. НАН України. Ін-т кібернетики ім. В.М.Глушкова.-
Київ, 1999, с. 289-293.
11. Пинчук В.П.
Табличные инварианты на графах и их применение.
Кибернетика и системный анализ / ИК НАН Украины, 2001, № 4.- с.33-45
12. В.П.Пинчук
Распознавание изоморфности графов: ПНВ-алгоритм.
Складні системи і процеси / ГУ ЗІДМУ, Запоріжжя, 2002, № 1, с.4-11.
Алфавитный указатель функций
В приводимом ниже перечне приняты следующие обозначения:
g-graph-объект (таблица связей графа);
M-matad-объект (матрица смежности графа);
P-pinv-объект (упорядоченный вектор степеней вершин графа).
_STIMER_ разрешает компиляцию функций runstimer и stimer из модуля syst.h
about_algraph() возвращает указатель на строку, которая содержит информацию о библиотеке Algraph
about_syst() возвращает указатель на строку, которая содержит информацию о разработчике модуля syst.h
abs(x) абсолютная величина (модуль) от x
add_edge(g,i,k); добавить в граф g дугу с начальной вершиной i и конечной вершиной k
add_r(g,i,k); создать ребро (пару встречных дуг) с концевыми вершинами {i,k} в графе g
add_v(g); создать дополнительную изолированную вершину в графе g
add_vc(g); создать дополнительную вершину в графе g, связанную ребрами со всеми остальными вершинами
algraph.h h-файл библиотеки Algraph/C++
algraph.lib файл реализации библиотеки Algraph/C++
bic_graph(g,bic) получить бинарный код по заданной таблице связей g
bic_mat(M,bic) получить бинарный код по заданной матрице смежности biclen(n) длина бинарного кода (количество 16-битовых слов) n-вершинного графа
binprint(x); вывод двоичного кода значения x на экран
biread(f,x); чтение x из бинарного файла
biwrite(f,x); запись x в бинарный файл
byte typedef-синоним типа unsigned char
cliq(g,e) найти максимальную клику e в графе g
Cmb(n,r) число сочетаний из n по r.
cmp(a,b) сравнение значений a,b
cmp(nx,ny,x,y) лексикографическое сравнение двух массивов
cmpl(g,i,k) лексикографическое сравнение двух строк таблицы связей графа g
complete(n) получить полный n-вершинный граф
CPU_Frequency глобальная переменная - частота процессора
cub(x) куб от x
del_iv(g); удалить из графа g все изолированные вершины
del_r(g,i,k); удалить из графа g ребро или пару встречных дуг с концевыми вершинами i,k
del_v(g,k); удалить из графа g вершину с номером k
dens(g) плотность графа g (NB-метод)
densi(g) плотность графа g (VP-алгоритм)
dens_lo(g) нижняя оценка плотности графа g
diameter(g) диаметр графа g
dist(g,i,k) расстояние между вершинами i,k в графе g
dlv(g,k) получить граф путем удаления вершины k из графа g
double_o_graph(m) получить граф типа "двойное кольцо" сmсекциями
endline(f,text); вывод в файл f информации об исполняемом файле, а также даты и времени
erfc(x) дополнительный интеграл ошибок.
errhalt(Q,mes); обработка исключения с выводом сообщения на экран
errhalt(Q,mes,f); обработка исключения с выводом сообщения в файл
excenter(g,i) эксцентриситет вершины i в графе g
fact(k) факториал, k 12
factd(k) факториал, k 170
fatring(n,c) получить граф типа fatring с числом вершин nv и параметром c
findcycl(g,j,L,e) найти цикл e длиной L в графе g , который проходит через вершину j
flushkey(); гашение буфера клавиатуры
frac(x) дробную часть x в формате double
frand() случайное число типа double из интервала [0,1] frand(a,b) случайное число из заданного интервала [a,b]
g = k; граф g преобразовать в безреберный граф с k вершинами
g = M; присваивание с преобразованием matad->graph
g << f; ввести graph-объект g из текстового файла (gt-файла)
g >> f; вывести graph-объект g в текстовый файл (gt-файл)
g == k; проверить, является ли граф g безреберным графом с k вершинами
g.cnv() свернуть graph-объект g
g.form() форм-фактор графа
g.nrib() число ребер графа g
g.nv число вершин графа g
g.p[k] степень вершины k графа g
g.r[i][k] элемент таблицы связей графа g
g.size() размер graph-объекта g в байтах
g.read(f) считать граф g из текстового файла f, возвращаемое значение - form-фактор считанного графа
g.read_r(in); считать graph-объект g из r-файла in
g.write(f); вывести graph-объект g в текстовый файл f или на экран
g.write_r(out); записать graph-объект g в r-файл out
g.rgl() упорядочить каждую строку graph-объекта g по возрастанию номеров вершин
g1 = g2; операция присваивания
getkey() получить символ нажатой клавиши
getline(in,s) извлечь очередную строку из потока in и поместить ее в поле s
getskey() получить символ из буфера клавиатуры
getyes() обработка нажатия клавиш <y>, <Y>, <n>, <N>
graph класс, представляющий таблицу связей
graph g; создать graph-объект, соответствующий пустому графу
graph g(k); создать graph-объект, который соответствует безреберному графу с k вершинами
graph g(M); создать graph-объект, который соответствует матрице смежности M
graph g1(g2); создать graph-объект g1, который является копией graph- объекта g2
graph_r класс, представляющий таблицу связей с весами ребер
graph_v класс, представляющий таблицу связей с весами вершин
graph_vr класс, представляющий таблицы связей с весами вершин и ребер
graph_bic(n,bic) получить graph-объект (таблицу связей) по заданным бинарному коду bic и числу вершин n
gt_r(in,out) gt-файл с указателем in конвертируется в r-файл с указателем out
hamdist(a,b) расстояние Хэмминга для бинарных кодов значений a,b
hamilt_c(g,e) найти гамильтонов цикл e в графе g
hamilt_n(g) количество гамильтоновых циклов в графе g
hamming(n,d) получить граф Хэмминга H(n,d) с числом вершин n и параметром d
hcube(m) получить граф типа гиперкуб с размерностью m
hread(f,nv,nr,Ng,KS) чтение заголовка r-файла
hwrite(f,nv,nr,Ng,KS) запись заголовка r-файла
imgraph класс, представляющий таблицу связей с координатами вершин
isblock(g) установить, является ли граф g блоком
iscomplete(g) установить, является ли граф g полным графом
isconn(g) установить, является ли граф g связным
isdual(g) установить, является ли граф g двудольным
isempty(g) установить, является ли граф g пустым
iseuler(g) установить, является ли граф g ейлеровым
ishamilt(g) установить, является ли граф g гамильтоновым
isisos(g1,g2,p) установить, является ли подстановка p, отображающая множество вершин графа g1 на множество вершин графа g2, изоморфной
iso(g1,g2) установить, являются ли графы g1,g2 изоморфными
isos(g1,g2,p) получить изоморфную подстановку p графа g1 на граф g2
isregular(g) установить, является ли граф g регулярным
isucycl(g) установить, является ли граф g ациклическим
isulamequ(g1,g2) установить, являются ли графы g1 и g2 ulam-эквивалентными
isnonbridge(g) установить, является ли граф g графом без мостов
johnson(n,w,d) получить граф Джонсона с числом вершин n и с параметрами w,d
join(g1,g2) получить граф, который является слабым соединением графов g1,g2
joinc(g1,g2) получить граф, который является сильным соединением графов g1,g2
k_line(n,k) получить граф типа k-line с n вершинами
k_ring(n,k) получить граф типа k-ring с n вершинами
keller(n) получить граф Келлера с n вершинами
lanj(x) значение функции ланжевена
lg(x) логарифм десятичный (то же, что и log10(x))
ln(x) натуральный логарифм (то же, что и log(x))
line(n) получить граф типа "линейная цепочка" с n вершинами
M = g; присваивание с преобразованием вида graph->matad
M = k; преобразоать матрицу смежности M к виду, соответствующему безреберному графу с k вершинами
M.form(); форм-фактор графа с матрицей смежности M
M.nrib(); число ребер графа с матрицей смежности M
M.nv число вершин графа с матрицей смежности M
M.s[i][k] элемент матрицы смежности
M.size() размер матрицы смежности (matad-объекта) M в байтах
M1 = M2; операция присваивания
Max(a,b) возвращает большее из значений аргументов a,b
mat_bic(n,bic) получить matad-объект (матрицу смежности) по заданным бинарному коду bic и числу вершин n
matad класс, представляющий матрицу смежности
matad M; создать матрицу смежности (matad-объект), соответствующую пустому графу
matad M1(M2); создать матрицу смежности (matad-объект) M1, которая является копией матрицы смежности M2
matad M(g); создать матрицу смежности (matad-объект) M, которая соответствует таблице связей g
matad M(k); создать матрицу смежности (matad-объект) M, которая соответствует безреберному графу с k вершинами
Min(a,b) возвращает vtymitt из значений аргументов a,b
modmul(g1,g2) модульное произведение графов
numbit(x) число единиц в бинарном коде значения x.
numstr(ifstream& fin) число строк текста в потоке fin
naut(g) порядок группы автоморфизмов графа g
neib(g,k) получить подграф ближайших соседей вершины k в графе g
nisos(g1,g2) количество изоморфных подстановок графа g1 на граф g2
nrib(g) число ребер графа g
ntriangls(g) число треугольников (циклов длиной 3) в графе g
o_graph(n) получить граф типа О-граф (типа "кольцо") с n вершинами
P = g; присваивание с преобразованием вида graph->pinv
P = k; преобразование pinv-объекта P к виду, соответствующему безреберному графу с k вершинами
P.nv число вершин графа, соответствующее инварианту P
P.v[k] элемент вектора степеней вершин
P1 = P2; операция присваивания
pause; пауза до нажатия любой клавиши
petersentype(n) получить граф типа графа Петерсена с n вершинами
pi константа π
pinv класс, представляющий упорядоченный вектор степеней вершин графа
pinv P; создать упорядоченный вектор степеней вершин (pinv- объект), соответствующий пустому графу
pinv P1(P2); создать pinv-объект P1, который является копией pinv- объекта P2
polin(n,a,x) значение полинома порядка n, размер массива коэффициентов a равен n+1
print(M); вывод на экран матрицы смежности
print(P); вывод на экран значения -инварианта P
printr(S); вывод на экран строки с коррекцией символов кириллицы
printr(S,f); вывод в файл f строки с коррекцией символов кириллицы
r_inters(g1,g2) получить граф, который является реберным пересечением графов g1 и g2
r_gt(in,out) конвертирование файлов: последовательность бинарных кодов из r-файла in переносится в gt-файл out
r_union(g1,g2) получить граф, который является реберным объединением графов g1 и g2
radius(g) радиус графа g
RAND_MAXL максимальное значение аргумента для функции random(M)
randgraph(n,r) получить случайный граф с n вершинами и r ребрами
randgraph(n,rx) получить случайный граф с n вершинами и с реберным заполнением rx
rdate() текущая дата в сокращенном формате
read_bic(in,Nw,bic) бинарный код графа длиной Nw считывается из r-файла in и размещается в строке bic
renum(g) получить граф путем случайной перенумерации вершин в графе g
rewind(f); установить указатель потока f в начало
rfopen(fn) открыть текстовый файл для чтения с контролем
round(x) приведение к целому путем округления
rtime() текущее время в сокращенном формате
runtimer(); инициализация таймера (функция timer())
runstimer(); инициализация микросекундного таймера (функция stimer())
rver(in,nv,nr,Ng) проверить правильность r-файла
sanchis(n,rs,ds) получить граф Санчиса с числом вершин n и параметрами r,d
set_cpu_fr(); процедура определения тактовой частоты процессора и установки значения системной переменной CPU_Frequency
sigma(g) значение s-инварианта для графа g (целочисленная свертка табличного инварианта первого порядка)
simps(fun,a,b,N) определенный интеграл (метод Симпсона)
Spline класс для интерполяции сплайнами
sqr(x) квадрат от x
star(n) получить граф типа звезда с n вершинами
START_TIME глобальная переменная, используются функциями таймера runtimer и timer
stimer() значение микросекундного таймера
streg(g,m0,m1) установить, является ли граф g сильнорегулярным, m0,m1 - параметры сильнорегулярного графа
swp(a,b); парный обмен значениями
syst.h h-файл, компонент библиотеки Algraph/C++
tg(x) тангенс от x (то же, что и tan(x))
temprint(A); вывод на экран элементов структуры STL по итератору
timer() значение таймера
th(x) тангенс гиперболический от x
ver(g) проверить правильность таблицы связей графа
uint typedef-синоним типа unsigned int
ulong typedef-синоним типа unsigned long
wheel(n) получить граф типа колесо с n секциями
word typedef-синоним типа unsigned short
write_bic(out,Nw,bic) записать бинарный код графа bic длиной Nw в r-файл out