证明桥的定义在DFS中的正确性

定义:在给定的遍历树中的TE边uv(u是v的父节点),uv是桥,当且仅当以v为根的所有遍历树子树中没有BE指向v的祖先(不包括v,包括u)。

【证明】

        首先证明如果uv是桥则以v为根的所有遍历树子树中没有BE指向v的祖先。

        假设uv是桥,即如果将uv删除,遍历树将被分成两个或多个连通分量,如果以v为根的多有遍历子树中存在一条BE边指向v的祖先,那么删掉uv之后遍历树不会被分成多个连通分量,这条BE边会连接两个或多个连通分量,这与uv是桥矛盾。所以,uv是桥,以v为根的所有遍历树子树中没有BE指向v的祖先。

        然后证明如果以v为根的所有遍历树子树中没有BE指向v的祖先则uv是桥。

        假设以v为根的多有遍历子树中没有BE指向v的祖先但uv不是桥。这意味着删除uv之后遍历树仍然是联通的,也就是说存在一条由u到v的路。由于uv不是桥,那么存在另一条边xy(x是y的父节点),连接了u的某个祖先和v的某个祖先。考虑xy是这条路上的最后一个边,由于x是y的父节点,所以xy是TE边。但是由于以v为根的所有遍历树子树中没有BE指向v的祖先,所以xy不能指向v的祖先,这与xy连接了v的某个祖先和u的某个祖先相矛盾。所以,如果以v为跟的所有遍历自述中没有BE指向v的祖先则uv是桥。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值