线程的六个状态
- 初始
- 运行
- 阻塞
- 等待
- 超时等待
- 终止
矩阵的深度优先遍历
图,就是由一些小圆点(称为顶点)和连接这些小圆点的直线(称为边)组成的。例如:
上图是由五个顶点(编号为1、2、3、4、5)和五条边(1-2、1-3、1-5、2-4、3-5)组成。
现在我们从1号顶点开始遍历这个图(遍历指的是把每一个顶点都访问一次)。使用深度优先搜索来遍历这个图我们将得到以下结果:
使用深度优先搜索来遍历这个图的具体过程是:
- 首先从一个未走到过的顶点作为起始顶点,比如1号顶点作为起点。
- 沿1号顶点的边去尝试访问其它未走到过的顶点,首先发现2号顶点还没有走到过,于是来到了2号顶点。
- 再以2号顶点作为出发点继续尝试访问其它未走到过的顶点,这样又来到了4号顶点。
- 再以4号顶点作为出发点继续尝试访问其它未走到过的顶点。
- 但是,此时沿4号顶点的边,已经不能访问到其它未走到过的顶点了,所以需要返回到2号顶点。
- 返回到2号顶点后,发现沿2号顶点的边也不能再访问到其它未走到过的顶点。此时又会来到3号顶点(2->1->3),再以3号顶点作为出发点继续访问其它未走到过的顶点,于是又来到了5号顶点。
- 至此,所有顶点我们都走到过了,遍历结束。
深度优先遍历的主要思想是:
- 首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;
- 当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直到所有的顶点都被访问过。
在此我想用一句话来形容 “一路走到头,不撞墙不回头”。