我是Z符号的完全初学者。我需要在Z中表示图形类型。我的想法是使用关联矩阵,以便我可以轻松地在节点和边缘之间自由遍历。
唯一的问题是,我不知道如何在Z中指定关联矩阵。我认为我需要一个2D数组,但查看可用于Z表示法的参考材料,数组通常使用seq表示。还有另一种指定多维数组的方法吗?
提前致谢。
答案 0 :(得分:1)
我认为节点之间的关系可以更好地表示关联矩阵。让我们假设我们有一个类型节点:
[node]
然后可以将图形建模为节点之间的关系:
graph : node \rel node
这将是有向图,因为图中可能存在边n1-> n2但不是n2-> n1。如果您需要无向图,则可以添加进一步的限制:
graph\inv = graph
(图的倒数与图相同,即如果图中的n1-> n2,那么n2-> n1也必须在图中。)
如果您真的想要将关联矩阵建模为多维数组,可以定义一个从数组中的位置映射到整数的函数,例如:
matrix: (node \cross node) \fun {0,1}
两种表示之间的关系可表示为:
\forall n1,n2:node @ (n1,n2)\in graph \iff graph( (n1,n2) ) = 1