zoukankan      html  css  js  c++  java
  • 图方法:寻找无向图联通子集的JAVA版本

    图像处理中一般使用稠密方法,即对图像进行像素集合进行处理。在图像拓扑方面,更多地应用图计算方法。

    寻找无向图联通子集的JAVA版本,代码:

    	//查找无向图的所有连通子集//wishchin!!!
    	public static ArrayList<Set<Integer>> findAllCons(Boolean adjM[][]) {
    		ArrayList<Set<Integer>> conSets = new ArrayList<Set<Integer>>();
    
    		Stack<Integer> tree = new Stack<Integer>();
    		Boolean[] isTra = new Boolean[adjM.length];
    		for (int i = 0; i < adjM.length; ++i) {
    			isTra[i] = (false);
    		}
    
    		// 遍历每一行
    		for (int i = 0; i < adjM.length;) {
    			if (isTra[i] == true) {
    				++i;
    				continue;
    			}
    			tree.push(i);
    			Set<Integer> sub = new HashSet<Integer>();
    			sub.add(i);
    			int j = tree.peek();
    			while (!tree.isEmpty() && isTra[j] == false) {
    				j = tree.pop();// 取出栈顶i
    				isTra[j] = true;
    
    				// 遍历每一个列
    				for (int k = 0; k < adjM[j].length; ++k) {
    					if (false == isTra[k]) {
    						if (adjM[j][k] == true && isTra[k] == false) {
    							tree.push(k);// 若K没有被遍历过,则压入栈
    							sub.add(k);
    						}
    					}
    				}
    				j = tree.peek();
    			}
    			++i;
    			conSets.add(sub);
    		}
    		return conSets;
    	}

    注意事项:

           在java中Set类是一个抽象类,不能直接实例化,必须实例化Set的一个子类,比如HashSet。


  • 相关阅读:
    (转)TweenMax动画库学习(三)
    (转)TweenMax动画库学习(二)
    (转)TweenMax动画库学习(一)
    深入剖析Java中的装箱与拆箱(转)
    Spring MVC 和 Spring 总结(转)
    react native for android(ajax)
    React Native HelloWorld
    C# JMAIL发送邮件
    C# 接收邮件
    Spring Mvc Mybatis(初次学习)
  • 原文地址:https://www.cnblogs.com/wishchin/p/9199906.html
Copyright © 2011-2022 走看看