- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JUNG:Java平台网络/图应用开发的一种通用基础架构
编者按:众多需要处理多个对象间复杂关系的应用软件,例如网络管理、人际关系网络、思维脑图、地理导航以及多种游戏等,在本质上都是对“图”的计算;JUNG就是专为图(Graph)的计算和可视化提供的一个通用的可扩充的Java编程平台。本文深入浅出地以多个实例对JUNG编程做了较为详细的讲解。您可以在本刊网站下载本文全部的样例源码。
摘要:以循序渐进的实例说明在JUNG架构下进行网络/图编程的方法。
关键词:JUNG,Java,图,网络,树,数据结构
概述
JUNG(Java Universal Network/Graph framework)是一个Java开源项目,其目的在于为开发关于图或网络结构的应用程序提供一个易用、通用的基础架构。使用JUNG功能调用,可以方便的构造图或网络的数据结构,应用经典算法(如聚类、最短路径,最大流量等),编写和测试用户自己的算法,以及可视化的显示数据的网络图。本文使用尽可能简明的代码示范基于JUNG应用开发方法,希望对有开发复杂网络/图应用需求的编程人员有所帮助。
开发环境配置
本文使用MyEclipse7.5作为开发环境,文中的例子皆在JUNG2.0.1下调试通过。
JUNG包可以在SourceForge下载,其地址为:
HYPERLINK /projects/jung/files/ /projects/jung/files/
JUNG包中包含所有需要的jar文件,将其解压到一个目录中即可。
在MyEclipse中新建一个Java工程,并使用Configure Build Path菜单命令激活“Libraries”选项卡,然后使用“Add Extenal JARs”按钮将JUNG包中的Jar文件全部设为系统类库,这样在该工程中建立的Java程序就可以访问JUNG所提供的接口方法及数据了;本文中的程序均在该工程内编写。
创建图的数据结构
JUNG提供的最基本的图结构的接口是GraphV,E,其中V和E分别为顶点和边的数据类型。该接口提供创建图结构的基本方法,包括:
添加或者删除顶点和边;
获取所有顶点和边到集合类;
获取边和顶点的属性(如边的权重等);
JUNG支持一系列不同类型的图,以子接口的形式出现,例如:有向图DirectedGraphV,E,森林ForestV,E,树TreeV,E和无向图UndirectedGraphV,E等。
作为第一个简单例子,我们以实现Graph等接口的SparseGraph为例,来构造一个图。SparseGraph代表一个允许有向或无向边的稀疏图(如果你希望支持并行边,可以使用SparseMultigraph类),使用addVertex和addEdge方法可以方便地添加顶点和边;下面的CreateGraph.java代码构造一个包含三个顶点和两个边的一个图(顶点和边的数据类型我们都定义为字符串;当然你也可以使用任何其它的数据类型):
SparseMultigraphString, String g = new SparseMultigraphString, String();
g.addVertex(1);
g.addVertex(2);
g.addVertex(3);
g.addEdge(Edge-A, 1, 2);
g.addEdge(Edge-B, 2, 3);
System.out.println(The graph g = + g.toString());
该段代码运行的结果为:
The graph g = Vertices:3,2,1
Edges:Edge-B[2,3] Edge-A[1,2]
注意toString方法非常完整地显示出该图的所有信息。
如果要构造有向图,只需要在addEdge方法中包含edgeType参数即可,例如:
g.addEdge(Edge-C, 3, 2, EdgeType.DIRECTED);
添加一条从顶点“3”到顶点“2”的有向边。
图的可视化表现
图的可视化表现是JUNG最为吸引人的地方。JUNG可视化功能的基本组件是BasicVisualizationServer类(隶属edu.uci.ics.jung.visualization包),该类是Swing JPanel的一个子类,因此可以放置到任何一个Swing的容器对象中。
要构造一个BasicVisualizationServer类,首先需要了解JUNG中“布局(Layout)”的概念。一个Layout接口的实现,实际上就是要告诉JUNG如何来绘制图的顶点和边,即确定其在在图形界面上的坐标位置(x,y)。使用预定义的Layout实现(例如edu.uci.ics.jung
文档评论(0)