Сообщение Список переходов в ДКА от 30.09.2025 19:40
Изменено 01.10.2025 20:06 Marty
Список переходов в ДКА
Здравствуйте!
Наверное, в "Философию", хотя, вопрос всё же вполне практический.
Ковыряю генератор ДКА. Думаю, как описывать переходы между состояниями. Пока надумал примерно так:
Ничего не забыл?
Вопрос — как сравнивать такие записи? И надо ли сравнивать? По идее, переходы могут пересекаться по условиям, и это нельзя. И хочется сразу отсечь проблемы. Или оставить на потом?
Для начала надо отсортировать по состояниям и переходам, сохраняя относительный порядок у переходов одного типа.
Сначала идут все переходы, у которых нет "звездочек" в исходных состояниях и в событиях перехода.
Потом — те переходы, у которых есть "звездочка", но есть исключения из звездочки, состояния/события с отрицанием (тут вопрос, что идёт раньше, "звездочка" в исх состояниях или "звездочка" в событиях?)
Потом — те переходы, у которых только одна звездочка.
Когда отсортировали, разбиваем эти сложные описания переходов на примитивные, когда у нас только одно исходное состояние и только одно событие перехода.
Потом применяем "звездочки" с исключениями.
Потом применяем чистые "звездочки".
Предложения, пожелания, критика?
Наверное, в "Философию", хотя, вопрос всё же вполне практический.
Ковыряю генератор ДКА. Думаю, как описывать переходы между состояниями. Пока надумал примерно так:
Синтаксис описания переходов:
СписокИсхСостояний : СписокСобытий -> ЦелевоеСостояние [? ДопУсловие] [- Описание];
где
СписокИсхСостояний - Состояние1 [, Состояние2 [, Состояние3... ] ]
СостояниеN - */Состояние/!Состояние
СписокСобытий - Событие1 [, Событие2 [, Событие3... ] ]
СобытиеN - */Событие/!Событие
'*' - означает любое состояние, для которого не задано перехода.
'!' (отрицание) - используется совместно с состоянием '*', и явно исключает
генерацию перехода из этого состояния.
Аналогичная семантика используется при описании списка событий.Ничего не забыл?
Вопрос — как сравнивать такие записи? И надо ли сравнивать? По идее, переходы могут пересекаться по условиям, и это нельзя. И хочется сразу отсечь проблемы. Или оставить на потом?
Для начала надо отсортировать по состояниям и переходам, сохраняя относительный порядок у переходов одного типа.
Сначала идут все переходы, у которых нет "звездочек" в исходных состояниях и в событиях перехода.
Потом — те переходы, у которых есть "звездочка", но есть исключения из звездочки, состояния/события с отрицанием (тут вопрос, что идёт раньше, "звездочка" в исх состояниях или "звездочка" в событиях?)
Потом — те переходы, у которых только одна звездочка.
Когда отсортировали, разбиваем эти сложные описания переходов на примитивные, когда у нас только одно исходное состояние и только одно событие перехода.
Потом применяем "звездочки" с исключениями.
Потом применяем чистые "звездочки".
Предложения, пожелания, критика?
Список переходов в ДКА
Здравствуйте!
Наверное, в "Философию", хотя, вопрос всё же вполне практический.
Ковыряю генератор ДКА. Думаю, как описывать переходы между состояниями. Пока надумал примерно так:
Ничего не забыл?
Вопрос — как сравнивать такие записи? И надо ли сравнивать? По идее, переходы могут пересекаться по условиям, и это нельзя. И хочется сразу отсечь проблемы. Или оставить на потом?
Для начала надо отсортировать по состояниям и переходам, сохраняя относительный порядок у переходов одного типа.
Сначала идут все переходы, у которых нет "звездочек" в исходных состояниях и в событиях перехода.
Потом — те переходы, у которых есть "звездочка", но есть исключения из звездочки, состояния/события с отрицанием (тут вопрос, что идёт раньше, "звездочка" в исх состояниях или "звездочка" в событиях?)
Потом — те переходы, у которых только одна звездочка.
Когда отсортировали, разбиваем эти сложные описания переходов на примитивные, когда у нас только одно исходное состояние и только одно событие перехода.
Потом применяем "звездочки" с исключениями.
Потом применяем чистые "звездочки".
Предложения, пожелания, критика?
Наверное, в "Философию", хотя, вопрос всё же вполне практический.
Ковыряю генератор ДКА. Думаю, как описывать переходы между состояниями. Пока надумал примерно так:
Синтаксис описания переходов:
СписокИсхСостояний : СписокСобытий [? ДопУсловие] -> ЦелевоеСостояние [? ДопУсловие] [: СписокДействий] [- Описание];
где
СписокИсхСостояний - Состояние1 [, Состояние2 [, Состояние3... ] ]
СостояниеN - * / Состояние / !Состояние
СписокСобытий - Событие1 [, Событие2 [, Событие3... ] ]
СобытиеN - * / Событие / !Событие
СписокДействий - Действие1 [, Действие2 [, Действие3... ] ]
'*' - означает любое состояние, для которого не задано перехода.
'!' (отрицание) - используется совместно с состоянием '*', и явно исключает
генерацию перехода из этого состояния.
Аналогичная семантика используется при описании списка событий.
ДопУсловие - логическое выражение, состоящее из предикатов, операций '&', '|', '!'
и группроующих скобок.
ДопУсловие может располагаться либо после списка событий, либо после целевого состояния,
но только в одном из этих мест.Ничего не забыл?
Вопрос — как сравнивать такие записи? И надо ли сравнивать? По идее, переходы могут пересекаться по условиям, и это нельзя. И хочется сразу отсечь проблемы. Или оставить на потом?
Для начала надо отсортировать по состояниям и переходам, сохраняя относительный порядок у переходов одного типа.
Сначала идут все переходы, у которых нет "звездочек" в исходных состояниях и в событиях перехода.
Потом — те переходы, у которых есть "звездочка", но есть исключения из звездочки, состояния/события с отрицанием (тут вопрос, что идёт раньше, "звездочка" в исх состояниях или "звездочка" в событиях?)
Потом — те переходы, у которых только одна звездочка.
Когда отсортировали, разбиваем эти сложные описания переходов на примитивные, когда у нас только одно исходное состояние и только одно событие перехода.
Потом применяем "звездочки" с исключениями.
Потом применяем чистые "звездочки".
Предложения, пожелания, критика?