Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Представление данных и методы разработки алгори...doc
Скачиваний:
10
Добавлен:
14.09.2019
Размер:
1.43 Mб
Скачать

Исходные данные

I. Задание алгоритма.

а) Нормальные алгоритмы. Задана пронумерованная совокупность операций i) RiSi, 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) 0aa0

5) ?1  1? 5) 0bb0

6) 1   6) 0*  *a

7)  ?  ? 7) 1aa1

8) 1bb1

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 aaa1 1) *лапа  пал*

2) 1bb2 2) *ла *

3) 2bb3 3) *п  пила*

4) 2aac2 4) * a  пли*

5) 3aaac3 5) *л  липа*

6) 3b  1 6) *и 

7)  1 7) *  и

8)  *

б) Обобщенные нормальные алгоритмы. Задана пронумерованная совокупность операций с числами i) RiSii, причем 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) 1aaa 1, 2 2) 11  , 4

3) 1bb 2, 4 3) 0  0  , 2

4) 2bbb 2, 4 4) 1  1  , 1

5) 2a  3, 6 5)    , 3

6) 3ba  1, 3 6) 1   , 3

7) 3bab1, 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) – количество вхождений буквы ajA в слово 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)) для всякого aA.

Задание. По двум заданным подстановкам 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 bd  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   bc 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 = x4x1x3 + x2 f1: y1 = x4x1 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*) и печатает это значение.