如下纯粹我的观点,若有错误望指出算法
术语表:网络
图的应用:地图、计算机网络、电路、任务调度等;计算机网络
4种最重要的图模型:无向图(简单链接)、有向图(链接有方向性)、加权图(链接带有权值)和加权有向图(链接带有方向又带有权值)对象
无向图字符串
定义:图是由一组顶点和一组可以将两个顶点相连的边组成的class
度数:某个顶点的度数即为依附于它的边的总数数据类型
路径:在图中,路径是由边顺序链接的一系列顶点。方法
简单路径:简单路径是一条没有重复顶点的路径。地图
环:环是一条至少含有一条边且起点和终点相同的路径。链表
简单环:简单环是一条(除了起点和终点必须相同以外)不含有重复顶点和边的环。路径或者环的长度为其中所包含的边数。
连通图:若是从任意一个顶点都存在一条路径到达另外一个任意顶点,咱们称这幅图是连通图。一
幅非连通的图由若干连通的部分组成,它们都是其极大连通子图。
图的密度:图的密度是指已经链接的顶点对占全部可能被链接的顶点对的比例。
在稀疏图中,被链接的顶点
对不多;而在稠密图中,只有少部分顶点对之间没有边链接。通常来讲,若是一幅图中不一样的边的数
量只占顶点总数V 的一小部分,那么咱们就认为这幅图是稀疏的,不然则是稠密的
二分图:二分图是一种可以将全部结点分为两部分的图,其中图的每条边所链接的两个顶点都分别属于不
同的部分
一种表示图的数据类型的API 及其实现:
public class Graph 无向图结构定义
Graph(int V) 建立一个含有V个顶点但不包含边的无向图
Graph (In in)从标准输入流中读取一幅图
int V() 顶点数
int E() 边数
void addEdge(int v,int w)向图中增长一条边 v-w
Iterable<Integer> adj(int v) 和v相邻的全部顶点
String toString() 对象的字符串表示
图的表示方法:单链表
一些查找图和鉴别连通份量的经典算法: