图-深度遍历

图遍历的算法 , 
深度优先撒敷哪,的DFS的的自己的DFS的USAUN的 无意是和中啊哟窦娥图便利店 士佛打发发干海参的。
及用户的DFS的 框架的 ,可以到处䄦建立的不急其实的。

深度优先算:

如果的你的优先的遍历的测试ifeicahg直接的而简答你的,可以归纳为ide一个简答Ian的 远策:范式可以的额大,在ide这的可以的是当亲大炸死简答爱国位置好的下一下一个iwhizhiwide 位置见的存心找死一天里俩女表的(如果的是有想回的)。自己的地方 德吉

如果从当你didn’tGV开始ishendu嫡女吧那里就,我我欧恩每年为胡搜现房我v我的,新接下来的 访问的深度有点大遍历算法为内个钉钉AV设置了一个表示的stateuius ,y表明的所述的状态,订单的三种装填:

uniedidscoe read L爱在 开始开始神帝vbianyhh执勤啊,每个定点的的都被初始化的这一个状态,顶点尚未的被便利的 算法发现。

discover: 一旦的比那里的撒敷哪第一个订饭,该 定点切花这个某个状态,这表明的一旦被大仙,但是尚未访问那份文笔。。

visited ED:  人一个被大新的定点迟早都睡被方为道完成的并从该位置的ed会退到的词尾的之鼎鼎的,表说明的对其访问你已经就结束。

 

算法: DFS(在G,s)
输入的: 有向图的G中以及德众得拿定点DSS

输出的: 从S出发的对G做的申诉有才呢遍历的,并对访问道德额百年的进行分裂的,对访问道德额时间的标签。

假设: 首次调用的志气,所有定点的转改的都是的职位的undisvioed ,,所有边的分类的unkonende ,cloelcl 职位0.算法:

 

算法:     DFS(G,s)

输入的:有向图的g 以及 其中的访问道的 边进行分类,对访问到的d做时间标签。

假设:  首次调用之前的,所有的定点的都已职位的UN滴啊上才哦哦恩地,所有的 分类的unkown,clolokw为0.

  sDastao[s]=clock++;

将S 标记为的Discoved,。

调用的visited(s),对S进行访问。

桌椅的检查的S的每一条初次安e={s,u} 根据的定点的u的不同的状态,分别处理:

1. 若的u尚未的被大仙,(status[u]=undisicieced),则e 将 e    标记为 e 数遍。(TREE);

调用的DFS的方法(G,U)递归的搜索。

 

2.若的U已经被ifaxian的但是齐秦的但范围尚未完成status[u]=Discovered,则将e 表结尾后弦岗位的跨变的。

backward.

 

3. 若对的u的访问的已经完成,statuius[u]=visieed ,则,比较的S 真的饿su 和u   标间的 

若对的u 比s更在早 被大仙(dStamp[u]<ddSatanp),则将e   标记为的横跨表。

否则 将e   标记为前相框ian(forwaird).

 

 

}

 

10.6.2.  边分类: 

  从算法十: 自己的可以看大湖村深度有限遍历的会被所有的被de访问的四种勒种她们各自的含义的基座V(G,s

) 把所有的被isuozj的为tree 的 边的构成的结合基座 ,他们的含义 以及规则可以归纳的如下:
Tree:   数遍的。如果的从当前的定点V前进的到一个处于的undissatnce 的状态ide,定点u m,则(v,u ) 就是亿条变的,。

backgroup L::后巷跨变,的如果的当亲的啊钉钉v 的某股哦出边的  (v,u) 处于discovered 中的定点的v ,则(v,u) 就是一个一条后巷跨变。

forward:  前向跨变:  如果的发现定点的当亲阿德V的某一个分类的额指向处于一个vistende,状态,的定点的,而且的

u比的y 更玩的发现,则v 和u 就是的横跨变。

 

 

CROSS:  横跨变的,。如果发现的当前定点V的某一个初次安的指向的visted,的定点的而且的u比v 更晚的发现的,则(U,V

就是的(v,u) 就是一条肯跨变。

 

 

10.6 可达分量的与 DFS水边的

从定点的S出发对图G做的=(V,E) 做深度遍历的字后,沃尔玛把所有被访问到底额d定点的,基座的vd(zide G,S把标记为 的

Tree 的边都构成集合基座的ed(G,S) 积极做的Td(G,s)=v(d) ,Ed(GS)

  Ed(GS)  中的边的为什么被称为数遍的她们与谁啊的有何关系ide,她们与树的有关系, 

首先的,我们的注意到的试一下的事实上:

 

    观察的揭露你是存在一额风格有收到带U的荣福利的,()

u当且晋档,

1。从S出发的深度有此案的比那里会抵达u

2. 在遍历的结束会后,U被标记的为visieded,并且

在T的(G) 被存在从到速到U的同路。

通过的同理的做数学归纳,不难证明上述结构,我们将留给读者郑敏。

根据观察结构是的可以得到结论:

 

 vr(G,s)  =vd(G,s) 

 

 

也就说,从s出发,深度的有限立即的 访问到的定点,切好的就是从S倒带的定点,
观察结论: 在td{G,s)中东S出发到人一个节点的有且仅有一个同路。

 

“”有“显然有,只选用证明的“非有“

反证法: 去两条同路的p1={s,e1,v1,v2

 

p2={s,f1,u1,u2}

 根据DFS方法,ei+1shuyu Ed(s)的 方法的,作为的一个一个处于UN迪士尼刺耳的,

 

观察结构: 

Td(G,s) 不含有环路。

 

这里只是实现了tranvcer 方法,具体的visiti*()以及的凡蒜贩依然好嗨灵活性,可以的根基的

需要的问题进行扩充。

根据的观察结构,算法只能烦那个吻到南方V可以打的那些定点,而其他不能不鞥大定点,

为了使所有的所有定点的都能方乃文刀片,我们只需要为的DFS方法,做扩充,请注意的traverse ()方法,

 

为了是所有定点都鞥呢被访问到哦,我么年支出与萨队DFS方法少做扩充,请注意tracnsscer 方法

第一句的实际上,在引入的这依旧的,之后,我们的着急需要对定点桌椅调用的,tracerse()方法,

 

如此的实现的深度有限遍历的,的实际复杂度的,是佛㐈本章的开头所言的是是线性的呢,为了统计,我们只需要想好与每个定点的时间累积起来。

 

观察结构是: 对于G中从可以带的每一个打定的V的G,D f

1.trnassecver(v) 算法递归调用一次;

2.若不仅的visit() 调用的,每次调用的只需要将O(1+outDEgree(v

有观察结论:

我们注意到,消耗与的定点的v 的时间的不如爱护的量大部分,检查更新的,

检查封信,V的状态,设置的v的时间标签。

对v 的每天出边的e={v,u} 根据定点的u 的不通处理的分裂处理的前毅力诶操作的功需要尝试监事,后一类操作对每天也可以在常熟市时间内完成。

完成。

 

10.6.5 可达分量算法 

在处理图接受是,我们警察更需要执行的一想操作是:L:geisin有向图的一个定点的s,计算s 所对应的科大分量

这里的algoritihm 算法并不复杂,直接调用的trancer () 算法,从制定的定点S,出发做深度遍历的,

响应的在对每个被发现的定点进行访问时,visited ()方法 只不过是的将新发现的定点的压入展中的,响应的,在对中每个被发现的定点的进行访问时,visit()方法所以的机制不多将将新发信的发的定点压入info 中。

++

单强联通的分量算法:

本届讨论的是+: 对于图G后你人一个界定的S,计算出S所在的强联通分量,

镜像:

对于任何边e=(v,u),我们的R(e) 为e 的镜像说,也就说说R(e) 的起点的我们陈国R(e) de

这也就说的额,集合(R(E) 是E中的个边的镜像边组成,

这里调用的

调用的DFSReachability(G,S) 算法,计算出的在图G中的科大分量VR(G,S)

有G做构造的镜像的图(G);

调用的DFSReacheabliy(R(G),S) 算法,计算的S在图找那个R(G) 中的科大变量的vr(R(G,s 

找出的vr(G,s) 和vr(R(G) s的公共部分。记得到C(G,S)

 

能缩图:与弱连通性

能缩图:

考察有向图:G(V,E)

v1={s1,s2,,,,,,,,,,,,,,,,,,sp}

E!={si,sj}

定义10 , 对于任意非一个对定点的u 和v 如果的村咋丛cu到V的同理的,或者从v 到u 的同流。则成他们的联通的。

定义14: 如果图,G中每一对定点,都是弱联动的责成G为若的联通店。

 

图G 是弱联通中,当且晋档是G! 是一条的同路。

 

 

 

 

 

 

 

 

 

1}

 

 

 

 

    

 

 

    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/xiamaocheng/article/details/86021737
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞