廣度優先搜尋演算法(go)

2021-08-20 02:20:14 字數 989 閱讀 8684

廣度優先搜尋演算法(breadth first search,縮寫為bfs),又譯作寬度優先搜尋,或橫向優先搜尋,是一種圖形搜尋演算法。簡單的說,廣度優先搜尋演算法是從根節點開始,沿著樹的寬度遍歷樹的節點。如果所有節點均被訪問,則演算法中止。借助廣度優先搜尋演算法,可以讓你找出兩樣東西之間的最短距離。

朋友圈通過字典實現,以「你」(you)作為根節點,字典的鍵是朋友圈屬主,值是朋友圈所有朋友名字,通過乙個列表方式實現,名字按字母順序排序。

由示例中可以看到,查詢到的售貨員是peggy,而不是jonny。因為這裡的朋友名字是按字母順序排序,所以優先查詢了bob的朋友,而不是claire的朋友,即peggy是朋友圈中距離you最近的售貨員朋友。

示例**如下:

package main

import

"fmt"

func main()

func personisseller(name string) bool

func createfriendcircle() map[string]string

fc["bob"] = string

fc["alice"] = string

fc["claire"] = string

fc["anuj"] = string{}

fc["peggy"] = string{}

fc["thom"] = string{}

fc["jonny"] = string{}

return fc

}func breadthfirstsearch(friendcircle map[string]string) bool

searched := make(map[string]bool)

for else }if

len(searchlist) ==0

}return

false}/*

peggy is a seller!

*/

廣度優先搜尋演算法

廣度優先搜尋 bfs 這個是第乙個研究的課題,廣度優先搜尋也叫寬度優先搜尋,英文為breadth first searth,開始看的時候一頭霧水,基本也能懂大致意思,但是還不是真正的理解,今天又仔細看看,大致理解上又更深了一層吧。下面來總結下,自己的一些體會,以及對它的獨到的理解。大的方面來說它是一...

廣度優先搜尋演算法

在深度優先搜尋中,深度越大的結點越先得到擴充套件。如果把它改為深度越小的結點越先得到擴充套件,就是廣度優先搜尋法。廣度優先搜尋演算法的基本思想 1 建立乙個空的狀態佇列ss 2 建立乙個空的狀態庫sb 3 把初始狀態s 0 存入佇列ss中 4 若佇列狀態是目標狀態,則搜尋成功,演算法執行中止。如該狀...

廣度優先搜尋演算法

看了下廣度優先搜尋演算法得定義為從乙個頂點開始,找到最短路勁,歸結為一種連通圖得遍歷策略 如果我們要求v0到v6的一條最短路 假設走乙個節點按一步來算 注意 此處你可以選擇不看這段文字直接看圖3 1 我們明顯看出這條路徑就是v0 v2 v6,而不是v0 v3 v5 v6。先想想你自己剛剛是怎麼找到這...