<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          graph-lib操作數(shù)據(jù)結(jié)構(gòu)“圖”的庫(kù)

          聯(lián)合創(chuàng)作 · 2023-09-28 10:51

          一個(gè)對(duì)“圖”數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的開源庫(kù),對(duì)于圖的存儲(chǔ)結(jié)構(gòu)由用戶進(jìn)行定義,該庫(kù)只將核心的、不容易變化的算法部分進(jìn)行了封裝,用戶可以方便的進(jìn)行擴(kuò)展。目前只支持迪杰斯特拉最短路徑算法,并將不定期更新。

          示例代碼:

          package pers.fat.graph;
          import java.util.ArrayList; import java.util.List;
          import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite;
          public class AppTest extends TestCase { public void test() { class MyNode extends Node {
          
          		public MyNode(String nodeId) {
          			super(nodeId);
          		}
          
          	}
          
          	Node startNode = new MyNode("2");
          	Node endNode = new MyNode("9");
          	// 初始化圖
          	Graph graph = new Graph() {
          
          		List<Node> allNodes = new ArrayList<>();
          		{
          			allNodes.add(new MyNode("0"));
          			allNodes.add(new MyNode("1"));
          			allNodes.add(new MyNode("2"));
          			allNodes.add(new MyNode("3"));
          			allNodes.add(new MyNode("4"));
          			allNodes.add(new MyNode("5"));
          			allNodes.add(new MyNode("6"));
          			allNodes.add(new MyNode("7"));
          			allNodes.add(new MyNode("8"));
          			allNodes.add(new MyNode("9"));
          
          		}
          
          		int[][] edgs = new int[][] {
          				new int[] { 0, 2, 3, -1, -1, -1, -1, -1, -1, -1 },
          				new int[] { 2, 0, 5, 1, -1, -1, -1, -1, -1, -1 },
          				new int[] { 3, 5, 0, 4, -1, -1, 2, -1, -1, -1 },
          				new int[] { -1, 1, 4, 0, 3, 1, -1, -1, -1, -1 },
          				new int[] { -1, -1, -1, 3, 0, -1, -1, 2, -1, -1 },
          				new int[] { -1, -1, -1, 1, -1, 0, -1, 4, -1, -1 },
          				new int[] { -1, -1, 2, -1, -1, -1, 0, -1, 2, -1 },
          				new int[] { -1, -1, -1, -1, 2, 4, -1, 0, -1, 3 },
          				new int[] { -1, -1, -1, -1, -1, -1, 2, -1, 0, 3 },
          				new int[] { -1, -1, -1, -1, -1, -1, -1, 3, 3, 0 } };
          
          		@Override
          		public List<Node> getNextNodes(Node curNode) {
          			List<Node> nextNodes = new ArrayList<>();
          			for (int j = 0; j < edgs[Integer.valueOf(curNode.getNodeId())].length; j++) {
          				int ed = edgs[Integer.valueOf(curNode.getNodeId())][j];
          				if (ed > 0) {
          					nextNodes.add(allNodes.get(j));
          				}
          			}
          			return nextNodes;
          		}
          
          		@Override
          		public double getWeight(Node fromNode, Node toNode) {
          			return edgs[Integer.valueOf(fromNode.getNodeId())][Integer
          					.valueOf(toNode.getNodeId())];
          		}
          
          	};
          	// 選擇最短路徑算法
          	ShortestPathByDijkstra dijkstra = new ShortestPathByDijkstra(graph);
          	// 得到最短路徑
          	SWPath path = dijkstra.getShortestPath(startNode, endNode);
          
          	System.out.println(path);
          }

           

          瀏覽 18
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品国产三级国产专区51 | 成人777777 | 欧美在线视频99 | 欧美成人操比 | 在线女人天堂网 |