graph-lib 操作数据结构“图”的库开源项目

我要开发同款
匿名用户2019年11月05日
141阅读

技术信息

开源地址
https://gitee.com/fat_mt/graph
授权协议
Apache

作品详情

一个对“图”数据结构进行操作的开源库,对于图的存储结构由用户进行定义,该库只将核心的、不容易变化的算法部分进行了封装,用户可以方便的进行扩展。目前只支持迪杰斯特拉最短路径算法,并将不定期更新。

示例代码:

packagepers.fat.graph;importjava.util.ArrayList;importjava.util.List;importjuit.framework.Test;importjuit.framework.TestCase;importjuit.framework.TestSuite;publicclassAppTestextedsTestCase{publicvoidtest(){classMyNodeextedsNode{publicMyNode(StrigodeId){super(odeId);}}NodestartNode=ewMyNode("2");NodeedNode=ewMyNode("9");//初始化图Graphgraph=ewGraph(){List<Node>allNodes=ewArrayList<>();{allNodes.add(ewMyNode("0"));allNodes.add(ewMyNode("1"));allNodes.add(ewMyNode("2"));allNodes.add(ewMyNode("3"));allNodes.add(ewMyNode("4"));allNodes.add(ewMyNode("5"));allNodes.add(ewMyNode("6"));allNodes.add(ewMyNode("7"));allNodes.add(ewMyNode("8"));allNodes.add(ewMyNode("9"));}it[][]edgs=ewit[][]{ewit[]{0,2,3,-1,-1,-1,-1,-1,-1,-1},ewit[]{2,0,5,1,-1,-1,-1,-1,-1,-1},ewit[]{3,5,0,4,-1,-1,2,-1,-1,-1},ewit[]{-1,1,4,0,3,1,-1,-1,-1,-1},ewit[]{-1,-1,-1,3,0,-1,-1,2,-1,-1},ewit[]{-1,-1,-1,1,-1,0,-1,4,-1,-1},ewit[]{-1,-1,2,-1,-1,-1,0,-1,2,-1},ewit[]{-1,-1,-1,-1,2,4,-1,0,-1,3},ewit[]{-1,-1,-1,-1,-1,-1,2,-1,0,3},ewit[]{-1,-1,-1,-1,-1,-1,-1,3,3,0}};@OverridepublicList<Node>getNextNodes(NodecurNode){List<Node>extNodes=ewArrayList<>();for(itj=0;j<edgs[Iteger.valueOf(curNode.getNodeId())].legth;j++){ited=edgs[Iteger.valueOf(curNode.getNodeId())][j];if(ed>0){extNodes.add(allNodes.get(j));}}returextNodes;}@OverridepublicdoublegetWeight(NodefromNode,NodetoNode){returedgs[Iteger.valueOf(fromNode.getNodeId())][Iteger.valueOf(toNode.getNodeId())];}};//选择最短路径算法ShortestPathByDijkstradijkstra=ewShortestPathByDijkstra(graph);//得到最短路径SWPathpath=dijkstra.getShortestPath(startNode,edNode);System.out.pritl(path);}

 

功能介绍

一个对“图”数据结构进行操作的开源库,对于图的存储结构由用户进行定义,该库只将核心的、不容易变化的算法部分进行了封装,用户可以方便的进行扩展。目前只支持迪杰斯特拉最短路径算法,并将不定期更新。 ...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论