DAG最长路【动态规划】

动态规划——DAG最长路 DAG:有向无环图 1 求整个DAG中的最长路径 问题描述:给定一个有向无环图,求解整个图的所有路径中权值之和最大的那条。 解题 采用动态规划+递归的方法,令dp[i]表示从i号顶点出发能获得的最长路径长度。 需要按照拓扑逆序求解dp数组(即从没有后继结点的结点开始计算),借助递归策略实现拓扑逆序的同等效果 dp[i] = max{dp[j]+length[i-->j]},其中j是i的后继结点 // dp[i]表示从i号顶点出发能获得的最长路径长度, 初始化为0 int DP(int 阅读详情

1、求解最长路径长度 

const int maxn=100010;

int dp[maxn];
memset(dp,0,sizeof(dp));
int DP(int i) 
{
	if(dp[i]>0) return dp[i];
	for(int j=0;j<n;j++)
	{
		if(G[i][j]!=inf)
		{
			int temp=G[i][j]+DP(j);
			if(temp>dp[i])
			{
				dp[i]=temp;
			}			
			//dp[i]=max(dp[i],DP(j)+G[i][j]);
		}
	}
	return dp[i];
}

2、记录最长路径的dp算法

int choice[maxn]; 
fill(choice,choice+maxn,-1);
int DP(int i)
{
	if(dp[i]>0) return dp[i];
	for(int j=0;j<n;j++)
	{
		if(G[i][j]!=inf)
		{
			int temp=DP(j)+G[i][j];
			if(temp>dp[i])
			{
				dp[i]=temp;
				choice[i]=j;
			}
		}
	}
	return dp[i];
}

//打印
//先求出最大的dp[i],然后将i作为参数传入 
void printPath(int i)
{
	printf("%d",i);
	while(choice[i]!=-1) 
	{
		i=choice[i];
		printf("->%d",i);
	}
}

3、固定终点的dp算法

int dp[maxn];
bool vis[maxn]={false};

fill(dp,dp+maxn,-inf);
dp[T]=0; 
int DP(int i)
{
	if(vis[i]) return dp[i];
	vis[i]=true;
	for(int j=0;j<n;j++)
	{
		if(G[i][j]!=inf)
		{
			dp[i]=max(dp[i],DP(j)+G[i][j]);
		}
	}
	return dp[i];
}

 

[动态规划] UVa437 巴比伦塔 (DAG的不确定起点终点的最长路) 题目 有n(n≤30)种立方体,每种都有无穷多个。要求选一些立方体摞成一根尽量高的柱子 (可以自行选择哪一条边作为高),使得每个立方体的底面长宽分别严格小于它下方立方体的底面长宽。 思路 DAG的不确定起点终点的最长路 1.状态及指标函数:d(i),在编号为i的立方体做塔的最底部,所能叠出的最高高度。(包括此立方体) 2.状态转移方程: d(i)=maxd(j)+i.h|(j,i)∈E... 阅读详情

相关推荐

动态规划求解有向无环图(DAG)的最长路径

有向无环图(DAG)是图论中的一个基础概念,它是由一组顶点和有方向的边组成的图形。在DAG中,每条边都指定了起点和终点,且不存在从一个顶点出发,经过若干条边之后能回到该顶点的路径。这种特性让DAG在许多算法和数据结构的设计中都发挥了关键作用,尤其是在涉及任务调度、数据流分析以及依赖关系描述等领域。在有向无环图DAG中,最长路径问题是指在图中找出一条从顶点A到顶点B的路径,使得路径上经过的所有边的权重之和最大。

weixin_31641077的博客 1165

算法导论 · 动态规划 · DAG最长路径

算法说明 先对图进行拓扑排序,再从入度的节点开始计算 dilg(v)=max(u,v)∈E{dilg(u)+w(u, v)} 源代码 #include <cstdio> #include <cstring> #include <vector> #include <queue> using namespace std; #define maxn ...

YDDUONG的博客 2521

算法实验:DAG图的最长路径

算法实验:计算DAG图最长路径并输出。

DAG(有向无环图)最长路——动态规划求解

文章目录1 问题描述1.1 求整个DAG的最长路径(即不固定起点和终点)1.2 固定终点,求DAG的最长路径2 求解问题12.1 求解最长路径长度2.2 求解最长路径2.2.1 路径序列的字典序3 求解问题23.1 求解最长路径长度3 应用3.1 实际例题 1 问题描述 1.1 求整个DAG的最长路径(即不固定起点和终点) 1.2 固定终点,求DAG的最长路径 2 求解问题1 2.1 求解最长路径...

韩江雪de 小屋 1万+

英飞凌功率MOSFET SPICE 瞬态仿真不收敛问题解决(基于TINA)

英飞凌功率MOSFET SPICE仿真容易出现不收敛问题,这个对于IGBT和SIC的管子应该是一样的,在瞬态仿真分析中,出现如下图所示的报错,Convergence problem。spice是为线性电路设计的,例如运算放大器、线性电源等,不是专门仿真开关电路的。在瞬态仿真时,仿真器是要不断迭代求解的,开关快速的跳变,容易在迭代式出现不收敛的问题。,由于时间步长减少,会消耗更多的计算机内存,如果运行多次内存消耗过大,会报“Out of memory”.解决方法是:报错工程,重启软件,内存重新计算。

miaoxiaokeji的博客 2300

Versal - 从零构建Petalinux 2024.2 AI边缘计算平台(VD100+SDT+JupyterLab实战)

本文详细介绍了如何从零开始,基于AMD Versal VD100开发板和Petalinux 2024.2构建AI边缘计算平台。内容涵盖开发环境搭建、Petalinux工程创建与配置、SDT新流程实战、启动SD卡制作,并最终集成JupyterLab与Conda,打造出开箱即用的交互式AI开发环境,帮助开发者快速进行算法验证与部署。

5f4d3s2a1q的博客 490

图论 —— DAG 图的最长路

【概述】 DAG 图的最长路问题是一个比较少见的问题,具体问题是:给出一个 DAG 图,寻找图中的最长路 在 AOE 网中,在找出关键路径后,对其进行 DFS 即可得到图的最长路,由于这种方法的实现过于繁琐,这里介绍几种较为简单的实现。 【最短路算法】 对于最短路算法,Floyd,Dijkstra、Bellman-Ford、SPFA 等,将其松弛操作进行修改,即可将最短路算法变为最长路算法...

Alex_McAvoy的博客 4601

【卫星语音通信】神经网络语音编解码算法:AudioDec

最新研究表明,通过深度学习模型对语音信号进行智能压缩与重建,可在12 kbps码率下实现48 kHz采样率的高保真语音还原,其主观音质评分(MOS)可达3.9分(满分4.27分),远超传统参数编码技术。这意味着未来卫星电话的通话质量有望达到CD级水准,而蜂窝网络的语音业务带宽需求可降低60%以上,为蜂窝和卫星网络中的大规模物联网语音交互铺平道路。它的诞生为神经音频编解码技术带来了一次重要升级,有助于让未来实时语音交互更流畅、更清晰,也让我们进一步体验到人工智能与音频信号处理结合所带来的创新可能性。

u011376987的博客 1473

DAG最长路

DAG DAG:就是有向无环图。 DAG中的最长路:就是关键路径 本节着重解决两个问题: 1.求整个DAG中的最长路径(即不固定起点或终点) 2.固定终点,求DAG的最长路径。 求整个DAG中的最长路径(即不固定起点或终点) 给定一个DAG,怎样求解整个图的所有路径中权值之和最大的那条 如图11-6所示,路径(B,D,F,I)就是该图的最长路径,长度为9。 如何定义状态 令 dp[i]表示从i号顶点出发能获得的最长路径长度 。这样所有 dp[i] 的最大值就是整个DAG的最长路径长度。 如何求解dp数组

qq_36314864的博客 1845

CentOS7 编译升级GCC至9.3.0

1)下载GCC9.2.0源码并解压 从GCC官方FTP下载地址可以看到GCC最新版本为9.3.0。由于官网下载速度慢,实际上用清华大学的镜像站进行下载,代码如下: wget -c /opt/tmp/ https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz #考虑到安装失败的可能性,创建一个临时文件夹来安装GCC...

haha123486的博客 1万+

单细胞分析避坑指南:SCTransform和Harmony参数设置详解

本文深入解析了单细胞分析中SCTransform标准化与Harmony批次校正的关键参数设置。针对10x Genomics等数据,详细探讨了如何通过调整`vars.to.regress`、`theta`等核心参数,在有效去除技术噪音的同时,避免过度校正以保留关键的生物学差异,从而提升分析结果的可靠性与可解释性。

weixin_29053073的博客 610

夕拾算法进阶篇:32)DAG最长路(动态规划DP)

之前介绍了DAG有向无环图以及拓扑排序,如何求解DAG的最长路,也就是所谓的“关键路径”,但求解关键的路径的做法对初学者来说实在不易。因此下面介绍一种简便的方法,来求解DAG最长路(最短路的思想是一致的)。 下面着重解决两个问题: (1)求整个DAG的最长路径(即不固定起点和终点) (2)固定终点,求DAG的最长路径 首先讨论第一个问题:给定一个有向无环图,怎样求解整个图的所有路径中权值之...

Javis486的专栏 1万+

光模块基础知识【快速入门】02

光模块是用于交换机与设备之间传输的载体,是光纤通信系统中的核心器件。主要作用是发射端将设备的电信号转换成光信号。 光纤通道光模块和以太网光模块 光纤通道光模块 光纤通道(FC, Fiber Channel)是一种高速网络数据传输协议。光纤通道协议可以有序无损地传输原始数据,它主要用于在数据中心、电脑服务器、交换机与存储网络中进行数据传输。 FC光模块遵循FC协议,充当着光纤通道系统之间的接口,也是光纤存储网络设备间的接口。它们主要用于数据中心的光纤通道存储网络链接中。 FC光模块具有小型化和低.

Jin Hanquan的博客 3万+

动态规划-DAG最长路

动态规划-DAG最长路 DAG就是有向无环图,并且在之前已经讨论了如何求解DAG中的最长路,也就是所谓的”关键路径“。但是求解关键路径的做法对初学者来说确实有些复杂,而DAG上的最长路或者最短路问题又是特别重要的一类问题,很多问题都可以转换成求解DAG上的最长或最短路径问题,因此有必要介绍一下更简便的方法,也就是使用本节介绍的方法。由于DAG最长路和最短路的思想是一致的,因此下面以最长路为例。 本...

肖睿的博客 2176

centos8 安装新版bind9源码

bind一直在更新,使用了比较多的新架构 本文记录新版本的bind怎么安装,以及其依赖库的安装 1. 在https://www.isc.org/download/ 下载最新stable版本bind,本文以bind-9.17.9.tar.xz为例。将软件传到/root目录下。 也可以到https://ftp.isc.org/isc/bind9/ 下载更多历史版本 2. 安装基本的依赖库,像gcc、amake等 3. 需要安装libuv库,但直接用yum时可能安装不全 建议使用源码安装,需要安..

linggang_123的博客 2539

泛微OA自定义post接口和路径(无侵入)

泛微OA自定义post接口和路径(无侵入)

技术分享 3873

动态规划四(DAG最长路)

DAG最长路问题DAG最长路求整个DAG的最长路径(即不固定起点和终点)固定终点,求DAG的最长路径 DAG最长路   在图的有关知识中已经了解了DAG就是有向无环图,其中计算最长路(关键路径)的做法非常复杂,这里介绍更简单的方法。 求整个DAG的最长路径(即不固定起点和终点) 固定终点,求DAG的最长路径。 求整个DAG的最长路径(即不固定起点和终点)   给定一个有向无环图,怎样求解整个图的所有路径中权值之和最大的那条。   令dp[i]表示从i号顶点出发能获得的最长路径长度,这样所有dp[i]的最

苣篛 871

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

DAG上的动态规划 | 动态规划转换成DAG上的最短路、最长路问题

文章目录DAG上的动态规划二元关系的问题转换成图上问题问题举例嵌套矩形完全背包——硬币问题不固定起点终点的最长路及字典序固定终点的最长路和最短路dp的几种写法输出字典序方法刷表法和填表法tips DAG上的动态规划 DAG图,即有向无环图。 紫薯上说:有向无环图上的动态规划是学习动态规划的基础。 因为有很多问题可以转换为求DAG上最短路、最长路或路径计数的问题。 问题要素分割: 种类\求的结果 最短路 最长路 路径计数 不固定起点终点 最短路问题 最长路问题 固定起点 不常见 完全背包

wdshhh的博客 864

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

DAG上的动态规划之不固定起点的最长路径

            DAG上的动态规划           —不固定起点的最长路径 例题:嵌套矩形问题: 问题描述:   有n个矩形,每个矩形可以用两个整数a,b来描述,a,b分别代表这个矩阵的长与宽。有两个矩阵A(a,b),B(c,d);当且仅当a<c且b<d 或者 a<且b<c时,A可以嵌套在B内。例如(3,4)可以嵌套在(4,5)内,也可以嵌套在(5,4)内。你的...

E2MCC的博客 414

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

动态规划——求DAG中最长路径

1.问题描述 给定一个有向无环加权图,求图中的最长路径。 该图中的最长距离为14,即2->4->6->2。 2.问题解决 首先我们要对有向无环加权图进行拓扑排序。拓扑排序的意思简要来说就是将图中顶点和边排成一个线性序列,对于<vi, vj>,经拓扑排序后一定满足vi在vj的前面。 拓扑排序的实现方法: 首先找出图中入度为0的点加入拓扑排序后的序列,例子中为S,接着将...

qq_44502283的博客 4896

DAG上的动态规划——最长路模型

DAG上的动态规划 嵌套矩形 紫书262 题意:有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。 分析:矩形间的“可嵌套”关系是一个典型的二元关系,二元关系可以用图来建模。如果矩形X可以嵌套在Y中,则就从X到Y连一条

Strezia的博客 301

DAG最长路(动态规划DP)

之前介绍了DAG有向无环图以及拓扑排序,如何求解DAG的最长路,也就是所谓的“”关键路径”,但求解关键的路径的做法对初学者来说实在不易。因此下面介绍一种简便的方法,来求解DAG最长路(最短路的思想是一致的)。 下面着重解决两个问题: (1)求整个DAG的最长路径(即不固定起点和终点) (2)固定终点,求DAG的最长路径 首先讨论第一个问题:给定一个有向无环图,怎样求解整个图的所有路径中权值之和最大...

qq_41437694的博客 1073

DAG上的动态规划——最长路CF4D Mysterious Present

CF4D Mysterious Present 用bool存储是否有边 题目链接 最长路例题 像这种DAG上的最短路 往往只需要记录是否存在边 故可以用bool节省空间,该题用bool就可以过 而用int就会MLE // Decline is inevitable // Romance will last forever #include <bits/stdc++.h> #define mst(a, x) memset(a, x, sizeof(a)) #define in..

Strezia的博客 166

嵌套矩形——DAG上的动态规划(最长路问题)

##DAG上的动态规划 嵌套矩形问题 Description: 有n个矩形,每个矩形可以用两个整数a、b描述,表示它的长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中,当且仅当 a&amp;lt;c,b&amp;lt;d,或者b&amp;lt;c,a&amp;lt;d(相当于把矩形旋转90°)。例如,(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)内。你的任务是选出尽可能多的矩形排成一行,使得除了最后一个之外,每一...

一个蒟蒻的博客 741

动态规划特训:矩阵嵌套问题(转化成DAG求最长路)

解题思路:可以把矩阵当作图上的一个点,如果某个矩阵可以被其他更大的矩阵覆盖,则可以从该矩阵连一条线至更大的矩阵,如此一来就变成了一张有向无环图,则元问题也可转换成求解该DAG最长的一条路径。此外题目还要求打印路径,因为已经求得所所有点作为终点路径的长度,所以只需以最长路径的终点递归,遍历与其直接相连的每一个点,如果遍历到的某一点(或某些)路径长度为该点长度-1,则将其放入记录的数组中,并继续递归求...

mavises的博客 394

UVA103动态规划之DAG上的最长路及其字典序

小白书上讲的很清楚,因为没有起点和终点,所以这题用记忆化搜索。 代码: #include #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long using namespace std; con

ONE_PIECE的专栏 791
上一篇: 最长回文子串
下一篇: 01背包【动态规划】
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值