python实现栈并进行深度优先遍历图

python实现图(基于图的不同存储方式)的深度优先(DFS)和广度(BFS)优先遍历 对于图在计算机内不同的存储方式,图的深度和广度优先遍历算法的写法也不同,但是两种算法的基本思想不变的,本文介绍不同方式存储的图的两种遍历方法的实现。 阅读详情

python实现栈

由于python中没有和栈相关的模块,所以需要自己写

下面为栈的类,将其放入到stack.py中

然后再使用到栈的程序中导入即可,导入代码为

from stack import Stack
# -*- coding: utf-8 -*-
class Stack():
    def __init__(self, size):
        self.size = size
        self.stack = []
        self.top = -1

    def push(self, ele):  # 入栈之前检查栈是否已满
        if self.isfull():
            raise exception("out of range");
        else:
            self.stack.append(ele);
            self.top = self.top + 1;

    def pop(self):  # 出栈之前检查栈是否为空
        if self.isempty():
            raise exception("stack is empty");
        else:
            self.top = self.top - 1;
            return self.stack.pop(); #默认删除的最后一个元素,返回的删除值

    def isfull(self):
        return self.top + 1 == self.size;

    def isempty(self):
        return self.top == -1;
    def num(self):
        return self.stack[self.top]
    def printf(self):
        for i in range(0,self.top+1):
            print self.stack[i],
        print

由于我所用到的是使用栈进行深度优先遍历图,所以代码如下

while s.top!=-1:
    flag=0                          #用来标记当前位置是否被修改过
    for i in range(1,m):
        if (graph[s.num()][i]==1):    #如果符合条件
            graph[s.num()][i] = 0  # 标记为访问过
            s.push(i)               #入栈
            flag=1
            break
        else:
            continue
    if (s.num()==8):
        break
    if (i==m-1):
        if (flag==0):
            s.pop()
Python 图的深度优先遍历 使用字典存储下面这个图结构,编写图的遍历算法,对给定图进行深度优先遍历。 Hint: 结点作为字典的Key,结点的邻居作为字典的Value,从而构成一个图。 递归实现图的深度优先遍历(DFS) 1、字典graph存储图,存储顺序a-z 2、首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点。(访问的顺序a-z) 3、当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点... 阅读详情

相关推荐

算法详解——图的深度优先遍历和广度优先遍历

图数据中的深度优先遍历算法和广度优先遍历算法

python_plus的博客 8332

【Python搜索算法】深度优先搜索(DFS)算法原理详解与应用,示例+代码

深度优先搜索(DFS)是一种重要的图遍历算法,用于探索图中的节点和边。本节介绍DFS算法原理和DFS算法应用案例:解决路径查找问题,解决图的连通性问题:查找下图中的连通组件,拓扑排序,在树结构中进行深度遍历

qq_35831906的博客 2万+

图的深度优先遍历和计算连通分量

1.深度优先遍历过程 过程: 访问0: 访问0的第一个相邻结点1 访问1:1的相邻结点为0,访问过了,结点1的全部相邻结点访问完毕,退回0 接着访问0的下一个相邻结点2 访问2:2的相邻结点为0,访问过了,结点2的全部相邻结点访问完毕,退回0 接着访问0的下一个相邻结点5 访问5:5的第一个相邻结点为0,访问过了,访问下一个结点3 访问3: 3的第一个相邻结点为4 访问4:4的第一个相邻结点为3,访问过了,下一个相邻结点5,访问过了,相邻结点6 访问6:6的两个相邻结点都已经访问过了

与 4452

图的深度优先遍历

利用栈实现。 从源点开始按照深度把节点放入栈中,然后再弹出。 每弹出一个节点,把该节点一个没有进入栈中的节点放入栈中,并把该节点也放入栈中,方便回溯。 直到栈变空。 public static void dfs(Node node) { if(node == null) { return; } Stack<Node> stack = new Stack<Node>(); HashSet<Node> set = new HashSet&lt

niceYF的博客 1202

python之图的实现

一、图的定义从数学上讲,图由顶点的集V和边的集E构成,其中E中的每一条边都连接V中的两个顶点。顶点和边可以带标签,也可以不带标签。当边带有数字标签的时候,可以将这些数字看做为权重(weight),并且说这个图是一个加权图。当且仅当两个顶点之前存在一条路径的时候,从一个顶点到达另一个顶点才是可达的。路径的长度就是该路径的边的数目。如果从图中的每一个顶点到其他的每一个顶点都有一条路径的话,这个图就是连...

LZH_12345的博客 3644

电机系列(1) - foc最基本原理、clark变换 、park变换、附代码

什么是FOC? FOC(Field-Oriented Control),直译是磁场定向控制,也被称作矢量控制 (VC,Vector Control) ,是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。 简单来说就是,FOC是一种对无刷电机的驱动控制方法,它可以让我们对无刷电机进行 “像素级” 控制,实现很多传统电机控制方法所无法达到的效果。 因为所谓的“矢量控制”其实就是

nepqiu的博客 7万+

数据结构基础(栈)——图的深度优先遍历(C语言实现)

题目描述 读入一个邻接矩阵存储的无向图,输出它的深度优先遍历序列。 输入格式 第1行1个整数n,表示图中的顶点数,2<=n<=100 接下来的n行是一个n*n的邻接矩阵,a[i][j]=1表示顶点i和顶点j之间有直接边相连,a[i][j]=0表示没有直接边相连,保证i=k时a[i][j]=0,且a[i,j]=a[j,i]. 输出格式 输出1~n的某一种排列,表示从顶点1开始,对该图进...

weixin_45860066的博客 4102

混合整数规划(MIP)在资源优化中的实战应用

本文深入探讨了混合整数规划(MIP)在资源优化中的实战应用,从菜市场采购到工厂调度,再到物流配送和钢铁厂切割问题。通过分支定界法和割平面法等技术,MIP能够有效解决包含整数和连续变量的复杂优化问题,提升企业运营效率。文章还介绍了现代求解器的优化策略和实际项目中的避坑指南,帮助读者更好地应用MIP技术。

weixin_30500105的博客 91

利用栈和队列实现图的深度优先遍历与广度优先遍历

利用栈和队列实现图的深度优先遍历与广度优先遍历 结果: 深度优先遍历 [A, F, G, E, H, D, I, C, B] 广度优先遍历 [A, B, F, C, G, I, E, D, H] import java.util.*; public class Test3 { // 深度 public void DFS(HashMap<String, String> map, String startNode) { // 定义一个访问数组,判断当前节点是否访问过 A

ssmbyss的博客 4583

语义通信实战:跳过“比特”保“语义”,手把手构建轻量级图像压缩重建网络(基于PyTorch)

本文详细介绍了基于PyTorch的轻量级语义通信系统LICRnet的实现,专注于图像压缩重建中的语义信息保留。通过深度可分离卷积、可变窗口多尺度注意力等创新技术,显著降低计算量并提升性能,特别适用于无人机巡检、远程医疗等物联网场景。文章包含完整的代码实现、训练策略及部署优化方案。

weixin_27697385的博客 220

HFSS实战:手把手教你设计3.3-10.6GHz超宽带微带天线(附S11优化技巧)

本文提供了一份基于Ansys HFSS的超宽带微带天线实战设计指南,详细讲解了从3.3GHz到10.6GHz天线的建模、仿真与优化全流程。文章重点剖析了阻抗匹配的核心挑战,并分享了通过接地板开槽、参数化扫描及目标驱动优化等系统性技巧来优化S11曲线的实用方法,帮助射频工程师快速掌握超宽带天线设计的关键技能。

2y3u4i5o6p的博客 1080

图的深度优先遍历(堆栈实现和非堆栈实现)

// Chart.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "stdlib.h"//如:FROMHEAD = 1,则用头插法;否则:则用尾插法#define  FROMHEAD 1/* 如:HASHEAD 被定义,则各顶点的邻接点链中; 否则:各顶点的邻接点链中;*

软件开发资料汇总 560

手把手教你用示波器抓取MIPI D-PHY波形:从LP11到HS Burst的完整信号解析

本文详细介绍了使用示波器精准捕获MIPI D-PHY信号的关键技巧,包括探头选择、示波器参数设置、信号状态解析及高级触发配置。通过实战案例和波形分析,帮助工程师快速识别从LP11到HS Burst的各种信号状态,解决常见的信号完整性问题,提升调试效率。

weixin_30471561的博客 560

2.(图)-深度优先遍历DFS

        从图的某个节点开始遍历,访问了则标记下来,然后访问此点所有邻域中任意点为新起点,且做上访问标记,通常通过递归和栈的技巧实现。 1:以1为起点,[5,2]入栈 2:弹出上面的2,2相邻且未标记访问的3,4入栈[5,4,3] 3:弹3,入4,5;[5,4,5,4] 4:弹4,入5;[5,4,5,5] 5:弹5,剩余[5,4,5] 6:[5,4,5]均被标记访问,依次弹出...

千寻的博客 327

基于Matlab的磁力计校准(附源码)

磁力计沿传感器的 X、Y 和 Z 轴检测磁场强度。精确的磁场测量对于传感器融合以及确定航向和方向至关重要。为了用于航向和方向计算,需要校准典型的低成本MEMS磁力计,以补偿环境噪声和制造缺陷。一、理想磁力计理想的三轴磁力计沿正交 X、Y 和 Z 轴测量磁场强度。在没有任何磁干扰的情况下,磁力计读数测量地球磁场。如果在传感器通过所有可能的方向旋转时进行磁力计测量,则测量值应位于球体上。球体的半径是磁场强度。要生成磁场样本,请使用对象。出于这些目的,可以安全地假设每个方向的角速度和加速度为零。

珞瑜的博客 4520

ANSYS2022R1——安装源文件下载和安装教程——软件管家

14.当提示输入安装目录:#3时,①点击【浏览】,②选安装包解压后的【ANSYS2022R1_WINX64_Disk2】文件夹中【ANSYS2022R1_WINX64_Disk3】文件夹,③点击【选择文件夹】,④点击【OK】。12.当提示输入安装目录:#2时:①点击【浏览】,②选安装包解压后的【ANSYS2022.R1(64bit)】文件夹中的【ANSYS2022R1_WINX64_Disk2】文件夹,③点击【选择文件夹】,④点击【OK】。】②点击【OK】③点击【OK】。

qq_15963745的博客 2325

图的深度优先遍历python实现

#File Name : 图的深度优先遍历.py #1 利用栈实现 #2 从源节点开始把节点按照深度放入栈,然后弹出 #3 每弹出一个点,把该节点下一个没有进过栈的邻接点放入栈 #4 直到栈变空 def dfs(node): if node is None: return #建立空栈、建立空集合 stack = [] nodeSet = set...

桔梗的眼泪博客 2738

Trimble RealWorks处理点云数据(一)之坐标转换

Trimble RealWorks处理点云数据之坐标转换

yilvyangguang520的博客 3616

Python实现深度优先遍历(DFS)和广度优先遍历(BFS)

一,简介 深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath First Search)是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等,也频繁出现在 leetcode,高频面试题中。 二,深度优先遍历 主要思路是从图中一个未访问的顶点 V 开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底…,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是不撞南墙不回头,先走完一条路,再换一

西门一刀的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python实现图的深度优先遍历(DFS)和广度优先遍历(BFS)算法

#图的深度优先和广度优先遍历 def DFS(graph,s): #深度优先遍历,基于栈 stack=[] #建立栈 stack.append(s) data=[] #记录已经遍历过的点 data.append(s) while stack: n=stack.pop() # 取出栈中最后一个元素并删掉 nodes=graph[n] for i in nodes[::-1]: #栈先进后出 i.

qq_38773993的博客 8292

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python 遍历_python实现图广度优先遍历、深度优先遍历

一、广度优先遍历-BFS顾名思义,BFS总是先访问完同一层的结点,然后才继续访问下一层结点,它最有用的性质是可以遍历一次就生成中心结点到所遍历结点的最短路径,这一点在求无权图的最短路径时非常有用。广度优先遍历的核心思想非常简单,用python实现起来也就十来行代码。下面就是超精简的实现,用来理解核心思想足够了:1 importqueue23 defbfs(adj, start):4 vis...

weixin_39633781的博客 1132

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python 遍历_Python的图,深度优先遍历

2019-07-24补充:https://stackoverflow.com/questions/44015508/construct-a-tree-from-a-list-with-levels​stackoverflow.com下午又梳理一遍业务逻辑,感觉并不是图,而是两棵树。横向是一个棵树,纵向是一棵树。横向的树有点类似上述stackoverflow中的从list构造树。两棵树的区别,横向的...

weixin_39531037的博客 275

Python描述数据结构之图的遍历篇

本篇章主要介绍图的遍历算法,包括深度优先遍历和广度优先遍历,并用Python代码实现。

夏小悠的博客 4896

Python实现深度优先遍历目录和广度优先遍历目录

下面的图是我要遍历的目录示意图: 图中的圆角矩形代表文件夹,菱形是文件。 一、用栈实现的深度优先遍历目录 import os def get_all_dirs_deep(path): '''深度优先遍历''' stack=[] stack.append(path) #把我们给的文件夹路径压入栈 while len(stack)!=0:...

weixin_44520259的博客 3555

数据结构与算法--图 一步一步带你用Python实现图的深度遍历和广度优先遍历 Python实现图的深度遍历和广度优先遍历 Python详解DFS和BFS过程

一步一步带你用Python实现图的深度遍历和广度优先遍历;Python详解DFS和BFS过程

storyfull 1858

python实现图的广度优先遍历和深度优先遍历

力求最短代码入门

weixin_42662358的博客 3308
上一篇: AJAX基础知识
下一篇: Spring入门3-AOP面向切面编程
code_AC
博客等级 码龄12年 255粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值