【问题标题】:align 2 matrice for maximum overlap对齐 2 矩阵以获得最大重叠
【发布时间】:2018-05-09 23:49:42
【问题描述】:

所以下面是一个面试题。

给定两个 N2 矩阵,其条目为 01。我们如何找出1 可能的最大重叠数?

注意:矩阵只能上下左右移动,不能旋转

目前我被困在最幼稚的O(N^4) 方法上,即将一个矩阵的左上角与另一个矩阵的每个可能位置对齐,并计算所有重叠的 1。

示例

   [0 1 0]      [0 0 1]
A: [1 0 0]   B: [0 0 1]
   [1 0 0]      [0 0 0]

那么最大重叠1的个数为2,即我们从B的(0,2)(1,0)的 A,则 (0,2)(1,0) 都是 1,并且 (1,2) (2,0) 都是 1。

可以从O(N4)优化吗?

【问题讨论】:

  • 你的面试官是否对矩阵的大小或值的生成方式有任何限制?
  • 不,他没有。矩阵的大小与算法有何关系?
  • 如果 N=3 如您的示例所示,则 N^4 解决方案很好。这很简单,编写更有效但更复杂的东西没有任何好处。如果 N 可以很大,那么更复杂但更有效的算法是可取的。通常,对于大输入效率更高的算法不仅更复杂,而且比处理小输入的简单算法慢。

标签: algorithm matrix


【解决方案1】:

如果浮点算术计算是可能的,这个问题可能会在O(n^2 logn) 时间内用二维cross-correlation(本质上使用快速傅里叶变换)解决。该方法用于二维模式搜索。

不那么明显的提示:为了实现相关性并获得正确的结果,应该移动值以使“信号”双极性(将零转换为 -1 或从所有矩阵元素中减去矩阵平均值)

计算相关矩阵,找到最大值的索引(dx,dy) - 它应该对应于对齐向量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    相关资源
    最近更新 更多