是否存在针对场所/过渡Petri网的既定数据结构?

时间:2013-12-28 16:55:19

标签: clojure petri-net

我正在努力想出一个代表地点/过渡Petri网的优雅解决方案。 到目前为止,我将它们保存如下:

{:netname {:places      {:name tokens, ...}
           :transitions #{:t1, :t2, :t3, ...}
           :edges_in    #{[:from :to tokens], ...}
           :edges_out   #{[:from :to tokens], ...}}}

tokens是一个数字,一切都以带有相应名称的符号开头。

//编辑 - 更多说明: :netname和:name是唯一的,因为它必须能够合并2个网络,其中这些地方必须具有唯一的名称。数字标记由创建地点或边缘期间的Petri网的用户确定。

我会感谢一些指针或指向更复杂/更好的数据结构的链接。

//编辑2 - 由于地名的独特性,我重写了我对数据结构的第一次看法。 :places现在引用一个hashmap。此外,edges_in和out现在是散列图,因为每条边的原点,目的地和标记号都是唯一的。

//编辑3 - 结构的使用:它的读取和写入量与我说的相同。使用petri网的方式,在修改网络和阅读网络之间来回,可能会有更多的阅读结束。

我还稍微修改了我的结构,所以:edges_in和:edges_out现在将三元组保存为向量而不是列表。这简单地将散列映射保存到文件并从中读取它,因为load-string将列表评估为表达式。

1 个答案:

答案 0 :(得分:0)

您可以查看称为PNML的HLPN的ISO 15909交换格式。这至少将为您提供数据结构的标准接口的基础。