В чем разница сетей Петри и конечных автоматов? - PullRequest
0 голосов
/ 30 декабря 2018

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

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

В State Machines государство является глобальным.Учитывая два состояния, все, что вы можете сказать, это «эти состояния разные».В сетях Петри государство структурировано по местам.Состояние - это маркировка, которая говорит о том, сколько токенов в каждом месте.Имея две отметки, вы можете сравнить их и сказать, что «они одинаковы в местах X, Y, Z, но различаются в местах U, V, W».

При определении автомата FSM вы должны смотреть на каждуюуказать индивидуально и определить возможные переходы в другие состояния.Каждый переход в сети Петри представляет собой целую группу переходов в базовом графе достижимости.Например, переход сети Петри может сказать: из каждой маркировки, имеющей токен в P1 и токен в P2, эта модель может достичь маркировки, которая на один токен меньше в P1 и на один токен меньше в P2, но на один токен большев п3.Если график достижимости имеет 8 или 800 отметок с этим свойством, то один переход Petri Net представляет 8 или 800 переходов на графике достижимости.

В моделях Petri Net можно создавать инварианты перехода.Это циклы в графе достижимости.Затем вы можете поместить больше токенов в начальную маркировку модели, и число состояний в графе достижимости взорвется.Его структура по-прежнему задается теми же циклами, что и в модели с меньшим количеством токенов, и модель сети Петри остается понятной.Например, подумайте о системе клиент / сервер.У вас есть места для Клиентов, места для Серверов, места для сообщений, проходящих туда и обратно.Затем вы просто вводите токены для количества клиентов и серверов, которые вы хотите смоделировать.Они легко меняются.

Что касается того, когда что использовать, я согласен с Kasper van den Berg.

  • Если у вас есть проблема, которая достаточно мала, чтобы быть обработанной с помощью FSM, тогда используйте FSM.Может быть, до двух десятков состояний?
  • Если у вас есть проблема, которая естественным образом отображается на FSM, используйте FSM.Вы, вероятно, будете использовать алгоритм для построения FSM в таких случаях.Например, синтаксический анализ ввода с регулярными выражениями.(Кстати, многие библиотеки регулярных выражений имеют расширения, для обработки которых требуется как минимум стековый компьютер.)
  • Если вам нужно создать модель для различимых подсистем, которые взаимодействуют друг с другом, используйте сети Петри.Тогда у вас может быть набор мест для каждой подсистемы, тогда как FSM потребует от вас создания нового состояния для каждой возможной комбинации каждого подсостояния в каждой подсистеме.
0 голосов
/ 30 декабря 2018

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

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

Используйте сеть Петри только тогда, когда вам нужен параллелизм или дополнительная выразительность.Или когда вы моделируете фабричный завод, где полуфабрикаты превращаются в продукты, или когда ваша аудитория более знакома с этим образом.
Возможно, сети Петри также можно использовать для моделирования, визуализации запущенных массивных параллельных систем, таких как микросервисные архитектуры.Azure Service Fabric - надежные сервисы и надежные участники, сервисы, работающие на основе Kubernetus, Azure Function и AWS Lambda.
Кроме того, теоретических исследований о сетях Петри и их использовании больше, чем о конечных автоматах (обратите внимание, чтоКак я уже говорил ранее, конечные автоматы приводимы к сетям Петри).

...