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

 更新时间:2018年02月01日 10:02:31   作者:莫小鱼726  
下面小编就为大家分享一篇Python 判断 有向图 是否有环的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

实例如下:

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寻找路径和查找文件路径的示例

    今天小编就为大家分享一篇Python寻找路径和查找文件路径的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python async+request与async+aiohttp实现异步网络请求探索

    Python async+request与async+aiohttp实现异步网络请求探索

    这篇文章主要介绍了Python async+request与async+aiohttp实现异步网络请求探索,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • pytorch 状态字典:state_dict使用详解

    pytorch 状态字典:state_dict使用详解

    今天小编就为大家分享一篇pytorch 状态字典:state_dict使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python动态规划算法实例详解

    python动态规划算法实例详解

    在本篇文章里小编给大家整理了关于python动态规划算法实例内容,有需要的朋友们可以参考学习下。
    2020-11-11
  • Series和DataFrame使用简单入门

    Series和DataFrame使用简单入门

    这篇文章主要介绍了Series和DataFrame使用简单入门,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 一篇超级全面的Python功能图谱(推荐)

    一篇超级全面的Python功能图谱(推荐)

    Python作为一种广受欢迎的高级编程语言,不仅在基本语法上易于学习,还拥有强大的标准库和活跃的开发社区,本文详细介绍了Python从基础语法到高级应用的全面功能,并通过实际案例和代码示例展示了其在科学计算、Web开发、机器学习等多个领域的应用,需要的朋友可以参考下
    2024-09-09
  • 详解python3实现的web端json通信协议

    详解python3实现的web端json通信协议

    本篇文章主要介绍了python3实现的web端json通信协议,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • python numpy之np.random的随机数函数使用介绍

    python numpy之np.random的随机数函数使用介绍

    这篇文章主要介绍了python numpy之np.random的随机数函数使用介绍,需要的朋友可以参考下
    2019-10-10
  • 使用Numpy打乱数组或打乱矩阵行

    使用Numpy打乱数组或打乱矩阵行

    这篇文章主要介绍了使用Numpy打乱数组或打乱矩阵行问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • python数据库操作--数据库使用概述

    python数据库操作--数据库使用概述

    这篇文章主要介绍了python中使用mysql数据库详细介绍,本文起讲解了安装mysql、安装MySQL-python、mysql 的基本操作、python 操作mysql数据库基础等内容,需要的朋友可以参考下
    2021-08-08

最新评论