В 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 потребует от вас создания нового состояния для каждой возможной комбинации каждого подсостояния в каждой подсистеме.