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 相关文章推荐
详解Swift中属性的声明与作用
Jun 30 Python
Python中的异常处理相关语句基础学习笔记
Jul 11 Python
Python数据结构之翻转链表
Feb 25 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
Django中的用户身份验证示例详解
Aug 07 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
python sorted函数原理解析及练习
Feb 10 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 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
第七节--类的静态成员
2006/11/16 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
JS中递归函数
2016/06/17 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
python之生产者消费者模型实现详解
2019/07/27 Python
python/Matplotlib绘制复变函数图像教程
2019/11/21 Python
你所在的项目是如何确定版本号的
2015/12/28 面试题
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
物流仓管员岗位职责
2013/12/04 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
开学第一周值周总结
2015/07/16 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js