- 浏览: 5819551 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
近由于项目需要,需要实现深度优先和广度优先算法,图论中的基础内容,源代码共享一下,希望对大家有用:
public class Graph { private final int MAX_VERT=500; private Node nodelist[]; private int adjMat[][]; private int nverts; private Stack theStack; private Queue theQuene; public Graph(){ //顶点数组 nodelist=new Node[MAX_VERT]; //邻接矩阵 adjMat = new int[MAX_VERT][MAX_VERT]; nverts=0; for(int i=0;i<MAX_VERT;i++){ for(int j=0;j<MAX_VERT;j++){ adjMat[i][j]=0; } } theStack=new Stack(); theQuene=new LinkedList(); sortedArray = new BusSiteBean[MAX_VERT]; } /** * 增加一定点 * @param node */ public void addNode(Node node){ nodelist[nverts++]=node; } /** * 增加一边 * @param start * @param end */ public void addEdge(int start,int end){ adjMat[start][end]=1; //有向图 //adjMat[end][start]=1; } public int getAdjUnVisited(int v){ for(int j=0;j<nverts;j++){ if(adjMat[v][j]==1&&nodelist[j].isWasVisited()==false){ return j; } } return -1; } /** * 深度优先搜索算法 */ public void dfs(){ nodelist[0].setWasVisited(true); displayNode(0); theStack.push(0); while(!theStack.isEmpty()){ int v=((Integer)theStack.peek()).intValue(); v=getAdjUnVisited(v); if(v==-1){ theStack.pop(); }else{ nodelist[v].setWasVisited(true); displayNode(v); theStack.push(v); } } for(int j=0;j<nverts;j++){ nodelist[j].setWasVisited(false); } } /** * 广度优先搜索算法 */ public void bfs(){ this.nodelist[0].setWasVisited(true); this.displayNode(0); this.theQuene.add(0); int v2; while(!this.theQuene.isEmpty()){ int v1=((Integer)this.theQuene.remove()).intValue(); while((v2=this.getAdjUnVisited(v1))!=-1){ this.nodelist[v2].setWasVisited(true); displayNode(v2); this.theQuene.add(v2); } } for(int j=0;j<nverts;j++){ nodelist[j].setWasVisited(false); } } private int noSuccessors(){ boolean isEdge; for(int row=0;row<this.nverts;row++){ isEdge=false; for(int col=0;col<this.nverts;col++){ if(adjMat[row][col]>0){ isEdge=true; break; } } if(!isEdge) return row; } return -1; } /** * 有向图拓扑 */ public void poto(){ int orig_nverts=this.nverts; while(this.nverts>0){ int currentNode=noSuccessors(); if(currentNode==-1){ System.out.println("Graph 有环"); return; } sortedArray[this.nverts-1]=nodelist[currentNode].getBs(); deleteNode(currentNode); } for(int j=0;j<orig_nverts;j++){ System.out.print(sortedArray[j]); } } private void deleteNode(int delVert){ if(delVert!=this.nverts-1){ for(int j=delVert;j<this.nverts-1;j++) this.nodelist[j]=this.nodelist[j+1]; for(int row=delVert;row<this.nverts-1;row++) moveRowUp(row,this.nverts); for(int col=delVert;col<this.nverts-1;col++) moveRowLeft(col,this.nverts-1); } this.nverts--; } private void moveRowUp(int row,int length){ for(int col=0;col<length;col++) adjMat[row][col]=adjMat[row+1][col]; } private void moveRowLeft(int col,int length){ for(int row=0;row<length;row++) adjMat[row][col]=adjMat[row][col+1]; } public void displayNode(int v){ System.out.println(nodelist[v].getBs().toString()); } public static void main(String[] args) { Graph g=new Graph(); g.addNode(new Node(new BusSiteBean("A"))); g.addNode(new Node(new BusSiteBean("B"))); g.addNode(new Node(new BusSiteBean("C"))); g.addNode(new Node(new BusSiteBean("D"))); g.addNode(new Node(new BusSiteBean("E"))); g.addNode(new Node(new BusSiteBean("F"))); g.addNode(new Node(new BusSiteBean("G"))); g.addNode(new Node(new BusSiteBean("H"))); g.addEdge(0, 3); g.addEdge(0, 4); g.addEdge(1, 4); g.addEdge(2, 5); g.addEdge(3, 6); g.addEdge(4, 6); g.addEdge(5, 7); g.addEdge(6, 7); g.poto(); } }
http://blog.csdn.net/java2000_net/archive/2008/05/01/2357485.aspx
发表评论
-
JDK中有关23个经典设计模式
2011-09-27 22:42 2038看原文吧,清楚些: http://www.iteye.com/ ... -
java生成jar压缩包并运行
2011-07-23 19:01 3109原帖: http://ankye1234.blog.163.c ... -
Android开发之Java集合类性能分析
2011-04-02 19:46 6970对于Android开发者来说深入了解Java的集合类很有必要主 ... -
一些Java经典算法
2010-09-10 16:38 2919package com.worthtech.app.uti ... -
java给图片加上水印
2010-07-02 14:08 1953package com.langhua.ImageUtil ... -
htmlparser API
2010-07-02 14:03 13118htmlparser所有的filter htmlpar ... -
使用dom4j的xPath解析XML
2010-06-30 15:04 21071books.xml: <?xml version=&qu ... -
UUID生成随机编号(适用于数字字母混编)
2010-03-10 16:35 7166UUID(Universally Unique Identif ... -
Java忽略大小写替换和提取字符信息
2009-12-01 09:27 46531. replaceAll 不区分大小写替换字符: Str ... -
java图片裁剪原理
2009-12-01 09:19 3403原文地址:http://blog.csdn.net/lql87 ... -
Java生成高品质缩略图
2009-12-01 09:14 3149import java.awt.image.Buffere ... -
FileReader读取中文txt文件编码丢失问题(乱码)
2009-11-19 16:06 25797有一个UTF-8编码的文本文件,用FileReader读取到一 ... -
实战java反射机制-让你迅速认识java强大的反射机制
2009-11-12 10:53 2074http://stephen830.iteye.com/blo ... -
利用jxl.jar读取EXCEL文件
2009-11-05 15:49 43861 从Excel文件读取数据表 ... -
Lucene整合"庖丁解牛"中文分词包
2009-10-26 15:03 2283版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声 ... -
lucene Analysis包分析
2009-10-26 13:39 3972算法和数据结构分析: 由于Analysis包比较简单,不详述 ... -
lucene学习笔记
2009-10-26 11:24 1706Lucene 其实很简单的,它最主要就是做两件事:建立索引和进 ... -
java实现截图和保存
2009-10-23 13:50 6022BufferedImage是个好类,和ImageIO和Grap ... -
java-Socket接受中文乱码的解决
2009-10-15 12:31 16252服务器发送一条数据如: BufferedReader in ... -
socket发送和接受数据
2009-10-14 14:13 2685import java.net.*; import ja ...
相关推荐
本资源“MATLAB源码集锦-基于BFS广度优先搜索算法代码”是专门为MATLAB用户提供的,旨在帮助他们理解和实现BFS算法。 BFS算法的基本思想是从起点开始,首先访问其所有邻居,然后访问这些邻居的邻居,以此类推,直到...
这个项目采用了一种名为广度优先搜索(BFS)的算法,这是一种在图论和计算机科学中广泛使用的搜索策略。接下来,我们将深入探讨广度优先搜索算法以及如何在三维空间中应用它来规划无人机的飞行路径。 首先,广度...
例如,通过图的遍历算法(如深度优先搜索或广度优先搜索)来模拟数据包的传播,找出网络中的瓶颈或潜在问题。 压缩包内的“路由算法”文件可能包含了不同路由算法的实现源代码,这为我们提供了学习和研究的机会。...
2. **遍历算法**:包括深度优先搜索(DFS)和广度优先搜索(BFS)。DFS用于寻找图中的路径,而BFS则常用于寻找最短路径或最小生成树问题。在MATLAB中,可以通过递归或队列实现这两种遍历。 3. **最短路径算法**:...
深度优先搜索是图论和树结构中的一种遍历策略,它深入探索树或图的分支,尽可能深地搜索树的分支,直到找到解决方案或者回溯到没有其他分支可走为止。 迷宫问题是一个经典的图论问题,通常可以用二维数组或者邻接...
5. 连通性检测:通过深度优先搜索(DFS)或广度优先搜索(BFS)来判断图是否连通,以及找出连通分量。 6. 桥与割点:桥是指删除后会导致图不连通的边,割点是删除后会增加连通分量数的顶点。识别桥和割点有助于理解...
7. 图的遍历:深度优先搜索(DFS)和广度优先搜索(BFS)是图遍历的两种基本策略,用于访问图的所有顶点。MATLAB中可以自定义函数实现这两种遍历方法。 通过学习并理解这些算法的MATLAB实现,不仅可以加深对图论的...
深度搜索(Depth First Search, DFS)和广度搜索(Breadth First Search, BFS)是图论和树形结构中常用的两种遍历算法,它们在计算机科学中有着广泛的应用,如解决路径查找、拓扑排序、最短路径等问题。本文将详细...
3. **搜索算法**:搜索算法包括顺序搜索、二分查找、深度优先搜索(DFS)、广度优先搜索(BFS)等。这些算法在解决查找问题时有重要作用,源码会展示它们的执行流程和优化技巧。 4. **图论算法**:图论在许多复杂...
在源码中,你可以找到各种经典算法的实现,包括但不限于排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等)、搜索算法(如二分查找、深度优先搜索、广度优先搜索等)、图论算法(如最短路径...
在MATLAB中,可以通过邻接矩阵或邻接表表示图,并利用深度优先搜索(DFS)或广度优先搜索(BFS)判断图是否连通。 3. **匹配问题**: 匹配问题关注的是在图中找到尽可能多的非相交边集,使得每条边的两端都未被其他边...
2. **图遍历算法**:图遍历是指遍历图中的所有节点,常见的有深度优先搜索(DFS)和广度优先搜索(BFS)。DFS适合寻找连通性,BFS则常用于找最短路径。这些算法在数据结构和算法中占有重要地位,可用于搜索、求解迷宫等...
C#算法类库涵盖了排序算法(如快速排序、归并排序、冒泡排序、插入排序)、搜索算法(如二分查找、广度优先搜索、深度优先搜索)、图论算法(如最短路径算法Dijkstra、拓扑排序)、动态规划、贪心算法等多种类型,...
4. **图论算法**:包括深度优先搜索(DFS)和广度优先搜索(BFS),以及Dijkstra算法、Floyd-Warshall算法等,用于解决网络、路由和最短路径问题。 5. **字符串处理**:C语言中的KMP算法用于字符串匹配,Trie树用于...
分支限界法通常采用广度优先搜索或深度优先搜索策略,并结合优先队列来控制搜索方向。 压缩包中的程序源码提供了实际的实现示例,可以帮助学习者深入理解上述算法的逻辑和运行过程。通过阅读和分析这些代码,学生...
深度优先搜索(Depth-First Search, DFS)是一种用于遍历或搜索树或图的算法,其基本思想是从起点开始,尽可能深地探索图的分支,直到达到叶子节点或回溯到一个未被访问的邻接节点。在Matlab中实现DFS可以帮助解决...
在压缩包中,可能包含了排序算法(如快速排序、归并排序、堆排序)、搜索算法(如二分查找、广度优先搜索、深度优先搜索)、数据结构(如链表、树、图、哈希表)的实现。学习这些算法,不仅可以提升我们的编程技能,...
其次,搜索算法也是必不可少的部分,比如二分查找、深度优先搜索(DFS)和广度优先搜索(BFS)。这些搜索算法在处理大量数据时能大大提高效率,例如在有序数组中查找特定元素,或者在图或树结构中遍历节点。 此外,...
图论算法也是源码包中可能包含的内容,例如深度优先搜索(DFS)和广度优先搜索(BFS)用于遍历图或树结构,Dijkstra算法和A*算法用于求解最短路径问题,Floyd-Warshall算法用于求解所有顶点对间的最短路径。...
图论部分可能涵盖深度优先搜索(DFS)和广度优先搜索(BFS),以及最小生成树(Prim或Kruskal算法)、最短路径(Dijkstra算法或Floyd-Warshall算法)等。这些算法在解决实际问题,如网络路由、社交网络分析等方面有...