1

这可能并不明显,但 Prolog 还提供了开箱即用的数组。Prolog 复合有一个函子和许多参数。这意味着我们可以表示一个数组,例如:

[[1,2],[3,4]]

用以下 Prolog 化合物替换 Prolog 列表:

matrice(vector(1,2), vector(3,4))

优点是从整数索引更快地访问元素。这种表示可以用来实现矩阵乘法吗?

4

1 回答 1

1

还有另一种方法,在 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 ?

编辑:你想让客户端代码能够提供产品和求和操作吗?你想允许值的专业化吗?例如,如果您想使用矩阵乘法来查找图的传递闭包,则可以将布尔方阵表示为无界整数。这将使矩阵本身至少非常小。

于 2021-06-07T08:41:49.717 回答