Научная статья на тему 'О примитивных наборах натуральных чисел'

О примитивных наборах натуральных чисел Текст научной статьи по специальности «Математика»

CC BY
376
62
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
ПРИМИТИВНЫЙ НАБОР НАТУРАЛЬНЫХ ЧИСЕЛ / ПРИМИТИВНЫЙ ГРАФ / ПРИМИТИВНАЯ МАТРИЦА / ЭКСПОНЕНТ / СУБЭКСПОНЕНТ / PRIMITIVE SYSTEM OF NATURAL NUMBERS / PRIMITIVE MATRIX / PRIMITIVE GRAPH / EXPONENT / SUBEXPONENT

Аннотация научной статьи по математике, автор научной работы — Кяжин Сергей Николаевич, Фомичев Владимир Михайлович

Описано строение множества примитивных наборов натуральных чисел и установлены их основные свойства. С использованием понятий тупиковости и k-минимальности построен алгоритм перечисления примитивных наборов чисел, не ревышающих заданного числа m. Предложены алгоритмы определения показателя примитивности ориентированного конечного графа с помощью поиска в глубину на графе и возведения в степень матрицы смежности вершин и оценена их вычислительная сложность.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

About primitive systems of natural numbers

The set structure of primitive systems of natural numbers is described, and the main properties of such systems are installed. An algorithm for enumerating primitive systems of numbers not exceeding a given number m is constructed using the concepts of deadlockness and k-minimalities of primitive systems. Also, some algorithms are offered for determining the primitiveness index of a nite directed graph by means of depthrst search and the exponentiation of the vertex adjacency matrix. Computational complexity of the algorithms is estimated.

Текст научной работы на тему «О примитивных наборах натуральных чисел»

2012 Теоретические основы прикладной дискретной математики №2(16)

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ПРИКЛАДНОЙ ДИСКРЕТНОЙ МАТЕМАТИКИ

УДК 519.6

О ПРИМИТИВНЫХ НАБОРАХ НАТУРАЛЬНЫХ ЧИСЕЛ

С. Н. Кяжин, В. М. Фомичев

Национальный исследовательский ядерный университет МИФИ, г. Москва, Россия E-mail: litota975@mephist.ru, fomichev@nm.ru

Описано строение множества примитивных наборов натуральных чисел и установлены их основные свойства. С использованием понятий тупиковости и k-минимальности построен алгоритм перечисления примитивных наборов чисел, не превышающих заданного числа т. Предложены алгоритмы определения показателя примитивности ориентированного конечного графа с помощью поиска в глубину на графе и возведения в степень матрицы смежности вершин и оценена их вычислительная сложность.

Ключевые слова: примитивный набор натуральных чисел, примитивный граф, примитивная матрица, экспонент, субэкспонент.

Введение

Матрица M называется положительной (неотрицательной), если положительны (неотрицательны) все её элементы; этот факт обозначается M > 0 (M ^ 0). Неотрицательная квадратная матрица называется примитивной, если M* > 0 при некотором натуральном t, а наименьшее натуральное Y, при котором M7 > 0, называется экспонентом (показателем примитивности) матрицы M и обозначается exp M. Если такого t не существует, то exp M = то. Если для неотрицательной матрицы M выполнено соотношение M + M2 + ... + M* > 0, то наименьшее такое t называется субэкспонентом матрицы M.

Сильносвязный орграф Г называется примитивным, если при некотором натуральном m для любой пары вершин (i, j) в Г существует путь из i в j длины m. Наименьшее такое m называется экспонентом графа Г. Под субэкспонентом орграфа Г понимается субэкспонент матрицы смежности его вершин. Субэкспонент сильносвязного n-вершинного графа не превышает n (он равен диаметру графа).

Одной из важных задач при изучении перемешивающих свойств преобразований является определение экспонентов перемешивающих матриц и соответственно пере-метттиваютттих графов [1, 2]. При исследовании экспонентов матриц и графов часто используется эпиморфизм мультипликативного моноида неотрицательных матриц порядка n на моноид n-вершинных орграфов, где умножение орграфов определено как умножение бинарных отношений [3]. Матрица положительна, если и только если соответствующий граф полный. Отсюда следует, что орграф и его матрица смежности M одновременно примитивны или не примитивны, в случае примитивности экспоненты их равны.

Критерий примитивности орграфа определяется длинами его простых контуров [2] (контур простой, если проходит через любую вершину не более одного раза). Если

6*1,... , Ск суть все простые контуры орграфа длин /1,... , /к соответственно, то орграф примитивный, если и только если числа /1, ..., /к взаимно просты.

Набор взаимно простых в совокупности натуральных чисел А = (а1,... ,ак), где 1 < а1 < ... < ак, называется примитивным. Заметим, что множество всех примитивных наборов натуральных чисел совпадает с областью определения функции Фробе-ниуса f (а1,..., ак) [4].

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

Распознавание примитивности набора чисел (а1, . . . , ак) можно выполнить, применив к — 1 раз алгоритм Евклида к элементам набора. Можно также воспользоваться заранее составленными таблицами примитивных наборов.

В п. 1 работы описана связь экспонента и субэскпонента матрицы и ее полугруп-повых характеристик, в п. 2 представлены основные свойства примитивных наборов натуральных чисел, в п. 3 сформулированы и доказаны критерии тупиковости и к-минимальности наборов, в п. 4 описан алгоритм перечисления к-минимальных тупиковых примитивных наборов, в п. 5 оценена вычислительная сложность определения длин простых циклов графа с помощью поиска в глубину, а в п. 6 — вычислительная сложность определения экспонента матрицы (и соответствующего графа) с помощью возведения матрицы в степень.

1. О связи экспонента и субэкспонента матрицы с её полугрупповыми

характеристиками

Обозначим через А = (а^) матрицу смежности вершин орграфа Г и через

А* = (а^ — степень матрицы А. Периодом вершины орграфа называется наибольший

общий делитель (НОД) всех длин контуров, содержащих данную вершину. Заметим, что при подсчёте достаточно учитывать только простые контуры, так как любой контур представляет собой соединение нескольких простых контуров и его длина кратна НОД длин всех составляющих его простых контуров. Если орграф сильно связен (матрица А является неразложимой [2, гл. VI, § 2]), то все его вершины имеют одинаковый период, называемый также к-периодом матрицы А (орграфа Г).

Носителем неотрицательной матрицы В = (Ъ^) называется 0,1-матрица V(В) = (^), где

1, если Ъу > 0,

0, если Ъ^ = 0.

Множество 0,1-матриц размера п х п образует полугруппу относительно операции *, где А * В = V(АВ).

Утверждение 1 [2, гл. VI, теорема 2.2]. Пусть к-период сильносвязного орграфа Г равен д > 0. Тогда для любых вершин г, ] существует единственное число г(г, ]),

0 ^ г(г,]) < д, такое, что

1) если а(^ > 0, то £ = г(г,^)(шоё д);

2) существует число к (г, ]) > 0, такое, что ак/9+г > 0 для любого к ^ к (г, ]).

Следовательно, множество вершин V графа Г разбивается на д блоков:

V = Со и ... и 6,-1,

при этом имеется единственная упорядоченная последовательность этих блоков со свойством: если (i, j) —дуга графа Г и i G Cs, где s G {0,..., q — 1}, то j G C'(s+i)modq.

Отсюда Akq+r + Akq+r+1 + ... + Akq+r+q-1 > 0 для любого k ^ max{k(i, j)}.

i,j

Утверждение 2. Пусть неразложимая матрица A = (a^) с к-периодом q имеет тип (d, т) в полугруппе Gn, где d — циклическая глубина и т — период матрицы A. Тогда

1) т = q;

2) если матрица A примитивная, то d = exp A и т = 1;

3) если A не примитивная, то т > 1 и субэкспонент матрицы A не превышает d + т — 1.

Доказательство. Из определения типа матрицы следует

Ad = Ad+T. (1)

Если матрица A примитивная, то q = 1 в силу критерия примитивности сильносвязного орграфа. Пусть 7 = exp A, то есть A7 > 0, тогда в полугруппе Gn выполнены условия A7 = A7+1 и A7 = A7 1. Следовательно, (1) выполняется при d = 7, т = 1. Субэкспонент матрицы не превышает 7.

Если A не примитивная, то q > 1. Из утверждения 1 следует, что в полугруппе Gn имеет место Akq+r = Akq+r+q для любого k ^ max{k(i, j)} и Akq+r = Akq+r-q

i,j

при k < max{k(i, j)}. Следовательно, (1) выполняется при т = q и d ^ k(i, j)q + r. Из

i,j

утверждения 1 также следует, что Afcq+r + Afcq+r+1 + ... + Afcq+r+q-1 > 0 для любого k ^ max{k(i, j)}. Значит, субэкспонент матрицы A не превышает d + т — 1. ■

2. Определяющие свойства примитивных наборов натуральных чисел

Исследуем свойства примитивных наборов.

Утверждение 3. Если A — примитивный набор чисел, то примитивен любой набор, полученный из A добавлением любого натурального числа или (при | A | > 1) удалением числа a, кратного одному из остальных чисел набора.

Следствие 1. Набор примитивен, если содержит пару взаимно простых чисел.

Определение 1. Набор из Nk назовем приведённым, если в нём любое число не кратно любому другому числу.

Иначе говоря, приведённый набор (а1,... , ak) является антицепью в решётке натуральных делителей числа k^ = lcm(a1,..., ak), обозначаемой D(k^), где lcm(a1, ..., ak) —наименьшее общее кратное чисел а1,..., ak.

Любому примитивному набору A размера k ^ 1 однозначно соответствует приведённый набор n(A) размера l, где 1 ^ l ^ k: если в наборе A число aj кратно a*, то набор n(A) не содержит aj.

Определение 2. Примитивный набор A размера k ^ 1 назовем тупиковым, если A = (1) или при k > 1 удаление из набора любого элемента нарушает его примитивность.

Все примитивные наборы длины 2, не содержащие 1, являются тупиковыми, так как при удалении одного из элементов набора остается число, отличное от 1. В соответствии с утверждением 3 примитивный тупиковый набор является приведённым набором.

Определение 3. Примитивный набор A размера k > 1 назовем r-примитивным, где 0 ^ r ^ k — 1, если после удаления из A любого подмножества порядка r примитивность получившегося набора сохраняется.

Тупиковый набор 0-примитивен, но не 1-примитивен.

Далее полагаем, что A = (a1,... , ak) G Nk — приведённый набор, элементы которого не превышают числа m. Пусть 2А — булеан множества {a1,... , ak}; P(A, r) — множество всех примитивных наборов (упорядоченных по возрастанию) размера (порядка) r, P(A) = U P(A, r). Заметим, что если A — примитивный приведённый набор, то все

r^k

наборы из P(A) также приведённые.

На множестве P(A) определим отношение частичного порядка: (b1,...,bi) ^

^ (a1,... , ak), если и только если l ^ k и найдется бесповторная упорядоченная выборка (i1,... , ii) из (1,..., k), такая, что i1 < ... < i и bj делит a^, j = 1,... , l.

Определение 4. Тупиковый набор B G P(A) назовем минимальным в P(A), если не существует другого набора B' G P(A), такого, что B' ^ B.

Для любого набора B из P(A) имеется хотя бы один минимальный тупиковый набор 0(B), такой, что 0(B) ^ B.

Определение 5. Тупиковый набор B G P(A) назовем r-минимальным в P(A), если не существует другого набора B' G P(A) размера r, такого, что B' ^ B.

Утверждение 4. Если A — примитивный приведённый набор, то (P(A), ^) — верхняя полурешётка, в которой максимальный элемент есть A и любой минимальный элемент — это тупиковый минимальный набор.

Доказательство. Если наборы A1, A2 G P(A) имеют размеры соответственно l и r, то их верхняя грань sup{A1, A2} определена как набор размера t упорядоченных по возрастанию элементов множества A1 U A2, где max {l,r} ^ t ^ r + l. В соответствии с утверждением 3, sup{A1, A2} также есть примитивный набор из P(A), то есть (P(A), ^) —верхняя полурешётка.

Утверждения о максимальном и минимальных элементах полурешётки вытекают из определений множества P(A) и тупикового минимального набора. ■

Для набора A рассмотрим наибольший общий делитель как функцию, определённую на 2a. При B = {aix,..., ai;} G 2A обозначим gcd(B) = gcd(aix,..., ai;), если B = 0, и gcd(0) = lcm(a1,..., ak), где gcd(aix,... , ai;) — наибольший общий делитель чисел aix,

..., ai;; D(A) = {gcd(B) : B G 2A}. Множество D(A) частично упорядочено по отношению делимости: gcd(B) ^ gcd(B') для B,B' G 2A, если и только если gcd(B) делит gcd(B').

Утверждение 5. Если A — примитивный тупиковый набор, то D(A) —решётка, антиизоморфная решетке 2A.

Доказательство. Установим биективность функции gcd: 2A ^ D(A), для этого достаточно убедиться в её инъективности.

Предположим, что функция gcd не инъективна, то есть найдутся множества B1,B2 G 2A, B1 = B2, такие, что gcd(B1) = gcd(B2) = d. Заметим, что gcd(B1 U B2) делит d в соответствии с определением функции gcd. Вместе с тем d делит каждое из чисел множества B1 U B2. Значит, gcd(B1 U B2) = d.

Так как B1 = B2, то одно из этих множеств не включено в другое, пусть для определённости B2 \ B1 = 0. Обозначим B3 = A \ (B1 U B2). В соответствии с определением

функции gcd имеем цепочку равенств

1 = gcd(A) = gcd(Bl и £2 и В3) = gcd(gcd(Bl и В2), В3) =

= gcd(d, В3) = gcd(gcd(Bl), В3) = gcd(Bl и В3).

Следовательно, множество В1 и В3 примитивное, где В1 и В3 С А, так как В2 \ В1 = 0. Отсюда получаем противоречие с тупиковостью набора А.

В соответствии с определением функции gcd если В С В', то gcd(B') делит gcd(B), значит, биекция 2А о Д(А) антиизотонна. ■

3. Критерии тупиковости и к-минимальности наборов натуральных чисел

Обозначим через Аг коатомы решётки 2А и через ^ — атомы решётки Д(А): Аг = = {аь ..., ак} \ {а*}, ^ = gcd(Ai), г = 1,..., к.

Теорема 1. Набор А примитивный тупиковый, если и только если (^1,... , ) —

набор попарно взаимно простых чисел, отличных от 1. При этом

Сг^1 ' ... ' ^к

а =-------------

где (с1,...,ск) есть 1-примитивный набор натуральных чисел и gcd(ci,^i) = 1 для г = 1,... , к.

Доказательство. Пусть набор А примитивный тупиковый. Если = 1 при некотором г Е {1,..., к}, то множество Аг примитивное, что противоречит тупиковости набора А. Если gcd(^г,^j) = й > 1 при г = ], то й делит все числа множеств Аг и А^-, значит, й делит все числа набора А, что противоречит его примитивности.

Докажем достаточность. Если набор А не примитивный, то gcd(A) = й > 1. Отсюда й делит при любом г = 1,... , к, значит, числа ^1,... , ^ не являются попарно взаимно простыми, то есть имеем противоречие. Если набор А не тупиковый, то = 1

при некотором г Е {1,... , к}, что противоречит условию.

По определению чисел ^1,... , ^к число аг делится на каждое из чисел множества {^1,..., ^к} \ {^г}, следовательно, для г = 1,... , к верно (2), где (с1,... , ск) Е Nк.

Заметим, что набор (с1,... , Ск) примитивный, так как иначе набор А не примитивный в силу (2). Если gcd(ci,^i) = й > 1 при некотором г Е {1,... , к}, то й делит все числа набора А в соответствии с (2) и с определением чисел ^1,... ,^к, что противоречит примитивности набора А. Следовательно, gcd(cг, ^г) = 1 при любом г = 1,... , к. Из (2) и определения чисел ^1,... , ^к следует также, что

gcd ({с1^2 ' ... ' ^к, . . . , Ск^1 ' ... ' ^к— 1} \ { (сг^1 ' ... ' ^к) /^г}) .

Значит, gcd({c1,... , ск}\{сг}) = 1 для г = 1,... , к, и (с1,... , ск) есть 1-примитивный набор. ■

Следствие 2. Пусть В = {аг1,..., агг} Е 2А и В = А \ В, тогда

gcd(B) = gcd({cгl, . . . , Сг; }) П_^.

¿ев

Доказательство. Если с1,..., ск, х1,..., хк Е N, то gcd(c1x1,..., скхк) делится на gcd({c1,..., ск })gcd(x1,..., Хк). Отсюда, положив = (^1 ■ ... ■ ^к )/^г,

г = 1,... , к, в соответствии с (2) получаем, что gcd(£) делится на gcd({cil,... , сгг}) х xgcd({жil,... ,хгг}), где из теоремы 1 следует, что gcd({жil,... , }) = П ^.

7 ев

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

(2)

Без ущерба для общности положим В = {а1 ,... , аг}, где 1 ^ I ^ к, и обозначим С = gcd(c1,... ,сг), х' = gcd(x1,... ,хг). В этих условиях множества С' = {с1/с/, ... ,сг/с'} и X' = {х1/х',... , хг/х'} примитивные.

Пусть gcd(B) = й ■ с' ■ х' при натуральном й> 1, тогда gcd(£') = й, где В' = = {а1/с' ■ х',... , аг/с' ■ х'}. Следовательно, й делит сгхг/с'х' при г = 1,... , / , отсюда

й = й(сг )й(хг), (3)

где й(сг) делит сг/с' и й(хг) делит хг/х'. В силу примитивности множества С' найдется номер г Е {1,...,/}, такой, что й(хг) > 1. Тогда, учитывая, что хг/х' = (^1 ■ ... ■ )/^г,

г = 1,...,/, и числа ^1,..., попарно взаимно простые, найдется номер Е {1,... , /}, такой, что gcd(d(xr),^-) = йГ!- > 1, значит, йГ!- делит й. Из того, что gcd(Хj/х',^-) = 1, следует gcd(Хj/х',йГ!-) = 1, отсюда в силу (3) йГ!- делит й(с7-), поэтому делит сс7-/с'.

Вместе с тем в соответствии с теоремой 1 gcd(cj,^7) = 1, тогда gcd(d(cj),йГ!-) = 1. Имеем противоречие. Следовательно, й = 1. ■

Представление целого числа п произведением степеней простых чисел п = = е ■ р11 ■ ... ■ , где е = ±1, кг > 0 — кратность числа рг, называется каноническим

разложением числа п, при этом множество чисел {р1,... ,р5} называется факторной базой числа п и обозначается ^(п).

Определение 6. Факторной базой набора А = (а1,..., ак) назовем множество чисел ^(А) = ^(а1) и ... и ^(ак).

Докажем критерий к-минимальности тупикового примитивного набора.

Следствие 3. Примитивный тупиковый набор А является к-минимальным, если и только если ^1, ..., ^к — простые числа и сг = 1, г = 1,... , к.

Доказательство. Пусть А есть к-минимальный набор и каноническое разложение при некотором г Е {1,..., к} имеет вид ■ ... ■ . Рассмотрим набор В, состоящий из чисел ^1,..., ^г_ 1, ^г+1,... ,^к, ■ ... ■ рк8-1. Согласно (2),

В ^ А, причём его размер равен к. Тогда А не является к-минимальным. Если С > 1 при некотором г Е {1,..., к}, то существует набор В', которому соответствуют с1,... , сг—1, сг+1,... , Ск, с' = 1. Согласно (2), В' ^ А, что противоречит к-минимально-сти А. Следовательно, ^1, ..., ^к — простые числа и сг = 1, г = 1,... , к.

Если набор А не является к-минимальным, то существует набор А' = (а1,... , ак), такой, что А' ^ А. Согласно (2), а' = (с^ ■ ... ■ ^'к)/^', г = 1,... , к, причём С делит сг или [}!■ делит ^ при некоторых г, ^ Е {1,... ,к}. Тогда сг > 1 или ^ составное соответственно. ■

Следствие 4. Факторной базой к-минимального тупикового набора является множество {^1,... , ^к}.

Примеры к-минимальных тупиковых примитивных наборов:

1) 3-минимальные наборы А = (6,10,15), ^(А) = {2, 3, 5}; В = (10,14, 35), ^(В) = = {2,5,7};

2) 4-минимальный набор С = (30, 42, 70,105), ^(С) = {2, 3, 5, 7}.

4. Перечисление к-минимальных примитивных наборов натуральных

чисел

По утверждению 3 любой примитивный набор А можно получить из соответствующего тупикового набора А' добавлением любого числа. По следствию 3 любой ту-

пиковый набор А/ можно получить из соответствующего к-минимального набора А" умножением элемента набора а на число, взаимно простое с г € {1,... , к}.

Построим алгоритм перечисления множества всех к-минимальных примитивных наборов, состоящих из чисел, не превышающих т (обозначим его РДт).

Пусть Р(ж) —множество простых чисел, не больших ж. Известно [5], что п(ж) = |Р(ж)| ~ ж/1пж. Набор размера 2 является 2-минимальным, если и только если он представляет собой пару различных простых чисел. Число таких наборов равно п(т)(п(т) — 1)/2. Задача перечисления 2-минимальных примитивных наборов решается, в частности, с использованием «решета Эратосфена».

При к > 2 в соответствии с теоремой 1 и следствием 3 к-минимальный тупиковый примитивный набор А = (а^ ... , ак) состоит из чисел а = (^ • ... • ^к)/^г, где (^1,..., ^к) —набор различных простых чисел. Тогда если ^1 < ... < ^к, то достаточно

перечислить все наборы (^1,... , ^) со свойством ^2 • ... • ^к ^ т. Заметим, что при

1

данных ограничениях ^2 < тк-1.

Пусть п-е простое число есть рп. Тогда р1 = 2 ^ ^1, р2 = 3 ^ ^2. Для к > 2 обозначим Фк = р3 • ... • рк и положим Ф2 = 1. Значения Фк для к = 3,... , 8 приведены в табл. 1.

Таблица 1 Значения функции Фк

к 3 4 5 6 7 8

Фк 5 35 385 5005 85085 1616615

Для любого подходящего набора (^1,... , ^к) из неравенства ^2 • ... • ^к ^ т при

1

к > 2 следует, что р2 ^ ^2 ^ тк-1 и для в = 3,... , к

1

т \ к-3+1

р ^ ^ ^ ^ф—^ , (4)

где при в < к неравенство строгое.

Алгоритм перечисления при к > 2 состоит в следующем. В качестве ^ перебираем все простые числа в пределах, указанных двусторонним неравенством (4). При 3 ^ в < к и каждом фиксированном наборе чисел (^+і,... , ^к) в качестве ^ перебираем все простые числа в пределах, указанных в (4). При каждом фиксированном наборе чисел (^з,... , ^к) перебираем все простые числа ^1 и ^2, где 2 ^ ^1 < ^2 < т.

Оценим вычислительную сложность алгоритма, измеренную числом построенных наборов различных простых чисел (^,...,^к). Из алгоритма следует, что при в = 3,..., к число различных значений ^ не больше п ^(т/ (3Ф5-1)) к-8+^ (при

в < к строго меньше). Число различных пар (^1,^2) не больше п(х)(п(х) — 1)/2 при 1

х = тк-1. Тогда общее количество искомых наборов оценивается величиной п(т^) (п(т^) — 1) к // ч________________________________1

Пп

3 . •3Ф*

8=3

к — в + 1

При больших т и к эта величина имеет порядок не более

к-1

О і (ктк-1 (т/3)Я(к 1^ / Ми2 т ^ Ф

2 . . ..

І=2

т

где Н(к — 1) = 1 +----1---+ ... + ------сумма первых (к — 1) членов гармоническо-

2 3 к 2

( ( к-1 \\

го ряда. Порядок последней величины не превышает 01 т1п к / I 1п2 т П фЛ . При

V V ->-2 ))

к > 2 для оценки величин Фк можно использовать оценку [6]: рк > к 1п к. Тогда

к! к фк > - П 1п з.

2 7-3

Пусть теперь числа а1,... , ак не ограничены. Тогда наибольшее число в к-мини-мальном тупиковом примитивном наборе равно тах(а1,... , ак) = ^2 •... • ^к. С использованием точных значений простых чисел вычислены достижимые нижние оценки для наибольших чисел в к-минимальных тупиковых примитивных наборах при к = 3, . . . , 8 (табл. 2).

Таблица 2

Числовые границы для наборов длины к

Размер набора к 3 4 5 6 7 8

Нижняя граница шах(а1,... , ак) 15 105 1155 15015 255255 4849845

5. Определение длин простых циклов с помощью поиска в глубину

Для определения длин простых циклов используем известный алгоритм поиска в глубину [7].

Пусть дан граф О = (V, Е), где V — множество вершин графа, а Е — множество его неориентированных рёбер либо ориентированных дуг. Опишем алгоритм обхода всех рёбер графа. В качестве начальной выбираем произвольную вершину и двигаемся по рёбрам, пока не встретится тупик (вершина, не имеющая исходящих рёбер, ведущих в непосещённые вершины). После попадания в тупик возвращаемся назад по пройденному пути, пока не встретится вершина, у которой есть исходящие ребра, ведущие в непосещённые вершины, и из неё двигаемся дальше по одному из таких рёбер. Алгоритм обхода рёбер завершает работу, когда встречается начальная вершина и все её соседние вершины уже посещены. Если после этого остаются непосещённые вершины, то повторяется поиск из одной из них в соответствии с вышеописанным алгоритмом. Алгоритм завершается, когда обнаружены все вершины графа.

Для наглядности считаем, что в ходе работы алгоритма вершины графа могут быть белыми, серыми и чёрными. Изначально все вершины помечены белым цветом. Впервые обнаружив вершину V, красим её серым цветом. По окончании обработки всех исходящих рёбер красим вершину V в чёрный цвет. Таким образом, белый цвет соответствует тому, что вершина ещё не обнаружена, серый — что вершина обнаружена, но просмотрены ещё не все исходящие из неё ребра, чёрный — что вершина обнаружена и все исходящие из неё рёбра просмотрены.

Оценим вычислительную сложность реализации алгоритма на однопроцессорной системе. В качестве элементарных операций выберем прохождение ребра графа и сравнение двух чисел. Так как каждое ребро проходится не более одного раза в прямом и обратном направлении, то время работы алгоритма поиска в глубину оценивается величиной О(п2).

Модифицируем данный алгоритм поиска в глубину с целью определения длин всех простых циклов. В частности, переходя в вершину и из вершины V по ребру (V,«),

будем запоминать предшественника u, записывая p[u] = v. Для вершин, у которых предшественников нет, положим p[u] = -1.

Рёбра ориентированного графа можно разделить на несколько категорий в зависимости от их роли при поиске в глубину. Рёбра деревьев — это ребра, входящие в лес поиска в глубину. Обратные рёбра — это рёбра, соединяющие вершину с её предком в дереве поиска в глубину. Прямые ребра — это рёбра, соединяющие вершину с её потомком, но не входящие в лес поиска в глубину. Перекрёстные ребра —все остальные. Они могут соединять две вершины из одного дерева поиска в глубину, если ни одна их этих вершин не является предком другой, или же вершины из разных деревьев.

Тип ребра (v,u) можно определить по цвету вершины u в момент, когда ребро проходится в первый раз: белый цвет означает ребро дерева ((v, u) войдёт в лес поиска в глубину); серый (u является предком v) — обратное ребро; чёрный (ни одна из вершин не является предком другой) — прямое или перекрёстное ребро.

Для каждой вершины v в процессе поиска в глубину запомним ещё два параметра: в d[v] запишем «время» i-го попадания в вершину, а в f [v] — «время» (i + 1)-го попадания. Здесь под «временем» понимается номер шага алгоритма. Если вершина u серая, то это означает, что последнее ребро — обратное и получен цикл, содержащий u. Если d[u] = 0, то данный цикл является простым, так как вершина u встретилась второй раз. Длина цикла равна разности f [u] — d[u].

Вычисление длин простых циклов реализуется в ходе алгоритма поиска в глубину и имеет порядок временной сложности O(n).

Из полученного набора длин циклов необходимо выделить множество всех различных длин с помощью упорядочивания чисел [8]. Сложность увеличится не более чем в O(log n) раз, то есть вычислительная сложность алгоритма определения длин всех простых циклов графа оценивается величиной O(n2 log n).

Ёмкостная сложность алгоритма определяется размером памяти, необходимым для хранения матрицы смежности вершин графа, то есть составляет O(n2) битов.

6. Определение экспонента графа с помощью возведения в степень

матрицы смежности вершин

Определение экспонента графа связано с возведением в степень матрицы M смежности вершин графа и с проверкой положительности её элементов.

Известна [9, 10] достижимая оценка экспонента матрицы exp M ^ n2 — 2n + 2, где n — порядок матрицы. То есть если матрица M* имеет при t > n2 — 2n + 2 хотя бы один нулевой элемент, то соответствующий граф не примитивен. Если M* > 0, то матрица и граф примитивны и exp M = exp Г ^ t.

Для оценки вычислительной сложности алгоритма рассмотрим однопроцессорную вычислительную модель. Элементарными операциями считаем сложение и умножение в кольце целых чисел. Рассмотрим операцию умножения в полугруппе Gn. Размер необходимой памяти оценим в битах.

Сложность умножения квадратных матриц размера n имеет порядок O(n3). При этом для распознавания примитивности достаточно возвести матрицу в степень не выше 2r, где r = |~log2(n2 — 2n + 2)]. С помощью алгоритма быстрого возведения в степень [8] потребуется O(rn3) = O(n3 log2 n) операций для определения примитивности матрицы.

Опишем подробнее алгоритм быстрого возведения в степень для точного вычисления экспонента матрицы. Возведем матрицу M в квадрат. Полученную после первого возведения матрицу M2 ещё раз возведем в квадрат, получим M4 и т. д. Пусть матрица

Mk положительна. Тогда вернемся к матрице Mk/2 и умножим её на матрицу Mk/4, и далее будем делить пополам отрезок, содержащий значение exp M, пока не определится наименьшая степень t, при которой матрица M* положительна.

Оценим ёмкостную сложность алгоритма. В памяти достаточно хранить матрицы M*, где t = 20, 21,... , 2r-1. Таким образом, ёмкостная сложность алгоритма составляет O(n2 log2 n).

Сравним эти значения с оценками сложности алгоритма распознавания примитивности n-вершинного ориентированного графа с помощью поиска в глубину, полученными в п. 5. Результаты сравнения приведены в табл. 3.

Таблица 3

Сложность алгоритмов распознавания примитивности графа

Алгоритм Временная сложность Емкостная сложность

Поиск в глубину O(n2 log n) обращений к памяти O(n2) бит

Возведение в степень матрицы смежности O(n3 log n) сложений и умножений единиц и нулей O(n2log2 n) бит

Отметим, что, в отличие от первого алгоритма, второй определяет значение показателя примитивности.

ЛИТЕРАТУРА

1. Фомичев В. М. Оценки экспонентов примитивных графов // Прикладная дискретная математика. 2011. №2(11). С. 101-112.

2. Сачков В. Н., Тараканов В. Е. Комбинаторика неотрицательных матриц. М.: ТВП, 2000.

3. Биркгоф Г. Теория решеток. М.: Наука, 1984.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

4. Арнольд В. И. Экспериментальное наблюдение математических фактов. М.: МЦНМО, 2006.

5. Коблиц Н. Курс теории чисел и криптографии. М.: ТВП, 2001.

6. Rosser B. The n-th prime is greater than n log n // Proc. London Math. Soc. 1939. V. 45. P.21-44.

7. Лахно А. П. Поиск в глубину и его применение // Московские олимпиады по информатике. М.: МЦНМО, 2006.

8. Порублев И. Н., Ставровский А. Б. Алгоритмы и программы. Решение олимпиадных задач. М.: Вильямс, 2007

9. Wielandt H. Unzerlegbare nicht negative Matrizen // Math. Zeitschr. 1950. No. 52. S. 642-648. 10. Сачков В. Н., Ошкин И. Б. Экспоненты классов неотрицательных матриц // Дискретная

математика. 1993. №2. С. 150-159.

i Надоели баннеры? Вы всегда можете отключить рекламу.