中的整数格,即集合,让的某个有界子集上定义的函数。的离散(图)拉普拉斯,用表示,在点定义为
即我们对 的所有晶格邻居求和减去给定点的函数值乘以(这是,因为维度)。
为了数值计算离散的拉普拉斯,我将晶格(当然是它的一部分)表示为数组,因此的值存储在复制网格鉴于的性质,当我需要在数组的某个索引处计算它时,我需要跳过数组的一行以访问. 这显然不是访问数组的有效方式,因为我们强制指针重复跳过大块内存位置。确实,对于过度计算给定函数的拉普拉斯的某些问题(例如,在某些迭代过程中),即使矩阵的大小适中(例如),与具有相同数量的操作但没有数组访问。
问题:是否有一种有效的方法(数据结构)来表示网格以优化上述形式的数组访问操作?说,专门针对中的访问模式。
我知道数组的空间和时间优化,以及重复访问相同的内存位置,编译器可能会将这些指针提升到注册表中。但是,在我的情况下,访问模式不是很规律。
当然,这个问题相当幼稚,但由于网格是一个无处不在的对象,如果您能分享您对有关它的有效数据结构的见解,我将不胜感激。