4-18整理

2-sat问题:
设x1~xn为bool,给定m个逻辑表达式(形式为xi <逻辑运算> x2 = 值),求x1~xn的一组解,使得所有逻辑表达式成立:
做法:建立2n个点,分别表示点n的true点和false点。连一条边,当且仅当根据一个逻辑表达式能绝对确定xi=true(or false)时xj的取值,在xi的true/false和xj对应值的点中间连一条边,由xi到xj。
若一个点的值为np,则连一条-np->np的边。
若xi=p沿某一条路推导出xi=-p,则无解。
->若有的点的true和false解在一个强连通分量里,则无解。
无向图里的桥:删掉一条边使整个图不连通
割点:删掉一个点使整个图不连通
边双联通分量:找到一个子图,没有桥
点双联通分量:找到一个子图,没有割点
每一个桥都会连接两个边双联通分量
每个边只可能在一个双联通分量里,每个点有可能在多个双联通分量里。
匈牙利算法(二分图匹配问题):
当一个左边点p想与右边点q匹配,如果q已经被匹配,则尝试让p原来匹配的左边点r寻找一个新匹配点。如果r找到s1:{r->s,p->q},否则q会拒绝p的匹配请求。

最大独立集:选出最多的点,使每两个点之间都没有直接连接的边。
最大团:在图中选出一个最大完全子图。
一个图的最大团等于这个图的补图的最大独立集。(补图:有边的变成没边,没边的变成有边)

原文地址:https://www.cnblogs.com/jiangyuechen/p/12725969.html