Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 [ 185 ] 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

6. (а) Если п - не простое число, то по определению п имеет делитель d, такой, что 1 < d < п. Если d> то n/d - делитель, такой, что 1 < n/d < Уп. (Ь) Если N не является простым числом, то N имеет простой делитель d, такой, что 1 < d < \/N. Алгоритм подтвердил, что N не имеет простых делителей < р = PRIME [К]; кроме того, N = pQ-l-R<pQ--p<p+p<(p--l). Любой простой делитель N, следовательно, больше р + 1 > Vn.

Необходимо также доказать, что если N простое, то существует достаточно большое простое число, меньшее N, т. е. что (А;--1)-е простое число pk+i меньше р1+Рк- В противном случае К превышало бы J и PRIME [К] было бы нулем, когда нам понадобилось бы, чтобы оно было большим. Доказательство следует из "постулата Бертрана": если р - простое, то существует простое число, большее р, но меньшее 2р.

7. (а) Это ссылка на метку строки 29. (Ь) Программа вьшолнена не будет; строка 14 будет ссылаться на строку 15, а не на строку 25; строка 24 будет ссылаться на строку 15, а не на строку 12.

8. Печатает 100 строк. Если все 12 ООО символов этих строк расположить так, чтобы они примыкали друг к другу, то они займут довольно много места и это будет выглядеть так: пять пробелов, пять букв А, десять пробелов и пять букв А, пятнадцать пробелов, ... 5к пробелов и пять букв А, 5{к + 1) пробелов ... и т. д., пока не будут напечатаны все 12 ООО символов. Третья qt конца строка заканчивается последовательностью букв ААААА и 35 пробелами; последние две строки полностью пусты. Общий результат представляет собой пример манипуляций полем ОП.

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

В EQU

1(4:4)

BEGIN

INST

ВМАХ EQU

CMPA

VALID(3:3)

UMAX EQU

Поле I > 6?

TABLE NOP

GOOD(BMAX)

INST(5:5)

FLOAT(5:5)

DECl

FL0AT(5:5)

JINN

Поле С > 64?

FL0AT(5:5)

CMPA

TABLE+64,1(4:4)

FL0AT(5:5)

Поле F > максимал

GOOD

TABLE+64.1(1:2)

Перейти к специал!

GOOD

программе.

MOVE

MEMORY(BMAX)

FLOAT

CMPA

VALID(4:4)

F = 6 допустимо в

FIELD(5:5)

GOOD

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

FIELD

ENTA

операциях.

FIELD(5:5)

INST(4:4)

Это хитроумный

JBUS

MEMORY(UMAX)

способ проверки

GOOD(UMAX)

♦+1(0:2)

допустимости

MEMORY(UMAX)

INCA

частичного поля.

MEMORY(UMAX)

CMPA

JRED

MEMORY(UMAX)

MEMORY

MEMORY

INST(3:3)

JAUP

MEMORY

JXNZ

GOOD

Если I = 0,

INST(0:2)

то адрес

jxrp

MEMORY

точно указывает

ENNA

GOOD

CMPX

=3999=

на допустимую

GOOD

ячейку памяти.



ENNXGOOD

CMPAFL0AT(5:5)

CMP1FIELD(5:5)

JMP BAD VALID CMPX 3999,6(6)

CMPXFIELD(5:5)

10. Главная трудность этой задачи состоит в том, что в строке или столбце может быть несколько минимумов или максимумов и каждый из них - это потенциальная седловая

Решение 1. В этом варианте решения по очереди просматриваются все строки, создается список всех столбцов для минимальных элементов строк, а затем проверяется, является ли минимальный элемент строки максимальным элементом столбца. гХ текущий минимум; по мере просмотра матрицы гП пробегает значения от 72 до О, если только не будет найдена седловая точка; г12 = индекс столбца для элемента из гП; г13 = размер списка минимумов. Обратите внимание, что в любом случае цикл заканчивается тогда, когда содержимое индексного регистра < 0.

* РЕШЕНИЕ 1

1008

Адрес oio.

LIST

1000

START

ENTl

Начать с правого нижнего угла.

ROWMIN

ENT2

Счас гИ "просматривает" восьмой столбец строки,

AlO.l

Кандидат в минимальные элементы строки.

ENT3

Список пуст.

INC3

LIST.S

Занести индекс столбца в список

DECl

Сместиться на один элемент влево.

DEC2

COLMAX

Просмотр строки закончен?

CMPX

AlO.l

Содержимое гХ все еще является минимумом?

Новый минимум?

Запомнить новый минимум.

COLMAX

LIST.S

Взять столбец из списка.

INC2

9*8-8

CMPX

A10,2

Минимум строки < элемента столбца

DEC2

Просмотр столбца закончен?

INCl

AlO+8,2

Да, гП г- адрес седловой точки.

DECS

Список пуст?

COLMAX

Нет, сделать следующую попытку.

ROWMIN

Все ли строки просмотрены?

Да, гП = 0, седловой точки нет.

Решение 2. Добавив немного математики, получаем еще один алгоритм.

Теорема. Пусть R{i) - miiij a,j, C{j) = max, a,j. Элемент aojo является седловой точкой тогда и только тогда, когда R(io) = max, R{i) = С{]о) = miiij C{j).

Доказательство. Если a,gjg - седловая точка, то для любого фиксированного г выполняется R(io) = C{jo)>atjo >Р{г), поэтому R{io) = max, R{i). Аналогично C(jo) = mmj C(j).



Обратно, имеем R(i) < o,j < C{j) для всех г и j, отсюда R(io) = C{jo) и, следовательно, a,gjo - седловая точка

(Из этого доказательства видно, что всегда выполняется неравенство max, R(t) < mmj C(j) Поэтому седловой точки не существует тогда и только тогда, когда R{i) строго меньше всех C{j))

Согласно теореме достаточно найти наименьший максимум столбца, а затем - равный ему минимум строки Во время фазы 1 гИ = индекс столбца, г12 пробегает по матрице Во время фазы 2 гП = возможный ответ, г12 пробегает по матрице, г13 = индекс строки, умноженный на 8, г14 = индекс столбца

* РЕШЕНИЕ 2

СМАХ

1000

СМАХ+8

PHASE1

ENT1

Начать со столбца 8

ENT2

9*8-8,1

СМРХ

А10,2

В гХ по-прежнему максимум

А10,2

Новый максимум в столбце

DEC2

СМАХ+8,2

Сохранить максимум столбца

Первый раз

СМРА

СМАХ+8.2

В гА еще mm max

СМАХ+8.2

DEC1

Перейти на один столбец влево

PHASE2

ENT3

9*8-8

К этому моменту г А = mmj C(j)

ENT2

Подготовиться к поиску строки

ENT4

СМРА

А10,2

mmjC(j) >a[i,j]-

В этой строке нет седловой точки

СМРА

СМАХ.4

ali,j] = C{jr

ENT1

А10,2

Запомнить возможную седловую точку

DEC4

Переместиться по строке влево

DEC2

Седловая точка найдена

DECS

Проверить следующую строку

ENTl

гП = 0, седловой точки нет

Предоставляем читателю возможность найти более удачное решение, в котором на этапе 1 записываются все возможные строки, являющиеся кандидатами на проверку наличия седловой точки на этапе 2 Совсем необязательно выполнять поиск во всех строках, достаточно проверить только те строки го, для которых C{jo) = mmj C{j) влечет a,ojo = C{jo) Как правило, существует максимум одна такая строка



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 [ 185 ] 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225