Graph Z表示法:二维数组的表示法

Graph Z表示法:二维数组的表示法,graph,multidimensional-array,formal-methods,z-notation,Graph,Multidimensional Array,Formal Methods,Z Notation,我是Z符号的完全初学者。我需要用Z表示一个图类型。我的想法是使用关联矩阵,这样我就可以轻松地在节点和边之间自由移动 唯一的问题是,我不知道如何在Z中指定关联矩阵。我认为我需要一个2D数组,但通过查看Z符号可用的参考资料,数组通常使用seq表示。是否有其他方法指定多维数组 提前感谢。我认为节点之间的关系是关联矩阵的更好表示形式。假设我们有一个类型节点: [node] 然后,可以将图形建模为节点之间的关系: graph : node \rel node 这将是一个有向图,因为图中可能有边n1-

我是Z符号的完全初学者。我需要用Z表示一个图类型。我的想法是使用关联矩阵,这样我就可以轻松地在节点和边之间自由移动

唯一的问题是,我不知道如何在Z中指定关联矩阵。我认为我需要一个2D数组,但通过查看Z符号可用的参考资料,数组通常使用seq表示。是否有其他方法指定多维数组


提前感谢。

我认为节点之间的关系是关联矩阵的更好表示形式。假设我们有一个类型节点:

 [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