二中机房一败涂地(1.0)
这是一坨屎
有向图最小强连通生成树算法(机房大手子解决NPhard旅行商问题%%%)
你说的对,但是我问你个事,生成树怎么强连通啊……
大手的做法:对于一个有向图,我们 直接 对其进行 \(prim\) 算法,可以证明这个生成树一定不是最小强连通生成树
人类一败涂地:对于任意的根 \(x\) 我们把整个图按照层序遍历,如果这个玩意他是从低层序点到高层序点,则设为正向边,否则视为反向边,找到所有的环,如果他仅在单一环上或其并不为 分支节点/汇入节点/重要节点 时,则其可以直接缩环,若为以下三种特殊节点之一,则分类处理:
- 若为分支节点,则优先选择该节点所在通向边权和前\(k\)小的环中最短的一条路径
- 若为汇入节点,同上
- 若为重要节点,则优先选择该节点所在通向边权和前\(k\)小的环中最短的一条出边和该节点所在通向边权和前\(k\)小的环中最短的一条入边
- 然后对原图进行处理,如有边可进行环上优化,则将其优化并删去,如果被优化的边被再次优化,将其删去
然后重复对每个点按照层序处理进行此过程直到原图强连通
可以证明,这玩意生成出来的不一定是旅行商问题的最优解
分支节点:定义一个点为分支节点,当且仅当这个点处在多个环中且其有多条出边通向不同的节点
汇入节点:定义一个点为汇入节点,当且仅当这个点处在多个环中且其有多条入边从不同的节点汇入
重要节点:一个点既为汇入节点,又为分支节点时称其为重要节点
贪心背包/回退背包
分别为一位不认识的巨和我发明的
贪心背包:不知道,听起来很厉害的样子捏
回退背包:
对于一个背包,如果一个近似解 \(F_1(x)\) 于 \(y\) 点于正确解 \(F(x)\) 大于设定阈值,并且该近似解与正确解的差 \(\triangle t\) 在区间 \([a,b]\) 单调递增/减,则通过在 \([a,b]\) 区间内跑类暴力指数级复杂度近似解 \(F_2(x)\) 再与原近似解 \(F_1(x)\) 合并取优,然后这就是这个垃圾算法,但是如果在更新一个近似解 \(F_3(x)\) 使其时刻与原近似解 \(F_1(x)\) 取优,则能在玄学层面显著减少\(\sum size[a,b]\) 的大小

浙公网安备 33010602011771号