廣度優先搜尋不使用隊列
廣度 首先,Look (BFS) 是一種圖表遍歷計算,用於研究圖表中廣度運動中的中心。 BFS 的正常使用利用線路資訊結構來追蹤即將到來的集線器。無論如何,可以想像在不使用明確線路的情況下利用其他資訊結構來執行 BFS。
在沒有線路的情況下實作 BFS 的一種可選方法是利用兩個叢集或記錄:一個用於正在調查的目前層級的集線器,另一個用於要調查的下一層集線器。起初,目前層級清單包含來源中心。
計算首先強調當前層級清單並轉到每個集線器。對於每個經過的樞紐,其相鄰的樞紐都會受到檢查。如果未存取相鄰的集線器,則將其標記為已存取並新增至其他層級清單。該句柄將繼續進行,直到目前等級清單中的所有集線器都經過為止。
一旦當前級別列表完全遍歷完畢,計算將繼續到另一個級別列表,並重新哈希前往集線器並檢修下一個級別列表的方法。此準備工作將持續進行,直到不再有未訪問的節點為止。
使用的方法
廣度優先方法
廣度優先方法
BFS 演算法從來源集線器開始,調查其鄰居,最近又轉移到另一個層級的鄰居。使用線路資訊結構來追蹤您造訪的樞紐。在每個週期中,計算都會存取一個集線器,將其標記為已完成,並對未訪問的相鄰集線器進行排隊。此準備工作將持續進行,直到所有可到達的中心都被訪問為止。
程式碼初始化一個向量 adj 來表示圖表的傳染性清單。向量的每個檔案都與一個中心進行比較,每個記錄的值包含相鄰的中心。 BFS 遍歷由 BFS 工作執行,它採用來源集線器、集線器數量 N、經過集線器的向量 vis、單獨的 dp 以及用於追蹤要存取的集線器的向量 v。 bfsTraversal 工作初始化已消失的集線器並刪除向量,然後呼叫 BFS 工作來執行遍歷。
演算法
建立圖表的傳染清單表示形式。
初始化一行來儲存要存取的集線器。
初始化消失叢集以追蹤消失節點。
初始化刪除叢集以在每個集線器上儲存從來源集線器刪除的內容。將來源集線器的分隔符號設定為0。
將來源集線器排入佇列並檢查其是否已存取。
雖然管線不可淨化,但請執行以下操作:
#刪除佇列頭部的集線器。對於已出隊且尚未遍歷的每個鄰居集線器,請執行以下操作: 將相鄰集線器排隊。將相鄰的樞紐標記為已存取。將鄰居集線器刪除更新為出隊集線器刪除(也是 1)。
重複步驟 6,直到該行為空。
BFS 遍歷完成後,單獨的叢集將包含從來源節點到圖中所有其他中心的間隔。
(可選)您也可以在 BFS 遍歷中追蹤每個集線器的父集線器,以便以最簡單的方式從來源集線器到所有其他集線器。
範例
#include <iostream> #include <queue> #include <unordered_set> using namespace std; void bfsTraversal(int adjacencyList[][2], int numVertices, int source) { bool visited[numVertices + 1] = {false}; int distances[numVertices + 1] = {0}; queue<int> vertices; vertices.push(source); visited[source] = true; while (!vertices.empty()) { int node = vertices.front(); cout << node << ", "; vertices.pop(); for (int i = 0; i < 2; i++) { int next = adjacencyList[node][i]; if (!visited[next]) { vertices.push(next); distances[next] = distances[node] + 1; visited[next] = true; } } } } int main() { int adjacencyList[][2] = {{0, 0}, {1, 2}, {3, 4}, {0, 0}, {0, 0}}; int numVertices = 4; int source = 2; bfsTraversal(adjacencyList, numVertices, source); return 0; }
輸出
2,3,4,0
範例
#include <iostream> #include <vector> using namespace std; void bfsTraversal(vector<vector<int>>& adjacencyList, int N, int source) { vector<bool> visited(N + 1, false); vector<int> distances(N + 1, 0); vector<int> vertices; vertices.push_back(source); visited[source] = true; int curr = 0; while (curr < vertices.size()) { int node = vertices[curr]; cout << node << ", "; for (int i = 0; i < adjacencyList[node].size(); i++) { int next = adjacencyList[node][i]; if (!visited[next]) { vertices.push_back(next); distances[next] = distances[node] + 1; visited[next] = true; } } curr++; } cout << "\nDistances from source " << source << ":\n"; for (int i = 1; i <= N; i++) { cout << "Node " << i << ": " << distances[i] << endl; } } int main() { int N = 8; vector<vector<int>> adjacencyList(N + 1); adjacencyList[0] = {1, 2}; adjacencyList[1] = {2}; adjacencyList[2] = {0, 3}; adjacencyList[3] = {3}; adjacencyList[4] = {5}; adjacencyList[5] = {6, 7}; adjacencyList[6] = {}; adjacencyList[7] = {}; adjacencyList[8] = {}; int source = 5; bfsTraversal(adjacencyList, N, source); return 0; }
輸出
5, 6, 7, Distances from source 5: Node 1: 0 Node 2: 0 Node 3: 0 Node 4: 0 Node 5: 0 Node 6: 1 Node 7: 1 Node 8: 0
結論
本文對不使用行資訊結構的廣度優先查找 (BFS) 計算進行了說明。 BFS 計算通常用於從給定的來源中心開始以逐級方式導覽圖表。通常,一條線路用於儲存要前往的樞紐。無論如何,本文研究了一種可選方法,該方法利用基本清單或叢集來儲存下一層的集線器。
這種選擇性的使用完成了圖表的廣度優先研究。本文追溯了 BFS 計算的步驟,例如初始化傳染性記錄、維護 go-to 和分離簇以及使用圓圈來強調中心層級。它還提供了 C 代碼說明,說明了不使用一行的 BFS 遍歷。該程式碼準確地研究圖表,列印 BFS 遍歷排列,並計算從來源集線器到所有其他節點的距離。總的來說,本文在不使用線條的情況下對 BFS 計算進行了清晰的說明和可行的用法,展示了一種以廣度優先的方式導航圖表的可選方法。
以上是廣度優先搜尋不使用隊列的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

當您按一下Windows11中的搜尋欄位時,搜尋介面會自動展開。它在左側顯示最近程式的列表,在右側顯示Web內容。 Microsoft在那裡顯示新聞和趨勢內容。今天的支票宣傳了必應新的DALL-E3圖像生成功能、「與必應聊天龍」的提議、有關龍的更多資訊、來自網路部分的熱門新聞、遊戲建議和趨勢搜尋部分。整個項目清單與您在電腦上的活動無關。雖然一些用戶可能會喜歡查看新聞的能力,但所有這些都可以在其他地方大量獲得。其他人可能會直接或間接將其歸類為促銷甚至廣告。 Microsoft使用介面來推廣自己的內容,

百度高級搜尋怎麼用百度搜尋引擎是目前中國最常用的搜尋引擎之一,它提供了豐富的搜尋功能,其中之一就是進階搜尋。進階搜尋可以幫助使用者更精確地搜尋到所需的信息,提高搜尋效率。那麼,百度高級搜尋要怎麼使用呢?第一步,打開百度搜尋引擎首頁。首先,我們需要開啟一個百度的官方網站,也就是www.baidu.com。這是百度搜索的入口。第二步,點選進階搜尋按鈕。在百度搜尋框的右側,有

閒魚怎麼搜尋用戶?在軟體閒魚中,我們可以直接在軟體裡面去找想要溝通的使用者。但卻不清楚該怎麼搜尋用戶。在搜尋後的用戶中查看即可。接下來就是小編為用戶帶來的搜尋用戶方式介紹的介紹,有興趣的用戶快來一起看看吧!閒魚怎麼搜尋用戶答:在搜尋後的用戶中查看詳情介紹:1、進入軟體,點選搜尋框。 2、輸入使用者名稱,點選搜尋。 3.再選擇搜尋框下的【用戶】,即可找到對應用戶了。

智能為主導的時代,辦公室軟體也普及開來,Wps表格由於它的靈活性被廣大的辦公室人員採用。在工作上要求我們不只是要學會簡單的表格製作和文字輸入,我們要掌握更多的操作技能,才能完成實際工作中的任務,有數據的報表,運用表格更方便更清楚更準確。今天我們帶給大家的課程是:wps表格找不到正在搜尋的資料,為什麼請檢查搜尋選項位置? 1.先選取Excel表格,雙擊開啟。然後在該介面中,選取所有的儲存格。 2、然後在該介面中,點選頂部工具列裡「檔案」裡的「編輯」選項。 3、其次在該介面中,點選頂部工具列裡的“

以下範例根據副檔名列印目錄中的檔案-範例importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.Paths;importjava.util.stream.Stream; publicclassDemo{ publicstaticvoidmain(String[]args)throwsIOException{ 

手機淘寶app軟體內提供的商品好物非常多,隨時隨地想買就買,而且件件都是正品,每一件商品的價格標籤一清二楚,完全沒有任何的複雜操作,享受更加便捷的購物樂趣。隨心所欲自由搜尋選購,不同品類的商品板塊都是開放的,添加個人的收貨地址以及聯絡電話,方便快遞公司聯繫到你,實時查看最新的物流動態,那麼有些新人用戶第一次使用它,不知道如何搜尋商品,當然只需要在搜尋欄輸入關鍵字就能找到所有的商品結果,自由選購根本停不下來,現在小編在線詳細為手機淘寶用戶們帶來搜尋店鋪名的方法。 1.先打開手機淘寶app,

如何利用PHP函數進行搜尋和篩選資料?在使用PHP進行開發的過程中,經常需要對資料進行搜尋和過濾。 PHP提供了豐富的函數和方法來幫助我們實作這些操作。本文將介紹一些常用的PHP函數和技巧,幫助你有效率地進行資料的搜尋和過濾。字串搜尋PHP中常用的字串搜尋函數是strpos()和strstr()。 strpos()用於尋找字串中某個子字串的位置,如果存在,則返

如何使用C++中的雜湊搜尋演算法雜湊(Hash)搜尋演算法是一種高效的查找和儲存技術,它將關鍵字透過雜湊函數轉換為固定長度的索引,然後利用這個索引在資料結構中進行搜尋。在C++中,我們可以透過使用標準函式庫中的雜湊容器和雜湊函數來實作哈希搜尋演算法。本文將介紹如何使用C++中的雜湊搜尋演算法,並提供具體的程式碼範例。引入頭檔和命名空間首先,在使用C++中的雜湊搜尋算
