这可能并不明显,但 Prolog 还提供了开箱即用的数组。Prolog 复合有一个函子和许多参数。这意味着我们可以表示一个数组,例如:
[[1,2],[3,4]]
用以下 Prolog 化合物替换 Prolog 列表:
matrice(vector(1,2), vector(3,4))
优点是从整数索引更快地访问元素。这种表示可以用来实现矩阵乘法吗?
这可能并不明显,但 Prolog 还提供了开箱即用的数组。Prolog 复合有一个函子和许多参数。这意味着我们可以表示一个数组,例如:
[[1,2],[3,4]]
用以下 Prolog 化合物替换 Prolog 列表:
matrice(vector(1,2), vector(3,4))
优点是从整数索引更快地访问元素。这种表示可以用来实现矩阵乘法吗?
还有另一种方法,在 R(统计环境)中实现。数组的维度和值是分开保存的。所以你的正方形也可以表示为:
array(dims(2, 2), v(1,2,3,4))
这种方法有一些(有问题的)优点和缺点。如果您有兴趣,可以从这里开始阅读:https ://stat.ethz.ch/R-manual/R-devel/library/base/html/dim.html
对于您的问题,是的,您可以实现矩阵乘法,无论您决定如何表示矩阵。看看这两种方法(数组数组与一个数组以及从维度计算索引)在效率方面的比较会很有趣。
你想用什么算法来做矩阵乘法?是这里描述的任何一个:https ://en.wikipedia.org/wiki/Matrix_multiplication_algorithm ?
编辑:你想让客户端代码能够提供产品和求和操作吗?你想允许值的专业化吗?例如,如果您想使用矩阵乘法来查找图的传递闭包,则可以将布尔方阵表示为无界整数。这将使矩阵本身至少非常小。