这可能并不明显,但Prolog也提供了开箱即用的数组。Prolog复合函数有一个函数式和许多参数。这意味着我们可以表示一个数组,例如:
[[1,2],[3,4]]将Prolog列表替换为以下Prolog化合物:
matrice(vector(1,2), vector(3,4))优点是从整数索引访问元素的速度更快。这种表示法可以用来实现矩阵乘法吗?
发布于 2021-06-07 16:41:50
还有另一种方法,如在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
编辑:是否允许客户端代码能够提供乘积和求和操作?是否允许值的专门化?例如,如果您希望使用矩阵乘法来查找图的传递闭包,则可以将布尔方阵表示为一个无界整数。这将使矩阵本身至少相当小。
https://stackoverflow.com/questions/67848952
复制相似问题