欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

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

# -*- 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+'鄰接點(diǎn)為'+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)文章

  • Python input函數(shù)使用實(shí)例解析

    Python input函數(shù)使用實(shí)例解析

    這篇文章主要介紹了Python input函數(shù)使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • python3射線法判斷點(diǎn)是否在多邊形內(nèi)

    python3射線法判斷點(diǎn)是否在多邊形內(nèi)

    這篇文章主要為大家詳細(xì)介紹了python3射線法判斷點(diǎn)是否在多邊形內(nèi),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python線程問題與解決方案

    Python線程問題與解決方案

    在 Python 中,線程的使用可以有效提高程序的并發(fā)性和響應(yīng)能力,尤其是在 I/O 密集型任務(wù)(如文件讀寫、網(wǎng)絡(luò)請求)中,然而,線程在 Python 中也會引發(fā)一些常見問題,下面介紹 Python 線程問題的解決方案,需要的朋友可以參考下
    2024-09-09
  • Python實(shí)現(xiàn)求兩個數(shù)組交集的方法示例

    Python實(shí)現(xiàn)求兩個數(shù)組交集的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)求兩個數(shù)組交集的方法,涉及Python數(shù)組遍歷、排序、判斷、追加等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • Matplotlib繪圖基礎(chǔ)之配置參數(shù)詳解

    Matplotlib繪圖基礎(chǔ)之配置參數(shù)詳解

    Matplotlib?提供了大量配置參數(shù),這些參數(shù)可以但不限于讓我們從整體上調(diào)整通過?Matplotlib?繪制的圖形樣式,下面我們就來看看如何巧妙的運(yùn)用這些參數(shù)吧
    2023-08-08
  • Python經(jīng)典五人分魚實(shí)例講解

    Python經(jīng)典五人分魚實(shí)例講解

    在本篇文章里小編給大家分享的是一篇關(guān)于Python 五人分魚的經(jīng)典小游戲?qū)嵗齼?nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • python 多進(jìn)程和協(xié)程配合使用寫入數(shù)據(jù)

    python 多進(jìn)程和協(xié)程配合使用寫入數(shù)據(jù)

    這篇文章主要介紹了python 多進(jìn)程和協(xié)程配合使用寫入數(shù)據(jù),幫助大家利用python高效辦公,感興趣的朋友可以了解下
    2020-10-10
  • pytorch中的named_parameters()和parameters()

    pytorch中的named_parameters()和parameters()

    這篇文章主要介紹了pytorch中的named_parameters()和parameters()使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python scikit-learn 做線性回歸的示例代碼

    Python scikit-learn 做線性回歸的示例代碼

    本篇文章主要介紹了Python scikit-learn 做線性回歸的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 在Django的View中使用asyncio的方法

    在Django的View中使用asyncio的方法

    這篇文章主要介紹了在Django的View中使用asyncio的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評論