最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python深度優(yōu)先搜索和廣度優(yōu)先搜索

 更新時間:2018年02月07日 10:50:55   作者:chuangshishen0  
這篇文章主要介紹了python實現(xiàn)圖的深度優(yōu)先搜索和廣度優(yōu)先搜索相關(guān)知識點,對此有興趣的朋友學(xué)習(xí)下。

1. 深度優(yōu)先搜索介紹

圖的深度優(yōu)先搜索(Depth First Search),和樹的先序遍歷比較類似。

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

顯然,深度優(yōu)先搜索是一個遞歸的過程。

2. 廣度優(yōu)先搜索介紹

廣度優(yōu)先搜索算法(Breadth First Search),又稱為"寬度優(yōu)先搜索"或"橫向優(yōu)先搜索",簡稱BFS。

它的思想是:從圖中某頂點v出發(fā),在訪問了v之后依次訪問v的各個未曾訪問過的鄰接點,然后分別從這些鄰接點出發(fā)依次訪問它們的鄰接點,并使得“先被訪問的頂點的鄰接點先于后被訪問的頂點的鄰接點被訪問,直至圖中所有已被訪問的頂點的鄰接點都被訪問到。如果此時圖中尚有頂點未被訪問,則需要另選一個未曾被訪問過的頂點作為新的起始點,重復(fù)上述過程,直至圖中所有頂點都被訪問到為止。

換句話說,廣度優(yōu)先搜索遍歷圖的過程是以v為起點,由近至遠(yuǎn),依次訪問和v有路徑相通且路徑長度為1,2...的頂點。

# -*- coding: utf-8 -*-
"""
Created on Wed Sep 27 00:41:25 2017
@author: my
"""
from collections import OrderedDict
class graph:
 nodes=OrderedDict({})#有序字典
 def toString(self):
 for key in self.nodes:
 print key+'鄰接點為'+str(self.nodes[key].adj) 
 def add(self,data,adj,tag):
 n=Node(data,adj)
 self.nodes[tag]=n
 
 for vTag in n.adj:
 if self.nodes.has_key(vTag) and tag not in self.nodes[vTag].adj:
 self.nodes[vTag].adj.append(tag)
 visited=[]
 def dfs(self,v):
 if v not in self.visited:
 self.visited.append(v)
 print v
 for adjTag in self.nodes[v].adj:
 self.dfs(adjTag)
 visited2=[]
 def bfs(self,v): 
 queue=[]
 queue.insert(0,v)
 self.visited2.append(v)
 while(len(queue)!=0):
 top=queue[len(queue)-1]
 for temp in self.nodes[top].adj:
 if temp not in self.visited2:
  self.visited2.append(temp)
  queue.insert(0,temp)
 print top
 queue.pop()
class Node:
 data=0
 adj=[]
 def __init__(self,data,adj):
 self.data=data
 self.adj=adj
g=graph()
g.add(0,['e','c'],'a')
g.add(0,['a','g'],'b')
g.add(0,['a','e'],'c')
g.add(0,['a','f'],'d')
g.add(0,['a','c','f'],'e')
g.add(0,['d','g','e'],'f')
g.add(0,['b','f'],'g')
g.toString()
print '深度優(yōu)先遍歷的結(jié)構(gòu)為'
g.dfs('c')
print '廣度優(yōu)先遍歷的結(jié)構(gòu)為'
g.bfs('c')

相關(guān)文章

  • python3 實現(xiàn)的對象與json相互轉(zhuǎn)換操作示例

    python3 實現(xiàn)的對象與json相互轉(zhuǎn)換操作示例

    這篇文章主要介紹了python3 實現(xiàn)的對象與json相互轉(zhuǎn)換操作,結(jié)合實例形式分析了Python3使用json模塊針對json格式數(shù)據(jù)轉(zhuǎn)換操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-08-08
  • python數(shù)據(jù)結(jié)構(gòu)之鏈表的實例講解

    python數(shù)據(jù)結(jié)構(gòu)之鏈表的實例講解

    下面小編就為大家?guī)硪黄猵ython數(shù)據(jù)結(jié)構(gòu)之鏈表的實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Python的強(qiáng)大HTTP庫Requests基本使用

    Python的強(qiáng)大HTTP庫Requests基本使用

    這篇文章主要為大家介紹了Python的強(qiáng)大HTTP庫Requests基本使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)實現(xiàn)

    python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)的實現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Python實現(xiàn)合并多個Excel文件中的指定sheet

    Python實現(xiàn)合并多個Excel文件中的指定sheet

    這篇文章主要為大家介紹了一個用于合并多個Excel文件中指定sheet的Python代碼,這個功能可以方便地整理和分析數(shù)據(jù),文中的示例代碼簡潔易懂,需要的可以參考下
    2023-10-10
  • Python統(tǒng)計字符串中英文字母、空格、數(shù)字和其它字符的個數(shù)

    Python統(tǒng)計字符串中英文字母、空格、數(shù)字和其它字符的個數(shù)

    這篇文章主要給大家介紹了關(guān)于Python統(tǒng)計字符串中英文字母、空格、數(shù)字和其它字符的個數(shù)的相關(guān)資料,本文實例講述了python統(tǒng)計字符串中指定字符出現(xiàn)次數(shù)的方法,需要的朋友可以參考下
    2023-06-06
  • Python代碼實現(xiàn)一個AI多站點搜索神器

    Python代碼實現(xiàn)一個AI多站點搜索神器

    在人工智能快速發(fā)展的今天,我們經(jīng)常需要在多個AI平臺上嘗試同一個提示詞,每次復(fù)制粘貼真的很麻煩,所以本文就來使用Python打造一個AI多站點搜索神器吧
    2025-03-03
  • 使用python提取PowerPoint中的音頻和視頻

    使用python提取PowerPoint中的音頻和視頻

    將多種格式的媒體內(nèi)容進(jìn)行重新利用(如PowerPoint演示中的音頻和視頻)是非常有價值的,從演示文稿中提取這些媒體文件可以為多媒體內(nèi)容的多次使用提供更大的靈活性,本文將演示如何使用Python從PowerPoint演示文稿中提取音頻和視頻,需要的朋友可以參考下
    2024-09-09
  • python makedirs() 遞歸創(chuàng)建目錄

    python makedirs() 遞歸創(chuàng)建目錄

    os.makedirs()函數(shù)用于在Python中遞歸地創(chuàng)建目錄,支持設(shè)置權(quán)限和處理目錄已存在的情況,下面就來具體介紹一下,感興趣的可以了解一下
    2024-12-12
  • Python?Numpy庫的超詳細(xì)教程

    Python?Numpy庫的超詳細(xì)教程

    Numpy庫是Python中的一個科學(xué)計算庫,本文主要介紹了ndarray的基本操作、?ndarray運算等各種Numpy庫的超詳細(xì)教程,需要的朋友可以參考下
    2022-04-04

最新評論

宁都县| 阜宁县| 成武县| 寿宁县| 泸定县| 安义县| 视频| 天津市| 禄丰县| 理塘县| 余干县| 东港市| 永昌县| 金阳县| 喀喇沁旗| 辽阳县| 湟源县| 宝兴县| 望奎县| 岑溪市| 罗平县| 广西| 佛坪县| 台中县| 太谷县| 赤峰市| 三亚市| 潜江市| 德庆县| 勐海县| 台东市| 铜川市| 贵德县| 宝兴县| 无棣县| 周宁县| 维西| 元阳县| 绵竹市| 隆回县| 吉林市|