最大独立集问题

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 .

辨析

信头布置的数学模型罕有的简略。,每一组都被以为是一体点。,以防两组做成某事数字势均力敌的,那时两组的点相衔接。极限的,它将诞生一体无向图。,we的各种的格形式执意索取刚过去的图的最大孤独集。索取一体图的最大孤独集执意求其补图的最堆积。

最堆积

在这一点上绍介一下最堆积

预先布置一体无向图g=(v),E),以防你属于E,任性地,v)属于U,同时它属于E,U是G的完整子图。 G的完整子图U是G的最堆积当且仅当U不容纳在G的更大的完整子图中,即U执意最大的完整子图。

如下图:

此图的最堆积有:

 

we的各种的格形式怎样才能找到一体算术?普通搜索将是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,we的各种的格形式有两个测量来证实u<=|V|-|M|和|U|>=|V|-|M|
1 先证实 |U|<=|V|-|M|
M做成某事两个航空站衔接起来。,各种的m金中都有一体点责怪U集。,因而M<=|V|-|U|
2 再次证实u>v v-μm
补助金(X),Y属于M
率先,we的各种的格形式确信必然的有一体Uü>=Ⅴ-ε。,这么,we的各种的格形式能把M集中做成某事航空站放到U中吗?
补助金在(A),x),(b,y),(a,B)不在场的EM搜集
以防(a),B)衔接,有绕过更大的竞赛。,发生矛盾
以防(a),B)断线,A->X-> Y-> B有一转新的加强路途,因而有一体更大的竞赛,发生矛盾
因而we的各种的格形式可以听说将M做成某事航空站世俗的到U中必定不熟练的衔接到无论哪一个点。,因而|U|>=|V|-|EM|+|M|=|V|-|M|
因而,|U|=|V|-|M|

两部图的最小顶峰重叠

下定义:

寻觅点集,故,图中无论哪一个边的至多一体航空站都状态该图中。。二分图的|最要点集|=|最大婚配|

证实:
本着下定义,执意最大婚配做成某事每个婚配的一体包装执意最要点集。
以防两个航空站不在场的但是,那最大婚配就会制定|M|+1,发生发生矛盾。这么最要点集<=|最大婚配|
we的各种的格形式如今只看最大婚配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;
                        }
                    }
                }
        }
    }
}

发表评论

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