日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BFS

發(fā)布時間:2025/7/14 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BFS 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

廣度優(yōu)先搜索算法(Breadth-First-Search),又譯作寬度優(yōu)先搜索,或橫向優(yōu)先搜索,簡稱BFS,是一種圖形搜索算法。簡單的說,BFS是從根節(jié)點開始,沿著樹的寬度遍歷樹的節(jié)點。如果所有節(jié)點均被訪問,則算法中止。廣度優(yōu)先搜索的實現(xiàn)一般采用open-closed表。

特性

?

空間復(fù)雜度

因為所有節(jié)點都必須被儲存,因此BFS的空間復(fù)雜度為 O(|V| + |E|),其中 |V| 是節(jié)點的數(shù)目,而 |E| 是圖中邊的數(shù)目。注:另一種說法稱BFS的空間復(fù)雜度為?O(BM),其中 B 是最大分支系數(shù),而 M 是樹的最長路徑長度。由于對空間的大量需求,因此BFS并不適合解非常大的問題。

時間復(fù)雜度

最差情形下,BFS必須尋找所有到可能節(jié)點的所有路徑,因此其時間復(fù)雜度為 O(|V| + |E|),其中 |V| 是節(jié)點的數(shù)目,而 |E| 是圖中邊的數(shù)目。

最佳解

若所有邊的長度相等,廣度優(yōu)先搜索算法是最佳解——亦即它找到的第一個解,距離根節(jié)點的邊數(shù)目一定最少;但對一般的圖來說,BFS并不一定回傳最佳解。這是因為當(dāng)圖形為加權(quán)圖(亦即各邊長度不同)時,BFS仍然回傳從根節(jié)點開始,經(jīng)過邊數(shù)目最少的解;而這個解距離根節(jié)點的距離不一定最短。這個問題可以使用考慮各邊權(quán)值,BFS的改良算法成本一致搜尋法(en:uniform-cost search)來解決。然而,若非加權(quán)圖形,則所有邊的長度相等,BFS就能找到最近的最佳解。

廣度優(yōu)先搜索算法的應(yīng)用

?

廣度優(yōu)先搜索算法能用來解決圖論中的許多問題,例如:

  • 尋找圖中所有連接元件(Connected Component)。一個連接元件是圖中的最大相連子圖。
  • 尋找連接元件中的所有節(jié)點。
  • 尋找非加權(quán)圖中任兩點的最短路徑。
  • 測試一圖是否為二分圖。
  • (Reverse) Cuthill–McKee算法

?

尋找連接元件

由起點開始,執(zhí)行廣度優(yōu)先搜索算法后所經(jīng)過的所有節(jié)點,即為包含起點的一個連接元件。

廣度優(yōu)先搜索,即BFS(Breadth First Search),是一種相當(dāng)常用的圖算法,其特點是:每次搜索指定點,并將其所有未訪問過的鄰近節(jié)點加入搜索隊列,循環(huán)搜索過程直到隊列為空。

??????? 算法描述如下:

??????? (1)將起始節(jié)點放入隊列尾部

???????? (2)While(隊列不為空)

取得刪除隊列首節(jié)點Node

????????????????????????? 處理該節(jié)點Node

????????????????????????? 把Node的未處理相鄰節(jié)點加入隊列尾部

???????? 使用該算法注意的問題:

??????? (1)使用該算法關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)為:隊列,隊列保證了廣度渡優(yōu)先,并且每個節(jié)點都被處理到

???????? (2)新加入的節(jié)點一般要是未處理過的,所以某些情況下最初要對所有節(jié)點進(jìn)行標(biāo)記

???????? (3)廣度優(yōu)先在實際使用時,很對情況已超出圖論的范圍,將新節(jié)點加入隊列的條件不再局限于

相鄰節(jié)點這個概念。例如,使用廣度優(yōu)先的網(wǎng)絡(luò)爬蟲在抓取網(wǎng)頁時,會把一個鏈接指向的網(wǎng)頁中的所有

URL加入隊列供后續(xù)處理。

1.初始化數(shù)組dis,q2.while(隊列非空) {1.st+=12.找相鄰點若dis=-11.加入隊列2.修改dis }

?

轉(zhuǎn)載于:https://www.cnblogs.com/zsh2016/p/5763987.html

總結(jié)

以上是生活随笔為你收集整理的BFS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。