1、构建一个算法来判断给定图中的一条边是否为桥。
为了检查图 $ G $ 中的边 $ ab $ 是否为桥,我们在 $ G - ab $ 中搜索从 $ b $ 到 $ a $ 的路径。从 $ b $ 开始,筛选 $ b $ 的所有邻接点,然后是邻接点的邻接点,依此类推,但跳过已经遇到的点(由于我们尽可能靠近根节点 $ b $,这被称为 广度优先搜索 (BFS))。结果是以 $ b $ 为根的树,它覆盖了 $ G - ab $ 中其连通分量。如果 $ a $ 不在该树上,则 $ ab $ 是桥。
对于实际实现,我们可以构建一个待检查其邻接点的顶点队列。最初,对于所有 $ v \in V(G) $,定义 $ q_v = n := |G| $。将队列长度 $ \ell $ 设为 1,并令 $ q_b = 1 $,使得顶点 $ b $ 现在排在第一位。
然后,我们依次搜索 $ G - ab $ 中 $ b $ 的尚未访问过的邻接点 $ u $,即满足 $ q_u = n $ 的邻接点:
- 如果遇到 $ a $,我们停止:$ ab $ 不是桥。
- 否则,将 $ \ell $ 增加 1,并令 $ q_u = \ell $。
在扫描完 $ b $ 的所有邻接点后,将 $ \ell $ 减少 1,并对所有满足 $ q_u \in [n - 1] $ 的顶点重复此过程。接着重新开始搜索队列中第一个顶点 $ v $(即 $ q_v = 1 $)的邻接点,只要队列中还有顶点,即
$$
\ell = |{ u \in V(G) \mid q_u \in [n - 1] }| \neq 0
$$
循环继续。
2、判断K3,3是否为平面图。
K3,3不是平面图,根据库拉托夫斯基定理可知其非平面,不过它是可嵌入环面的,即它是环面图。

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



