耿老师教你学Java:图图学JGraphT开源框架第18回
创始人
2025-03-16 10:12:16

摘要:图图学JGraphT开源框架是教材《数据结构与算法》-java语言版(清华大学出版社-2024,耿祥义,张跃平)第13章《图论》的课外读物(共计19回25个实例),所以主要围绕教材的内容学习JGraphT开源框架,即学JGraphT开源框架最重要的部分,不是学习JGraphT开源框架的全部内容(JGraphT开源框架封装关于最短路径的算法类就有30多个)。掌握这里的这些内容,也可以让我们在实际项目更加容易地使用图论的算法,这也正是框架的目的。

图图学开源JGraphT开源框架目录如下

第1回《无向图和SimpleGraph 类》 第2回《Graph 接口》 第3回《无向图和BiconnectivityInspector 类》 第4回《有向图和SimpleDirectedGraph类》 第5回《有向图和GabowStrongConnectivityInspector类》 第6回《有向图与AllDirectedPaths类》 第7回《无向网络和SimpleWeightedGraph 类》 第8回《有向网络和SimpleDirectedWeightedGraph类》 第9回《深度优先搜索(DFS)和DepthFirstIterator类》 第10回《广度优先搜索(BFS)和BreadthFirstIterator类》 第11回《最短路径和FloydWarshallShortestPaths类》 第12回《最短路径和DijkstraShortestPath类》 第13回《最短路径和BFSShortestPath类》 第14回《第k短路径和EppsteinKShortestPath类》 第15回《最小生成树和PrimMinimumSpanningTree类》 第16回《拓扑排序和TopologicalOrderIterator类》 第17回《图着色与GreedyColoring类》 第18回《介数和Betweenness Centrality类》 第19回《最大流算法和EdmondsKarpMFImpl类》

这是

图图学开源JGraphT的第18回-《介数和Betweenness Centrality类》,这回学习的主要内容是:

  • 介数

  • Betweenness Centrality类

一、 介数

一个顶点的介数是该顶点在其他所有顶点对之间最短路径上出现的频率。如果一个顶点的介数很高,说明它在图的连通性中起到重要的桥梁作用。以下是JGraphT的解释:

Computes the betweenness centrality of each vertex of a graph. The betweenness centrality of a node v

vis given by the expression: g

(v)=

svt

σ

st

(v)

σ

st

g(v)=svtσst(v)σstwhere σ

st

σstis the total number of shortest paths from node s

sto node t

tand σ

st

(v)

σst(v)is the number of those paths that pass through v

v. F

二、Betweenness Centrality

BetweennessCentrality的实例可给出每个顶点vertex的介数。

BetweennessCentrality<String, DefaultEdge> betweennessCentrality = newBetweennessCentrality<>(graph); double count =betweennessCentrality.getVertexScore(vertex);;

三、代码与效果

将jgrapht-1.5.2.zip解压后的lib文件夹复制到C:\studyJGrapht,然后在命令行进入开发目录C:\studyJGrapht。(C:\studyJGrapht是作者使用的开发目录,您可以使用任何自己喜欢的开发目录或名称)。

例子18.1 顶点的介数效果如图18.1)

如下编译运行代码。

C:\studyJGrapht>javac -cplib\*;. Ex18_1.java C:\studyJGrapht>java -cplib\*;. Ex18_1

图18.1 顶点的介数

Ex18_1.java

importorg.jgrapht.Graph; importorg.jgrapht.alg.scoring.BetweennessCentrality; importorg.jgrapht.graph.DefaultEdge; importorg.jgrapht.graph.SimpleGraph; importjava.util.*; public classEx18_1{ public static void main(String[] args) { // 创建一个简单无向图 Graph graph = new SimpleGraph<>(DefaultEdge.class); String prince[] = {"山东","河南","江苏","安徽","湖南","江西","浙江","福建","广东","湖北"}; // 添加顶点 for(String vertex:prince){ graph.addVertex(vertex); } graph.addEdge("山东","河南"); graph.addEdge("山东","江苏"); graph.addEdge("山东","安徽"); graph.addEdge("河南","湖北"); graph.addEdge("河南","安徽"); graph.addEdge("江苏","安徽"); graph.addEdge("浙江","安徽"); graph.addEdge("江苏","浙江"); graph.addEdge("湖北","安徽"); graph.addEdge("湖北","江西"); graph.addEdge("湖北","湖南"); graph.addEdge("湖北","河南"); graph.addEdge("江西","湖南"); graph.addEdge("广东","湖南"); graph.addEdge("江西","安徽"); graph.addEdge("江西","广东"); graph.addEdge("江西","福建"); graph.addEdge("江西","浙江"); graph.addEdge("浙江","江苏"); graph.addEdge("浙江","福建"); graph.addEdge("广东","福建"); // 创建 BetweennessCentrality 实例 BetweennessCentrality betweennessCentrality = new BetweennessCentrality<>(graph); for(String vertex:graph.vertexSet){ String s= String.format("%.2f",betweennessCentrality.getVertexScore(vertex)); System.out.println("顶点 "+ vertex + " 的介数: "+s); } System.out.println("使用另外一个方法再输出一次:"); Map centralityMap = betweennessCentrality.getScores; for(Map.Entry entry : centralityMap.entrySet) { String vertex = entry.getKey; String s= String.format("%.2f",entry.getValue); System.out.println("顶点 "+ vertex + " 的介数: "+ s); } System.out.println("按介数排序:"); graph.vertexSet.stream .sorted((a,b)->(int)(betweennessCentrality.getVertexScore(a)*1000)-(int)(betweennessCentrality.getVertexScore(b)*1000)) .forEach(v->System.out.print(" "+v+":"+String.format("%.2f",betweennessCentrality.getVertexScore(v)))); }}
⚠️
本网站信息内容及素材来源于网络采集或用户发布,如涉及侵权,请及时联系我们,发送链接至2697952338@QQ.COM,我们将第一时间进行核实与删除处理。

相关内容

热门资讯

河南宸邦数据原始股募资是真的吗... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合!对于渴望通过炒股实...
河南宸邦数据技术/3元每股靠不... 本文专注大众投资风险警示教育,不针对任何企业、机构及个人,所有案例均为模拟情景推演,仅供反诈科普参考...
河南宸邦数据预计上市时间?河南... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合!随着互联网金融的蓬...
惊异』云南约牛证券可信吗? 该... 惊异』云南约牛证券可信吗? 该公司误导性宣传欺骗股民!误导性宣传 有法可依维权可退!投资有风险,投资...
法大大宸邦数据合同签署正规吗?... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。对于渴望通过炒股实...
河南宸邦数据启动ipo上市?河... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。在投资陷阱不断翻新...
海能投顾公司是正规的吗?误导夸...   海能证券投资顾问怎么样?虚假宣传欺诈消费者荐高位股!股民交费炒股真的很后悔!服务费可以退!
河南宸邦数据2026年目标价上... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。在投资陷阱不断翻新...
河南宸邦数据上市情况?河南宸邦... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。如今,很多股票直播...
河南宸邦数据完成上市闭环?河南... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。在各类股票直播间充...
河南宸邦数据上市进展?河南宸邦... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合!当“成为服务代理商...
必看!山东神光服务费退费流程?... 必看!山东神光服务费退费流程?误导性宣传诓骗投资者可依法退费!投资有风险,投资需谨慎!针对网上素未谋...
宸邦数据最新上市通知开户了吗?... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。 “原始股”三个字...
河南宸邦数据股权激励公告怎么样... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合!如今,很多股票直播...
河南宸邦数据上市审核已到成功什... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合!如今,很多股票直播...
河南宸邦数据上市审核已到成功什... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合!对于渴望通过炒股实...
河南宸邦数据向A股递交了IPO... 本文专注大众投资风险警示教育,不针对任何企业、机构及个人,所有案例均为模拟情景推演,仅供反诈科普参考...
惊异』广东博众智能科技夸大不实... 惊异』广东博众智能科技夸大不实宣传诱导消费者,股民分享真实退费经历!投资有风险,投资需谨慎!针对网上...
河南宸邦数据最新公告?上市时间... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合!随着互联网金融的蓬...
河南宸邦数据技术/3元每股靠不... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。对于渴望通过炒股实...
2026年宸邦数据公告上市?河... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。在投资陷阱不断翻新...
河南宸邦数据上市了吗?河南宸邦... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。在投资陷阱不断翻新...
未来之星计划秦峰老师河南宸邦原... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。如今,很多股票直播...
可怕!上海海能证券正规吗可靠吗... 可怕!上海海能证券正规吗可靠吗安全吗?不可靠,软件退费流程公开,39800已挽回!投资有风险,投资需...
河南宸邦数据技术有限公司直播间... 本文旨在进行投资风险教育,不针对任何特定企业。以下案例为拟情景,如有雷同纯属巧合。在各类股票直播间充...