V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwerthhusn
V2EX  ?  算法

求 M 行 N 列矩阵,最大子矩阵和,有比 O(M×N?)时间复杂度更低的算法吗?

  •  
  •   qwerthhusn · 273 天前 · 601 次点击
    这是一个创建于 273 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    能不能达到更低的时间复杂度?

    实在想不出来了,感觉自己智商着实有点低啊。

    马上菊花外包机考,之前从没刷过题,这几天在临阵抱佛脚,遇到个最大子矩阵问题,由于涉及到动态规划:

    先看了看 0-1 背包问题,脑子烧了老半天,算是理解个大概了,但是还没有看各种变种背包问题,以及朴素 DP 解法的进一步优化。

    然后就去看了最大子数组和,暴力 O(N?),暴力暂存结果 O(N?),分治法 O(N×LOG?N)都很好理解,最后一个 DP ,我本来想自己想一想看看能不能找到状态迁移方程,愣是没想到,然后看答案,还稍微费劲理解了一番终于算是明白了。

    现在扩充到二维数组,压缩到一维数组然后 DP 达到 O(M×N?)这个也没想到,最后看了答案还琢磨了很久算是搞明白了(其实本来算是比较好懂的,主要是我脑子一直在想找个状态迁移方程被绕进去,搞短路了),当 m<n 时也可以用行作为循环轴 O(N×M?)这个很好理解。目前网上的很多解都是这个版本的。但是昨天我好像刷到了 O(M×N)的解,但是找不到那个链接了。

    我自己想了半天也没能想出来什么好的状态迁移方程。

    2 条回复  ?  2023-11-22 00:04:49 +08:00
    Abmcar
        1
    Abmcar  
       273 天前
    应该没了吧,而且你这考 od 又不是可信
    看 op 水平,不刷这种题闭着眼考也能过吧
    chaoxu
        2
    chaoxu  
       157 天前
    考虑 m=n ,则这个问题是 APSP-hard ,没人知道 O(n^{3-\epsilon})复杂度的算法。

    Backurs, Arturs; Dikkala, Nishanth; Tzamos, Christos (2016), "Tight Hardness Results for Maximum Weight Rectangles", Proc. 43rd International Colloquium on Automata, Languages, and Programming: 81:1–81:13, doi:10.4230/LIPIcs.ICALP.2016.81
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2801 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:18 · PVG 20:18 · LAX 05:18 · JFK 08:18
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com