ВУЗ:
Составители:
11
рассмотрим на следующем примере. Пусть автомат
находится в состоянии ’c’ и на вход поступает сигнал 1. Для
вычисления перехода выбирается матрица A
1
(x=1) и в ней -
3-я строка (z=’c’): (0,3; 0,3; 0,1). Если случайное число r_1
будет меньше или равно a
31
, то новым состоянием будет ’a’.
При выполнении условия a
31
<
r_1
≤
a
31
+
a
32
следующее
состояние автомата - ’b’. Если не выполняются условия для
’a’ и ’b’ , автомат на следующем такте перейдет в
состояние ’c’. Например, если r_1=0,643 , то z_new=’c’.
Аналогично определяются и выходные сигналы.
Рассмотрим более полный пример. Входное слово
пусть состоит из пяти символов, полученных случайным
образом: ‘11212’. Генератор случайных чисел (random)
выдал следующую последовательность (значения
округлены): (0,23; 0,46; 0,08; 0,79; 0,48; 0,94; 0,73; 0,37;
0,48, 0,91; 0,57). Первое случайное число (0,23)
используется для определения начального состояния
автомата. Поскольку выполняется условие c
1
<0,23< c
1
+ c
2
,
значение z_old принимает значение ‘b’. Полученная таблица
переходов и выхода представлена ниже.
x z_old r_1 z_new r_2 y
1 b 0,46 a 0,08 m
1 a 0,79 c 0,49 n
2 c 0,94 c 0,73 m
1 c 0,37 b 0,48 n
2 b 0,91 c 0,57 n
12
В программе описание автомата представить в виде
типизированных констант:
uses crt;
const
n=2; {входной алфавит состоит из двух
символов}
m=2; {выходной алфавит состоит из двух
символов}
p=3; {количество состояний}
a: array[1..n, 1..p, 1..p] of real =
(((0.5, 0, 0.5), (1, 0, 0), (0.3, 0.3,
0.1)),
((0, 0.5, 0.5), (0, 0.3,0.7), (0.9, 0,
0.1)));
b: array[1..n, 1..p, 1..m] of real =
(((0.4, 0.6), (1, 0), (0, 1)),
((0, 1), (0.5, 0.5), (0.7, 0.3)));
c: array[1..p] of real = (0.2, 0.2, 0.6);
var
x: 1..2;
{входной символ}
y: ‘m’..’n’;
{выходной символ}
z_new, z_old: ‘a’..’c’; {состояния}
рассмотрим на следующем примере. Пусть автомат В программе описание автомата представить в виде находится в состоянии ’c’ и на вход поступает сигнал 1. Для типизированных констант: вычисления перехода выбирается матрица A1 (x=1) и в ней - uses crt; 3-я строка (z=’c’): (0,3; 0,3; 0,1). Если случайное число r_1 const будет меньше или равно a31, то новым состоянием будет ’a’. n=2; {входной алфавит состоит из двух При выполнении условия a31< r_1≤ a31+ a32 следующее символов} состояние автомата - ’b’. Если не выполняются условия для m=2; {выходной алфавит состоит из двух ’a’ и ’b’ , автомат на следующем такте перейдет в символов} состояние ’c’. Например, если r_1=0,643 , то z_new=’c’. p=3; {количество состояний} Аналогично определяются и выходные сигналы. a: array[1..n, 1..p, 1..p] of real = Рассмотрим более полный пример. Входное слово (((0.5, 0, 0.5), (1, 0, 0), (0.3, 0.3, пусть состоит из пяти символов, полученных случайным 0.1)), образом: ‘11212’. Генератор случайных чисел (random) ((0, 0.5, 0.5), (0, 0.3,0.7), (0.9, 0, выдал следующую последовательность (значения 0.1))); округлены): (0,23; 0,46; 0,08; 0,79; 0,48; 0,94; 0,73; 0,37; b: array[1..n, 1..p, 1..m] of real = 0,48, 0,91; 0,57). Первое случайное число (0,23) (((0.4, 0.6), (1, 0), (0, 1)), используется для определения начального состояния ((0, 1), (0.5, 0.5), (0.7, 0.3))); автомата. Поскольку выполняется условие c1<0,23< c1+ c2 , c: array[1..p] of real = (0.2, 0.2, 0.6); значение z_old принимает значение ‘b’. Полученная таблица var переходов и выхода представлена ниже. x: 1..2; {входной символ} x z_old r_1 z_new r_2 y y: ‘m’..’n’; {выходной символ} 1 b 0,46 a 0,08 m z_new, z_old: ‘a’..’c’; {состояния} 1 a 0,79 c 0,49 n 2 c 0,94 c 0,73 m 1 c 0,37 b 0,48 n 2 b 0,91 c 0,57 n 11 12
Страницы
- « первая
- ‹ предыдущая
- …
- 4
- 5
- 6
- 7
- 8
- …
- следующая ›
- последняя »