算法 in Golang:Breadth-first search(BFS、广度优先搜索)

打印 上一主题 下一主题

主题 961|帖子 961|积分 2883

算法 in Golang:Breadth-first search

(BFS、广度优先搜索)

最短路径问题 Shortest-path problem


  • 从 A 到 F 点有多条路径
解决问题的算法 Breadth-first Search(广度优先搜索)


  • 将问题建模为图(Graph)
  • 通过 Breadth-first Search 算法来解决问题
图(Graph)是什么?

图是用来对不同事物间如何关联进行建模的一种方式
图是一种数据结构
Breadth-first Search(BFS)广度优先搜索算法


  • 作用于图(Graph)
  • 能够回答两类问题:

    • 是否能够从节点 A 到节点 B?
    • 从 A 到 B 的最短路径是什么?

以社交网络为例


  • 直接添加的朋友

    • 朋友的朋友...
    • 第一层没找到再找第二层

数据结构 Queue


  • 先进来的数据先处理(FIFO)先进先出原则
  • 无法随机的访问 Queue 里面的元素
  • 相关操作:

    • enqueue:添加元素
    • dequeue:移除元素

例子

找到名为 Tom 的朋友

  • 把你所有的朋友都加到 Queue 里面
  • 把 Queue 里面第一个人找出来
  • 看他是不是 Tom

    • 是 结束任务
    • 否 把他所有的朋友加到 Queue  重复操作

创建项目

[code]~/Code/go via
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表