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

我要开发同款
匿名用户2019年11月05日
36阅读
开发技术Java
所属分类程序开发、常用工具包
授权协议Apache

作品详情

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

示例代码:

packagepers.fat.graph;importjava.util.ArrayList;importjava.util.List;importjunit.framework.Test;importjunit.framework.TestCase;importjunit.framework.TestSuite;publicclassAppTestextendsTestCase{publicvoidtest(){classMyNodeextendsNode{publicMyNode(StringnodeId){super(nodeId);}}NodestartNode=newMyNode("2");NodeendNode=newMyNode("9");//初始化图Graphgraph=newGraph(){List<Node>allNodes=newArrayList<>();{allNodes.add(newMyNode("0"));allNodes.add(newMyNode("1"));allNodes.add(newMyNode("2"));allNodes.add(newMyNode("3"));allNodes.add(newMyNode("4"));allNodes.add(newMyNode("5"));allNodes.add(newMyNode("6"));allNodes.add(newMyNode("7"));allNodes.add(newMyNode("8"));allNodes.add(newMyNode("9"));}int[][]edgs=newint[][]{newint[]{0,2,3,-1,-1,-1,-1,-1,-1,-1},newint[]{2,0,5,1,-1,-1,-1,-1,-1,-1},newint[]{3,5,0,4,-1,-1,2,-1,-1,-1},newint[]{-1,1,4,0,3,1,-1,-1,-1,-1},newint[]{-1,-1,-1,3,0,-1,-1,2,-1,-1},newint[]{-1,-1,-1,1,-1,0,-1,4,-1,-1},newint[]{-1,-1,2,-1,-1,-1,0,-1,2,-1},newint[]{-1,-1,-1,-1,2,4,-1,0,-1,3},newint[]{-1,-1,-1,-1,-1,-1,2,-1,0,3},newint[]{-1,-1,-1,-1,-1,-1,-1,3,3,0}};@OverridepublicList<Node>getNextNodes(NodecurNode){List<Node>nextNodes=newArrayList<>();for(intj=0;j<edgs[Integer.valueOf(curNode.getNodeId())].length;j++){inted=edgs[Integer.valueOf(curNode.getNodeId())][j];if(ed>0){nextNodes.add(allNodes.get(j));}}returnnextNodes;}@OverridepublicdoublegetWeight(NodefromNode,NodetoNode){returnedgs[Integer.valueOf(fromNode.getNodeId())][Integer.valueOf(toNode.getNodeId())];}};//选择最短路径算法ShortestPathByDijkstradijkstra=newShortestPathByDijkstra(graph);//得到最短路径SWPathpath=dijkstra.getShortestPath(startNode,endNode);System.out.println(path);}

 

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

评论