美文网首页
算法图解 (六)

算法图解 (六)

作者: EruDev | 来源:发表于2018-06-01 17:29 被阅读0次

第六章 广度优先搜索

广度优先搜索算法 (英文: Breadth-First-Search, 缩写为BFS), 又称宽度优先搜索, 或横向优先搜索, 是一种图形搜索算法。 简单的说, BFS 是从根节点开始, 沿着树的宽度遍历树的节点。 如果所有节点均被访问, 则算法终止。 广度优先搜索的实现是一般采用 open-closed 表

[图片上传失败...(image-28dbd4-1527845362464)]

书中列举了好几个例子来讲述什么是广度优先搜索, 讲的很容易理解的。

芒果销售商问题。 目标是在你的人际关系网找到一位芒果销售商, 如果 A 不是芒果销售商, 就将他的朋友也加入到查找名单中。 也就意味着你将在他的朋友、 朋友的朋友等中查找。 使用这种算法将遍历你的整个人际关系网, 直到找到芒果销售商。 这就是广度优先搜索算法

# coding: utf-8

"""
这是书中芒果销售商问题
名字中以`m`结尾的是销售商
"""
from collections import deque

graph = {}
graph["you"] = ["alice", "bob", "claire"]
graph["bob"] = ["anuj", "peggy"]
graph["alice"] = ["peggy"]
graph["claire"] = ["thom", "jonny"]
graph["anuj"] = []
graph["peggy"] = []
graph["thom"] = []
graph["jonny"] = []


def search(name):
    search_deque = deque()
    search_deque += graph[name]
    searched = []
    while searched:
        person = search_deque.popleft()
        if person is not searched:
            if person_is_seller(person):
                print('Person' + person + 'is a mango seller')
                return True
            else:
                search_deque += graph[person]
                searched.append(person)
    return False

def person_is_seller(name):
    return name[-1] == 'm'

print(search('you'))

队列

队列是先进先出, 栈是先进后出

小结

  • 广度优先搜索指出是否有从A到B的路径, 如果有广度优先搜索将找出最短路径
  • 对于寻找最短路径问题, 可使用图来建模, 再使用广度优先搜索来解决问题
  • 对于检查过的人, 不需要再去检查了, 否则可能导致无限循环

相关文章

  • 算法图解 (六)

    第六章 广度优先搜索 广度优先搜索算法 (英文: Breadth-First-Search, 缩写为BFS), 又...

  • 算法(六):图解贪婪算法

    算法简介 参考:https://www.cnblogs.com/steven_oyj/archive/2010/0...

  • 算法图解学习 (六)

    广度优先算法(BFS),是一种图形搜索算法,简单的来说,广度优先算法是从根节点开始开始,沿着树的宽度遍历树的节点,...

  • 《算法图解》note 11 总结

    这是《算法图解》的第十一篇读书笔记,是一篇总结。经过1个月的时间,终于把《算法图解》看完了。个人认为,《算法图解》...

  • 2018年读书清单

    《月亮与六便士》《毅力:如何培养自律的习惯》《Being Logical》《外刊看中国》《算法图解》《侣行》《奇特...

  • 算法图解读书笔记

    date: 2017-9-16 11:11:15title: 算法图解读书笔记 算法图解: http://www....

  • 算法图解 读书笔记

    date: 2017-9-16 11:11:15title: 算法图解读书笔记 算法图解: http://www....

  • 算法学习工具

    算法图解可视化工具

  • 图解LZ77压缩算法

    图解LZ77压缩算法

  • 前端

    买一本算法书看一下算法图解

网友评论

      本文标题:算法图解 (六)

      本文链接:https://www.haomeiwen.com/subject/wdpksftx.html