python判断无向图环是否存在

本文介绍了一种用于检测无向图中是否存在环的深度优先搜索算法实现。通过递归方式遍历图的每个节点,标记已访问节点,避免重复访问,从而判断图中是否存在环。适用于Python初学者理解图论基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

学习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')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值