ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于树形背包时间复杂度为什么会比想象中少一阶

2021-11-07 17:32:13  阅读:131  来源: 互联网

标签:子树 limits 复杂度 节点 树形 中少 背包 sum


思路来自 Konata,有删改及本作者的想法

如果正常想,每个节点都要进行 \(O(n^2)\) 的背包,则时间复杂度为 \(O(n^3)\),其实不然。

假设 \(n\) 个节点的树形背包的时间复杂度为 \(f(n)\)。

那么假设根节点下面的子树大小分别为 \(p_1,p_2,\dots,p_k\),子树大小 \(p_i\) 对应的子树根节点下面的子树大小分别为 \(g_{i,1},g_{i,2},\dots,g_{i,s_i}\)。

\[\begin{aligned}f(n) &=\sum\limits^k_{i=1}f(p_i)+\sum\limits^k_{i=2}\left(p_i\times\sum\limits^{i-1}_{j=1}p_j\right) \\ & = \sum\limits^k_{i=1}f(p_i)+\sum\limits_{1\leqslant i<j\leqslant k}p_i\times p_j \\ & = \sum\limits^k_{i=1}f(p_i)+\dfrac{\left(\sum\limits^k_{i=1}p_i\right)^2-\sum\limits^k_{i=1}p_i^2}{2} \\ & = \dfrac{1}{2}(n-1)^2+\sum\limits^k_{i=1}f(p_i)-\dfrac{1}{2}\sum\limits^k_{i=1}p_i^2 \\ & \leqslant \dfrac{1}{2}n^2+\sum\limits^k_{i=1}(f(p_i)-\dfrac{1}{2}p_i^2) \\ & = \dfrac{1}{2}n^2+\sum\limits^k_{i=1}(\dfrac{1}{2}(p_i-1)^2+\sum\limits^{s_i}_{j=1}(f(g_{i,j})-\dfrac{1}{2}g_{i,j}^2)-\dfrac{1}{2}p_i^2) \\ & \leqslant \dfrac{1}{2}n^2+\sum\limits^k_{i=1}\sum\limits^{s_i}_{j=1}(f(g_{i,j})-\dfrac{1}{2}g_{i,j}^2) \\ & \leqslant \dfrac{1}{2}n^2+\sum\sum\dots\sum(f(\dots)-\dfrac{1}{2}(\dots)^2) \\ & \leqslant \dots \\ & \leqslant \dfrac{1}{2}n^2 \\ & =O(n^2) \end{aligned}\]

特殊得,如果背包的容量上限为 \(V\),则总时间复杂度为 \(O(nV)\)。

标签:子树,limits,复杂度,节点,树形,中少,背包,sum
来源: https://www.cnblogs.com/zhangshaojia/p/15520224.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有