首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对称矩阵的Data.Map和Data.Array?

对称矩阵的Data.Map和Data.Array?
EN

Stack Overflow用户
提问于 2011-11-15 03:30:05
回答 2查看 680关注 0票数 3

不好意思问了个含糊的问题,但我希望对一个有经验的哈斯克勒来说,这是一个不需要思考的问题。

我必须表示和操作对称矩阵,因此数据类型基本上有三种不同的选择:

  1. 完成了存储(i,j)(j,i)元素的矩阵,尽管m(i,j) = m(j,i)

Data.Array (Int,Int) Int

  • A映射,只存储带有i <= j (上三角矩阵)的元素(i,j)

Data.Map (Int,Int) Int

  • k索引的向量,存储给定向量阶f(i,j) = k的上三角矩阵

Data.Array国际贸易公司

需要对矩阵进行许多操作,更新单个元素,查询行和列等,但它们主要用作容器,不需要进行线性代数运算(反演、det等)。

如果矩阵的维数将在20x20附近,哪一个选项是最快的?如果我正确理解,每次更新(在数组中使用(//) )都需要完整的副本,所以在2或3情况下,从20x20=400元素转到20*21/2 = 210元素会有很大的意义,但是case 2和3的访问速度要慢一些。

有什么指引吗?

顺便说一句:第三个选项不是很好,因为计算f^-1需要平方根。

EN

Stack Overflow用户

发布于 2011-11-15 04:52:48

还有第四种选择:使用一个减少的数组--大数组。我将使用选项1(使用完整的数组并只存储每个元素两次)或最后一个选项。如果您打算更新许多元素,我强烈建议使用可变数组;IOArray和STArray是流行的选择。

除非这是为了家庭作业什么的,否则你也应该看看黑客。快速观察表明,操纵矩阵的问题已经解决了好几次了。

票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8131120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档