第四周作业——无向图的DFS算法
来源:互联网 发布:sigma.js 示例 编辑:程序博客网 时间:2024/04/28 17:31
2.无向图的DFS算法:按照教材中的定义方式,完整实现图的DFS算法,给定图数据文件(tinyG.txt),能够输出DFS的节点遍历结果,及每个节点的Pre和Post值
package t4f1;import java.io.File;import java.io.FileInputStream;//import java.io.FileNotFoundException;//import java.io.FileOutputStream;//import java.io.IOException;import java.io.InputStreamReader;import java.io.Reader;public class GraphDFS {public static int V=0,E=0;public static void Graph(String fileName){File file = new File(fileName);Reader reader = null;try { reader = new InputStreamReader(new FileInputStream(file)); int tempchar; tempchar = reader.read(); while(tempchar!=10){ V=V*10+(tempchar-48); tempchar = reader.read(); }//读取v的值,遇到回车字符时结束 tempchar = reader.read();//读取下一个字符 while(tempchar!=10){ E=E*10+(tempchar-48); tempchar = reader.read(); }//读取v的值,遇到回车字符时结束 //************************* int arc[][]=new int[V][V]; int lin[]=new int[2*E]; for(int i=0;i<V;i++) for(int j=0;j<V;j++) arc[i][j]=0; //建立矩阵数组,同时初始化为0 int v1=0,v2=0,y=0,y2=0,t=0; while((tempchar = reader.read())!=-1) { if(tempchar>=48 && tempchar<=57) { y=y*10+(tempchar-48); y2=1; } if(tempchar<48 && y2==1)//当读取的字符不是数字且已读取一个顶点的值 { lin[t]=y;y=0;t++; } } reader.close(); for(int i=0;i<2*E;i++){ v1=lin[i]; i=i+1; v2=lin[i]; arc[v1][v2]=1; arc[v2][v1]=1; } graphDFS(arc);}catch (Exception e) { e.printStackTrace();}}//读取txt文件并生成对应的邻接矩阵public static int time=1,count=0;public static int S[]=new int[V];public static void graphDFS(int arc[][]){int visited[]=new int[V];int Pre[]=new int[V];int Post[]=new int[V];for(int i=0;i<V;i++){visited[i]=0;Pre[i]=0;Post[i]=0;}for(int v=0;v<V;v++){if(visited[v]==0) //如果v还未被访问,就执行DFS()算法 DFS(arc,visited,Pre,Post,v);}for(int i=0;i<V;i++) //输出顶点V与对应的pre值和post值System.out.println(" V= "+i+" pre: "+Pre[i]+" post: "+Post[i]);}public static void DFS(int arc[][],int visited[],int Pre[],int Post[],int v){visited[v]=1;Pre[v]=time; for(int w=0;w<V;w++){if(visited[w]==0 && arc[v][w]==1){time=time+1;DFS(arc,visited,Pre,Post,w);} } time=time+1;Post[v]=time;}public static void main(String[] agrs){Graph("G:\\tinyG.txt");}}
0 0
- 第四周算法概论作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法【改
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 计科《算法设计与分析》第四周作业——无向图的DFS算法
- 第四周__无向图的DFS算法
- 第四周作业--1图的表示,2无向图的DFS算法,3有向图找环;
- 第四周作业--1图的表示,2无向图的DFS算法,3有向图找环;
- 第四周作业——有向无环图的判断
- 第四周作业—图的表示
- 第四周作业—图的表示
- 第四周作业—图的表示
- 第四周作业—图的表示
- 一步步学习微软InfoPath2010和SP2010--第十三章节--SharePoint视图和仪表板(12)--关键点
- Android 服务(service)的生命周期以及利用bindservice调用服务里面的方法
- 《Boost标准库完全开发指南》第三章-内存管理
- c++中static几个含义
- 不安装python也正常运行编译python的程序
- 第四周作业——无向图的DFS算法
- android 单位解析 dp sp dip
- 第一章-Qt入门,1.1 Hello Qt
- 类似雷电这种小游戏背景无限地图的一种思路
- tiny4412 SD卡烧录命令
- 第二十八讲 : ADO.NET概述(OLEDB对象操作)
- 字符编码:ASCII,Unicode和UTF-8
- 或多个的观点郭德纲地方的的古典风格
- RQNOJ 25