Python 判断 有向图 是否有环的实例讲解


Posted in Python onFebruary 01, 2018

实例如下:

import numpy
from numpy import *
def dfs( v ):
 vis[v] = -1
 flag = 0
 for i in range(n):
 # print (a[v][i],'---', vis[i] )
 if a[v][i] != 0 and vis[i] != -1:
  dfs(i)
  vis[i] = 1
 else:
  pass
 if a[v][i] != 0 and vis[i] == -1:
  print ('Yes, there is A loop in this network\n')
  global swi
  swi = True
  exit()
  return
  # break
 else:
  pass
 print ('s = 0')
 return False

global swi
swi = False
'''===装载数据'''
edges = numpy.loadtxt('9_nodes_with_r_edge_8_to_3.txt')

# edges = [ int(i) for i in edges]
bian = int(shape(edges)[0]) - 1
print (bian,'edges in the network \n')
print (shape(edges),'\n')

n = int( edges[0][1] )

c = int( edges[0][0] )
# n, c = input().split()
# n = int(n)
# c = int(c)
a = [([0] * n) for i in range(n)]
vis = [0] * c
for i in range(1, c+1):
 s, t = edges[i][0:2]
 # print (s,' - ', t )
 '''GO_OBO文件则 s, t 不需要 -1 '''
 s = int(s) - 1
 t = int(t) - 1
 # s = int(s)
 # t = int(t)
 a[s][t] = 1
# print (a)
# print (vis)
dfs(0)
# print (swi)
if not swi:
 print('No loop, DAG - DAG - DAG')

用到 numpy 模块,读取的 txt 文件为 有向图的连边,其中第一行 第一个数字 为 边的数量,第二个数字为 节点数 第二行及以后 前两个数字,第一个为 起点, 第二个为 落点。

以上这篇Python 判断 有向图 是否有环的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python分割和拼接字符串
Nov 01 Python
Python实现基于权重的随机数2种方法
Apr 28 Python
Python卸载模块的方法汇总
Jun 07 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
python实现微信定时每天和女友发送消息
Apr 29 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
NumPy中的维度Axis详解
Nov 26 Python
Python如何实现FTP功能
May 28 Python
如何用Python 加密文件
Sep 10 Python
Django vue前后端分离整合过程解析
Nov 20 Python
Django通过设置CORS解决跨域问题
Nov 26 Python
pd.drop_duplicates删除重复行的方法实现
Jun 16 Python
python使用KNN算法手写体识别
Feb 01 #Python
python @property的用法及含义全面解析
Feb 01 #Python
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 #Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 #Python
Python命令行解析模块详解
Feb 01 #Python
python2.7到3.x迁移指南
Feb 01 #Python
Python Paramiko模块的使用实际案例
Feb 01 #Python
You might like
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
phpStorm2020 注册码
2020/09/17 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
Postman内建变量常用方法实例解析
2020/07/28 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
python编程嵌套函数实例代码
2018/02/11 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
2018/08/02 Python
python+pyqt5编写md5生成器
2019/03/18 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
wxpython绘制音频效果
2019/11/18 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
.NET面试题:什么是反射
2016/09/30 面试题
关于赌博的检讨书
2014/01/24 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
幼儿园家长评语
2014/02/10 职场文书
就业协议书的作用
2014/04/11 职场文书
初中作文评语
2014/12/25 职场文书
python3中apply函数和lambda函数的使用详解
2022/02/28 Python
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL