Die Datenstruktur des Petrinetzes besteht aus zwei verschiedene Knoten, zum einen die Transition und zum anderen die Stelle. Die Knoten werden mittels Kanten verbunden. Diese Verbindungen stellen eine Abhängigkeit in einer vorgegebenen Richtung dar und sind essentiell für das Schalten der Transitionen. Die Transitionen können jedoch nur geschalten werden, wenn alle Stellen die mittels einer Kante auf diese Transition ÿeigen"mindestens eine Markierung aufweisen. Nach dem erfolgreichem Schalten werden alle Markierungen der Stellen von denen aus dieser Transition Kanten ÿeigenïnkrementiert. Transitionen werden graphisch durch ein rechteckiges Element und die Stellen werden graphisch durch ein Kreis-Element dargestellt.
Die Datenstruktur des Erreichbarkeitsgraphen besteht aus Knoten, die die Zustände der Markierungen der Stellen im Petrinetz darstellen und aus Kanten, die die Transitionen darstellen um auf die Markierungen der folgenden Knoten zu kommen. Ist das Unbeschränktheitskriterium für zwei Knoten auf einem Pfad erfüllt, endet der Erreichbarkeitsgraph unvollständig und man bezeichnet diesen dann als partiellen Erreichbarkeitsgraphen.
Der Algorithmus erzeugt den Erreichbarkeitsgraphen rekursiv. Im ersten Schritt werden alle schaltbaren Transitionen im Petrinetz in einer Liste gespeichert. Der zweite Schritt wirkt sich im Speichern der zu diesem Zeitpunkt aktuellen Markierung aus. Im Anschluss wird mit einer Schleife durch alle vorher gespeicherten noch schaltbaren Transitionen iteriert. Diese Iteration beinhaltet das Schalten einer Transition von der Liste der noch zu schaltenden Transitionen. Des weiteren wird nun eine neue Kanten und ein Knoten, der die neue Markierung des Petrinetzes repräsentiert im Entscheidungsbaum erzeugt. Während des folgenden Schritts wird der neuen Entscheidungsbaum auf Unbeschränktheitskriterien geprüft. Falls der diese erfüllt werden bricht der Algorithmus ab. Im Falle der Beschränktheit wird eine erneuter Aufruf des Algorithmus folgen um diesen wieder mit den neuen Bedingungen von vorne beginnen zu lassen. Im Anschluss wird die ursprüngliche Markierung diese Petrinetzes wiederhergestellt um eine Art Tiefensuche zu implementieren. Nun wird das Ergebnis der rekursiven vorhergegangen Aufrufe des Algorithmus bewertet, falls diese nicht die Unbeschränktheit aufweist, wird eine neue Transition geladen, um den Iterator neu zu starten. Sollte keine Transition mehr gefunden werden wird der Aufruf beendet.