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







评论