最短路径的概念与基本数据结构
来源:互联网 发布:拓普康全站仪导出数据 编辑:程序博客网 时间:2024/06/06 17:30
概念
最短路径最直接的例子就是导航软件的,从一个地方到另一个地方的路径。要实现最短路径算法,一般使用一个加权有向图。即找到一个顶点到另一个顶点权重最小的有向路径。
基本的数据结构
带权有向图的数据结构和带权无向图差不多,只是添加边的时候不添加一条双向的边。
/** * 加权有向图 * @author yuli * */public class EdgeWeightedDiGraph { private final int v;//顶点数 private int e;//边数 private List<Edge>[] adj;//邻接表 @SuppressWarnings("unchecked") public EdgeWeightedDiGraph(int v,int e) { this.v = v; adj = new LinkedList[v]; for(int i=0;i<v;i++){ adj[i] = new LinkedList<Edge>(); } } @SuppressWarnings("unchecked") public EdgeWeightedDiGraph(File file) throws IOException{ FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); int vertex = Integer.parseInt(br.readLine());//读取顶点数 this.v = vertex;//读取顶点数 //创建有顶点数的邻接表 adj = new LinkedList[vertex]; for(int i=0;i<vertex;i++){ adj[i] = new LinkedList<>(); } int edge = Integer.parseInt(br.readLine());//读取边 for(int i=0;i<edge;i++){ //获取顶点对 String[] vertexs = br.readLine().split(" "); int v = Integer.parseInt(vertexs[0]); int m = Integer.parseInt(vertexs[1]); double weight = Double.parseDouble(vertexs[2]); //生成加权边 Edge e = new Edge(v, m, weight); //将顶点对添加成一条边 addEdge(e); } if(br!= null){ br.close(); } } /** * 获取边数 * @return */ public int getE() { return e; } /** * 获取顶点数 * @return */ public int getV() { return v; } /** * 添加一条有向边 * @param v * @param m * @param e */ private void addEdge(Edge e){ adj[e.getV()].add(e); this.e++; } /** * 获取邻接点 * @param v * @return */ public Iterable<Edge> adj(int v){ return adj[v]; } /** * 获取所有边 * @return */ public Iterable<Edge> edges(){ List<Edge> edges = new ArrayList<>(); for (List<Edge> list : adj) { edges.addAll(list); } return edges; }}
阅读全文
0 0
- 最短路径的概念与基本数据结构
- 最短路径之Dijkstra算法的概念与实现
- 【数据结构】最短路径
- 数据结构---最短路径
- 数据结构-最短路径
- 数据结构---->图的最短路径
- 数据结构 图 最短路径
- 数据结构之 最短路径
- 【数据结构】最短路径_Dijkstra
- 【数据结构】最短路径_Floyd
- 【数据结构】最短路径算法
- 数据结构--最短路径问题
- 【数据结构与算法】图之最短路径
- 数据结构与算法之最短路径--迪杰斯特拉算法
- 数据结构与算法——无权最短路径算法的C++实现
- 数据结构与算法——最短路径Dijkstra算法的C++实现
- 数据结构与算法——最短路径Dijkstra算法的C++实现
- 【数据结构与算法】 PROJECT 3 有向图的最短路径实现 之 知识点
- 浮点数定化--altera 乘除法ip使用FPGA学习笔记
- Opencv-滑动条的使用
- matlab 主成分分析函数(PC A)
- 【图像】HOG:从理论到Opencv实践
- hdu6197(最长上升子序列)
- 最短路径的概念与基本数据结构
- hdu 4586
- 归并排序和快速排序的衍生问题(逆序对)
- linux 远程工具
- 桥接模式
- 216. Combination Sum III
- PAT 1118. Birds in Forest (25) 并查集
- pww特征提取算法,图像领域新的技术革命
- hdu 2602 Bone Collector 01背包问题