首页 > 编程语言 >【算法笔记】动态规划Dynamic Programming

【算法笔记】动态规划Dynamic Programming

时间:2023-11-01 22:24:55浏览次数:38  
标签:子串 index Dynamic Programming 环图 算法 LIS 节点

参考视频5 Simple Steps for Solving Dynamic Programming Problems

引子:最长递增子串(Longest Increasing Subsequence,LIS)

LIS([3 1 8 2 5]) = len([1 2 5]) = 3

LIS([5 2 8 6 3 6 9 5]) = len([2 3 6 9]) = 4

解决问题的三个步骤:

  1. 可视化例子(visualize example)

(“visualize example”应该是用数据结构表示问题的意思)

使用有向无环图作为工具(directed acyclic graph)

比如[3 1 8 2 5]的LIS的有向无环图就是1->2->5

求LIS的长度就是求有向无环图的最长路径+1

即:LIS = Longest Path in DAG + 1

假如A=[5 2 8 6 3 6 9 5],要求LIS[5],怎么办?

LIS[5] = 1 + max

  1. 找到问题的子问题(find a appropriate sub-problem)

所有递增子串是原序列的子集;所有递增子串都有头和尾,并且无论头还是尾节点都在原序列中;

因此可以改变头或者尾来得到一个子问题,这里选择尾节点,即:
LIS[k] = LIS ending at index k

例如对于[3 1 8 2 5],LIS[3] = 2,因为以index=3(即2)的节点为结尾,能找到的LIS就是[1 2],故长度为3。

  1. 找到各个子问题之间的关系

首先思考,在[3 1 8 2 5]中,LIS[4]和之前的子串的关系是什么?

答案是:以index=4为结尾的LIS的前一个节点,有可能是index=0,1,3三种情况(3->5,1->5,1->2->5)

故而要求最长的长度,就是在所有可能的情况中,选出一种最长的再加1,即LIS[4] = max{LIS[0], LIS[1], LIS[3]} + 1

若A=[5 2 8 6 3 6 9 5],求LIS[5]:

LIS[5] = 1 + max

标签:子串,index,Dynamic,Programming,环图,算法,LIS,节点
From: https://www.cnblogs.com/code-pigeon/p/17804148.html

相关文章

  • 查询算法——顺序查找(优化),二分查找(递归)
    顺序查找顺序查找又称为线性查找,是一种最简单的查找方法。适用于线性表的顺序存储结构和链式存储结构,从第一个元素开始逐个与需要查找的元素x进行比较,当比较到元素值相同时,返回元素m的下标,如果比较到最后都没有找到,则返回-1;时间复杂度为O(n)点击查看代码publicstaticvoidm......
  • spfa算法(求最短路和判断是否存在负环)floyd求最短路(11/1)
    #include<iostream>#include<cstring>#include<algorithm>#include<queue>usingnamespacestd;constintN=100010;intn,m;inth[N];intne[N];inte[N],w[N],idx=0;intdist[N];boolst[N];voidadd(inta,intb,intc){ne[idx]=......
  • 欧几里得算法
    算法说明:用较大数除以较小数,再用出现的余数去除除数,如此反复,直到最后余数是0为止网页链接:https://cn.bing.com/search?q=什么是求两个数的最大公约数的欧几里得算法(辗转相除法)&qs=n&form=QBRE&sp=-1&lq=0&pq=什么是求两个数的最大公约数的欧几里得算法(辗转相除法)&sc=3-27&sk=&cvi......
  • 智慧矿山的关键技术之一:皮带撕裂视频分析AI算法
    随着科技的进步,人工智能(AI)在各行各业的应用越来越广泛。智慧矿山作为矿业领域的发展趋势,对提高矿山安全和生产效率具有重要意义。其中,皮带撕裂是矿山生产中常见的故障之一,因此,利用AI算法对皮带撕裂进行实时监测和预警是智慧矿山的关键技术之一。本文将详细介绍皮带撕裂视频分析AI算......
  • Lnton羚通算法算力云平台交通系统调节方案
    随着汽车保有量的不断增加,城市交通网络面临越来越大的压力。在现代社会中,仅仅依靠道路交通基础建设已经无法满足城市通行需求的提升,必须通过优化城市交通组织,大力发展公共交通系统,并结合智能交通控制系统建设等多种手段与基础建设相辅相成,才能保证城市交通的正常运行,为经济建设提供......
  • Lnton羚通视频分析算法平台构建高清电子警察系统解决方案
    Lnton羚通的算法算力云平台是一款优秀的解决方案,具有突出的特点。它提供高性能、高可靠性、高可扩展性和低成本的特性,使用户能够高效地执行复杂计算任务。此外,平台还提供丰富的算法库和工具,并支持用户上传和部署自定义算法,提升了平台的灵活性和个性化能力。城市交通是城市建设的重......
  • AI视频监控汇聚平台EasyCVR增加算法功能小tips
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC......
  • Lnton羚通算法算力云平台贵重物品识别系统
    一种基于视觉分析技术的贵重物品识别应用场景是,利用现场摄像头对某一区域内是否存在贵重物品进行实时监测,并通过人工智能视觉分析技术快速发现并识别贵重物品遗失情况,即刻预警,发动安保应急方案,及时止损。该技术可以广泛应用于博物馆、美术馆、珠宝展销会等需要高度防范贵重物品盗窃......
  • NOMURA Programming Competition 2020 D Urban Planning
    考虑排列\(P_i\)已经固定了的情况,那么连边\(i\toP_i\)形成有向图\(G\),最小连边数就是\(N\)减去弱连通块数。善良的出题人已经告诉你连边方案就是\((N-1)^K\),所以答案就是\(N(N-1)^K\)减去所有连边方案中弱连通块数量总和。于是只需要考虑所有连边方案中弱连通块数量总......
  • 圆拟合算法
    参考转自 https://people.cas.uab.edu/~mosya/cl/CPPcircle.htmlGeometriccirclefits Algebraiccirclefits Levenberg-Marquardtfitinthe"full"(a,b,R)space    (perhapsthebestgeometriccirclefit)https://people.cas.uab.edu/~mosya/cl/C......