在O(n)时间内制定方阵算法的困难

问题描述 投票:2回答:2

我正在回顾过去的一些论文,以进行考试,并且遇到了方阵算法问题/分析,这是我一生无法解决的。

[基本上,我得到一个N×N的矩阵(基本上是一个正方形矩阵),我需要实现一个数据结构,该结构允许我在O中将矩阵的大小增加1(行+ 1,列+ 1) (n)时间。

[强迫我的老师之后,我意识到最好的数据结构将是一个数组数组,因此本质上是这样的东西[{1,2,3},{4,5,6},{7,8,9 }]这将表示我的矩阵,第1行,第2行,第3行

现在我需要能够在调用gain_size()方法时将该矩阵扩展1,我已经尝试过一个幼稚的解决方案,即创建一个新的大小为4的空数组,使先前的矩阵具有3个元素,追加该数组添加到我们的matrix_array中,然后将0添加到所有其余数组中,但这需要O(n ^ 2)时间。

我相信这里与行和列有关,当我们增加矩阵大小时,我们实质上是在创建新的行和列,我认为这与解决方案有关。

我附上下面的问题。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9udVBKNC5wbmcifQ==” alt =“在此处输入图像描述”>

algorithm matrix optimization time big-o
2个回答
0
投票

天真的解决方案实际上在O(n)中起作用:

  1. 考虑大小为n * n的任何矩阵,以数组的形式实现(数组是动态的)
  2. 要达到大小n + 1,我们首先创建一个大小为n的新数组,并将其附加到矩阵的末尾,这需要O(n)时间
  3. 然后,对于矩阵中的每一行,我们在末尾添加0行,然后添加n + 1行,并分别添加1元素,因此这也需要O(n)时间
  4. 总运行时为O(n)

0
投票

尝试数组数组:

M = [ A1, A2, ..., An ]

[如果Ax,则每个数组a_{i,j}包含值max(i,j) == x

我让你做证明。

© www.soinside.com 2019 - 2024. All rights reserved.