Студопедия — Исходный автомат
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Исходный автомат






Цель работы

 

Разбиение множества состояний автомата на классы эквивалентности с помощью алгоритма Мили.

 

 

ci c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
si А Л Е К С Е Е В _ С Е Р Г Е Й _ Н И
xi x1 x0 x6 x7 x5 x6 x6 x2 x5 x4 x6 x0 x4 x6 x0 x5 x7 x3

 

Таблица переходов

  x0 x1 x2 x3 x4 x5 x6 x7 x8
q0   q1,3         q7,10    
q0,19   q1,3         q7,10   q20
q1,3 q2             q4  
q2             q5    
q4           q6      
q5     q8     q19      
q6     q9     q19      
q7,10 q11   q9     q14,19   q17  
q8         q0   q19    
q9             q19, 0    
q11         q12        
q12             q13    
q13 q19                
q14,19         q15       q20
q15             q16    
q16 q19                
q17       q18          
q18 q19                
q19                 q20
q20                  

 


Граф переходов

 

 

Текст программы разбиения состояний на эквивалентные пары

#include "stdafx.h"

#include <iostream>

 

const int N=21; //число строк в таблице переходов M

int F[N+1][N+1]; //матрица первоначального разбиения на классы

int MP[25][25]; //матрица пар

int NMP; //число строк в матрице пар NMP

const int M[N+1][9]= {{21,2,21,21,21,21,8,21,20},

{3,21,21,21,21,21,21,4,21},

{21,21,21,21,21,5,21,21},

{21,21,8,21,21,18,21,21,21},

{21,21,9,21,21,18,21,21,21},

{10,21,9,21,21,13,21,16,21},

{21,21,21,21,0,21,18,21,21},

{21,21,21,21,21,21,1,21,21},

{21,21,21,21,11,21,21,21,21},

{21,21,21,21,21,21,12,21,21},

{18,21,21,21,21,21,21,21,21},

{21,21,21,21,14,21,21,21,19},

{21,21,21,21,21,21,15,21,21},

{18,21,21,21,21,21,21,21,21},

{21,21,21,17,21,21,21,21,21},

{18,21,21,21,21,21,21,21,21},

{21,21,21,21,21,21,21,21,19}};

//построение матрицы F первоначального разбиения на классы

void doF()

{

int G[N+1]; //вектор, для фиксирования состояний,

//которые уже включены в какой-то класс

for (int i = 1; i <= N; i++) //инициализация вектора G

G[i] = 0;

for (int i = 1; i <= N; i++)

{

if (G[i] == 0)

{

F[i][i] = i;

for (int k = i + 1; k <= N; k++)

{

if (G[k] == 0)

{ int j = -1;

do{j++;}

while (!((j == 8) || (M[i][j] == 22) && (M[k][j]!= 22)

|| (M[k][j] == 22) && (M[i][j]!= 22)));

if(j == 8){F[i][k] = i;G[k] = 1;}

else{F[i][k] = 0; }

}

}

}

else

{

for(int s = i; s <= N; s++)

F[i][s] = 0;

}

}

}

 

//построение марицы пар MP

void doMP()

{

int GF[N+1]; //вектор, хранящий номера состояний, уже включенных в

//один класс с состоянием i

int t = 0;

for (int i = 1; i <= N; i++)

{

for (int s = 1; s <=N; s++)

GF[s] = 0;

int j = 0;

for (int k = i; k <=N; k++)

{

if (F[i][k]!= 0)

{

j++;

GF[j] = k;

}

}

if (j >= 2)

{

for (int l = j; l >= 2; l--)

{

for (int m = l - 1; m >= 1; m--)

{

MP[t][0] = 0;

MP[t][1] = GF[m];

MP[t][2] = GF[l];

for (int k = 0; k <= 8; k++)

{

MP[t][3+2*k] = M[GF[m]][k];

MP[t][4+2*k] = M[GF[l]][k];

}

t++;

}

}

}

}

NMP = t;

}

 

void doMP2()

{

int smp = 0, smps = 0;

do

{

smps = smp;

smp = 0;

for (int i = 0; i < NMP; i++)

{

int k = -1;

do

{

k++;

if (MP[i][3+2*k]!= MP[i][4+2*k])

{

int pr = 1;

int t = 0;

do

{

t++;

if (MP[t-1][0] == 0)

{

if ((MP[i][3+2*k] == MP[t-1][1] || MP[i][3+2*k] == MP[t-1][2]) &&(MP[i][4+2*k] == MP[t-1][1] || MP[i][4+2*k] == MP[t-1][2]))

{

pr = 0;

}

}

}

while(!(t == NMP || pr == 0));

MP[i][0] = pr;

}

}

while(!(k == 8 || MP[i][0] == 1));

smp = smp + MP[i][0];

}

}

while(smp!= smps);

for (int i = 0; i < NMP; i++)

{

if (MP[i][0] == 0)

{

std::cout << MP[i][1] << " " << MP[i][2] << "\n";

}

}

}

 

int main()

{

doF();

doMP();

std::cout << "Eqivalent pairs:\n";

doMP2();

return 0;

}

 

Результаты работы программы

эквивалентные пары:

12 15

13 16

13 18

16 18


 

 

Таблица минизации автомата

Полученные пары состояний образуют два класса эквивалентности: {q12, q15}, {q13, q16, q18}.

Все другие состояния, не вошедшие в эти классы эквивалентности, эквивалентны сами себе и образуют индивидуальные классы. В нашем примере к перечисленным двум классам эквивалентности следует добавить еще 16 классов:

{q0}, {q0,19}, {q1,3},{q2}, {q4}, {q5}, {q6}, {q7,10}, {q8}, {q9}, {q11}, {q14,19}, {q17}, {q19}, {q20}, {q21}.

Поставим в соответствие классам эквивалентности состояния минимального автомата (r­n):

r0 = {q0}, r1 = {q0,19}, r2 = {q1,3}, r3 = {q2}, r4 = {q4}, r5 = {q5}, r6 = {q6}, r7 = {q7,10}, r8 = {q8},

r9 = {q9}, r10 = {q11}, r11 = {q12, q15}, r12 = {q13, q16, q18}, r13 = {q14,19}, r14 = {q17}, r15 = {q19},

r16 = {q20}, r17 = {q21}. r17 – состояние «Ошибка».

 

  x0 x1 x2 x3 x4 x5 x6 x7 x8
r0   r2         r7    
r1   r2         r7   r16
r2 r3             r4  
r3             r5    
r4           r6      
r5     r8     r15      
r6     r9     r15      
r7 r10   r9     r13   r14  
r8         r0   r15    
r9             r1    
r10         r11        
r11             r12    
r12 r15                
r13         r11       r16
r14       r12          
r15                 r16







Дата добавления: 2015-10-15; просмотров: 390. Нарушение авторских прав; Мы поможем в написании вашей работы!



Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

Демографияда "Демографиялық жарылыс" дегеніміз не? Демография (грекше демос — халық) — халықтың құрылымын...

Субъективные признаки контрабанды огнестрельного оружия или его основных частей   Переходя к рассмотрению субъективной стороны контрабанды, остановимся на теоретическом понятии субъективной стороны состава преступления...

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия