iOS-无序图环的寻找和FBRetainCycleDetecto
2018-11-19 本文已影响0人
IBigLiang
之前在面试的时候有遇到过问无序图找环的问题, 当时觉得有点闷逼, 毕竟不是科班出身, 也没有静下心去看一些算法的知识. 最近在看Facebook的FBRetainCycleDetector的SDK的时候,看到运用DFS的算法找循环引用,回想到之前找环的问题,原理一致,然后今天就自己写了一个找环的demo
下图是一张包含几个环的无序图:
无序图先将每个顶点封装成为一个对象:
BLEdgeModel然后根据无序图封装每一个顶点,如下代码:
封装无序图的顶点接下来就是来寻找图中顶点所产生的环, 代码如下:
寻找无序图中的环按照我上面无序图来说,无序图的最深深度是如下图:
无序图顶点深度大致的思路就是:
以顶点1为起始顶点, 通过深度寻找法,找到最后一个顶点6,然后一步一步往回寻找环(当然这是以我给的例子作为代表, 如果起始顶点和封装的相连顶点列表中顶点的顺序不一致的话,过程会不一样,不过最终找到的环是一样的), 代码步骤的思路我已经写在demo里面了
以下是demo地址: (包含FBRetainCycleDetector的最简单的demo)
https://github.com/IBIgLiang/iOS-RetainCycleStudy
下次再介绍FBRetainCycleDetector的源代码!!!