- 浏览: 927069 次
- 性别:
- 来自: 宁波
文章分类
最新评论
-
masuweng:
不错!!!!!
自定义表单的设计与实现 -
xhackertxl:
注意将jstock cvs下来后去掉原先的J2SE 1.6li ...
开源项目推荐 — 股票分析软件JStock -
luoyexiaozhu:
最近在学表单这一块,没有思路,能发给我一份学习一下吗86239 ...
WEB项目中自定义表单的设计与实现 -
volunteer521:
楼主,以下的引用类没有对应的jar包,麻烦共享以下,谢谢!im ...
通用数据抽取系统 -
baichixiaozi:
体验下,谢谢分享
原创简化Web开发的框架 - JSPTagEx
最近由于项目需要,需要实现深度优先和广度优先算法,图论中的基础内容,源代码共享一下,希望对大家有用:
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(); } }
评论
3 楼
kongshanxuelin
2008-10-07
wuxuping 写道
你好 你是宁波的吗
是的
2 楼
wuxuping
2008-10-06
你好 你是宁波的吗
1 楼
Element&lina
2008-10-06
还不错,谢谢分享
发表评论
-
自定义表单的设计与实现
2017-06-13 17:46 8264制作调查表或企业内部系统的时候,经常被一系列表单弄得焦头烂 ... -
高性能高可用的服务端研究之Req-Rep模式(附源码)
2014-03-04 10:01 5556最近在思考高可用的 ... -
也说企业应用中的公式管理功能
2011-02-14 13:41 1331在我们日常开发企业应用或互联网应用中,往往会碰到公式的高级定义 ... -
大学时光的陈年旧作:代码收集软件
2009-08-26 13:37 2057记得读大学的时候,经常喜欢收集代码,今天翻看电脑,发现大学时做 ... -
好用的复选树源码改进版
2009-07-02 15:36 3370在我们项目开发过程中,复选树是经常用碰到的,在Ext,JQ等框 ... -
Apache 2.2.x+Tomcat6集群配置备忘
2009-07-01 10:35 2939在我们部署Web应用时,不可避免大多都会涉及到集群问题,此文作 ... -
校内应用API开发源码
2009-06-24 13:04 3494目前在51,校内,facebook开发小应用越来越热,这里我仅 ... -
网页划词自动翻译的实现
2009-06-15 13:01 1313其中机器翻译调用的Google API,将以下代码另存为即可看 ... -
抓取百度Top500歌曲以及地址源码
2009-05-31 11:11 3008在我整理完在线听歌(http://ting.faqee.com ... -
灰色模型预测算法源码
2008-12-09 08:50 2470在我们进行Web项目开发时,经常需要预测一些离散的数据,那么灰 ... -
AS 3.0语言的魅力(12月1日更新例子)
2008-11-28 09:11 1657以前一直用Java,由于某些Web场景的开发不得不用到Flas ... -
通用各类文档读写的设计与实现
2008-11-21 15:25 1504在我们日常的项目开发中,经常碰到需要读取word等文档的需求, ... -
Web上传文件在线压缩的实现
2008-10-16 08:23 2529在我们开发网站的过程中,如果用户上传的文件过大,由于考虑到服务 ... -
在Java调用VB编写的Dll文件
2008-10-15 08:56 5762在公司里,不同的系统使用不能的语言非常正常,我曾经在一个公司就 ... -
即时通信XMPP协议示例程序(可与QQ,MSN等互通)
2008-09-26 11:24 9161运行环境:JDK1.4+ 第三方包:Smack(Openfir ... -
使用Substance制作漂亮的swing皮肤(附源码)
2008-09-25 09:29 6561最近项目用swing开发桌面程序,感觉本身的swing界面实在 ... -
简易基于Ext留言板源码
2008-09-19 13:15 2702以前接私活的时候给医院做个网站,搞了个基于Ext的小论坛,但后 ... -
Java加密算法汇总
2008-09-19 09:46 1715Base64: package com.cxlh.mm; p ... -
网站全文检索的实现(基于lucene 2.0)
2008-09-18 13:46 2090辛辛苦苦做好了一个网站,接下来就必须为用户提供全文检索的功能, ... -
Google API代码
2008-09-18 08:57 1594<html> <head> ...
相关推荐
本资源“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算法)等。这些算法在解决实际问题,如网络路由、社交网络分析等方面有...