zoukankan      html  css  js  c++  java
  • 回溯法---n-着色问题(3)

    回溯法---n-着色问题(3)
    以三色问题为例:

    对给定无向图着色,相邻点颜色不能相同,限用3种颜色

    在框架基础上的实现:

    import java. util.Vector ;

    public class ThreeColor extends CombineProblem {
        int[][] graph;
        int start ;

        public ThreeColor (int[][] graph, int start) {
             super();
             this.graph = graph;
             this.start = start;
             this.flag = false ;
             this.n = graph. length;
             this.x = new Integer[n];
        }

        @Override
        public Vector <Comparable> makeItem(int k) {
            Vector <Comparable> vec = new Vector<Comparable>();
             for ( int i = 1 ; i <= 3 ; i++) {
                vec .add( i);
             }
             return vec;
        }

        @Override
        public boolean complete (int k) {
             return k >= n;
        }

        @Override
        public void printSolution (int k) {
             for ( int i = 0 ; i < x.length; i ++) {
                System .out. print(x [i] + " ");
             }
            System .out. println();
        }

        @Override
        public boolean isPartial (int k) {
             for ( int i = 0 ; i < k; i++) {
                 if ( graph[k ][i] == 1 && x [k] == x[i ]) {
                     return false ;
                 }
             }
             return true ;
        }

    }

    主函数:

    public class Main {

        public static void main (String[] args) {

             int[][] graph = { { 0, 1 , 1 , 0 }, { 1, 0, 0, 1 }, { 1 , 0 , 0 , 1 },
                     { 0 , 1 , 1 , 0 } };

             Problem p = new ThreeColor(graph , 0 );
            
             p .explore(0);

             if (! p.flag) {
                System .out. println("no solution!" );
             }

        }

    }

    运行结果:

    1 2 2 1
    1 2 2 3
    1 2 3 1
    1 3 2 1
    1 3 3 1
    1 3 3 2
    2 1 1 2
    2 1 1 3
    2 1 3 2
    2 3 1 2
    2 3 3 1
    2 3 3 2
    3 1 1 2
    3 1 1 3
    3 1 2 3
    3 2 1 3
    3 2 2 1
    3 2 2 3 





  • 相关阅读:
    走进JavaWeb技术世界8:浅析Tomcat9请求处理流程与启动部署过程
    走进JavaWeb技术世界7:Tomcat和其他WEB容器的区别
    走进JavaWeb技术世界6:Tomcat5总体架构剖析
    走进JavaWeb技术世界5:初探Tomcat的HTTP请求过程
    走进JavaWeb技术世界4:Servlet 工作原理详解
    走进JavaWeb技术世界3:JDBC的进化与连接池技术
    [转]115个Java面试题和答案——终极列表(下)
    [转]115个Java面试题和答案——终极列表(上)
    [转]Spring MVC 4常用的那些注解
    [转]spring4.x注解概述
  • 原文地址:https://www.cnblogs.com/ZhangJinkun/p/4531361.html
Copyright © 2011-2022 走看看