`
lknh
  • 浏览: 25408 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

回溯法解决图的m着色问题

阅读更多
package guoxin;
//图的m着色问题
public class Zuose {

/**
* @param args
*/
public static void main(String[] args) {
int p[][]= new int[6][6];
p[1][2]=1;
p[1][3]=1;
p[2][1]=1;
p[2][3]=1;
p[2][4]=1;
p[2][5]=1;
p[3][2]=1;
p[3][1]=1;
p[3][5]=1;
p[4][2]=1;
p[4][5]=1;
p[5][4]=1;
p[5][3]=1;
graph(p,5,3);

}
/**
*
* @param p表示图中点之间的关系,p[i][j]=0表示点i与j之间没有连线,p[i][j]=1表示有连线,下表从1开始
* @param n图中顶点的个数,
* @param m//最多允许使用的颜色数
*/
private static void graph(int p[][],int n,int m){
int c[]=new int[n+1];
for(int i=0;i<=n;i++){
c[i]=0;
}
int k=1;
while(k>=1){
c[k]=c[k]+1;
while(c[k]<=m){
if(isPermit(p,c,k))break;
else{
c[k]+=1;
}
}
if(k==n&&c[k]<=m){
for(int i=1;i<=n;i++){
System.out.println(c[i]);

}
return;
}else if(c[k]<=m){
k=k+1;

}else{
c[k]=0;
k=k-1;
}
}
}
//判断对指定顶点着色后是否与前面已经着色的顶点放生冲突
private static boolean isPermit(int p[][],int c[],int k){
for(int i=1;i<k;i++){
if(p[i][k]==1&&c[i]==c[k])return false;
}
return true;
}


}

package guoxin;
//图的m着色问题
public class Zuose {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int p[][]= new int[6][6];
		p[1][2]=1;
		p[1][3]=1;
		p[2][1]=1;
		p[2][3]=1;
		p[2][4]=1;
		p[2][5]=1;
		p[3][2]=1;
		p[3][1]=1;
		p[3][5]=1;
		p[4][2]=1;
		p[4][5]=1;
		p[5][4]=1;
		p[5][3]=1;
		graph(p,5,3);

	}
	/**
	 * 
	 * @param p表示图中点之间的关系,p[i][j]=0表示点i与j之间没有连线,p[i][j]=1表示有连线,下表从1开始
	 * @param n图中顶点的个数,
	 * @param m//最多允许使用的颜色数
	 */
	private static void graph(int p[][],int n,int m){
		int c[]=new int[n+1];
		for(int i=0;i<=n;i++){
			c[i]=0;
		}
		int k=1;
		while(k>=1){
			c[k]=c[k]+1;
			while(c[k]<=m){
				if(isPermit(p,c,k))break;
				else{
					c[k]+=1;
				}
			}
			if(k==n&&c[k]<=m){
				for(int i=1;i<=n;i++){
					System.out.println(c[i]);
					
				}
				return;
			}else if(c[k]<=m){
				k=k+1;
				
			}else{
				c[k]=0;
				k=k-1;
			}
		}	
	}
	//判断对指定顶点着色后是否与前面已经着色的顶点放生冲突
	private static boolean isPermit(int p[][],int c[],int k){
		for(int i=1;i<k;i++){
			if(p[i][k]==1&&c[i]==c[k])return false;
		}
		return true;
	}
	

}

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics