图的深度、广度优先、最小生成树、最短路径算法(Java版本)
介绍 本文提供了图的邻接表、邻接矩阵的Java实现,包括深度优先算法、广度优先算法、prim算法和地杰斯特拉算法。 原理分析 输入图: 深度优先遍历: 广度优先遍历: 注意 :邻接矩阵和邻接表同样的输入遍历的结果可能会不完全一样,原因邻接表的构造并非将小编号的结点连接在靠前的位置,因此导致遍历结果和邻接矩阵不相同,但其在逻辑上仍然满足图的深度优先遍历。另外,最小生成树和最短路径当图中存在两条相同长度的路径时,其结果也不一定唯一。 算法描述 包结构: import java . util . List ; public interface Graph { public void dfsTraverse ( ) ; //深度优先遍历 public void bfsTraverse ( ) ; //广度优先遍历 public List < String > prim ( ) ; //prim算法 public List < String > dijistra ( int v1 , int v2 ) ; //地杰斯特拉算法 } import java . util . ArrayList ; import java . util . List ; import java . util . Scanner ; /** * 使用邻接表 */ public class AGraph