树上最长子链

本文介绍了一种使用树形动态规划(Tree DP)的方法来求解树的直径问题。通过定义状态D[x]为从节点x出发所能达到的最远距离,以及F[x]为经过节点x的最长链长度,利用递归方式更新这些状态,最终得到树的最大直径。

树形DP求树的直径

设D[x]表示从结点x出发,走向以x为根的子树,能够到达的最短距离,设x的子结点 y 1 , y 2 . . . y t y_1,y_2...y_t y1,y2...yt,则有
D [ x ] = m a x ( D i + e d g e ( x , y i ) ) i = 1 , 2 , . . . t D[x] = max ( D_i + edge(x, y_i) ) i = 1,2,...t D[x]=max(Di+edge(x,yi))i=1,2,...t
定义F[x]为经过x的最长链的长度,对于x的任意两个结点 y i , y j y_i,y_j yi,yj,F[x]由四部分构成,从 y i y_i yi y i y_i yi子树的最远距离,边 ( x , y i ) (x, y_i) (x,yi),边 ( x , y j ) (x, y_j) (x,yj) y j y_j yj y j y_j yj子树的最远距离。

code

void dp(int x)
{
    v[x] = 1;
    for(int i = head[x]; i; i = net[i])
    {
        int y = ver[i];
        if(v[y])
            continue;
        dp(y);
        ans = max(ans, d[x] + d[y] + edge[i]);
        d[x] = max(d[x], d[y] + edge[i]);
    }
}

例题

添加链接描述

说明

此处给出的是每个结点的权值,并不是每条边的权值,但是求法与求树的直径差不多

code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1E5+5;
vector<ll> vec[N];
ll n, a[N], dp[N], ans = -1E9;
void dfs(ll x, ll fa)
{
    dp[x] = a[x];
    for(ll i = 0; i < vec[x].size(); i++)
    {
        ll y = vec[x][i];
        if(y == fa)
            continue;
        dfs(y, x);
        ans = max(ans, dp[x] + dp[y]);
        dp[x] = max(dp[x], dp[y] + a[x]);
    }
    ans = max(ans, dp[x]);
}
int main()
{
    scanf("%lld", &n);
    for(ll i = 1; i <= n; i++)
        scanf("%lld", &a[i]);
    for(ll i = 1; i < n; i++)
    {
        ll u, v;
        scanf("%lld%lld", &u, &v);
        vec[u].push_back(v);
        vec[v].push_back(u);
    }
    dfs(1, 0);
    cout << ans << endl;
    return 0;
}


基于数据驱动的 Koopman 算的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制问题,并提供完整的Matlab代码实现。文章结合数据驱动方法与Koopman算理论,利用递归神经网络(RNN)对非线性系统进行建模与线性化处理,从而提升纳米级定位系统的精度与动态响应性能。该方法通过提取系统隐含动态特征,构建近似线性模型,便于后续模型预测控制(MPC)的设计与优化,适用于高精度自动化控制场景。文中还展示了相关实验验证与仿真结果,证明了该方法的有效性和先进性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事精密控制、智能制造、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原力显微镜、半导体制造设备)中的高性能控制设计;②为非线性系统建模与线性化提供一种结合深度学习与现代控制理论的新思路;③帮助读者掌握Koopman算、RNN建模与模型预测控制的综合应用。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现流程,重点关注数据预处理、RNN结构设计、Koopman观测矩阵构建及MPC控制器集成等关键环节,并可通过更换实际系统数据进行迁移验证,深化对方法泛化能力的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值