最大独立集问题

By sayhello 2018年8月5日

Given N sets of integers, remove some sets so that the remaining all sets are disjoint with one 另东西。 Find the optimal solution so that the number of sets remaining at the end is 最大值。 please explain your algorithm properly rather than pasting code .

剖析

题名建筑物的数学模型异乎寻常的复杂。,每一组都被以为是东西点。,是否两组正中鹄的数字一样,以后两组的点侧面衔接。最不可能的,它将方式东西无向图。,我们的执意规定这事图的最大孤独集。规定东西图的最大孤独集执意求其补图的最聚集。

最聚集

喂绍介一下最聚集

预先决定东西无向图g=(v),E),是否你属于E,任性地,v)属于U,同时它属于E,U是G的完整子图。 G的完整子图U是G的最聚集当且仅当U不包括在G的更大的完整子图中,即U执意最大的完整子图。

如下图:

此图的最聚集有:

 

我们的怎样才能找到东西身材?普通搜索将是N*2 ^ n的时期复杂的事物。,因而你必要修剪,记载稍许地环境,DP DFS的思惟。先写法典。

#define SIZE 102
int 垫子[陆续镜头] [次元]  /*图矩阵*/
int 次元[次元]
int mx;
int 堆栈[浆糊] [浆糊]
void 国际标准化组织 N,int num,int 搬动)

    if(num==0){
        是否(搬动) > MX)
            mx=step;
        }
        return ;
    }

    为(int) i=0;i=0;i--){
        int sz =0;
        为(int) j=i+1;j

上面复杂地说一下思绪(装满下标是从0开端的):
dp[i]表现从i到n-1正中鹄的最聚集的装满数。
列举每个装满,看一眼这事装满,多少数字大于它的装满。,记载这些装满,以后递归式地处置装满。。。。
若何修剪?
是否X装满变为组环境,K装满的处置,判别
x+n-k <= mx

x+dp[k] <= mx
两个期限。只要求东西设置,何苦持续向前走。。

最大孤独集

最大孤独集执意其补图的最聚集
poj1419是东西很一直的求最大孤独集的成绩,你可以试着去做

二分图的最大孤独集

图是东西二分图,这么它的最大孤独集执意同次多项式时期可以处理的成绩了 |最大孤独集| = |V|-|最大婚配数|
证明是:
设最大孤独一集为U,最大婚配数为M,M使分裂相同的顶峰集中是EM。。
证明是u=v v-m m,我们的有两个搬动来证明是u<=|V|-|M|和|U|>=|V|-|M|
1 先证明是 |U|<=|V|-|M|
M正中鹄的两个晚期的衔接起来。,一切m金中都有东西点变动从而发生断层U集。,因而M<=|V|-|U|
2 再次证明是u>v v-μm
推测(X),Y属于M
率先,我们的意识到必然的有东西Uü>=Ⅴ-ε。,这么,我们的能把M集中正中鹄的晚期的放到U中吗?
推测在(A),x),(b,y),(a,B)不在场的EM搜集
是否(a),B)衔接,有附近更大的竞赛。,驳斥
是否(a),B)断线,A->X-> Y-> B有一新的扶助向上移动途径,因而有东西更大的竞赛,驳斥
因而我们的可以懂得将M正中鹄的晚期的积蓄到U中必定无能力的衔接到少许点。,因而|U|>=|V|-|EM|+|M|=|V|-|M|
因而,|U|=|V|-|M|

两部图的最小顶峰使分裂相同

界说:

找寻点集,如此,图中少许边的至多东西晚期的都就座该图中。。二分图的|最指向集|=|最大婚配|

证明是:
本着界说,执意最大婚配正中鹄的每个婚配的东西装满执意最指向集。
是否两个晚期的不在场的同时,那最大婚配就会减少|M|+1,发生驳斥。因而又|最指向集|<=|最大婚配|
我们的现时只看最大婚配M,是否最指向集决不m,因而必然的有东西不克不及沾手的掷还,如此|最指向集|>=|最大婚配|
因而有|最指向集|=|最大婚配|
朝一个方向的普通图,NP 装腔作势的人,朝一个方向的两部图,它可以是同次多项式可解的。

最小条理使分裂相同

界说:

东西有向有向非循环图,必要用最小的不切成的复杂条理使分裂相同一切装满。。

构图:

创立二分图,将原始绘制地图正中鹄的一切装满划分为两个使分裂(x集中为i),y集中是i′,是否原始图中有I ->j的有向边,在两部图中,I->J的有向边是找到的。。终极最小条理使分裂相同度=ⅤⅤ-μm

证明是:

上图中,对应左边的的DAG安排了正确的的二分图,可以找到二分图的东西最大婚配M:1->3'' 3->4'',这么M的这两个婚配边若何对应于条理正中鹄的边?
两使分裂图的边对应于DAG正中鹄的有向边。:1 -3'对应于左图正中鹄的1~3。,以这种方式,DAG的1具有顺序装满(3 Ma的不平常的后续装满)。,由于两个图的东西顶峰与东西边相互关系。!),因而1无能力的变为DAG途径的起点。,同一,3 -4'对应于左图正中鹄的3~4。,3无能力的是完毕的起点,如此,原始图中有4个顶峰。,负2个陆续顶峰,静止的两个顶峰,DAG条理的晚期的,每个顶峰对应于东西条理。。二分图中找寻最大婚配M,执意找到了对应DAG正中鹄的非条理死顶峰的最大数量,DAG是DAG最小的起点。,DAG的最小条理数。
接下来,汇编东西两点婚配图。递归式方式的法典:

#define SIZE 100

int 垫子[陆续镜头] [次元]  /*图矩阵*/

int match1[SIZE];
int 婚配[次元]

int 色[次元]

bool 国际标准化组织 N,int u){
    为(int) i=0;i

再写东西二分图最大婚配的非递归式方式

#define SIZE 100

int 垫子[陆续镜头] [次元] /*图矩阵*/

int match1[SIZE];
int 婚配[次元]

int 队列[浆糊]
int head,tail;

int 预[次元]

int maxMatch(int N){
    int ret = 0;
    memset(match1,-1,sizeof(match1));
    memset(match2,-1,sizeof(match2));

    为(int) i=0;i=0;j=t){
                            MatCH2[j]=k=PR[ J ]
                            t=match1[k];
                            match1[k]=j;
                        }
                    }
                }
        }
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注