问题二
求证:一个简单无向图是二分图的充分必要条件是图中不存在长度为奇数的回路。
证明
必要性
现在有一个二分图
G
G
,假设其存在一条长度为奇数的回路,不妨设长度,其回路节点依次为
v1,v2,v3,...,vk
v
1
,
v
2
,
v
3
,
.
.
.
,
v
k
,
(vi,vi+1)
(
v
i
,
v
i
+
1
)
存在一条边,
(vk,v1)
(
v
k
,
v
1
)
亦有边。
我们将该二分图的点集分为
(V1,V2)
(
V
1
,
V
2
)
显然,
v1
v
1
和
v2
v
2
不能同时在
V1
V
1
或者
V2
V
2
,因为他们之间有边相连。不难得出,
v1,v3,v5,...,vk′′,k′′≤k′
v
1
,
v
3
,
v
5
,
.
.
.
,
v
k
″
,
k
″
≤
k
′
在同一个点集,剩下的在另一个。这里可以得出,
v1
v
1
和
vk
v
k
必须在同一个点集,但他们之间又有边,根据二分图的性质,不能在同一个点集,矛盾。所以不存在奇数回路。必要性得证。
充分性
假设一个图只存在偶数回路,证明其必为一个二分图。下为证明。
显然,对于任意偶数回路
v1,v2,v3,...,vk,k=2∗k′
v
1
,
v
2
,
v
3
,
.
.
.
,
v
k
,
k
=
2
∗
k
′
,均可将其分为两个点集,使其成为一个二分图。
如果该图中所有偶数回路划分的点集均不冲突,则可以将该图分为两个点集,构成二分图。
假设存在两条路径
v1,v2,v3,...,vk,k=2∗k′
v
1
,
v
2
,
v
3
,
.
.
.
,
v
k
,
k
=
2
∗
k
′
,
w1,w2,w3,...,wk,k=2∗k′
w
1
,
w
2
,
w
3
,
.
.
.
,
w
k
,
k
=
2
∗
k
′
,其中存在
i,j
i
,
j
,使
wi′=vi,wj′=vj
w
i
′
=
v
i
,
w
j
′
=
v
j
,
vi,vj
v
i
,
v
j
在同一个点集而
wi′,wj′
w
i
′
,
w
j
′
不在同一个点集。
如果
vi,vj
v
i
,
v
j
在同一个点集,则
vi,vj
v
i
,
v
j
存在一条长度为偶数的通路。
如果
wi′,wj′
w
i
′
,
w
j
′
不在同一个点集,则
wi′,wj′
w
i
′
,
w
j
′
存在一条长度为奇数的通路。
若路径无重复,则可以得出
vi,vj
v
i
,
v
j
存在一条长度奇数的回路,矛盾。
若路径有重复,重复部分必然经过偶数次,删去后,对回路长度的奇偶性无影响吗,即仍然存在长度为奇数回路,矛盾。
充分性得证。
问题三
举例说明Dijkstra算法不适用于带负权的带权图。
假设计算1号节点到3号节点的最短路,标准的Dijkstra算法在第一步更新了3号节点就会终止程序(已经更新到了终点),得出最短路长度为2。但显然最短路长度为1。
Dijkstra的正确性证明,即贪心证明,是基于边权非负的,在这里就不阐述。