Компьютерное моделирование. Лабораторный практикум. Алтаев А.А - 6 стр.

UptoLike

Составители: 

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