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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深度优先和广度优先搜索

發布時間:2023/12/31 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度优先和广度优先搜索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

前言

1 深度優先搜索

2 廣度優先搜索

3 深度優先和廣度優先的比較


前言

最近面試,被問到了深度優先和廣度優先搜索,這個我似曾相識,曾經大學的時候學到過,但是由于這幾年的工作都未接觸到,所以就已經忘的差不多了。這里必須重拾舊貨,重新認識下深度優先搜索和廣度優先搜索算法了。

1 深度優先搜索

思想:假設初始狀態是圖中所有頂點均未被訪問,則從某個頂點v出發,首先訪問該頂點,然后依次從它的各個未被訪問的鄰接點出發深度優先搜索遍歷圖,直至圖中所有和v有路徑相通的頂點都被訪問到。 若此時尚有其他頂點未被訪問到,則另選一個未被訪問的頂點作起始點,重復上述過程,直至圖中所有頂點都被訪問到為止。由此可見,深度優先搜索是一個遞歸的過程。

通俗點說就是,從初始點出發,不斷向前走,如果碰到死路了,就往回走一步,嘗試另一條路,直到發現了目標位置。這種不撞南墻不回頭的方法,即使成功也不一定找到一條好路,但好處是需要記住的位置比較少。

?

?

2 廣度優先搜索

思想:從圖中某頂點v出發,在訪問了v之后依次訪問v的各個未曾訪問過的鄰接點,然后分別從這些鄰接點出發依次訪問它們的鄰接點,并使得“先被訪問的頂點的鄰接點先于后被訪問的頂點的鄰接點被訪問,直至圖中所有已被訪問的頂點的鄰接點都被訪問到。如果此時圖中尚有頂點未被訪問,則需要另選一個未曾被訪問過的頂點作為新的起始點,重復上述過程,直至圖中所有頂點都被訪問到為止。換句話說,廣度優先搜索遍歷圖的過程是以v為起點,由近至遠,依次訪問和v有路徑相通且路徑長度為1,2...的頂點。

通俗點說就是,從初始點出發,把所有可能的路徑都走一遍,如果里面沒有目標位置,則嘗試把所有兩步能夠到的位置都走一遍,看有沒有目標位置;如果還不行,則嘗試所有三步可以到的位置。這種方法,一定可以找到一條最短路徑,但需要記憶的內容會非常多。

?

?

3 深度優先和廣度優先的比較

一般情況下,深度優先搜索算法占內存少但速度較慢,廣度優先搜索算法占內存多但速度較快,在距離和深度成正比的情況下能較快地求出最優解。因此,當內存不夠大時,為了防止內存溢出最好使用深度優先搜索算法。

?

?

總結

以上是生活随笔為你收集整理的深度优先和广度优先搜索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。