一、目标
找出下图(有向图)中的回路
二、策略
1,深度优先搜索:顾名思义,就是从某个顶点开始探索,会一直探索到某个可能路径的尽头才会停止探索,并原路返回(下面的例子,
并不会一直原路返回到原点,而是每次原路返回一个顶点,就会探索从该点向下的所有路径情况,以此类推);
2,按道理需要从1~7个点都探索一下,看有没有某个回路包含自己;为了简化,我们只从顶点1探索;
3,假设我手中有个笔记本,分别记录3件事情,如下:
我准备从房间1(如下图)开始探索如下图所示的区域,看能不能发现其中的某个回路(就像鬼打墙那样的回路,会一直路过相同的地方);
三,实施
1,我进入房间1,发现有一把钥匙,可以打开房间1中的那两扇门;
A,然后房间1中还有一个柜子localCycles,我撕了一张空白的纸放进柜子中,准备记录一些东西:
B,我在我随身携带的本子上记录如下内容:
C,使用这个房间的钥匙去打开一扇未曾打开过的门;
我使用房间1中的钥匙打开了东边的门,至于为什么选择东边的门而不是南边的门,我想可能是因为我没有强迫症吧,哪扇门都可以,哈哈;
D,我站在两个房间连接的过道上(其实还是在房间1中的),发现下一个是房间3;
我得先拿出我随身携带的本子,看看有没有这个房间3的相关信息:
2,由于本子上并没有房间3的任何信息,所以我走进了房间3;
并且房间3看起来和房间1是一模一样,只是我并没有发现任何钥匙;
A,同样的,我会撕下一张空白的纸放进柜子localCycles中:
B,我在我随身携带的本子上记录如下内容:
C,使用这个房间的钥匙去打开一扇未曾打开过的门;
因为我没有任何房间3的钥匙,所以即使房间3有门,我也是打不开的,何况,房间3也没有门;没得办法,没有更深的房间可以去了,这条路算是走到了尽头;
E,所以我在我的本子上记录如下内容:
F,我要原路返回(我用脑子记下了我来时的路,也可以记在本子上)了,我得带上房间3柜子里的纸片,因为回到房间1后,还需要用到它;
3&#x