Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Решение некоторых многоэкстремальных задач методом сужающихся окрестностей

..pdf
Скачиваний:
3
Добавлен:
12.11.2023
Размер:
12.71 Mб
Скачать

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

Формирование перестановки р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.

Ш а г / . Найти как (а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. Интерпретировать последовательность чисел {&lt 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

во

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