在这篇文章中,我将尽可能的去了解清楚什么是欧拉回路,以及如何用算法去实现它。
一.图
1、图的定义
图
是一个顶点集合V和一个顶点间关系的集合E组成,记G=(V,E)
V:顶点的有限非空集合。
E:顶点间关系的有限集合(边集)。
存在一个结点v,可能含有多个前驱节点和后继结点。
eg:
2、无向图和有向图
无向图
在G=(V,E)中,如果对于任意的结点a,b
∈
V,当(a,b)
∈
E时,必有(b,a)
∈
E(即关系R对称),此图称为无向图。
无向图中用不带箭头的边表示顶点的关系。
eg:
V={1,2,3,4,5}
E={(1,2),(1,3),(1,4),(2,3),(2,5),(3,5),(4,5)}
有向图
在G=(V,E)中,如果对于任意的结点a,b
∈
V,当(a,b)
∈
E时,(b,a)
∈
E未必成立,称此图为有向图。
有向图中通常用带箭头的边连接两个有关联的结点。
eg:
V={1,2,3,4,5}
E={<1,2>,<1,4>,<2,3>,<2,5>,<3,1>,<5,3>,<5,4>}
带权图
一般的图边上没有数字,边仅表示两个顶点间相连接关系。
eg:
图2
图中的边可以加上表示某种含义的数值,数值称为边的权。
eg:
3、顶点的度
在无向图中,顶点v的度是指与顶点v相连的边的数目D(v)。
eg:
图2中,D(