Исходные данные
I. Задание алгоритма.
а) Нормальные алгоритмы. Задана пронумерованная совокупность операций i) Ri Si, i= 1, 2, …, L, причем в некоторых из них после стрелки может стоять точка Ri .Si (такая операция называется заключительной).
Каждый шаг алгоритма состоит в следующем. Пусть на предыдущем шаге получено слово P (на первом шаге слово исходное). Отыскивается первая по порядку операция, левое слово которой входит в P. Если такой операции нет, то алгоритм заканчивает работу и P является его результатом. Если есть, то правое слово из операции (S) подставляется в слово P вместо первого вхождения в него левого слова операции (R) – образуется новое слово P . При этом, если операция заключительная, то алгоритм заканчивается и P считается результатом; в противном случае к P применяется следующий шаг алгоритма.
Примеры нормальных алгоритмов.
а1) алгоритм умножения а2) алгоритм обращения слов
A = {*, 1, , ?} A = {a, b, 0, 1, +, *}
1) * 11 *1 1) +*
2) *1 2) +a 0
3) 1 1? 3) +b 1
4) ? ? 4) 0a a0
5) ?1 1? 5) 0b b0
6) 1 6) 0* *a
7) ? ? 7) 1a a1
8) 1b b1
9) 1* *b
10) +
а3) алгоритм удвоения слова а4) A = {0, 1, , , , , }
A = {, , x, y, z, 1}
1) x x 1) 0
2) x x 2) 1 11
3) x1 1 3) 0
4) y y 4) 1 101
5) y y 5) 0 00
6) y1 1 6) 1
7) z zx 7)
8) z zy 8) 1 0
9) z1
а5) A = {1, 2, 3, a, b, c} а6) A = {a, и, л, п, *}
1) 1 a aa1 1) *лапа пал*
2) 1b b2 2) *ла *
3) 2b b3 3) *п пила*
4) 2a ac2 4) * a пли*
5) 3a aac3 5) *л липа*
6) 3b 1 6) *и
7) 1 7) * и
8) *
б) Обобщенные нормальные алгоритмы. Задана пронумерованная совокупность операций с числами i) Ri Sii, причем i = 1, 2, …, L и 1 L+1. На 1-ом шаге алгоритма к исходному слову применяется операция с номером 1. В общем случае пусть к слову Q применяется операция j на некотором шаге алгоритма. Это применение алгоритма состоит в следующем: если Rj входит в Q, тогда первое вхождение слова Rj заменяется на Sj, получается новое слово Q, к которому на следующем шаге применяется операция с номером j; если же Rj не входит в Q, тогда к Q (на следующем шаге) применяется операция с номером j +1. Процесс обрывается, когда требуется выполнить операцию с номером L +1.
Примеры обобщенных нормальных алгоритмов.
1) A = {a, b, 1, 2, 3} 2) A = {0, 1, , , }
1) 1, 2 1) 00 , 3
2) 1a aa 1, 2 2) 11 , 4
3) 1b b 2, 4 3) 0 0 , 2
4) 2b bb 2, 4 4) 1 1 , 1
5) 2a 3, 6 5) , 3
6) 3ba 1, 3 6) 1 , 3
7) 3ba b1, 2 7) 0 , 5
3) A = {1, +, x, , ,*} 4) A = {0, 1, 2, 3, 4}
1) 111 1 x, 5 1) 0 44, 2
2) + x *, 4 2) 13 31, 1
3) +1 +, 3 3) 111 3, 5
4) * , 7 4) 41 000, 1
5) x , 2 5) 2 4, 3
6) x +, 1 6) 22 2, 1
5) A = {, , , +} 6) A = {а, б, р, н}
1) +, 1 1) на нана, 3
2) , 4 2) раб ара, 4
3) , 4 3) ба баран, 1
4) + , 3 4) бра рр, 5
5) + , 8 5) рана барабан, 2
6) + +, 1 6) бар а, 1
7) ++, 2 7) р арба, 4
8) а банан, 6
II. Задача Е, решаемая программой.
Программа вводит произвольное слово в алфавите А в качестве исходного для работы алгоритма и число N. В результате выполнения алгоритма получается результирующее слово (либо в момент останова алгоритма, либо после N шагов), которое программа выводит. Вместе со словом выводится величина М (через Pi обозначено слово, получающееся после i-го шага алгоритма):
а) М = max Дл(Pi);
б) М = max (x1(Pi) + x2(Pi) + x3(Pi)), где xj(P) – количество вхождений буквы aj A в слово P;
в) М – количество выполненных операций с номерами 1, 3, 4;
г) М – количество слов среди P, P1, P2, … , Pn, в которые не входят буквы а1 и а4;
д) Дл (Рм) = max Дл(Pi).
1.8 Построение циклической структуры подстановки.
Подстановкой f называется отображение конечного множества
A = {a1, a2, …, an} на себя, изображаемое либо с помощью выражения, либо двумя строчками
в которой все индексы различны, либо совокупностью циклов . В один цикл включаются элементы в следующем порядке причем . Например, если то f = (a1, a3, a4) (a2, a6) (a5). Числа r1, r2, … , rs называются циклической структурой подстановки f.
Если заданы две подстановки f и g , то их произведением является новая подстановка h = fg, которая определяется как h(a) = g(f(a)) для всякого a A.
Задание. По двум заданным подстановкам f0 и f1 на множестве A и последовательности 1, 2, … , q из нулей и единиц построить подстановку , вычислить ее циклическую структуру и напечатать. Последовательность 1, 2, … , q вводится в программу.
Исходные данные
I. Множество A = {1, 2, 3, 4, … , 18, 19, 20}.
Подстановки f0 и f1 задаются с помощью выражений.
а)
б)
в)
г)
д)
е)
ж)
з)
II. Множество A = {, , , , a, b, c, d, 0, 1, 2, 3, +, , /, }
Подстановки f0 и f1 задаются строками: верхняя строка постоянна, поэтому приводится только нижняя
а) a b c d 0 1 2 3 + /
f0 = a 3 0 1 2 / + b d c
f1 = a c 0 + b 1 d / 2 3
б) f0 = 0 а d 1 2 + 3 / c b
f1 = a 3 + 0 b c / 2 1
в) f0 = с / a b 2 1 d 3 0 +
f1 = c 0 b d 1 + 2 3 a /
г) f0 = d + 3 c 1 a 2 / 0 b
f1 = 3 c 2 a + 0 b d 1 /
д) f0 = + с / d a 3 0 1 b 2
f1 = 3 b + a / 2 1 c 0 d
е) f0 = / 0 a 1 3 d + c b 2 b
f1 = 1 2 3 0 d c a b / +
ж) f0 = b 0 c + / a 3 2 d 1
f1 = 0 1 2 3 + / a b c d
з) f0 = / a 0 + 2 3 b c 1
f1 = a 1 b 0 c 3 d 2 + /
III. Множество A = {a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15}.
Подстановки f0 и f1 задаются совокупностью циклов
а) ,
;
б) ,
;
в) ,
;
г) ,
;
д) ,
;
е) ,
;
ж) ,
;
з) ,
.
IV. Множество А состоит из 16 двоичных наборов длины 4, т.е. из наборов 0000, 0001, … , 1111. Подстановка на А задается системой булевых функций: если ai = x1 x2 x3 x4, то f(ai) = y1 y2 y3 y4. В выражениях сумма берется по модулю 2 (операция отрицания эквивалентности), а произведение как конъюнкция.
а) f0: y1 = x1 + x2x3x4 f1: y1 = x1 +
y2 = x2 + x3x4 y2 = x2 + x3x4 + 1
y3 = x3 + x4 y3 = x3
y4 = x4 + 1 y4 = x4 + 1
б) f0: y1 = x4 x1 x3 + x2 f1: y1 = x4 x1 x3 +
y2 = x1 y2 = x1
y3 = x2 y3 = x2
y4 = x3 y4 = x3
в) f0: y1 = f1: y1 = x1 +
y2 = y2 = x2 +
y3 = y3 = x3 +
y4 = y4 =
г) f0: y1 = f1: y1 = x1 +
y2 = x2 + x1 y2 = x2
y3 = x3 + y3 = x3
y4 = y4 = x4
1.9 Решение краевой задачи методом Монте-Карло.
Плоскость (x, y) делится сеткой с шагом h, и рассматриваются только точки сетки. Задается область с границей Г. Точки границы обозначим через (xi, yi), i = 1, 2, … , n. В этих точках задана функция f(x, y). Краевая задача формулируется так: определить значение функции u(x, y) во внутренней точке области (x*, y*), которая удовлетворяет уравнению Лапласа u = 0 и принимает на границе Г значения u(xi, yi) = f(xi, yi).
Задача решается методом Монте-Карло. Из точки (x*, y*) организуется N блужданий по внутренним точкам области, (точкам сетки) до выхода на граничную точку. Пусть i количество блужданий с приходом в точку (xi, yi) границы Г. Тогда искомое значение
Задание. Составить программу для заданных h, Г, f(x, y) и «способа блуждания», которая вводит координаты точки (x*, y*) и число N, вычисляет u(x*, y*) и печатает это значение.