关于图表:Z符号:2D数组的表示

Z Notation: Representation of a 2D array

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

唯一的问题是,我不知道如何在Z中指定入射矩阵。我认为我需要一个2D数组,但是从可用于Z表示法的参考资料来看,数组通常使用seq表示。 还有另一种指定多维数组的方法吗?

提前致谢。


我认为节点之间的关系可以更好地表示入射矩阵。 假设我们有一个类型节点:

1
 [node]

然后可以将图建模为节点之间的关系:

1
2
graph : node \
el node

这将是有向图,因为图中可能存在边n1-> n2,但不存在n2-> n1。 如果您需要无向图,则可以添加其他限制:

1
graph\\inv = graph

(图的逆与图相同,即如果图中n1-> n2,则n2-> n1也必须在图中。)

如果您确实想将入射矩阵建模为多维数组,则可以定义一个从数组中的位置映射到整数的函数,例如:

1
matrix: (node \\cross node) \\fun {0,1}

两种表示之间的关系可以表示为:

1
\\forall n1,n2:node @ (n1,n2)\\in graph \\iff graph( (n1,n2) ) = 1