算法 in Golang:Breadth-first search

(BFS、广度优先搜索)

最短路径问题 Shortest-path problem

  • 从 A 到 F 点有多条路径

解决问题的算法 Breadth-first Search(广度优先搜索)

  1. 将问题建模为图(Graph)
  2. 通过 Breadth-first Search 算法来解决问题

图(Graph)是什么?

图是用来对不同事物间如何关联进行建模的一种方式

图是一种数据结构

Breadth-first Search(BFS)广度优先搜索算法

  1. 作用于图(Graph)
  2. 能够回答两类问题:
    1. 是否能够从节点 A 到节点 B?
    2. 从 A 到 B 的最短路径是什么?

以社交网络为例

  • 直接添加的朋友
    • 朋友的朋友...
    • 第一层没找到再找第二层

数据结构 Queue

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

例子

找到名为 Tom 的朋友

  1. 把你所有的朋友都加到 Queue 里面
  2. 把 Queue 里面第一个人找出来
  3. 看他是不是 Tom
    1. 是 结束任务
    2. 否 把他所有的朋友加到 Queue 重复操作

创建项目

~/Code/go via 
    

  
内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/QiaoPengjun/p/17462128.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程