日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python 图_系列之基于邻接矩阵实现广度、深度优先路径搜索算法

發(fā)布時(shí)間:2023/12/20 python 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 图_系列之基于邻接矩阵实现广度、深度优先路径搜索算法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

圖是一種抽象數(shù)據(jù)結(jié)構(gòu),本質(zhì)和樹(shù)結(jié)構(gòu)是一樣的。

圖與樹(shù)相比較,圖具有封閉性,可以把樹(shù)結(jié)構(gòu)看成是圖結(jié)構(gòu)的前生。在樹(shù)結(jié)構(gòu)中,如果把兄弟節(jié)點(diǎn)之間或子節(jié)點(diǎn)之間橫向連接,便構(gòu)建成一個(gè)圖。

樹(shù)適合描述從上向下的一對(duì)多的數(shù)據(jù)結(jié)構(gòu),如公司的組織結(jié)構(gòu)。

圖適合描述更復(fù)雜的多對(duì)多數(shù)據(jù)結(jié)構(gòu),如復(fù)雜的群體社交關(guān)系。


1. 圖理論

借助計(jì)算機(jī)解決現(xiàn)實(shí)世界中的問(wèn)題時(shí),除了要存儲(chǔ)現(xiàn)實(shí)世界中的信息,還需要正確地描述信息之間的關(guān)系。

如在開(kāi)發(fā)地圖程序時(shí),需要在計(jì)算機(jī)中正確模擬出城市與城市、或城市中各道路之間的關(guān)系圖。在此基礎(chǔ)上,才有可能通過(guò)算法計(jì)算出從一個(gè)城市到另一個(gè)城市、或從指定起點(diǎn)到目標(biāo)點(diǎn)間的最佳路徑。

類(lèi)似的還有航班路線(xiàn)圖、火車(chē)線(xiàn)路圖、社交交系圖。

圖結(jié)構(gòu)能很好的對(duì)現(xiàn)實(shí)世界中如上這些信息之間的復(fù)雜關(guān)系進(jìn)行映射。以此可使用算法方便的計(jì)算出如航班線(xiàn)路中的最短路徑、如火車(chē)線(xiàn)路中的最佳中轉(zhuǎn)方案,如社交圈中誰(shuí)與誰(shuí)關(guān)系最好、婚姻網(wǎng)中誰(shuí)與誰(shuí)最般配……

1.1 圖的概念

**頂點(diǎn):**頂點(diǎn)也稱(chēng)為節(jié)點(diǎn),可認(rèn)為圖就是頂點(diǎn)組成的集合。頂點(diǎn)本身是有數(shù)據(jù)含義的,所以頂點(diǎn)都會(huì)帶有附加信息,稱(chēng)作"有效載荷"。

頂點(diǎn)可以是現(xiàn)實(shí)世界中的城市、地名、站名、人……

邊: 圖中的邊用來(lái)描述頂點(diǎn)之間的關(guān)系。邊可以有方向也可以沒(méi)有方向,有方向的邊又可分為單向邊和雙向邊。

如下圖(項(xiàng)點(diǎn)1)到(頂點(diǎn)2)之間的邊只有一方向(箭頭所示為方向),稱(chēng)為單向邊。類(lèi)似現(xiàn)實(shí)世界中的單向道。

(頂點(diǎn)1)到(頂點(diǎn)2)之間的邊有兩個(gè)方向(雙向箭頭),稱(chēng)為雙向邊。 城市與城市之間的關(guān)系為雙向邊。

權(quán)重: 邊上可以附加值信息,附加的值稱(chēng)為權(quán)重。有權(quán)重的邊用來(lái)描述一個(gè)頂點(diǎn)到另一個(gè)頂點(diǎn)的連接強(qiáng)度。

如現(xiàn)實(shí)生活中的地鐵路線(xiàn)中,權(quán)重可以描述兩個(gè)車(chē)站之間時(shí)間長(zhǎng)度、公里數(shù)、票價(jià)……

邊描述的是頂點(diǎn)之間的關(guān)系,權(quán)重描述的是連接的差異性。

路徑:

先了解現(xiàn)實(shí)世界中路徑概念

如:從一個(gè)城市開(kāi)車(chē)去另一個(gè)城市,就需要先確定好路徑。也就是 從出發(fā)地到目的地要經(jīng)過(guò)那些城市?要走多少里程?

可以說(shuō)路徑是由邊連接的頂點(diǎn)組成的序列。因路徑不只一條,所以,從一個(gè)項(xiàng)點(diǎn)到另一個(gè)項(xiàng)點(diǎn)的路徑描述也不指一種。

在圖結(jié)構(gòu)中如何計(jì)算路徑?

  • 無(wú)權(quán)重路徑的長(zhǎng)度是路徑上的邊數(shù)。

  • 有權(quán)重路徑的長(zhǎng)度是路徑上的邊的權(quán)重之和。

如上圖從(頂點(diǎn)1)到(頂點(diǎn)3)的路徑長(zhǎng)度為 8。

環(huán): 從起點(diǎn)出發(fā),最后又回到起點(diǎn)(終點(diǎn)也是起點(diǎn))就會(huì)形成一個(gè)環(huán),環(huán)是一種特殊的路徑。如上 (V1, V2, V3, V1) 就是一個(gè)環(huán)。

圖的類(lèi)型:

綜上所述,圖可以分為如下幾類(lèi):

  • 有向圖: 邊有方向的圖稱(chēng)為有向圖。
  • 無(wú)向圖: 邊沒(méi)有方向的圖稱(chēng)為無(wú)向圖。
  • 加權(quán)圖: 邊上面有權(quán)重信息的圖稱(chēng)為加權(quán)圖。
  • 無(wú)環(huán)圖: 沒(méi)有環(huán)的圖被稱(chēng)為無(wú)環(huán)圖。
  • 有向無(wú)環(huán)圖: 沒(méi)有環(huán)的有向圖,簡(jiǎn)稱(chēng) DAG。

1.2 定義圖

根據(jù)圖的特性,圖數(shù)據(jù)結(jié)構(gòu)中至少要包含兩類(lèi)信息:

  • 所有頂點(diǎn)構(gòu)成集合信息,這里用 V 表示(如地圖程序中,所有城市構(gòu)在頂點(diǎn)集合)。

  • 所有邊構(gòu)成集合信息,這里用 E 表示(城市與城市之間的關(guān)系描述)。

    如何描述邊?

    邊用來(lái)表示項(xiàng)點(diǎn)之間的關(guān)系。所以一條邊可以包括 3 個(gè)元數(shù)據(jù)(起點(diǎn),終點(diǎn),權(quán)重)。當(dāng)然,權(quán)重是可以省略的,但一般研究圖時(shí),都是指的加權(quán)圖。

如果用 G 表示圖,則 G = (V, E)。每一條邊可以用二元組 (fv, ev) 也可以使用 三元組 (fv,ev,w) 描述。

fv 表示起點(diǎn),ev 表示終點(diǎn)。且 fv,ev 數(shù)據(jù)必須引用于 V 集合。

如上的圖結(jié)構(gòu)可以描述如下:

# 5 個(gè)頂點(diǎn) V={A0,B1,C2,D3,E4} # 7 條邊 E={ (A0,B1,3),(B1,C2,4),(C2,D3,6),(C2,E4,1),(D3,E4,2),(A0,D3,5),(E4,B1,7)}

1.3 圖的抽象數(shù)據(jù)結(jié)構(gòu)

圖的抽象數(shù)據(jù)描述中至少要有的方法:

  • Graph ( ) : 用來(lái)創(chuàng)建一個(gè)新圖。

  • add_vertex( vert ):向圖中添加一個(gè)新節(jié)點(diǎn),參數(shù)應(yīng)該是一個(gè)節(jié)點(diǎn)類(lèi)型的對(duì)象。

  • add_edge(fv,tv ):在 2 個(gè)項(xiàng)點(diǎn)之間建立起邊關(guān)系。

  • add_edge(fv,tv,w ):在 2 個(gè)項(xiàng)點(diǎn)之間建立起一條邊并指定連接權(quán)重。

  • find_vertex( key ) : 根據(jù)關(guān)鍵字 key 在圖中查找頂點(diǎn)。

  • find_vertexs( ):查詢(xún)所有頂點(diǎn)信息。

  • find_path( fv,tv):查找.從一個(gè)頂點(diǎn)到另一個(gè)頂點(diǎn)之間的路徑。

2. 圖的存儲(chǔ)實(shí)現(xiàn)

圖的存儲(chǔ)實(shí)現(xiàn)主流有 2 種:鄰接矩陣和鏈接表,本文主要介紹鄰接矩陣。

2.1 鄰接矩陣

使用二維矩陣(數(shù)組)存儲(chǔ)頂點(diǎn)之間的關(guān)系。

如 graph[5][5] 可以存儲(chǔ) 5 個(gè)頂點(diǎn)的關(guān)系數(shù)據(jù),行號(hào)和列號(hào)表示頂點(diǎn),第 v 行的第 w 列交叉的單元格中的值表示從頂點(diǎn) v 到頂點(diǎn) w 的邊的權(quán)重,如 grap[2][3]=6 表示 C2 頂點(diǎn)和 D3 頂點(diǎn)的有連接(相鄰),權(quán)重為 6。

相鄰的優(yōu)點(diǎn)就是簡(jiǎn)單,可以清晰表示那些頂點(diǎn)是相連的。因不是每?jī)蓛蓚€(gè)頂點(diǎn)之間會(huì)有連接,會(huì)導(dǎo)致大量的空間閑置,稱(chēng)這種矩陣為”稀疏“的。

只有當(dāng)每一個(gè)頂點(diǎn)和其它頂點(diǎn)都有關(guān)系時(shí),矩陣才會(huì)填滿(mǎn)。所以,使用這種結(jié)構(gòu)存儲(chǔ)圖數(shù)據(jù),對(duì)于關(guān)系不是很復(fù)雜的圖結(jié)構(gòu)而言,會(huì)產(chǎn)生大量的空間浪費(fèi)。

鄰接矩陣適合表示關(guān)系復(fù)雜的圖結(jié)構(gòu),如互聯(lián)網(wǎng)上網(wǎng)頁(yè)之間的鏈接、社交圈中人與人之間的社會(huì)關(guān)系……

2.2 編碼實(shí)現(xiàn)鄰接矩陣

因頂點(diǎn)本身有數(shù)據(jù)含義,需要先定義頂點(diǎn)類(lèi)型。

頂點(diǎn)類(lèi):

""" 節(jié)(頂)點(diǎn)類(lèi) """ class Vertex:def __init__(self, name, v_id=0):# 頂點(diǎn)的編號(hào)self.v_id = v_id# 頂點(diǎn)的名稱(chēng)self.v_name = name# 是否被訪(fǎng)問(wèn)過(guò):False 沒(méi)有 True:有self.visited = False# 自我顯示def __str__(self):return '[編號(hào)為 {0},名稱(chēng)為 {1} ] 的頂點(diǎn)'.format(self.v_id, self.v_name)

頂點(diǎn)類(lèi)中 v_id 和 v_name 很好理解。為什么要添加一個(gè) visited?

這個(gè)變量用來(lái)記錄頂點(diǎn)在路徑搜索過(guò)程中是否已經(jīng)被搜索過(guò),避免重復(fù)搜索計(jì)算。

**圖類(lèi):**圖類(lèi)的方法較多,這里逐方法介紹。

  • 初始化方法
  • class Graph:"""nums:相鄰矩陣的大小"""def __init__(self, nums):# 一維列表,保存節(jié)點(diǎn),最多只能有 nums 個(gè)節(jié)點(diǎn)self.vert_list = []# 二維列表,存儲(chǔ)頂點(diǎn)及頂點(diǎn)間的關(guān)系(權(quán)重)# 初始權(quán)重為 0 ,表示節(jié)點(diǎn)與節(jié)點(diǎn)之間還沒(méi)有建立起關(guān)系self.matrix = [[0] * nums for _ in range(nums)]# 頂點(diǎn)個(gè)數(shù)self.v_nums = 0# 使用隊(duì)列模擬隊(duì)列或棧,用于廣度、深度優(yōu)先搜索算法self.queue_stack = []# 保存搜索到的路徑self.searchPath = []# 暫省略……

    初始化方法用來(lái)初始化圖中的數(shù)據(jù)類(lèi)型:

    • 一維列表 vert_list 保存所有頂點(diǎn)數(shù)據(jù)。

    • 二維列表 matrix 保存頂點(diǎn)與頂點(diǎn)之間的關(guān)系數(shù)據(jù)。

    • queue_stack 使用列表模擬隊(duì)列或棧,用于后續(xù)的廣度搜索和深度搜索。

      怎么使用列表模擬隊(duì)列或棧?

      列表有 append()、pop() 2 個(gè)很價(jià)值的方法。

      append() 用來(lái)向列表中添加數(shù)據(jù),且每次都是從列表最后面添加。

      pop() 默認(rèn)從列表最后面刪除且彈出數(shù)據(jù), pop(參數(shù)) 可以提供索引值用來(lái)從指定位置刪除且彈出數(shù)據(jù)。

      使用 append() 和 pop() 方法就能模擬棧,從同一個(gè)地方進(jìn)出數(shù)據(jù)。

      使用 append() 和 pop(0) 方法就能模擬隊(duì)列,從后面添加數(shù)據(jù),從最前面獲取數(shù)據(jù)

    • searchPath : 用來(lái)保存使用廣度或深度優(yōu)先路徑搜索中的結(jié)果。

  • 添加新節(jié)(頂)點(diǎn)方法:
  • """添加新頂點(diǎn)"""def add_vertex(self, vert):if vert in self.vert_list:# 已經(jīng)存在returnif self.v_nums >= len(self.matrix):# 超過(guò)相鄰矩陣所能存儲(chǔ)的節(jié)點(diǎn)上限return# 頂點(diǎn)的編號(hào)內(nèi)部生成vert.v_id = self.v_numsself.vert_list.append(vert)# 數(shù)量增一self.v_nums += 1

    上述方法注意一點(diǎn),節(jié)點(diǎn)的編號(hào)由圖內(nèi)部邏輯提供,便于節(jié)點(diǎn)編號(hào)順序的統(tǒng)一。

  • 添加邊方法

    此方法是鄰接矩陣表示法的核心邏輯。

  • '''添加節(jié)點(diǎn)與節(jié)點(diǎn)之間的邊,如果是無(wú)權(quán)重圖,統(tǒng)一設(shè)定為 1 '''def add_edge(self, from_v, to_v):# 如果節(jié)點(diǎn)不存在if from_v not in self.vert_list:self.add_vertex(from_v)if to_v not in self.vert_list:self.add_vertex(to_v)# from_v 節(jié)點(diǎn)的編號(hào)為行號(hào),to_v 節(jié)點(diǎn)的編號(hào)為列號(hào)self.matrix[from_v.v_id][to_v.v_id] = 1'''添加有權(quán)重的邊'''def add_edge(self, from_v, to_v, weight):# 如果節(jié)點(diǎn)不存在if from_v not in self.vert_list:self.add_vertex(from_v)if to_v not in self.vert_list:self.add_vertex(to_v)# from_v 節(jié)點(diǎn)的編號(hào)為行號(hào),to_v 節(jié)點(diǎn)的編號(hào)為列號(hào)self.matrix[from_v.v_id][to_v.v_id] = weight

    添加邊信息的方法有 2 個(gè),一個(gè)用來(lái)添加無(wú)權(quán)重邊,一個(gè)用來(lái)添加有權(quán)重的邊。

  • 查找某節(jié)點(diǎn)

    使用線(xiàn)性查找法從節(jié)點(diǎn)集合中查找某一個(gè)節(jié)點(diǎn)。

  • '''根據(jù)節(jié)點(diǎn)編號(hào)返回節(jié)點(diǎn)'''def find_vertex(self, v_id):if v_id >= 0 or v_id <= self.v_nums:# 節(jié)點(diǎn)編號(hào)必須存在return [tmp_v for tmp_v in self.vert_list if tmp_v.v_id == v_id][0]
  • 查詢(xún)所有節(jié)點(diǎn)
  • '''輸出所有頂點(diǎn)信息'''def find_only_vertexes(self):for tmp_v in self.vert_list:print(tmp_v)

    此方法僅為了查詢(xún)方便。

  • 查詢(xún)節(jié)點(diǎn)之間的關(guān)系
  • '''迭代節(jié)點(diǎn)與節(jié)點(diǎn)之間的關(guān)系(邊)'''def find_vertexes(self):for tmp_v in self.vert_list:edges = self.matrix[tmp_v.v_id]for col in range(len(edges)):w = edges[col]if w != 0:print(tmp_v, '和', self.vert_list[col], '的權(quán)重為:', w)
  • 測(cè)試代碼:
  • if __name__ == "__main__":# 初始化圖對(duì)象g = Graph(5)# 添加頂點(diǎn)for _ in range(len(g.matrix)):v_name = input("頂點(diǎn)的名稱(chēng)( q 為退出):")if v_name == 'q':breakv = Vertex(v_name)g.add_vertex(v)# 節(jié)點(diǎn)之間的關(guān)系infos = [(0, 1, 3), (0, 3, 5), (1, 2, 4), (2, 3, 6), (2, 4, 1), (3, 4, 2), (4, 1, 7)]for i in infos:v = g.find_vertex(i[0])v1 = g.find_vertex(i[1])g.add_edge(v, v1, i[2])# 輸出頂點(diǎn)及邊aprint("-----------頂點(diǎn)與頂點(diǎn)關(guān)系--------------")g.find_vertexes()'''輸出結(jié)果:頂點(diǎn)的名稱(chēng)( q 為退出):A頂點(diǎn)的名稱(chēng)( q 為退出):B頂點(diǎn)的名稱(chēng)( q 為退出):C頂點(diǎn)的名稱(chēng)( q 為退出):D頂點(diǎn)的名稱(chēng)( q 為退出):E-----------頂點(diǎn)與頂點(diǎn)關(guān)系-------------[編號(hào)為 0,名稱(chēng)為 A ] 的頂點(diǎn) 和 [編號(hào)為 1,名稱(chēng)為 B ] 的頂點(diǎn) 的權(quán)重為: 3 [編號(hào)為 0,名稱(chēng)為 A ] 的頂點(diǎn) 和 [編號(hào)為 3,名稱(chēng)為 D ] 的頂點(diǎn) 的權(quán)重為: 5 [編號(hào)為 1,名稱(chēng)為 B ] 的頂點(diǎn) 和 [編號(hào)為 2,名稱(chēng)為 C ] 的頂點(diǎn) 的權(quán)重為: 4 [編號(hào)為 2,名稱(chēng)為 C ] 的頂點(diǎn) 和 [編號(hào)為 3,名稱(chēng)為 D ] 的頂點(diǎn) 的權(quán)重為: 6 [編號(hào)為 2,名稱(chēng)為 C ] 的頂點(diǎn) 和 [編號(hào)為 4,名稱(chēng)為 E ] 的頂點(diǎn) 的權(quán)重為: 1 [編號(hào)為 3,名稱(chēng)為 D ] 的頂點(diǎn) 和 [編號(hào)為 4,名稱(chēng)為 E ] 的頂點(diǎn) 的權(quán)重為: 2 [編號(hào)為 4,名稱(chēng)為 E ] 的頂點(diǎn) 和 [編號(hào)為 1,名稱(chēng)為 B ] 的頂點(diǎn) 的權(quán)重為: 7'''

    3. 搜索路徑

    在圖中經(jīng)常做的操作,就是查找從一個(gè)頂點(diǎn)到另一個(gè)頂點(diǎn)的路徑。如怎么查找到 A0 到 E4 之間的路徑長(zhǎng)度:

    從人的直觀思維角度查找一下,可以找到如下路徑:

    • {A0,B1,C2,E4}路徑長(zhǎng)度為 8。
    • {A0,D3,E4} 路徑長(zhǎng)度為 7。
    • {A0,B1,C2,D3,E4} 路徑長(zhǎng)度為 15。

    人的思維是知識(shí)性、直觀性思維,在路徑查找時(shí)不存在所謂的嘗試或碰壁問(wèn)題。而計(jì)算機(jī)是試探性思維,就會(huì)出現(xiàn)這條路不通,再找另一條路的現(xiàn)象。

    所以路徑算法中常常會(huì)以錯(cuò)誤為代價(jià),在查找過(guò)程中會(huì)走一些彎路。常用的路徑搜索算法有 2 種:

    • 廣度優(yōu)先搜索。
    • 深度優(yōu)先搜索。

    3.1 廣度優(yōu)先搜索

    先看一下廣度優(yōu)先搜索的示意圖:

    廣度優(yōu)先搜索的基本思路:

    • 確定出發(fā)點(diǎn),本案例是 A0 頂點(diǎn)
    • 以出發(fā)點(diǎn)相鄰的頂點(diǎn)為候選點(diǎn),并存儲(chǔ)至隊(duì)列。
    • 從隊(duì)列中每拿出一個(gè)頂點(diǎn)后,再把與此頂點(diǎn)相鄰的其它頂點(diǎn)做為候選點(diǎn)存儲(chǔ)于隊(duì)列。
    • 不停重復(fù)上述過(guò)程,至到找到目標(biāo)頂點(diǎn)或隊(duì)列為空。

    使用廣度搜索到的路徑與候選節(jié)點(diǎn)進(jìn)入隊(duì)列的先后順序有關(guān)系。如第 1 步確定候選節(jié)點(diǎn)時(shí) B1 和 D3 誰(shuí)先進(jìn)入隊(duì)列,對(duì)于后面的查找也會(huì)有影響。

    上圖使用廣度搜索可找到 A0~E4 路徑是:

    • {A0,B1,D3,C2,E4}

    其實(shí) {A0,B1,C2,E4} 也是一條有效路徑,有可能搜索不出來(lái),這里因?yàn)樗阉鞯?B1 后不會(huì)馬上搜索 C2,因?yàn)?B3 先于 C2 進(jìn)入,廣度優(yōu)先搜索算法只能保證找到路徑,而不能保存找到最佳路徑。

    編碼實(shí)現(xiàn)廣度優(yōu)先搜索:

    廣度優(yōu)先搜索需要借助隊(duì)列臨時(shí)存儲(chǔ)選節(jié)點(diǎn),本文使用列表模擬隊(duì)列。

    在圖類(lèi)中實(shí)現(xiàn)廣度優(yōu)先搜索算法的方法:

    class Graph():# 省略其它代碼'''廣度優(yōu)先搜索算法'''def bfs(self, from_v, to_v):# 查找與 fv 相鄰的節(jié)點(diǎn)self.find_neighbor(from_v)# 臨時(shí)路徑lst_path = [from_v]# 重復(fù)條件:隊(duì)列不為空while len(self.queue_stack) != 0:# 從隊(duì)列中一個(gè)節(jié)點(diǎn)(模擬隊(duì)列)tmp_v = self.queue_stack.pop(0)# 添加到列表中lst_path.append(tmp_v)# 是不是目標(biāo)節(jié)點(diǎn)if tmp_v.v_id == to_v.v_id:self.searchPath.append(lst_path)print('找到一條路徑', [v_.v_id for v_ in lst_path])lst_path.pop()else:self.find_neighbor(tmp_v)'''查找某一節(jié)點(diǎn)的相鄰節(jié)點(diǎn),并添加到隊(duì)列(棧)中'''def find_neighbor(self, find_v):if find_v.visited:returnfind_v.visited = True# 找到保存 find_v 節(jié)點(diǎn)相鄰節(jié)點(diǎn)的列表lst = self.matrix[find_v.v_id]for idx in range(len(lst)):if lst[idx] != 0:# 權(quán)重不為 0 ,可判斷相鄰self.queue_stack.append(self.vert_list[idx])

    廣度優(yōu)先搜索過(guò)程中,需要隨時(shí)獲取與當(dāng)前節(jié)點(diǎn)相鄰的節(jié)點(diǎn),find_neighbor() 方法的作用就是用來(lái)把當(dāng)前節(jié)點(diǎn)的相鄰節(jié)點(diǎn)壓入隊(duì)列中。

    測(cè)試廣度優(yōu)先搜索算法:

    if __name__ == "__main__":# 初始化圖對(duì)象g = Graph(5)# 添加頂點(diǎn)for _ in range(len(g.matrix)):v_name = input("頂點(diǎn)的名稱(chēng)( q 為退出):")if v_name == 'q':breakv = Vertex(v_name)g.add_vertex(v)# 節(jié)點(diǎn)之間的關(guān)系infos = [(0, 1, 3), (0, 3, 5), (1, 2, 4), (2, 3, 6), (2, 4, 1), (3, 4, 2), (4, 1, 7)]for i in infos:v = g.find_vertex(i[0])v1 = g.find_vertex(i[1])g.add_edge(v, v1, i[2])print("----------- 廣度優(yōu)先路徑搜索--------------")f_v = g.find_vertex(0)t_v = g.find_vertex(4)g.bfs(f_v,t_v)'''輸出結(jié)果頂點(diǎn)的名稱(chēng)( q 為退出):A頂點(diǎn)的名稱(chēng)( q 為退出):B頂點(diǎn)的名稱(chēng)( q 為退出):C頂點(diǎn)的名稱(chēng)( q 為退出):D頂點(diǎn)的名稱(chēng)( q 為退出):E----------- 廣度優(yōu)先路徑搜索--------------找到一條路徑 [0, 1, 3, 2, 4]找到一條路徑 [0, 1, 3, 2, 3, 4]'''

    使用遞歸實(shí)現(xiàn)廣度優(yōu)先搜索算法:

    '''遞歸方式實(shí)現(xiàn)廣度搜索'''def bfs_dg(self, from_v, to_v):self.searchPath.append(from_v)if from_v.v_id != to_v.v_id:self.find_neighbor(from_v)if len(self.queue_stack) != 0:self.bfs_dg(self.queue_stack.pop(0), to_v)

    3.2 深度優(yōu)先搜索算法

    先看一下深度優(yōu)先算法的示意圖。

    深度優(yōu)先搜索算法與廣度優(yōu)先搜索算法不同之處:候選節(jié)點(diǎn)是放在棧中的。因棧是先進(jìn)后出,所以,搜索到的節(jié)點(diǎn)順序不一樣。

    使用循環(huán)實(shí)現(xiàn)深度優(yōu)先搜索算法:

    深度優(yōu)先搜索算法需要用到棧,本文使用列表模擬。

    '''深度優(yōu)先搜索算法使用棧存儲(chǔ)下一個(gè)需要查找的節(jié)點(diǎn)'''def dfs(self, from_v, to_v):# 查找與 from_v 相鄰的節(jié)點(diǎn)self.find_neighbor(from_v)# 臨時(shí)路徑lst_path = [from_v]# 重復(fù)條件:棧不為空while len(self.queue_stack) != 0:# 從棧中取一個(gè)節(jié)點(diǎn)(模擬棧)tmp_v = self.queue_stack.pop()# 添加到列表中lst_path.append(tmp_v)# 是不是目標(biāo)節(jié)點(diǎn)if tmp_v.v_id == to_v.v_id:self.searchPath.append(lst_path)print('找到一條路徑:', [v_.v_id for v_ in lst_path])lst_path.pop()else:self.find_neighbor(tmp_v)

    測(cè)試:

    if __name__ == "__main__":# 初始化圖對(duì)象g = Graph(5)# 添加頂點(diǎn)for _ in range(len(g.matrix)):v_name = input("頂點(diǎn)的名稱(chēng)( q 為退出):")if v_name == 'q':breakv = Vertex(v_name)g.add_vertex(v)# 節(jié)點(diǎn)之間的關(guān)系infos = [(0, 1, 3), (0, 3, 5), (1, 2, 4), (2, 3, 6), (2, 4, 1), (3, 4, 2), (4, 1, 7)]for i in infos:v = g.find_vertex(i[0])v1 = g.find_vertex(i[1])g.add_edge(v, v1, i[2])# 輸出頂點(diǎn)及邊aprint("-----------頂點(diǎn)與頂點(diǎn)關(guān)系--------------")g.find_vertexes()print("----------- 深度優(yōu)先路徑搜索--------------")f_v = g.find_vertex(0)t_v = g.find_vertex(4)g.dfs(f_v, t_v)'''輸出結(jié)果頂點(diǎn)的名稱(chēng)( q 為退出):A頂點(diǎn)的名稱(chēng)( q 為退出):B頂點(diǎn)的名稱(chēng)( q 為退出):C頂點(diǎn)的名稱(chēng)( q 為退出):D頂點(diǎn)的名稱(chēng)( q 為退出):E-----------頂點(diǎn)與頂點(diǎn)關(guān)系------------------------- 深度優(yōu)先路徑搜索--------------找到一條路徑: [0, 3, 4]找到一條路徑: [0, 3, 1, 2, 4]'''

    使用遞歸實(shí)現(xiàn)深度優(yōu)先搜索算法:

    '''遞歸實(shí)現(xiàn)深度搜索算法'''def def_dg(self, from_v, to_v):self.searchPath.append(from_v)if from_v.v_id != to_v.v_id:# 查找與 from_v 節(jié)點(diǎn)相連的子節(jié)點(diǎn)lst = self.find_neighbor_(from_v)if lst is not None:for tmp_v in lst[::-1]:self.def_dg(tmp_v, to_v)"""查找某一節(jié)點(diǎn)的相鄰節(jié)點(diǎn),以列表方式返回"""def find_neighbor_(self, find_v):if find_v.visited:returnfind_v.visited = True# 查找與 find_v 節(jié)點(diǎn)相鄰的節(jié)點(diǎn)lst = self.matrix[find_v.v_id]return [self.vert_list[idx] for idx in range(len(lst)) if lst[idx] != 0]

    遞歸實(shí)現(xiàn)時(shí),不需要使用全局棧,只需要獲到當(dāng)前節(jié)點(diǎn)的相鄰節(jié)點(diǎn)便可。

    4. 總結(jié)

    圖是一種很重要的數(shù)據(jù)結(jié)構(gòu),因這個(gè)世界中萬(wàn)事萬(wàn)物之間的關(guān)系并不是簡(jiǎn)單的你和我,我和你的關(guān)系,本質(zhì)都是錯(cuò)綜復(fù)雜的。

    圖能準(zhǔn)確的映射現(xiàn)實(shí)世界的這種錯(cuò)綜復(fù)雜關(guān)系,為計(jì)算機(jī)處理現(xiàn)實(shí)世界的問(wèn)題提供了可能,也拓展了計(jì)算機(jī)在現(xiàn)實(shí)世界的應(yīng)用領(lǐng)域。

    總結(jié)

    以上是生活随笔為你收集整理的Python 图_系列之基于邻接矩阵实现广度、深度优先路径搜索算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

    深爱五月激情五月 | av中文字幕第一页 | 色综合国产 | 日韩一区二区三区不卡 | 91精品视频免费看 | 91九色网站| 日韩有码中文字幕在线 | 久久一精品 | 国产一二区免费视频 | 久久精品波多野结衣 | 少妇性xxx| 九九热国产视频 | 青草视频在线看 | 国产精品福利一区 | 天天爱天天射 | 很污的网站 | 中文av在线免费观看 | 国内精品免费久久影院 | 九草视频在线观看 | 中文字幕黄色av | 超碰人人乐 | 瑞典xxxx性hd极品| 午夜视频一区二区三区 | 在线看黄色av | 97av在线视频免费播放 | 97在线观看免费视频 | 正在播放 国产精品 | 亚洲电影图片小说 | 伊人久久婷婷 | 丁香婷婷深情五月亚洲 | 日韩免费电影一区二区三区 | 国产精品99久久久久 | 国内揄拍国内精品 | 狠狠干夜夜操 | 日韩免费久久 | 91在线超碰 | 国产裸体视频bbbbb | 久久久久久黄 | 亚洲中字幕| 久久伊人八月婷婷综合激情 | 色婷婷综合五月 | 黄色精品视频 | 国产亚洲精品成人av久久影院 | 亚洲色图av| 天天综合久久综合 | 久久久www成人免费毛片麻豆 | 91精品国产高清自在线观看 | av中文字幕网 | 中文一区二区三区在线观看 | 久久这里| 国产在线自 | 国产精品久久久久久久99 | 超碰在线亚洲 | 日韩中文幕 | 天天插天天射 | 中文字幕国产在线 | 四虎国产免费 | 国产精品色婷婷 | 久久99精品国产 | 日韩在线观看一区二区 | 最新免费中文字幕 | 麻豆影视在线播放 | 天天夜夜亚洲 | 免费福利在线 | www久久九| 久久精品视频在线观看 | 碰碰影院 | 国产五月| 豆豆色资源网xfplay | 久久精品欧美一区二区三区麻豆 | 久久综合亚洲鲁鲁五月久久 | 久久9精品 | 91精品婷婷国产综合久久蝌蚪 | 奇米影视在线99精品 | 91在线porny国产在线看 | 国产激情久久久 | 成人av教育 | 2021国产在线视频 | 国产资源在线免费观看 | 国产在线美女 | 婷婷六月综合亚洲 | 久久精品免费电影 | 欧美 日韩 国产 成人 在线 | 成人国产精品av | 中文字幕在线影院 | 免费在线中文字幕 | 欧美一性一交一乱 | 精品欧美一区二区精品久久 | 91精品一区二区三区久久久久久 | 欧美日韩在线观看一区二区 | 成人一级片视频 | 色婷婷电影网 | 亚洲成a人片在线观看网站口工 | 国语黄色片 | www.com黄| 欧美精品一区二区免费 | 免费观看一级特黄欧美大片 | 亚洲jizzjizz日本少妇 | 欧洲精品一区二区 | 极品嫩模被强到高潮呻吟91 | 一区二区三区免费播放 | 久碰视频在线观看 | 91av视频播放 | 五月婷婷一区二区三区 | 一区二区三区精品在线视频 | 在线之家官网 | 高潮久久久久久 | 在线国产日本 | 99视频这里有精品 | 亚洲一区动漫 | 亚洲激情精品 | 日本精品小视频 | 日韩一区二区三区高清在线观看 | 欧美日韩啪啪 | 黄色在线观看污 | 国产精品成人久久久 | 波多野结衣电影一区二区三区 | 五月天九九 | 国产主播99 | 国产精品一区二区果冻传媒 | 最近高清中文字幕 | 日韩精品视频在线免费观看 | 国产美女免费看 | 欧美性直播 | 国产无套视频 | 激情丁香综合 | 天天干天天做天天操 | 黄色app网站在线观看 | 日韩a免费 | 亚洲激情p | 亚洲国产伊人 | 麻豆视频国产在线观看 | 久久综合狠狠 | 亚洲精品在线视频播放 | 日韩一区二区三区高清在线观看 | 少妇精品久久久一区二区免费 | 最近最新中文字幕 | 久久久天堂 | 午夜在线国产 | 日本成址在线观看 | 玖玖视频网 | 午夜影视剧场 | 丁香电影小说免费视频观看 | 亚洲综合少妇 | 成人性生交大片免费看中文网站 | 国产不卡在线看 | 欧美成年人在线视频 | 手机在线看永久av片免费 | 激情视频91 | 97偷拍视频| 国产第一页在线播放 | 久热色超碰 | 亚洲精品乱码久久久久久蜜桃动漫 | 成人av免费网站 | 亚洲黄色在线 | 伊人五月综合 | 日韩在线免费视频观看 | 福利视频一区二区 | 成人av电影在线播放 | 久久九九精品久久 | 久九视频| 国产成人亚洲精品自产在线 | 欧美日韩成人 | 精品成人a区在线观看 | 91黄色免费网站 | 亚洲精品乱码白浆高清久久久久久 | 91亚·色| 午夜视频一区二区三区 | 婷婷av在线| 免费视频a | 五月天狠狠操 | 操一草| 亚洲精品裸体 | 99久久精品费精品 | 久久国产精品99久久人人澡 | 国产做aⅴ在线视频播放 | av在线收看 | 日韩试看 | 久久艹影院 | 在线视频观看国产 | 国产亚洲精品无 | 麻豆成人精品视频 | 欧美日本啪啪无遮挡网站 | 人人干网站 | 国产精品网红直播 | 亚洲日本在线视频观看 | 国产在线第三页 | 高清久久久久久 | 天天操伊人 | 在线观看亚洲a | 欧美一级性视频 | 精品国模一区二区 | 国偷自产中文字幕亚洲手机在线 | 久久成人国产精品 | 国产亚洲精品av | 99这里都是精品 | 日韩欧美精品免费 | www.国产高清 | 久久久久久免费网 | 中文字幕免费播放 | 丝袜美腿亚洲综合 | av在线播放中文字幕 | 色婷婷狠狠操 | 免费看片成年人 | 久久99久久99 | 欧美xxxxx在线视频 | 手机在线小视频 | 久久久资源 | 欧美精品v国产精品v日韩精品 | www久 | 国产精品久久久久久久久久久不卡 | 91九色网站 | 97精品超碰一区二区三区 | 中文字幕刺激在线 | 在线播放国产一区二区三区 | 日女人免费视频 | 久久婷婷一区二区三区 | 成人久久毛片 | 日韩免费一区二区三区 | 成年人视频免费在线 | 二区三区精品 | 免费看一及片 | 久视频在线| 国产精品久久久久国产a级 激情综合中文娱乐网 | 久久成人欧美 | 国产精品视频免费观看 | 手机看片中文字幕 | 波多野结衣电影一区二区 | 成年人免费电影在线观看 | 国精产品999国精产品视频 | 一本色道久久精品 | 国产精品久久久久免费 | 首页av在线 | 麻豆一精品传二传媒短视频 | 亚州国产精品久久久 | 精品国产免费看 | 欧美性大战 | 中文av在线天堂 | 最新国产在线视频 | zzijzzij亚洲成熟少妇 | 99视频偷窥在线精品国自产拍 | 国产精品自在线 | 久久精品999| 视频二区在线视频 | 九九久久久 | 亚洲午夜av | 日韩av资源站 | 久久综合久久综合久久综合 | 成人免费av电影 | 黄色www在线观看 | 狠狠干夜夜爱 | 99久久精品国产免费看不卡 | 日韩av资源在线观看 | 中文字幕资源在线 | 久久免费精品视频 | 在线免费视频一区 | 日韩精品无码一区二区三区 | 91香蕉国产在线观看软件 | 四虎永久视频 | 亚洲韩国一区二区三区 | 日本精品中文字幕在线观看 | 亚洲精品久久久蜜臀下载官网 | 久久成人一区 | 久久综合欧美精品亚洲一区 | 国产一级91| 久久久久国产精品www | 91九色视频观看 | 亚洲成人家庭影院 | 三上悠亚一区二区在线观看 | 久久久精品小视频 | 久久久久麻豆 | 久草干| 亚洲国产手机在线 | 久久久av电影 | 亚洲精品456在线播放第一页 | 亚洲专区中文字幕 | 欧美色伊人 | 亚洲精品伦理在线 | avlulu久久精品 | 在线日韩三级 | 中文在线亚洲 | 日韩欧美在线播放 | 日韩在线观看小视频 | 最近日本韩国中文字幕 | 欧美日韩国产一区 | 日日干网址 | 久久色在线观看 | 天天操天天综合网 | 国产黄色网 | 99免费在线播放99久久免费 | 国产手机在线观看 | 精品久久一区二区 | 天天透天天插 | 91看片在线看片 | 激情视频久久 | www.成人久久 | 亚洲欧美视频一区二区三区 | 色婷婷av一区二 | 国产高清免费在线观看 | 精品一区二区在线免费观看 | 丁香av在线 | 久久精品美女视频网站 | 一区二区三区www | 国产精品久久久久免费 | 五月天电影免费在线观看一区 | 国产v亚洲v| 中文字幕在线日 | 国产精品成人自产拍在线观看 | 亚洲激情视频在线观看 | 国内精品免费 | 人人爽人人舔 | 亚洲欧美日韩一区二区三区在线观看 | 99在线观看免费视频精品观看 | 中文字幕91视频 | 国产成人一区二区精品非洲 | 中文字幕久久亚洲 | 国产精品美女久久久久久久久 | 91精品国产高清自在线观看 | 国产精品一区二区av影院萌芽 | 欧美在线aa| 91麻豆免费视频 | 亚洲精品婷婷 | 久久国产精品免费看 | 99色视频在线 | 日韩av女优视频 | 国产精品一区专区欧美日韩 | 99热精品国产 | 久久香蕉电影网 | 97人人澡人人添人人爽超碰 | 韩日精品在线 | 日韩av成人在线观看 | 在线v片 | 中文字幕日韩av | 国产日产高清dvd碟片 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 成人免费在线视频 | 在线观看成人小视频 | 五月婷婷久 | 精品久久久久_ | 91系列在线观看 | 超碰日韩在线 | 97精品国产91久久久久久久 | 亚洲精品国久久99热 | 国产一区二区中文字幕 | 久久久精品网 | 日韩精品一区二区在线视频 | 三级黄色大片在线观看 | 500部大龄熟乱视频使用方法 | 国内精品久久久久影院日本资源 | 欧美亚洲三级 | av日韩中文 | 婷婷网五月天 | 青青河边草手机免费 | 午夜av一区二区三区 | 高清av不卡| www.夜色.com | 一区二区三区电影在线播 | 爱干视频 | 91免费网站在线观看 | 午夜 久久 tv| 久久国产精品久久精品国产演员表 | 青春草视频在线播放 | 人人草人人草 | 国产在线看一区 | 免费毛片一区二区三区久久久 | 欧美日韩在线观看一区二区三区 | 色婷婷国产在线 | 久久久久美女 | 婷婷五月色综合 | 欧美日韩在线免费观看视频 | 久久最新 | 日韩欧美区 | 国产精品高清在线观看 | 永久免费av在线播放 | 99视频在线免费 | 干亚洲少妇 | 最新超碰在线 | 久草视频中文在线 | 亚洲欧美日本一区二区三区 | 免费av片在线 | www久久99 | 久青草电影 | 91福利视频在线 | 国产亚洲欧美一区 | 亚洲精品国产精品国自产观看浪潮 | 久久久久久久久电影 | 久久资源总站 | www.天堂av | 日韩精品一区二区三区外面 | 色橹橹欧美在线观看视频高清 | av三区在线 | 久久艹在线观看 | 亚洲九九精品 | 久久精品婷婷 | 狠狠干狠狠操 | 99在线热播精品免费 | av免费看在线 | 国产精品久久久久久久免费大片 | 91在线中文字幕 | 特级毛片在线免费观看 | 亚洲香蕉在线观看 | 91人人澡人人爽 | 人人看人人爱 | 欧美日韩高清一区二区 国产亚洲免费看 | 狠狠88综合久久久久综合网 | 美女网站视频免费都是黄 | 日日夜夜天天人人 | 成 人 黄 色 视频免费播放 | 成人激情开心网 | 91中文字幕| 亚洲精品国产精品国自产 | 免费日韩av片 | 天天摸天天操天天爽 | 欧美成年黄网站色视频 | 中文字幕在线观看第二页 | 免费av 在线 | 欧美日韩国产精品爽爽 | 国产精品九九久久久久久久 | 91久久精品一区 | 日韩特黄一级欧美毛片特黄 | 精品美女久久久久 | 91精品久久久久久 | 亚洲午夜在线视频 | 日韩视频1区| 中文字幕一区三区 | 丰满少妇一级片 | 伊人五月在线 | 在线国产中文字幕 | 成人av在线网 | 久久免费av | 国产成人一区二区三区 | www免费网站在线观看 | 亚洲一二三区精品 | 亚洲成人家庭影院 | 午夜精品一区二区三区在线播放 | 福利一区在线视频 | 成人午夜影院 | 色婷婷激情综合 | 少妇18xxxx性xxxx片 | 中文字幕色婷婷在线视频 | 国产黄色片免费 | 国产91免费观看 | 国产裸体永久免费视频网站 | 在线国产小视频 | 亚洲自拍偷拍色图 | 欧美激情视频在线观看免费 | 国产一区二区三区免费观看视频 | 天天撸夜夜操 | 午夜视频在线瓜伦 | 黄色在线观看网站 | 色网站免费在线看 | 亚洲乱亚洲乱妇 | 丁香在线视频 | 中文字幕综合在线 | 日韩视频免费看 | 友田真希x88av | 麻豆一精品传二传媒短视频 | 免费黄色在线播放 | 99精品视频网 | 日韩成人精品一区二区三区 | 国产精品成人aaaaa网站 | 精品日韩在线一区 | 亚洲色图色 | 国产精品免费视频久久久 | 欧美日韩一区二区在线 | 一区二区三区免费在线观看视频 | 久久免费视频1 | 欧美久久久久久久久久久久久 | 婷婷在线播放 | 免费观看一级 | 最新日本中文字幕 | 国产精品久久久久久高潮 | 国产精品视频免费观看 | 精品uu | 91精品蜜桃| 国产69久久久| 久草久草在线 | 日韩免费在线观看 | 婷婷丁香花五月天 | 91网页版在线观看 | 久久久九色精品国产一区二区三区 | 日韩三级.com | 久久久久二区 | 国产免费观看久久黄 | 国产三级久久久 | 九九免费精品视频在线观看 | 国产精品免费久久久久久久久久中文 | 欧美成a人片在线观看久 | 成人在线一区二区三区 | 夜夜嗨av色一区二区不卡 | 国产一区电影在线观看 | 亚洲综合一区二区精品导航 | 在线视频欧美精品 | 在线观看视频在线观看 | 欧美精品亚洲精品日韩精品 | 天天插日日射 | 日日干美女 | 精品一区二区在线免费观看 | 欧美精品在线观看免费 | 国产99久久久精品 | 五月天综合网站 | 日b视频在线观看网址 | 中文字幕观看av | 欧美 日韩 视频 | 黄色免费av | 日韩在线观看网站 | 亚洲影视资源 | 成年人网站免费在线观看 | 成人在线中文字幕 | 欧美精品乱码久久久久 | 久久精品视频日本 | 中文字幕在线观看免费观看 | 亚洲电影图片小说 | 在线激情影院一区 | 亚洲精品视频在线观看免费 | 91成人短视频在线观看 | av免费黄色| 国产va饥渴难耐女保洁员在线观看 | www黄com | 国产黄在线观看 | 久久久久成| 国产真实精品久久二三区 | 成人av在线资源 | 国产一区在线播放 | 91超国产| 国产毛片久久 | 免费日韩 精品中文字幕视频在线 | www色综合 | 国产精品久久久久久超碰 | 亚洲综合色激情五月 | av中文字幕在线观看网站 | 中文在线资源 | 国内揄拍国产精品 | 午夜av电影 | 欧美va电影 | 在线观看国产中文字幕 | 黄色精品一区二区 | 色午夜影院 | 99视频在线免费 | 国产精品99久久免费观看 | 欧美激情亚洲综合 | 福利区在线观看 | 久草在线电影网 | 在线视频观看成人 | 亚洲美女视频网 | 97视频中文字幕 | 高清精品久久 | 人人草在线视频 | 国产专区一 | 日日操夜夜操狠狠操 | 中文字幕在线影视资源 | 久久成人综合视频 | 一区二区三区免费在线 | 精品亚洲视频在线 | 亚洲资源网 | 丝袜+亚洲+另类+欧美+变态 | 久久久久久99精品 | 久久99精品国产麻豆宅宅 | 日韩av片无码一区二区不卡电影 | 午夜久久成人 | 高清一区二区三区 | 久久久久久久电影 | 亚洲 欧美 日韩 综合 | 97久久精品午夜一区二区 | av大全免费在线观看 | 国产一区二区三区在线免费观看 | 成人精品亚洲 | 精品免费一区二区三区 | 六月丁香婷婷网 | 国产丝袜美腿在线 | 国产精品18久久久久vr手机版特色 | 婷婷久久五月 | 日日夜夜免费精品 | 黄色免费网站大全 | 激情视频免费在线 | 亚洲成av| 久久综合亚洲鲁鲁五月久久 | www.com黄| 日韩在线高清 | 91久久精品日日躁夜夜躁国产 | 国产精品v a免费视频 | 国产精品女人网站 | av千婊在线免费观看 | 97精品久久人人爽人人爽 | 成人h在线播放 | 一区二区在线不卡 | 精品视频网站 | 丁香网婷婷 | 狠狠色伊人亚洲综合网站野外 | 久久国产a | 成人影片在线播放 | 精品国产亚洲在线 | 天天干,狠狠干 | 三级黄色大片在线观看 | 婷婷六月丁香激情 | 欧美另类美少妇69xxxx | 久久婷婷色综合 | 国产传媒中文字幕 | 国产成人一区二区精品非洲 | 成人网大片| 免费在线观看的av网站 | 五月婷婷国产 | 国产亚洲精品美女久久 | 久草在线免费资源站 | 免费亚洲黄色 | 亚洲色图美腿丝袜 | 成在人线av | 午夜丁香网 | 精品国产伦一区二区三区观看方式 | 国产黄色片在线 | 色a在线观看 | 欧美极品一区二区三区 | 少妇bbbb| 高清久久久 | 国产免码va在线观看免费 | 热久在线 | 人人草在线观看 | 综合色在线观看 | 麻豆播放 | 国产亚洲精品久久久久动 | 亚洲桃花综合 | 成人av电影在线 | 最近中文字幕大全 | 一区二区三区四区免费视频 | 午夜精品久久久久99热app | 国产精品精品 | 国产精品扒开做爽爽的视频 | 亚洲综合欧美日韩狠狠色 | 黄网站色成年免费观看 | 亚洲在线免费视频 | av理论电影 | 国产精品一码二码三码在线 | 国产午夜精品一区二区三区四区 | 黄色片视频在线观看 | av中文电影 | 人人玩人人添人人 | 日韩在线精品一区 | 欧美国产日韩在线视频 | av在线免费在线观看 | 91精品视频一区 | 天天操天天干天天干 | 国产福利91精品一区二区三区 | 99精品在线看 | 日韩大片在线观看 | 免费手机黄色网址 | 99精品视频在线播放观看 | 国产精品成人一区二区三区吃奶 | 97成人精品视频在线播放 | 在线成人一区二区 | 97色婷婷| 中文字幕日韩无 | 国产精品毛片一区二区 | 狠狠色狠狠色综合日日小说 | 国产一级淫片在线观看 | 中文字幕色在线视频 | 精品久久久久久综合 | 五月婷婷一区二区三区 | 欧美精品一二三 | 国产91aaa | 韩国精品一区二区三区六区色诱 | 国产最新网站 | 日本亚洲国产 | 啪啪免费试看 | 日本在线观看视频一区 | 免费观看一级一片 | 国产精品毛片久久久久久久 | 精品在线播放视频 | 欧美黄色免费 | 亚洲一区二区三区毛片 | 免费观看性生交 | 国产精品11 | 久久黄页 | 国产精品久久久久久久久蜜臀 | 在线91观看 | 91欧美精品 | 国产高清精品在线观看 | 久久免费视频2 | 亚洲精品久久久久999中文字幕 | 91成人精品一区在线播放69 | 国产一二三四在线观看视频 | 欧美成人影音 | 韩国av免费| 久久91网| 99久久99热这里只有精品 | 亚洲国产精品日韩 | 91视频专区 | 国产在线播放观看 | 欧美一级日韩免费不卡 | 久久免费视频精品 | 爱爱av在线| 国产一级电影 | 黄色小说在线观看视频 | wwwwwww色| 18国产精品福利片久久婷 | 深爱五月激情五月 | 欧美日韩精品网站 | 日韩三级视频在线看 | 久久综合久久综合久久综合 | 亚洲天堂视频在线 | 一区三区视频在线观看 | 国产一级片免费观看 | 中文字幕在线视频第一页 | 特级毛片在线免费观看 | 亚洲一区二区视频在线播放 | 国产男女无遮挡猛进猛出在线观看 | 精品一区二区三区电影 | 91在线播 | 国产在线传媒 | 久艹在线免费观看 | 久久丁香网 | 玖玖玖在线观看 | 伊人精品在线 | av一级片在线观看 | 国产三级在线播放 | 黄p在线播放| 亚洲精品1区2区3区 超碰成人网 | 国产精品破处视频 | 亚洲国产精品推荐 | 国产精品久久伊人 | 日韩视频一区二区在线 | 人人爽人人舔 | 日韩免费中文字幕 | 黄色免费高清视频 | 国产韩国日本高清视频 | 日韩欧美视频在线播放 | 日韩免费视频线观看 | 中文国产在线观看 | 久久国产精品免费看 | 日韩在线观看一区二区 | 在线观看国产亚洲 | 国产精品va视频 | 亚洲激色 | 日韩欧美在线第一页 | 日本精品视频一区二区 | 亚洲 欧洲 国产 日本 综合 | 久久久亚洲网站 | 日本中文字幕免费观看 | 中文字幕免费国产精品 | 黄色大片中国 | 亚洲第一中文网 | 超碰97公开 | 黄色影院在线观看 | 激情婷婷久久 | 国产中文在线观看 | 九色自拍视频 | 亚洲爱爱视频 | 美女黄频在线观看 | 懂色av一区二区三区蜜臀 | 亚洲午夜不卡 | 一区二区三区 亚洲 | 亚洲综合少妇 | 中文字幕在线不卡国产视频 | 亚洲91视频 | 欧美日韩视频在线 | 亚洲欧洲精品一区二区 | 在线观看中文 | 久久久精品久久日韩一区综合 | 玖玖在线视频观看 | 国产一级不卡视频 | 亚洲激情六月 | 成人毛片100免费观看 | 涩涩成人在线 | 在线观看免费中文字幕 | 久久曰视频 | 欧美a在线免费观看 | 久久尤物电影视频在线观看 | 伊在线视频 | 亚洲国产剧情av | 亚洲午夜久久久影院 | 久久全国免费视频 | 久久久在线免费观看 | 丁香 婷婷 激情 | 精品1区2区3区 | 亚洲精品xxx | 欧洲av不卡| 日韩国产欧美在线视频 | av先锋影音少妇 | 久草网站在线 | 成人av免费看 | 国产96在线 | 国产精品99久久久久久武松影视 | 婷婷丁香导航 | 国产伦精品一区二区三区在线 | 久久免费视频8 | 在线观看视频h | 在线看黄色av | 亚洲欧洲在线视频 | 欧美日韩aaaa | 在线成人一区 | 肉色欧美久久久久久久免费看 | 久久国产三级 | 国产在线观看免费观看 | 99精品偷拍视频一区二区三区 | 日韩免费看 | 黄色高清视频在线观看 | 国产综合精品一区二区三区 | 操操碰 | 69精品视频 | av黄色av | 欧美亚洲成人xxx | 亚洲一区二区三区在线看 | 五月婷香蕉久色在线看 | 黄色aa久久 | 欧美日韩免费观看一区二区三区 | 国产一区二区久久久 | 欧洲激情在线 | 欧美日韩国产mv | av短片在线 | 91在线视频观看免费 | 99国产精品免费网站 | 日本精品久久久久影院 | 免费一级毛毛片 | 国产在线观看,日本 | 992tv在线观看 | 久久久国产精品一区二区三区 | 久久另类小说 | 国产精品久久久久久久久久久久冷 | 欧美在线不卡一区 | 久久成人午夜视频 | 久久综合狠狠狠色97 | 天天操天 | 亚洲区精品 | 欧美精品v国产精品v日韩精品 | 99热最新 | 九九精品久久久 | 日本中文字幕网址 | 91精品一区国产高清在线gif | 91精品综合在线观看 | 免费人成网 | 91热| 九九亚洲精品 | 999在线视频 | 日韩久久一区 | 水蜜桃亚洲一二三四在线 | av三级在线免费观看 | 操一草| 亚洲成年人免费网站 | 久久字幕精品一区 | 中文字幕免费不卡视频 | av亚洲产国偷v产偷v自拍小说 | 天天爱天天操天天干 | 国语精品免费视频 | 天天综合视频在线观看 | 天堂av在线网站 | 亚洲a免费| 99久久精品国产一区二区成人 | 亚洲日韩欧美视频 | 成人观看 | 国产精品精品国产色婷婷 | av午夜电影| 最新超碰 | 四虎影视www | 超碰大片| 国产专区欧美专区 | 日本中文字幕免费观看 | 日本少妇视频 | 8x成人免费视频 | 狠狠色狠狠色合久久伊人 | 久久爱影视i | 欧美怡红院 | 国产成人a亚洲精品v | 久草免费在线观看视频 | 国产一级小视频 | 欧美精品久久久久久 | 国产欧美精品在线观看 | 手机在线日韩视频 | 伊人婷婷激情 | 中文字幕综合在线 | 在线观看日韩专区 | 成人网页在线免费观看 | 国产精品美乳一区二区免费 | 超碰97在线人人 | www.国产在线视频 | 亚洲精品小视频 | 欧美成年网站 | 色综合激情久久 | 午夜精品中文字幕 | 黄网站免费看 | 99久久夜色精品国产亚洲96 | 亚洲欧洲精品一区二区精品久久久 | 男女啪啪免费网站 | 欧美日韩国产综合一区二区 | 91高清一区 | 国产黄在线 | 成人精品视频久久久久 | 婷婷丁香狠狠爱 | 超碰在97| 亚洲一区二区观看 | 天天操偷偷干 | 久久久久久蜜av免费网站 | 免费精品视频在线观看 | 欧美精品乱码久久久久久 | 91热爆视频| 五月婷婷中文网 | 国产精品女主播一区二区三区 | 久久国产成人午夜av影院宅 | 欧美精品久 | 国产一级做a爱片久久毛片a | 欧美韩国日本在线 | 久久香蕉一区 | 人人爽人人澡人人添人人人人 | 国产精品久久久99 | 中中文字幕av | 久草青青在线观看 | 一区二区伦理电影 | 日韩精品一区二区三区视频播放 | 一本一道久久a久久综合蜜桃 | 超碰97在线人人 | 欧美久久电影 | 日本中文字幕影院 | 中文字幕高清在线播放 | 91激情小视频 | 99这里都是精品 | 亚洲成人影音 | 亚洲精品一区二区在线观看 | 成人黄在线 | 精品久久国产 | 国产又粗又猛又色又黄网站 | 国产黑丝袜在线 | 婷婷色站| 色综合国产 | 亚洲一级电影 | 日韩一级片网址 | 精品专区一区二区 | 久草精品资源 | 在线91播放 | 成人黄色在线 | 国产不卡视频在线 | 天天爱天天爽 | 国产精品成人av在线 | 成年人在线看片 | 成人av免费 | 久久久久久久久久网站 | 国产精品不卡视频 | av网站大全免费 | 日本久热| av一本久道久久波多野结衣 | 99久视频 | 亚洲精品午夜一区人人爽 | 久久久久久网 | 91天天操| 国产精品久久久久永久免费 | 久久伊人热 | 婷婷五天天在线视频 | 国产在线1区| 天天拍天天色 | 成人亚洲免费 | 久久久久国产a免费观看rela | 色在线最新 | 成片免费观看视频999 | 中文字幕av全部资源www中文字幕在线观看 | 久久99视频精品 | 日本黄色免费播放 | 国内小视频在线观看 | av中文字幕在线电影 | 中文字幕免费高清在线 | 在线观看免费av网站 | 高清av影院| 最近乱久中文字幕 | 91夫妻视频 | 99 色| 日韩欧美视频一区二区三区 | 久久免费国产视频 | 中文字幕视频一区 | 午夜影视剧场 | 白丝av免费观看 | 国产探花在线看 | www国产亚洲精品 | 五月婷婷激情 | av官网| 91成人精品一区在线播放69 | 91最新国产 | 99久免费精品视频在线观看 | 日韩av免费观看网站 | 久久视频这里有精品 | 香蕉在线观看 | 久草在线手机观看 | 色开心| 99久久精品国产欧美主题曲 | 亚洲欧美怡红院 | 亚洲人成网站精品片在线观看 | 成人在线网站观看 | 又污又黄的网站 | 日韩av在线免费看 | 亚洲爱爱视频 | 激情伊人五月天 | 久久精品国产精品亚洲 | 91免费黄视频| 国产精品中文久久久久久久 | 国产在线观看你懂得 | 涩涩资源网| 欧美精品少妇xxxxx喷水 | 国产精品视频全国免费观看 | 中文字幕之中文字幕 | 日韩黄色av网站 | 91av美女| 全黄色一级片 | 亚洲精品中文在线资源 |