本文主要解决以下几个问题:1.欧拉图能不能有割点,能不能有桥?2.哈密顿图能不能有割点,能不能有桥?首先我们要明白几个定义割点的定义就是在一个图G中,它本来是连通的,去掉一个点v以后这个图G就不连通了,那么点v就被叫做割点。桥的定义就是在一个图G中,它本来也是连通的,去掉一条边x以后这个图就不连通了,那么边x就被称为桥。欧拉图是拥有欧拉闭迹的图。所谓欧拉闭迹,包含两层概念:“闭”和“迹”。我们先来说什么是迹,所谓“迹”,就是用一笔可以从一个顶点出发,一直沿着边走,走到另一个顶点停止。在走的过程中,可以有重复的点,但是不能有重复的边。也就是说一个点可以经过两次以上,但是一个边只能走一次。 如图:
定义如果在一个图中,删除某个节点连同与之关联的边,会导致整个图的连通分支数增加,那么这个节点叫做割点(ArticulationPoint,CutVertex)如下图:整个图的连通分支数为1,但是删除节点3后,整个图就“分裂”成了2个连通分支:因此,节点3是整个图的割点。方法一个很容易想到的方法是,依次删除图中的每一个节点,看剩下部分的连通分支数增没增加。但是那样显然太浪费时间了!有没有一种办法,能够快速的找出整个图的割点呢?Tarjan算法的核心思想:深度优先遍历(DFS)这张图,得到的DFS树(由遍历路径和节点构成的树)中,当某个节点u满足以下条件之一时,它就是割点:u为DFS树的树根,且u
定义如果在一个图中,删除某个节点连同与之关联的边,会导致整个图的连通分支数增加,那么这个节点叫做割点(ArticulationPoint,CutVertex)如下图:整个图的连通分支数为1,但是删除节点3后,整个图就“分裂”成了2个连通分支:因此,节点3是整个图的割点。方法一个很容易想到的方法是,依次删除图中的每一个节点,看剩下部分的连通分支数增没增加。但是那样显然太浪费时间了!有没有一种办法,能够快速的找出整个图的割点呢?Tarjan算法的核心思想:深度优先遍历(DFS)这张图,得到的DFS树(由遍历路径和节点构成的树)中,当某个节点u满足以下条件之一时,它就是割点:u为DFS树的树根,且u