【问题标题】:Need data structure to support a matrix operation需要数据结构来支持矩阵运算
【发布时间】:2013-05-22 18:22:32
【问题描述】:

我需要一个特定的数据结构,但我不确定应该使用什么。

我有一个矩阵 NxN。每个单元格都有一些整数值。对于矩阵中的任何矩形,我需要计算一个“价格”,这样:

price = sum( #value_of_field * #distance_from_target ) over cells in rectangle

距离是曼哈顿距离,目标可以是矩形中的任何单元格。矩阵是固定的(不变的)。

例子:

1 2
1 2

左上为[0;0],左下为[0;1],右上为[1;0],右下为[1;1]

例如,给定矩形 [0;0] - [1;1](整个矩阵)中的 [0;0],价格将是:

price = 1 * 0        +      2 * 1       +    1 * 1         +        2 * 2    =  7
        price of           price of           
        [0;0] *            [1;0] *           .....                   ....
        distance           distance
        from [0;0]         from [0;0]

我应该如何解决这个问题? m x n(其中 m,n 是矩形的尺寸)的解决方案很容易,但速度很慢。如何加快速度(例如预先计算某些东西)?

【问题讨论】:

  • 你有什么问题?你在问什么数据结构,但你已经说过它是一个矩阵。一个二维数组。
  • 定义距离。您是否使用曼哈顿距离?此外,矩阵是否固定(不变)且目标始终为 0,0 ?也就是说,对于每个问题实例,你是给定一个目标和一个矩形的边界,还是给定一个目标、一个矩形和一个矩阵?请编辑问题以回答这些问题。
  • @kirelagin 是单元格和目标之间的曼哈顿距离。
  • @SteveWaddicor 是的,但是对于任何矩形来说这都太慢了(O(mn),我需要更快的东西==我想预先计算一些东西
  • @jwpat7 感谢您的意见,我编辑了这个问题。基本上你得到矩阵,然后是矩形。目标可以是矩形中的任何单元格,而不仅仅是 [0;0]

标签: algorithm matrix


【解决方案1】:

提前计算Ai和Bi:

  • Ai = 第 i 行元素的总和
  • Bi = 第 i 列元素的总和

这会给你答案。

每个价格计算的时间复杂度为O(N)。准备Ai和Bi的时间复杂度也是O(N)

【讨论】:

  • 感谢先生提供这个解决方案 ^_^ 它需要进行一些更改以满足我的需要,但它正在工作:)
猜你喜欢
  • 1970-01-01
  • 2014-02-11
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多