圖的搜索(一):廣度優先搜索算法和深度優先搜索算法

圖的搜索(一):廣度優先搜索算法和深度優先搜索算法

本章主要記錄了圖的搜索算法,和可以解決圖的基本問題——最短路徑問題的算法。本章主要對圖搜索的相關算法進行了介紹:廣度優先搜索算法、深度優先搜索算法。

下一章將繼續介紹:貝爾曼-福特算法、狄克斯特拉算法、A*算法。


離散數學中的圖

在這里插入圖片描述

上圖中的圓圈叫作“頂點”(也叫“結點”),連接頂點的線叫作“邊”。也就是說,由頂點和連接每對頂點的邊所構成的圖形就是圖。

加權圖

在這里插入圖片描述

有權的邊就可以表示頂點之間的“連接程度”

有向圖

在這里插入圖片描述

可以控制方向。

同時,有向圖也可與加權圖結合

根據搜索的順序不同,圖的搜索算法可分為“廣度優先搜索”和“深度優先搜索”這兩種。

廣度優先搜索

廣度優先搜索是一種對圖進行搜索的算法。假設我們一開始位于某個頂點(即起點),此時并不知道圖的整體結構,而我們的目的是從起點開始順著邊搜索,直到到達指定頂點(即終點)。在此過程中每走到一個頂點,就會判斷一次它是否為終點。廣度優先搜索會優先從離起點近的頂點開始搜索。

在這里插入圖片描述

設置A為起點,G為終點。從A開始搜索,將可以從A直達的三個頂點BCD設為下一步候補頂點。

在這里插入圖片描述

從候補頂點中選出一個頂點。優先選擇最早成為候補的那個頂點,如果多個頂點同時成為候補,那么可以隨意選擇其中一個。

在這里插入圖片描述

此處選擇了B,繼續往下搜索。將可以從 B 直達的兩個頂點 E 和 F 設為候補頂點。**此時,最早成為候補頂點的是C和D,于是需要回到C和D繼續往下。**依次循環,直到找到目標點。

這個例子的搜索順序為:A、B、C、D、E、F、H、I、J、K。

在這里插入圖片描述

注意:候補頂點是用“先入先出”(FIFO)的方式來管理的,因此可以使用“隊列”這個數據結構。(數據結構復習:鏈表、數組、棧、隊列、哈希表、堆、二叉樹-CSDN博客)

廣度優先搜索的特征為從起點開始,由近及遠進行廣泛的搜索。因此,目標頂點離起點越近,搜索結束得就越快。

*以上例子,沒有閉環的圖叫做“樹”。如果圖為閉環(起點和終點是同一個頂點),則搜索步驟相同。

深度優先算法

與廣度優先搜索不同,深度優先搜索會沿著一條路徑不斷往下搜索直到不能再繼續為止,然后再折返,開始搜索下一條候補路徑。

在這里插入圖片描述

主要的區別在于候補頂點的選擇不同。與廣度優先搜索算法相同,起點從A開始,并從B、C、D開始往下選擇。隨機選擇了B后,候補頂點變為E、F。與廣度優先搜索算法不同的是,此處則繼續選擇最新成為候補頂點的點開始往下繼續搜索

這個例子搜索順序為: A、B、E、K、F、C、H。

候補頂點是用“后入先出”(LIFO)的方式來管理的,因此可以使用“棧”這個數據結構。(數據結構復習:鏈表、數組、棧、隊列、哈希表、堆、二叉樹-CSDN博客)

深度優先搜索的特征為沿著一條路徑不斷往下,進行深度搜索。

參考資料:我的第一本算法書 (石田保輝 宮崎修一)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209310.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209310.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209310.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

公網域名如何解析到內網IP服務器——快解析域名映射外網訪問

在本地搭建主機應用后,由于沒有公網IP或沒有公網路由權限,在需要發布互聯網時,就需要用到外網訪問內網的一些方案。由于內網IP在外網不能直接訪問,通常就用通過外網域名來訪問內網的方法。那么,公網域名如何解析到內網…

Tmux中使用Docker報錯 - 解決方案

問題 進入Tmux會話后,在其中使用Docker可能會出現如下報錯: Got permission denied while trying to connect to the Docker ……解決方案 退出tmux會話: tmux detach在tmux會話外部殺掉tmux進程: pkill -f tmux重新進入tmux&#xff1a…

權威認證!景聯文科技入選杭州市2023年第二批省級“專精特新”中小企業認定名單

為深入貫徹黨中央國務院和省委省政府培育專精特新的決策部署,10月7日,杭州市經濟和信息化委員會公示了2023年杭州“專精特新”企業名單(第二批)。 根據工業和信息化部《優質中小企業梯度培育管理暫行辦法》(工信部企業…

【Vue3+Ts項目】硅谷甄選 — 路由配置+登錄模塊+layout組件+路由鑒權

一、路由配置 項目一共需要4個一級路由:登錄(login)、主頁(home)、404、任意路由(重定向到404)。 1.1 安裝路由插件 pnpm install vue-router 1.2 創建路由組件 在src目錄下新建views文件…

Graphpad Prism10.1.0 安裝教程 (含Win/Mac版)

GraphPad Prism GraphPad Prism是一款非常專業強大的科研醫學生物數據處理繪圖軟件,它可以將科學圖形、綜合曲線擬合(非線性回歸)、可理解的統計數據、數據組織結合在一起,除了最基本的數據統計分析外,還能自動生成統…

Python:核心知識點整理大全8-筆記

目錄 ?編輯 4.5 元組 4.5.1 定義元組 dimensions.py 4.5.2 遍歷元組中的所有值 4.5.3 修改元組變量 4.6 設置代碼格式 4.6.1 格式設置指南 4.6.2 縮進 4.6.3 行長 4.6.4 空行 4.6.5 其他格式設置指南 4.7 小結 第5章 if語句 5.1 一個簡單示例 cars.py 5.2 條…

現代皮質沙發模型材質編輯

在線工具推薦: 3D數字孿生場景編輯器 - GLTF/GLB材質紋理編輯器 - 3D模型在線轉換 - Three.js AI自動紋理開發包 - YOLO 虛幻合成數據生成器 - 三維模型預覽圖生成器 - 3D模型語義搜索引擎 當談到游戲角色的3D模型風格時,有幾種不同的風格&#xf…

線性容器(QByteArray、QString、QList模板類)、堆棧窗體

QT 線性容器 點擊查看:字符和字節的區別,ASCII、Unicode 和 UTF-8 編碼的區別。(👈 安全鏈接,放心跳轉) QByteArray 思考:char buf[6] “hello”; 如果 C 語言中要利用 buf 內容重新生成 “…

學生備考使用臺燈到底好不好?公認好用的護眼臺燈推薦

在現代生活中,許多學生的學習壓力越來越大,面臨的近視幾率也越來越大,特別是初中生,眼睛發育還未完全,使用不恰當的燈光也會對眼睛造成損害,特別是護眼臺燈。雖然護眼臺燈在功能上能夠提供充足、柔和的光線…

harbor倉庫鏡像遷移腳本

import subprocess import json import logging# 配置日志 logging.basicConfig(levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s)# 替換這里的Harbor倉庫地址和憑據 harbor_url "https://harbor.test.com" harbor_name "harbor.test.co…

《文存閱刊》期刊發表簡介

《文存閱刊》以“深研文化創新,崇尚科學真理,堅持雙百方針,打造學術精品”為辦刊宗旨,涵蓋藝術、文學、社科等多項內容,適應了文化市場需求,很好的回應了廣大文化理論工作者的關切,為下一步打造…

ChatGPT新媒體運營神器:輕松駕馭內容創作與傳播

文章目錄 1. 內容創作2. 社交媒體管理3. 用戶互動與客戶服務 《巧用ChatGPT輕松玩轉新媒體運營》內容簡介作者簡介目錄前言/序言本書內容本書特色本書讀者對象獲取方式 隨著互聯網的高速發展,新媒體已經成為了人們獲取信息、交流思想的重要渠道。在這個信息爆炸的時…

【SpringCache】快速入門 通俗易懂

1. 介紹 Spring Cache 是一個框架,實現了基于注解的緩存功能,只需要簡單地加一個注解,就能實現緩存功能。 Spring Cache 提供了一層抽象,底層可以切換不同的緩存實現,例如: EHCache Caffeine Redis(常用…

Centos7、Mysql8.0 load_file函數返回為空的終極解決方法--暨selinux的深入理解

零、問題背景 最近想換房,為了方便自己對比感興趣的房子,因此決定將目標房源的基本信息放在表里,特別是要一目了然的看到眾多房子的各種圖紙和照片,因此決定要在Mysql8.0.34數據庫中以二進制形式保存圖片(拋開合理性和…

喝酒誰先倒

劃拳是古老中國酒文化的一個有趣的組成部分。酒桌上兩人劃拳的方法為:每人口中喊出一個數字,同時用手比劃出一個數字。如果誰比劃出的數字正好等于兩人喊出的數字之和,誰就輸了,輸家罰一杯酒。兩人同贏或兩人同輸則繼續下一輪&…

Vue 2.0源碼分析-update

Vue 的 _update 是實例的一個私有方法,它被調用的時機有 2 個,一個是首次渲染,一個是數據更新的時候;由于我們這一章節只分析首次渲染部分,數據更新部分會在之后分析響應式原理的時候涉及。_update 方法的作用是把 VNo…

思維鏈(CoT)提出者 Jason Wei:關于大語言模型的六個直覺

文章目錄 一、前言二、主要內容三、總結 🍉 CSDN 葉庭云:https://yetingyun.blog.csdn.net/ 一、前言 Jason Wei 的主頁:https://www.jasonwei.net/ Jason Wei,一位于 2020 年從達特茅斯學院畢業的杰出青年,隨后加盟了…

大數據安全保障的四種關鍵技術

隨著大數據時代的到來,數據安全保障的重要性日益凸顯。大數據安全保障涉及多種關鍵技術,以下是四種關鍵技術的詳細介紹。 數據加密技術 數據加密技術是大數據安全保障的核心技術之一。它通過將明文數據轉化為密文數據,以保護數據的機密性和完…

CSS中 設置文字下劃線 的幾種方法

在網頁設計和開發中,我們經常需要對文字進行樣式設置,包括字體,顏色,大小等,其中,設置文字下劃線是一種常見需求 一 、CSS種使用 text-decoration 屬性來設置文字的裝飾效果,包括下劃線。 常用的取值&…

Visual Studio 2015 中 FFmpeg 開發環境的搭建

Visual Studio 2015 中 FFmpeg 開發環境的搭建 Visual Studio 2015 中 FFmpeg 開發環境的搭建新建控制臺工程拷貝并配置 FFmpeg 開發文件測試FFmpeg 開發文件的下載鏈接 Visual Studio 2015 中 FFmpeg 開發環境的搭建 新建控制臺工程 新建 Win32 控制臺應用程序。 具體流程&…