最短路径算法-Dijkstra算法

Dijkstra算法 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。 Dijkstra算法关注的问题 在无向图 G=(V,E) 中,假设每条 … 继续阅读

图论基础-图的遍历

图的遍历 图的遍历指的是从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。 图的遍历分两种,深度优先和广度优先。 深度优先 深度优先搜索法是树的先根遍历的推广,它的基本思想是:从图G的某个顶点v0出发,访问v0,然后选择一个与v0相邻且没被访问过的顶点vi访问,再从vi出发选择一个与vi相邻且未被访问的顶点vj进行访问,依次继续。如果当前被访问过的顶点的所有邻接顶点都已被访问,则退回到已 … 继续阅读

图的连通性判断-java实现

图的连通性判断 用Java实现了一个图的连通性判断,主要是用了广度优先遍历BFS来实现的。 算法思想 判断图是否是连通的,可以通过深度优先遍历的方法判断。 具体实现为:在图中选定任一一个顶点,对该顶点进行深度优先遍历,如果在这个遍历过程中所有的顶点都被遍历到,则该图为连通;反之,若存在没有被遍历到的顶点,则说明该图是非连通的。 public boolean isConnected() { int … 继续阅读

图论基础

图论的概述 图论(Graph Theory)是离散数学的一个分支,是一门研究图(Graph)的学问。 图是用来对对象之间的成对关系建模的数学结构,由”节点”或”顶点”(Vertex,复数为Vertices)以及连接这些顶点的”边”(Edge)组成。 图的顶点集合不能为空,但边的集合可以为空。 图的类型 图的分类:无权图和有权图 … 继续阅读