【分层图】分层图学习笔记
zky学长不止一次说分层图非常简单随便看看就会了
然后今天就拿出时间来学了学分层图(写这篇文章是不是会被骂傻叉算了反正我就是傻叉)
首先@出一篇论文
2004国家集训队《分层图思想及其在信息学竞赛中的应用》肖天
正文时间
————————————我是切割线>w<——————————————
裸的最短路和网络流题目大家都会,就算是须要把模型抽象分析一下才干得出也已经不算什么了
可是假设在最短路和网络流的基础上增加一些干扰操作呢?
比方我们能够进行一些操作让图中某些边的边权或者容量减半(beijingwc2012 冻结)而这些操作不是预先给出的是须要我们自己选择一些边进行减半的呢?
非常显然对于这种情况普通最短路和网络流是没有办法处理的。
所以须要用到分层图的思想。
所谓分层图,就是状态是多维的一个巨大的图,正常的最短路我们是在一个二维的图中进行的,而用到分层图的时候就须要在多维空间内进行。
通常情况下须要用到分层图思想的题目都有一些干扰操作(常见的就是能够将边权降低什么的)(P.S.前提是这些操作的数目不太大)。我们对这些干扰操作的解决方法就是把原图“复制”,并且一般来说干扰操作有多少次就要复制多少。
你没看错就是复制。
这时候有的人就会開始吐槽了:你要复制一个图,无论时间还是空间都存在巨大的花费,说不定光复制就炸了(╯‵□′)╯︵┻━┻并且假设再对每一个图做一遍最短路(网络流),早就炸掉了好吗(╯‵□′)╯︵┻━┻
图样图森破啊少年>_<
肖天在原文中的观点(我给提炼了一下)是:
每一层图都是由唯一的原图复制来的。因此这些不同层次的图就具有一些同样的性质。因此非常多时候所谓的复制事实上仅仅须要我们在逻辑上把图当成非常多层图来处理,分析出层的概念。根本不须要在程序里进行新图的存储。
并且这些不同层次的图有类似的性质。大部分时候我们的计算结果是类似或者同样的,因此仅仅要计算一次。存储结果,而不须要重复计算。因此不会导致问题的规模变大。
层之间是拓扑有序的。
这也就意味着在层之间能够非常easy实现递推等处理,为发现有效算法打下了良好的基础。
只是在实际中我发现。我们还是须要建新的图的(也许我没有理解肖天在原文中说不用对新层进行存储的意思?)
然而计算大概是(所以不要喷我仅仅是我认为是这种)确实应当仅仅有一遍,由于我们会在不同层次图的点之间连起新的边。
假设你不信的话,我能够给几个关于某道裸题的题解链接。
反正我是看过之后这么总结出来的。
。。
真的不正确的话请快快QQ喊我
Beijingwc2012 冻结
JLOI2011飞行路线
就是这样>w<