图论部分概念整理
主要是看CLRS第二版的翻译附录B及第22章,话说CLRS真的很全面,描述又很严谨,虽然数学概念实在头疼。
因为最近总是把图的什么强连通分支之类的概念搞混,还是梳理一下比较好。
简单路径:有向图中一个点到另一个点的路径,路径上各顶点不重复
简单回路:同样的,有向图中一条回路v0,v1,v2,v3……vk,除v0=vk外v1……vk互不相同;无向图中,同样的,但k>=3
连通图:无向图中每对顶点都有路径相连,或者说只有一个连通分支
强连通图:有向图中每对顶点都有路径相连,或者说只有一个强连通分支
完全图:每对顶点都邻接的无向图
二分图:可以把点集划分为V1,V2,每条边(u,v)都有u属于V1,v属于V2
欧拉回路:有向强连通图中通过每条边仅一次,但可以访问一个顶点多次的一个回路
顺便把什么欧拉的什么一堆概念复习一下吧,从这里copy了一段:
定义:
欧拉通路 (欧拉迹):通过图中每条边且只通过一次,并且经过每一顶点的通路。
欧拉回路 (欧拉闭迹):通过图中每条边且只通过一次,并且经过每一顶点的回路。
欧拉图:存在欧拉回路的图。
简单说欧拉通路就是首尾不相接,而欧拉回路要求首尾相接。
无向图是否具有欧拉通路或回路的判定:
欧拉通路:图连通;图中只有2个度为奇数的节点(就是欧拉通路的2个端点)
欧拉回路:图连通;图中所有节点度均为偶数
有向图是否具有欧拉通路或回路的判定:
欧拉通路:图连通;除2个端点外其余节点入度=出度;1个端点入度比出度大1;一个端点入度比出度小1
欧拉回路:图连通;所有节点入度=出度
关于连通性判断,以前一直都是Floyed传递闭包的,网上找了一下,大概有那么几种:
最短路算法:如Floyed传递闭包,或者做一次最短路之后两点还是maxlongint
搜索:搜索到的标记一下,如果有没标记的点就是没连通的
并查集:无向图中,如果两个点没共同祖先就没连通了,或者看一共几个祖先判断连通块个数