книги / Решение некоторых многоэкстремальных задач методом сужающихся окрестностей
..pdfтакже нетруден, номерами перестановок можно оперировать, не прибегая к десятичной системе счисления. В этом случае для хра нения номера перестановки в памяти ЭВМ требуется массив, сос тоящий из п ячеек, в каждой из которых помещается целое число (факториальная цифра), не превышающее п.
Формирование перестановки р1г удаленной на заданное расстоя ние г от перестановки р0, производится по следующему алгоритму.
А л г о р и т м 2.3.
Ш а г 1 . Сформировать факториальный номер К (р0) — (&?&2 •••
&°_i)<i> перестановки р0 (по формулам (2.7), (2.8)). Здесь символом (•)<|> обозначена запись числа в факториальной системе счисления.
Ш а г |
2. |
Перевести |
число |
| г | в факториальную систему счис |
|
ления. |
3. |
Если г > |
0 , то получить число К (px)<t> — К (Ро)<t> Ф |
||
Ш а г |
|||||
ф г<|>, в |
противном |
случае вычислить |
|||
|
|
К (Pl)<l> = |
(ро)<|> © r<i>* |
||
Здесь символами ф |
и Q обозначены операции сложения и вычи |
||||
тания в факториальной системе счисления. |
|||||
Ш а г 4. |
Восстановить перестановку рх по ее факториальному |
номеру К (Pi)<i>.
Алгоритм 2.3 реализован в виде программы LEXICO на языке ФОРТРАН. Каждому шагу соответствуют отдельные подпрограм мы. Шагу 1 соответствует подпрограмма FORIL, шагу 2 — под программа FORILR, шагу 3 — подпрограммы ADDIT и SUBST, шагу 4 — подпрограмма FIPP.
Ниже приведены тексты программы LEXICO и вызываемых ею подпрограмм.
СSUBROUTINE LEXICO
с********************************************************************
с
С ПРОГРАММА ПРЕДНАЗНАЧЕНА ДЛЯ ПОСТРОЕНИЯ
СПЕРЕСТАНОВКИ, ЛЕЖАЩЕЙ В ОКРЕСТНОСТИ ЗАДАННОГО
СРАДИУСА ДЛЯ СЛУЧАЯ ЛЕКСИКОГРАФИЧЕСКОЙ МЕТРИКИ
СОПИСАНИЕ ПАРАМЕТРОВ:
С
СN — ЧИСЛО СИМВОЛОВ В ПЕРЕСТАНОВКЕ
СNR — РАДИУС ОКРЕСТНОСТИ
СIBP — ЦЕНТРАЛЬНАЯ ПЕРЕСТАНОВКА
СIP — ИСКОМАЯ ПЕРЕСТАНОВКА
С
СВЫЗЫВАЕМЫЕ ФУНКЦИИ И ПОДПРОГРАММЫ!
СFIPP,ADDIT,SUBST,FORILR, RNDM,FORIL
С******************************************************************
С
COMMON /IN NE/ N /RANE/ NR /MENE/ IBP(300), *IP(300) /FOR/ IR
CALL FORIL
XS = RNDM (—1)
4* |
51 |
on n o o n o n o n n o n n n o no
n o n o n o n o n n n on
IR = NR*XS + 1 CALL FORILR
X S = RNDM (—1) IF(XS.LT..5) GO TO 1 CALL SUBST
GO TO 2
1 CALL ADDIT
2CALL FIPP RETURN END
SUBROUTINE FORIL
********************************************************************
ПОДПРОГРАММА FORIL ПРЕДНАЗНАЧЕНА ДЛЯ НАХОЖДЕНИЯ ФАКТОРИАЛЬНОГО НОМЕРА ИСХОДНОЙ ПЕРЕСТАНОВКИ ПРИ ЛЕКСИКОГРАФИЧЕСКОМ УПОРЯДОЧЕНИИ МНОЖЕСТВА ВСЕХ ПЕРЕСТАНОВОК
********************************************************************
ПАРАМЕТРЫ ПОДПРОГРАММЫ:
N — ДЛИНА ПЕРЕСТАНОВКИ;
IP - ВЕКТОР ДЛИНОЙ N, СОДЕРЖАЩИЙ ИСХОДНУЮ, ПЕРЕСТАНОВКУ;
IL - ВЕКТОР ДЛИНОЙ N. СОДЕРЖАЩИЙ ФАКТОРИАЛЬНЫЕ ЦИФРЫ НОМЕРА ПЕРЕСТАНОВКИ.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
COMMON /INNE/ N /MENE/ IP(300)
COMMON /PLEX/ I L(300)
DO |
1 I = |
1,N |
L = |
0 |
1,1 |
DO |
2 J = |
IF(IP(J).LE.IP(I))L = L + 1 2 CONTINUE
1IL(I) = IP(I) - L RETURN
END
SUBROUTINE FORILR
********************************************************************
ПОДПРОГРАММА FORILR ПРЕДНАЗНАЧЕНА ДЛЯ ПЕРЕВОДА ДЕСЯТИЧНОГО ПОЛОЖИТЕЛЬНОГО ЦЕЛОГО ЧИСЛА В ФАКТОРИАЛЬНУЮ СИСТЕМУ СЧИСЛЕНИЯ
********************************************************************
ПАРАМЕТРЫ ПОДПРОГРАММЫ:
IRR — ИСХОДНОЕ ДЕСЯТИЧНОЕ ЧИСЛО;
IL2 - ВЕКТОР ДЛИНОЙ N, СОДЕРЖАЩИЙ ЦИФРЫ ФАКТОРИАЛЬНОГО ЧИСЛА;
52
n n n n
n n n n n n n n n n n n пп
N— НОМЕР ЭЛЕМЕНТА ВЕКТОРА IL2, СОДЕРЖАЩЕГО МЛАДШУЮ ФАКТОРИАЛЬНУЮ ЦИФРУ.
***********************Не********************************************
COMMON /INNE/ N /FOR/ IR /RLEX/ IL2(300)
DO 1 I = 1,N
1IL2(I) = 0 MTC = IR DO 3 I = 2,N
IC = N — I + 1 KV = MTC/I IF(KV)2,4,2
2 |
IL2(IC) = MTC — KV*I |
3 |
MTC = KV |
4IL2(IC) = MTC RETURN
END
SUBROUTINE ADDIT
*********************************************************************
ПОДПРОГРАММА ADDIT ПРЕДНАЗНАЧЕНА ДЛЯ СЛОЖЕНИЯ ДВУХ ФАКТОРИАЛЬНЫХ ПОЛОЖИТЕЛЬНЫХ ЦЕЛЫХ ЧИСЕЛ
♦♦***♦♦**♦******♦#*♦**♦***♦***♦♦#♦♦***♦♦*♦**♦♦♦♦♦♦****♦***♦♦♦♦♦*♦♦♦*♦
ПАРАМЕТРЫ ПОДПРОГРАММЫ:
IL, IL2, IPL — ВЕКТОРЫ ДЛИНОЙ N, СОДЕРЖАЩИЕ СООТВЕТ СТВЕННО СЛАГАЕМЫЕ И СУММУ В ФАКТОРИАЛЬ НОЙ СИСТЕМЕ СЧИСЛЕНИЯ.
*********************************************************************
COMMON /INNE/ N /PLEX/ IL(300) /RLEX / IL2(300) COMMON /FLEX/ IPL(300)
I P = 0
DO 1 J = 2,N
I = N — J + 1
IPL(I) = IL(I) + IL2(I) + IP IF(IPL(I).GE.J) GOTO 2
I P = 0 GO TO l
2 IPL(I) = IPL(I) — J IP = 1
ICONTINUE IPL(N) = IL(N) RETURN
END
SUBROUTINE SUBST
no С
************************************##*******************************
ПОДПРОГРАММА SUBST ПРЕДНАЗНАЧЕНА ДЛЯ ВЫЧИТАНИЯ
СДВУХ ФАКТОРИАЛЬНЫХ ПОЛОЖИТЕЛЬНЫХ ЦЕЛЫХ
СЧИСЕЛ
63
n n o o n n n o n
**************»**•***«**********•••*«•**•*••**•••**••*•••**••••**•*•*•
ПАРАМЕТРЫ ПОДПРОГРАММЫ:
IL — ВЕКТОР ДЛИНОЙ N, СОДЕРЖАЩИЙ УМЕНЬШАЕМОЕ ФАКТОРИАЛЬНОЕ ЧИСЛО;
IL2 — ВЕКТОР ДЛИНОЙ N, СОДЕРЖАЩИЙ ВЫЧИТАЕМОЕ ФАКТОРИАЛЬНОЕ ЧИСЛО;
IPL — ВЕКТОР ДЛИНОЙ N, СОДЕРЖАЩИЙ РАЗНОСТЬ В ФАКТОРИАЛЬНОЙ СИСТЕМЕ СЧИСЛЕНИЯ.
о о
|
*********** ********************************************************** |
|||
|
COMMON /INNE/ N /PLEX/ 1Ц300) /PLEX / IL2(300) |
|||
|
COMMON /FLEX/ IPL(300) |
|||
|
DIMENSION |
IL 1(300) |
||
4 |
DO 4 I — 1,N |
|
||
IL1(I) = |
IL(I) |
|
||
|
DO |
1 J = 2,N |
||
|
I = |
N — J + |
1 |
|
|
IF(IL1(I).LT.IL2(I)) GOTO 2 |
|||
|
IPL(I) = |
IL1(I) — IL2(I) |
||
2 |
GO TO 1 |
IL1(I) + J — IL2(I) |
||
IPL(I) = |
||||
|
IF(I.EQ .l) GOTO 1 |
|||
|
IL1 (I — 1) = |
ILI(I — 1) — 1 |
1CONTINUE IPL(N) = IL(N) RETURN
END
SUBROUTINE FIPP
C**********************************************************************
СПОДПРОГРАММА FIPP ПРЕДНАЗНАЧЕНА ДЛЯ ФОРМИРОВАНИЯ
СПЕРЕСТАНОВКИ ПО ЕЕ НОМЕРУ В ЦЕПИ ЛЕКСИКОГРАФИЧЕСКИ
СУПОРЯДОЧЕННЫХ ПЕРЕСТАНОВОК
С
с *********************************************************************
СПАРАМЕТРЫ ПОДПРОГРАММЫ:
С IPP — ВЕКТОР ДЛИНОЙ N, СОДЕРЖАЩИЙ СФОРМИРОВАННУЮ
СПЕРЕСТАНОВКУ;
С IPL — ВЕКТОР ДЛИНОЙ N, СОДЕРЖАЩИЙ ЦИФРЫ ФАКТОРИ-
САЛЬНОГО НОМЕРА ПЕРЕСТАНОВКИ
СN — ДЛИНА ВЕКТОРА.
С
с*********************************************************************
COMMON /INNE/ N /FLEX/ IPL(300) /MENE/ IP(300), *IPP(300)
DIMENSION 11(300)
DO 4 1 = 1, N
4IPL(I) = IPL(I) + 1 NOB = N
DO 1 |
1 = |
l,NOB |
1 11(0 |
= i |
|
N1 = |
NOB — 1 |
|
DO 2 I = |
l.NOB |
|
J = |
IPL(0 |
|
IPP(0 = |
H(J) |
64
DO 3 Л |
= J,N1 |
3 II(J1 )= |
II(J1 + 1) |
2N1 = N1 — 1 RETURN END
Замечания к программе LEX ICO.
1.Подпрограмма RNDM описана на стр. 44.
2.Время работы программы LEXICO характеризуется в табл. 2,2, где п — количество символов в перестановке, R — радиус окрес
тности, t — время, |
которое |
тратится |
|
Т а б л и ц а 2.2 |
|||||||||
ЭЦВМ «БЭСМ-6 » на построения 100 пе- |
|
||||||||||||
• рестановок. |
|
|
|
|
|
|
|
|
|
|
( |
||
Заметим, что алгоритм 2.3 факти |
п |
R |
|||||||||||
чески |
отличается |
от |
алгоритма |
2 . 2 |
|
|
|
||||||
тем, что операции с номерами |
перес |
200 |
100 |
127,8 |
|||||||||
тановок в алгоритме 2.3 |
производят |
200 |
10 |
141,6 |
|||||||||
ся в |
факториальной |
системе |
счис |
200 |
1 |
127,6 |
|||||||
ления. |
|
|
|
|
|
|
|
|
|
|
100 |
50 |
35,7 |
Остановимся |
подробнее |
на |
алго |
100 |
10 |
34,1 |
|||||||
100 |
1 |
34,3 |
|||||||||||
ритме |
восстановления |
|
перестановки |
20 |
10 |
2,0 |
|||||||
Р — (*1> Ь> • • • > ^п) п 0 ее |
факториаль |
20 |
5 |
2,0 |
|||||||||
ному |
номеру |
К |
(р)<i> |
= |
(kxk% ... |
20 |
1 |
2,0 |
|||||
kn—1)<!>- |
|
|
|
|
|
|
|
|
|
10 |
3 |
1,8 |
|
|
|
2.4. |
|
|
|
|
|
|
|
|
|||
А л г о р и т м |
|
|
|
|
|
k для всех k = |
1, 2, ..., п. |
||||||
Ш а г |
1. |
Положить |
|
а = |
1 |
и |
= |
||||||
Ш а г |
2. |
Положить |
t« = |
t°a+i. |
|
|
|
|
Ш а г 3. Для всех Р = 1, 2, ..., п — ka — а положить tfta+p =
Ша г 4. Положить со = со + 1.
Ша г 5. Если оо < п — 1, то перейти к шагу 2.
Ша г 6 . Положить in = t?.
Заметим, что при сложении (вычитании) |
двух факториальных |
||||
чисел a |
+ 1 единиц со-го факториального разряда |
дают |
единицу |
||
переноса |
в (а + 1)-й разряд (единица займа |
из |
(а + |
1)-го |
разряда |
дает a + |
1 единиц в a -й разряд). |
|
(2, 3, 1,4, 5), л<ю> =* |
||
П р и м е р . Пусть имеем перестановку р0 = |
=7. Необходимо построить перестановку рГ. предшествующую р0,
иперестановку p t, следующую за р0. Факториальный номер переста новки р0 есть k (р1)«|> = (1, 1, 0, 0). Десятичное число 7 в факто риальной системе счисления равно (1 0 1). Далее
К(pt)<\> *= (1 , 1 , 0 , 0 ) + (0 , 1 , 0 , 1) = (1 , 2 , 0 , 1),
К(рТ)<ь = (1 , 1 , 0 , 0 ) — (0 , 1 , 0 , 1) = (0 , 3, 2 , 1).
Восстанавливая с помощью алгоритма 2.3 перестановки p t и рГ,
55
получаем |
p t = (2, 4, |
1, 5, 3), |
|
|
|
|
|
|
|
||
|
р Г - ( 1 . 5, 4, 3, 2 ). |
|
|
|
|
§ 4. Алфавитная |
метрика |
|
|
|
|
Пусть заданы две |
перестановки |
рх = ( / 15 /2, |
/„) |
и р, = |
(/1Р |
/я»*-** /п) такие, что = |
/j, «.., ^s—i s |
/s—1«но (j |
/j, 1 ^ |
s ^ я |
h |
Расстоянием p (p^ p2) между этими перестановками назовем число п — s. Если элементы на всех местах совпадают, то расстояние между перестановками полагают равным нулю.
П р и м е р 1. Расстояние между перестановками (1, 2, 3, 4, 5, 6 ) и (1, 2, 3, 6 ,5, 4) в алфавитной метрике равно двум, а между пере становками (1, 5, 4, 3, 2, 6 ) и (2, 5, 4, 3, 1,6) — пяти.
Очевидно, что максимальное расстояние между двумя переста новками равно п — 1 .
Проверим выполнение свойств расстояния. Условия (2 .1 ) — (2.3), очевидно выполняются. Условие (2.4) справедливо вследствие сим метрии отношения равенства. Наконец, неравенство треугольника (2.5) вытекает из следующего очевидного соотношения:
Р (Ра, |
Рз) - |
max {P(Pi> Рг)> Р(Р2. Рз))- |
(2-12) |
Из соотношения |
(2 .1 2 ) |
получаем также, что в |
пространстве |
с алфавитной метрикой все треугольники являются «равнобедрен ными».
Опишем алгоритм построения перестановки р, лежащей в ок рестности радиуса R с центром в перестановке р0— (»х, t2, ..., in). Здесь Я — целое число из сегмента [1, п — 1 ].
А л г о р и т м 2.5.
Ш а г 1 . Случайным образом выбрать целое число г из сегмента
[1 , R I. |
Составить случайным образом перестановку р' |
= (jv |
|
Ш а г 2. |
|||
/2, ..., jr+l) |
из |
г + 1 символов. |
оста |
Ш а г 3. В |
перестановке р0 первые п — г — 1 символов |
вить без изменений, а остальные символы разместить в порядке, который определяется перестановкой р'. Полученная перестановка и будет искомой.
Этот__алгоритм реализован в виде программы ALPHAB. Приво дим ее фортранный текст.
SUBROUTINE ALPHAB
8
С
*********************************************************************
ПРОГРАММА ПРЕДНАЗНАЧЕНА ДЛЯ ПОСТРОЕНИЯ ПЕРЕСТАНОВ КИ, ЛЕЖАЩЕЙ В ОКРЕСТНОСТИ ЗАДАННОГО РАДИУСА, ДЛЯ СЛУЧАЯ АЛФАВИТНОЙ МЕТРИКИ
8 ОПИСАНИЕ ПАРАМЕТРОВ:
бв
с
СN — ЧИСЛО СИМВОЛОВ В ПЕРЕСТАНОВКЕ
СNR — РАДИУС ОКРЕСТНОСТИ
СIBP — ЦЕНТРАЛЬНАЯ ПЕРЕСТАНОВКА
СIP — ИСКОМАЯ ПЕРЕСТАНОВКА
С
СВЫЗЫВАЕМЫЕ ФУНКЦИИ И ПОДПРОГРАММЫ:
СRNDM, PERMUT
С
с *********************************************************************
с
COMMON /INNE/ N /RANE/ NR /MENE/ IBP(300), IP(300) DIMENSION 10(300)
XS = |
RNDM (—1) |
IR = |
XS*NR + 1 |
NN = |
N |
N = |
IR + 1 |
CALL PERMUT
DO 3 1 = 1,N 1 10(1) = IP(I)
IN =* NN — N N = NN
DO 1 1 = 1,IN
1IP(I) = IBP(I) IK = IN + 1
DO 2 I = IK, N |
|
J = |
I — IN |
К = |
IO(J) + IN |
2 IP(I) = IBP(K) |
|
RETURN |
|
END |
|
Замечания к программе ALPHAB. |
|
Т а б л и ц а 2.3 |
|||||||
1. ПодпрограммыН№)М иPERMUT |
|
||||||||
|
|
|
|||||||
описаны на с. 44, |
43. |
|
|
п |
Я |
t |
|||
2. Табл. 2.3 характеризует быстро |
|||||||||
|
|||||||||
действие программы ALPHAB. В ней |
|
|
|
||||||
п — число символов |
в перестановке, |
200 |
100 |
25,1 |
|||||
R — радиус окрестности, |
t — время |
200 |
10 |
0,9 |
|||||
счета на ЭЦВМ «БЭСМ-6 », необходи |
200 |
1 |
0,5 |
||||||
мое |
для построения |
1 0 0 |
перестано |
100 |
50 |
6,4 |
|||
100 |
10 |
0,6 |
|||||||
вок, |
с. |
|
|
|
(3, 5, 4, |
100 |
1 |
0,3 |
|
П р и м е р 2. Пусть р0 = |
20 |
10 |
0,5 |
||||||
2, 1, 6 , 7), а г = 4. |
|
Перестановка р' |
20 |
5 |
0 2 |
||||
имеет вид (5, 1, 3, |
4, 2 ). Тогда будет |
20 |
1 |
0,1 |
|||||
10 |
3 |
0,2 |
|||||||
построена перестановка р = |
(3, 5, 7, |
|
|
|
|||||
4, 1, 6 , 2). |
|
|
|
|
|
|
|
||
§ 5. Инверсная метрика |
|
|
|
|
|||||
Пусть рг = (tlt |
t2....... |
t„), |
ра = (/i. /2, •••, |
in) — Две произволь |
|||||
ные перестановки из п символов. Назовем |
расстоянием между пере |
становками рх и Ра число всех инверсий перестановки р2 относитель но перестановки рх.
67
Рассмотрим в качестве примера перестановки (1, 2 , 3, 4, 5) и (3, 4, 5, 1» 2). Во второй перестановке относительно первой инвер сии образуют следующие пары элементов: (1, 3), (1, 4), (1, 5), (2, 3),
(2, 4) и (2 , 5). Поэтому расстояние между этими перестановками равно шести.
Нетрудно видеть, что максимальное возможное число инверсий равно п (п — 1)/2 .
Покажем, что введенное расстояние удовлетворяет всем аксио
мам метрики. |
|
р2) >• 0. |
1. По определению р (рх, |
||
2 . Перестановка р |
по отношению к самой себе не образует ин |
|
версий, поэтому р (р, |
р) = |
0 . |
3.Отсутствие инверсий между двумя перестановками означает, что эти перестановки совпадают. Значит, условие (2,3) выполняется.
4.Если t'a = /р, t'v = /б, то элементы ia и iv образуют инверсию относительно перестановки р2 тогда и только тогда, когда /р и /в образуют инверсию относительно перестановки р1. Следовательно, выполняется условие (2.4).
5. Рассмотрим три перестановки рх |
— (ix, i2, .... in), |
р2 = |
к ......к) и р3 = (klt k2, ..., kn). Пусть ia = |
/р и iY= /в. Если |
пара »«, |
iv образует инверсию относительно перестановки р3, то она образует инверсию относительно перестановки р2 или пара /р, /б образует ин версию относительно перестановки р3.Значит, каждой инверсии пере становки Pi относительно перестановки р3 соответствует инверсия этих же элементов относительно перестановки р2 или (и) их инверсия в перестановке р2 относительно перестановки /~3. Отсюда вытекает неравенство (2.5).
Для описания алгоритма построения перестановок, лежащих
вкруге данного радиуса, потребовалось ввести некоторые понятия
[15].Установим взаимно однозначное соответствие между всеми перестановками из п символов р = (iv i2, ..., i„) и целочисленными
векторами вида {ах, а2,..., ап—\}, где 0 < аа < я — а (а = 1 , 2 ,...
•..., п — 1.) Соответствие строится следующим образом. Число аа рав но количеству инверсий, которое символ ia образует с последую щими символами перестановки р. При этом имеются в виду инвер сии, которые образуются в перестановке р по отношению к переста новке р* = (1, 2, 3,..., п — 1, п). Так, перестановке (5, 6 , 4, 1, 2, 3) соответствует индекс 4, 4, 3, 0 , 0 . Обратное соответствие устанавли вается с помощью следующего алгоритма, который служит для пост роения перестановки по ее индексу.
А л г о р и т м 2 .6 .
Ш а г 1 . Положить /х = % + 1. В ряду чисел 1, 2, ..., п зачерк нуть число it. Полученную последовательность 1, ..., ix — 1, »х +
+1, ..., п обозначить Ах.
Ша г 2. Положить i2 равным (а2 -f- 1)-му по счету элементу по следовательности Аг. Из последовательности Ах вычеркнуть число
i2 и полученную последовательность назвать А2.
Ш а г / . Найти 1Л как (а0 + |
1)-е по счету число |
последователь |
||||||||||
ности /4а_ь |
Из |
последовательности |
|
|
вычеркнуть |
число ia |
||||||
и обозначить полученную последовательность Аа. |
|
|||||||||||
Ш а г а . Положить t„ = |
Ап—и |
|
|
|
|
|
|
|
||||
Алгоритм 2.6 реализован в виде одного из блоков программы |
||||||||||||
1NVERS (см. далее). |
|
|
|
= |
{2, 5, 0, 3, |
1, 0, 0}. В соот |
||||||
П р и м е р . Пусть задан индекс / |
||||||||||||
ветствии с алгоритмом получаем |
|
|
|
|
|
|
|
|||||
h = |
2 -(- 1 — 3, |
|
Лх = |
1, |
2, |
4, |
5, |
6 , |
7, 8 , |
|
||
*2 — 7, |
|
|
А2= 1, |
2, |
4, |
5, |
6 , |
8 , |
|
|||
|
|
|
|
А3 = 2 , |
4, 5, 6 , 8 , |
|
|
|||||
|
|
|
|
А4 = |
2, |
4, |
5, |
8 , |
|
|
|
|
|
|
|
|
А3 = 2, |
5, |
8 , |
|
|
|
|
||
|
|
|
|
Л |
= |
5, |
8, |
|
|
|
|
|
|
|
|
|
А7= |
8 . |
|
|
|
|
|
|
|
Следовательно, |
индексу |
I |
соответствует перестановка |
(3, 7, 1 , |
||||||||
6 , 4, 2, 5, 8 ). |
|
j f = (1, |
2, |
3,..., |
п) будем |
называть |
нулевой. |
|||||
Перестановку |
Это название связано .с тем, что перестановке ^соответствует ин декс I* = {0 , 0 , .... 0 }. Предложенное в работе [15J название нуль пространства перестановок для перестановки р* представляется не совсем точным, поскольку линеаризация пространства переста новок не проводится, а говорить о нулевых точках принято Лишь в линейных пространствах.
Легко видеть, что расстояние между нулевой перестановкой р* и произвольной перестановкой р, которой соответствует индекс I = {ах, а2........a„_i}, можно вычислить по формуле
Р (Р*. Р) = £ «а-
Вследствие неравенства треугольника
Р (Р, Ро) < Р (Р> Р*) + Р (Ро. Р*)-
Если расстояние между перестановками р0 и р* известно и равно г0, то для построения перестановок р, которые лежат от перестановки р0 не дальше чем на расстоянии г, достаточно построить перестанов ки, отстоящие от нулевой перестановки р* не более чем на г — г0. На этом соображении основан следующий алгоритм для построения перестановок р, лежащих внутри круга радиуса R с центром в пере становке р0.
69
Алгоритм 2.7.
Ш а г 1. Определить индекс 10 = { а ь а , , ..., dn-i) перестанов ки р0.
Ш а г 2. Вычислить г0 = р (/?„, р*) по формуле
П—1
Го = S О а«
<х=1
Ш а г 3. С помощью датчика случайных чисел построить после довательность целых чисел {blt Ь2>...» Ъа-1}, обладающих следующи ми двумя свойствами:
/2— 1
SЬа ^ R — 'о *
а= 1
О< Ьа < п — а.
Ша г 4. Интерпретировать последовательность чисел {< ft2* — &«_i} как индекс перестановки р и восстановить по индексу пере
становку.
Приведенный алгоритм проще алгоритма из работы [15]. Алго ритм 2.7 реализован в виде программы INVERS. Приводим ее фортранный текст.
o o o o o o o n n n n n n n o n o o n
SUBROUTINE INVERS
*********************************************************************
ПРОГРАММА ПРЕДНАЗНАЧЕНА ДЛЯ ПОСТРОЕНИЯ ПЕРЕСТАНОВКИ, ЛЕЖАЩЕЙ В ОКРЕСТНОСТИ ЗАДАННОГО РАДИУСА, ДЛЯ СЛУЧАЯ ИНВЕРСНОЙ МЁТРИКИ
ОПИСАНИЕ ПАРАМЕТРОВ:
N — ЧИСЛО СИМВОЛОВ В ПЕРЕСТАНОВКЕ
NR — РАДИУС ОКРЕСТНОСТИ
IBP - ЦЕНТРАЛЬНАЯ ПЕРЕСТАНОВКА
IP — ИСКОМАЯ ПЕРЕСТАНОВКА
ВЫЗЫВАЕМЫЕ ФУНКЦИИ И ПОДПРОГРАММЫ: RNDM
*********************************************************************
COMMON /INNE/ N /RANE/ NR /MENE/ IBP<300), IP<300) */VER/ KQ,IR,INB(300)
DIMENSIOH IA (300), IND(300) N1 = N — 1
IF (KQ.EQ.O) GO TO 1
n oo oo
ВЫЧИСЛЕНИЕ ИНДЕКСА ЦЕНТРАЛЬНОЙ ПЕРЕСТАНОВКИ: МАССИВ ШВ И ЕЕ РАССТОЯНИЯ IR ДО НУЛЕВОЙ
IR = 0
DO 2 1 = J,N1 К = 0
во