第六章 廣度優先搜尋

2022-09-11 06:18:13 字數 1465 閱讀 9288

①從節點a出發,有前往節點b的路徑嗎?

②從節點a出發,前往節點b的哪條路徑最短?

bfs找的是最短的路徑。

2. 佇列

按新增順序查詢時,才能找到最短路徑。

實現該目的可用佇列這一資料結構。佇列只支援入隊和出隊,不能隨機訪問佇列中的元素。

雜湊表(hash table)可以用來表示節點和鄰近節點相連的關係。(它能將對映到

以書中「你要在人際關係網中尋找芒果銷售商」為例,把「你」這個節點對映到所有鄰居可表示為:

1 graph ={}

2 graph["

you"] = ["

alice

", "

bob", "

claire

"] # 注意:「你」被對映到乙個陣列,graph["you"]是乙個陣列,其中包含「你」的所有鄰居

類似地,鄰居的鄰居也可用上述形式表示。另,雜湊表是無序的,鍵值對新增順序無關緊要。

(注:雙端佇列(deque,全名double-ended queue),是一種具有佇列和棧的性質的資料結構。雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行。雙端佇列可以在佇列任意一端入隊和出隊。)

from collections import

deque#圖

graph =

defsearch(name):

search_queue =deque()

search_queue +=graph[name]

searched = #

記錄檢查過的人,以免重複

while search_queue: #

只要佇列不為空

person = search_queue.popleft() #

取出第乙個人

if person is

not searched: #

只檢查沒被標記過的人

ifperson_is_seller(person):

print(person + "

is seller")

return

true

else

: search_queue +=graph[person]

return

false

defperson_is_seller(name):

return name[-1] == 'm'

#假如名字最後乙個字母為m的人是seller

search(

"you

")

o(v+e) 頂點數(vertice)加邊數(edges)

使用拓撲排序可以根據圖建立乙個有序列表。

(以家譜為例)家族樹是「樹」,樹是一種特殊的圖。

mysql第六章 第六章 mysql日誌

第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...

第六章 指標

1.多位元組資料的位址是在最左邊還是最右邊的位置,不同的機器有不同的規定,這也正是大端和小端的區別,位址也要遵從邊界對齊 2.高階語言的乙個特性就是通過名字而不是位址來訪問記憶體的位置,但是硬體仍然通過位址訪問記憶體位置 3.記憶體中的變數都是義序列的0或1的位,他們可以被解釋為整數或者其他,這取決...

第六章總結

6.1 使用滑鼠 6.1.1 滑鼠時間和滑鼠訊息 根據使用者操作滑鼠時滑鼠的位置,滑鼠訊息分為兩類 客戶區滑鼠訊息和非客戶區滑鼠訊息。1.客戶去滑鼠訊息 2.當滑鼠游標位於視窗的使用者區時,將生成客戶滑鼠訊息。滑鼠訊息和鍵盤訊息有所不同,windows 只將鍵盤有訊息傳送給具有輸入極點的視窗,但滑鼠...