Каждая вершина i дерева связывается с расширенной маркировкой M(i). В этой маркировке число меток в позиции может быть либо неотрицательным целым, либо . Каждая вершина классифицируется как граничная или терминальная или дублирующая или внутренняя.
Граничными являются вершины, которые не обработаны алгоритмом. Алгоритм превратит их в терминальные, дублирующие, внутренние.
Алгоритм начинает с начальной маркировки М0, принимая ее в качестве граничной вершины.
Пусть х – граничная вершина.
- Если в дереве имеется другая вершина у, не являющаяся граничной, и с ней связана также маркировка М(х)=М(у), то вершина х – дублирующая.
- Если для маркировки М(х) ни один из переходов не разрешен для всех , то х – терминальная вершина.
- Для всякого перехода , разрешенного в М(х), создать новую вершину z дерева. Маркировка М(z) определяется для каждой позиции Pi следующим образом:
а) если , то .
б) если на пути от корневой вершины к х существует вершина у с - функция следующего состояния.
в) в противном случае М(z)i=d(M(x), tj)i.
Функция не определена, если tj не разрешен в маркировке М(х). Если tj разрешен, то , где M’(x) – маркировка, полученная после срабатывания tj. Дуга, помеченная tj, направлена от вершины х к вершине z. Вершина х переопределяется как внутренняя, вершина z становится граничной.
Когда все вершины дерева – терминальные, дублирующие или внутренние, алгоритм останавливается.
Для нашего примера дерево достижимости имеет вид:
Имеется доказательство того, что алгоритм конечный и не может создавать новые граничные вершины бесконечно.
Ниже приведем еще один пример сети Петри и дерево достижимости для него.