图算法之深度优先
2008-12-05 09:55
169 查看
/**
*
*/
package com.eshore.sweetop.mapbase;
import java.awt.Color;
/**
* Class DFSTest
* @author wudongdong
* DFSTest.java
* Dec 5, 2008
*/
public class DFSTest {
private static int time;
public static void DFS(Graphics g){
for (Vertex u : g) {
u.setColor(Color.WHITE);
u.setParent(null);
time=0;
}
for (Vertex u : g) {
if(u.getColor().equals(Color.WHITE)){
DFSVist(u);
}
}
}
private static void DFSVist(Vertex u) {
u.setColor(Color.GRAY);
time++;
u.setD(time);
for (Vertex v : u.getList()) {
if(v.getColor().equals(Color.WHITE)){
v.setParent(u);
DFSVist(v);
}
}
u.setColor(Color.BLACK);
time++;
u.setF(time);
}
public static void main(String[] args) {
Vertex s1 = new Vertex(1);
Vertex s2 = new Vertex(2);
Vertex s3 = new Vertex(3);
Vertex s4 = new Vertex(4);
Vertex s5 = new Vertex(5);
s1.getList().add(s2);
s1.getList().add(s5);
s2.getList().add(s1);
s2.getList().add(s3);
s2.getList().add(s4);
s2.getList().add(s5);
s3.getList().add(s2);
s3.getList().add(s4);
s4.getList().add(s2);
s4.getList().add(s5);
s4.getList().add(s3);
s5.getList().add(s4);
s5.getList().add(s1);
s5.getList().add(s2);
Graphics g = new Graphics(s1, s2, s3, s4, s5);
DFSTest.DFS(g);
}
}
*
*/
package com.eshore.sweetop.mapbase;
import java.awt.Color;
/**
* Class DFSTest
* @author wudongdong
* DFSTest.java
* Dec 5, 2008
*/
public class DFSTest {
private static int time;
public static void DFS(Graphics g){
for (Vertex u : g) {
u.setColor(Color.WHITE);
u.setParent(null);
time=0;
}
for (Vertex u : g) {
if(u.getColor().equals(Color.WHITE)){
DFSVist(u);
}
}
}
private static void DFSVist(Vertex u) {
u.setColor(Color.GRAY);
time++;
u.setD(time);
for (Vertex v : u.getList()) {
if(v.getColor().equals(Color.WHITE)){
v.setParent(u);
DFSVist(v);
}
}
u.setColor(Color.BLACK);
time++;
u.setF(time);
}
public static void main(String[] args) {
Vertex s1 = new Vertex(1);
Vertex s2 = new Vertex(2);
Vertex s3 = new Vertex(3);
Vertex s4 = new Vertex(4);
Vertex s5 = new Vertex(5);
s1.getList().add(s2);
s1.getList().add(s5);
s2.getList().add(s1);
s2.getList().add(s3);
s2.getList().add(s4);
s2.getList().add(s5);
s3.getList().add(s2);
s3.getList().add(s4);
s4.getList().add(s2);
s4.getList().add(s5);
s4.getList().add(s3);
s5.getList().add(s4);
s5.getList().add(s1);
s5.getList().add(s2);
Graphics g = new Graphics(s1, s2, s3, s4, s5);
DFSTest.DFS(g);
}
}
相关文章推荐
- 机试算法讲解: 第45题 深度优先搜索之寻找沙特石油存储区
- 树的广度深度优先遍历算法 DFS BFS
- 【算法导论】图的创建,深度优先访问,广度优先访问(递归/非递归)
- 对状态空间图搜索的几种算法比较(图)【深度、宽度、动态规划(均一代价)、最佳优先和A*算法】
- 78. Subsets 【LeetCode算法之旅之深度优先搜索】
- 深度优先搜索迷宫路径算法的实现
- 数据结构和算法之:图的深度优先和广度优先遍历及其Java实现
- 第17周 啊哈算法 图的遍历算法(深度优先)
- 算法笔记(5)图的广度优先遍历和深度优先遍历
- (百度笔试)简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 算法之深度优先搜索和广度优先搜索
- 图的基本算法——广度优先搜索和深度优先搜索
- 深度优先搜索1-寻路问题(算法基础 第6周)
- 深度优先搜索2-Shredding Company(算法基础 第7周)
- 于深度优先的回溯算法框架
- red and black 深度优先搜素(算法)
- 深度、广度优先遍历算法C实现
- 【算法学习】图相关算法编程实现-深度优先遍历和广度优先遍历
- python数据结构与算法——图的广度优先和深度优先的算法