翻翻目录看看能想到什么
1.图2.广度优先搜索3.算法实现图的建立与广度优先搜索
1. 图
本节讨论的是有向图,即带箭头的图,例如A->B。
只要有一条边连着的两个点,两个点便称为邻居(无论是有向图还是无向图)
A-B之间有a条边,便称为a度
2. 广度优先搜索
广度优先搜索又称BFS。
从A点开始,找到度数为1的节点,然后再从这些几点开始再次寻找度数为1的节点,直到找完。逐渐扩大这个搜索范围,以广度为优先。
广度优先搜索可以解决两个问题:
1.是否存在连通路径
2.寻找最短路径
3. 算法实现图的建立与广度优先搜索
图的建立采用邻接表的方法,用python实现也就是采用字典的方式,例如
A->B,A->C,A->D,则 {A:[B,C,D]}
广度优先搜索有需要借助队列(LIFO)(Last In First Out)这一数据结构
首先导入一个元素的邻居到队列里,判断是否已经寻找过,判断是否是要查找的元素,如果是,则结束;如果不是,则将该元素加入到寻找过的列表中,并且把他的邻居加入到队列中…直到找到
翻翻书看看遗忘了什么
队列
队列是后进先出,栈是先进先出。
队列的顺序就是度数的顺序,队列保证了先检查完1度关系再检查二度关系。
树
简单来说就是不能形成回路的图。(后面会详细讲解)
代码实现
from collections import deque
def search