Red de Petri
# Red de Petri

Una Red de Petri es una representación matemática o gráfica de un sistema a eventos discretos en el cual se puede describir la topología de un sistema distribuido, paralelo o concurrente. La red de Petri esencial fue definida en la década de los años 1960 por Carl Adam Petri. Son una generalización de la teoría de autómatas que permite expresar un sistema a eventos concurrentes.

Una red de Petri está formada por lugares, transiciones, arcos dirigidos y marcas o fichas que ocupan posiciones dentro de los lugares. Las reglas son: Los arcos conectan un lugar a una transición así como una transición a un lugar. No puede haber arcos entre lugares ni entre transiciones. Los lugares contienen un número finito o infinito contable de marcas. Las transiciones se disparan, es decir consumen marcas de una posición de inicio y producen marcas en una posición de llegada. Una transición está habilitada si tiene marcas en todas sus posiciones de entrada.

En su forma más básica, las marcas que circulan en una red de Petri son todas idénticas. Se puede definir una variante de las redes de Petri en las cuales las marcas pueden tener un color (una información que las distingue), un tiempo de activación y una jerarquía en la red.

La mayoría de los problemas sobre redes de Petri son decidibles, tales como el carácter acotado y la cobertura. Para resolverlos se utiliza un árbol de Karp-Miller. Se sabe que el problema de alcance es decidible, al menos en un tiempo exponencial.

## Definición de las Redes de Petri

Mediante una red de Petri puede modelarse un sistema de evolución en paralelo o eventos concurrentes compuesto de varios procesos que cooperan para la realización de un objetivo común.

La presencia de marcas se interpreta habitualmente como presencia de recursos. El franqueo de una transición (la acción a ejecutar) se realiza cuando se cumplen unas determinadas precondiciones, indicadas por las marcas en las fichas (hay una cantidad suficiente de recursos), y la transición (ejecución de la acción) genera unas postcondiciones que modifican las marcas de otras fichas (se liberan los recursos) y así se permite el franqueo de transiciones posteriores.

Definición: Una red de Petri es un conjunto formado por $R=\{P,T,Pre,Post\}$, donde $P$ es un conjunto de lugares de cardinal $n$, $T$ un conjunto de transiciones de cardinal $m$, $Pre$ la aplicación de incidencia previa que viene definida como

* $Pre:P\times T\rightarrow Naturales$

y $Post$ la aplicación de incidencia posterior que viene definida como

* $Post:P\times T\rightarrow Naturales$

Definición: Una red marcada es un conjunto formado por $\{R,M\}$ donde $R$ es una Red de Petri como la definida, $M$ es una aplicación denominada marcado y

* $M:P\rightarrow Naturales$.

Se asocia a cada marca un número natural por lo tanto en donde el número de marcas es descrita por la cardinalidad del conjunto de marcas en la red.

## Áreas de aplicación

* Análisis de datos
* Modelos de simulación con Dinámica de sistemas
* Diseño de software
* Fiabilidad
* Flujo de trabajo
* Programación concurrente

## Herramientas de programación

* ARP
* CoopnTools
* CPN-AMI
* CPN Tools
* CPN ML
* DPNSchematic
* HiQPN-Tool
* HPSim
* Integrated Net Analyzer
* JARP : Petri Nets Analyzer. Web de desarrollo http://jarp.sourceforge.net/
* JFern: Rakiura JFern (http://sourceforge.net/projects/jfern) "Java based Petri Net framework (2003)" - framework ligero con simulador, desarrollado en java.
* JPetriNet: web de desarrollo http://jpetrinet.sourceforge.net/
* Maria: web oficial http://www.tcs.hut.fi/Software/maria/
* Marigold
* Model-Checking Kit
* NEPTUN
* PEP
* PetriEdiSim
* Platform Independent Petri Net Editor
* Petrigen
* PetriSim
* Petri Net Browser
* Petri Net Kernel
* Petri Net Simulator
* PIPE (Platform Independent Petri net Editor 2)
* PNES
* PNSim
* PNtalk
* Poseidon
* Poses++
* Predator
* PROD
* Renew
* SEA
* SimPRES
* SIPN-Editor
* SimulaWorks
* StpnPlay
* Tina
* Visual Object Net ++
* WebSPN
* WINSIM
* Woflan
* Wolfgang: http://iig-uni-freiburg.github.io/
* Woped
* XPetri
* XRL
