python判断无向图环是否存在的示例

yipeiwu_com6年前Python基础

暂时是一个手动设置无向图中的边,用一个二维数组表示,后面会改进为用户自己定义无向图的边。

学习python的新手,若大佬有解决的办法,希望不吝赐教

#无向图判断环是否存在
def dfs(u,fa):
  for i in range(v):
    n=g[u][i]#n为图中的顶点数
    # print(u,n,fa,i,'')
    if n in vertex:#判断n是否属于图的顶点
      if n==fa:
        continue
      if visit[n]==0:
        visit[n]=1
        if dfs(n,u)==1:
          return 1
      else:
        return 1
  return 0
global flag,visit,v,g,e,vertex
vertex=[]
flag=0
v=4;e=4#v是顶点,e是边数
#v,e=map(int,input().split())
vertex=[1,2,3,4]#无向图的顶点集合
g=[[0 for i in range(20)]for i in range(20)]
visit=[0 for i in range(20)]
g[1][0]=2;g[2][0]=1;g[2][1]=3;g[3][0]=2;g[3][1]=4;g[4][0]=3;g[1][1]=3;g[3][2]=1
for i in range(1,v+1):
  if visit[i]==0:
    visit[i]=1
    if dfs(i,-1):
      flag=1
      break
if flag==1:
  print('Yes, there is A loop in this network')
else:
  print('No loop')

以上这篇python判断无向图环是否存在的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python re正则表达式模块(Regular Expression)

模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等 复习一下基本的正则表达式吧  .:匹配除了换行符以为的任意单个字符  *:匹配任意字符,一个,零个,多个都...

Python 实现「食行生鲜」签到领积分功能

Python 实现「食行生鲜」签到领积分功能

用过食行生鲜的同学应该知道,每天可以在食行生鲜签到,签到可以领到 20 积分,在购物时可以抵 2 毛钱。钱虽少,但是积少成多,买菜时可以抵扣一两块钱还是不错的。 今天我们就用 Pytho...

python采集微信公众号文章

python采集微信公众号文章

本文实例为大家分享了python采集微信公众号文章的具体代码,供大家参考,具体内容如下 在python一个子目录里存2个文件,分别是:采集公众号文章.py和config.py。 代码如下...

PHP统计代码行数的小代码

本文实例为大家分享了PHP统计代码行数的具体代码,供大家参考,具体内容如下 想统计一下项目中一共有多少行代码,结果没找到什么好的工具,就自己写了一个。 效率不怎么样。 <&#...

python机器学习库常用汇总

汇总整理一套Python网页爬虫,文本处理,科学计算,机器学习和数据挖掘的兵器谱。 1. Python网页爬虫工具集 一个真实的项目,一定是从获取数据开始的。无论文本处理,机器学习和数据...