图是一种数据间具有多对多关系的非线性数据结构
顶点的度:指与该顶点关联的边的数目
全部顶点的度之和为边数的两倍
图的存储有邻接矩阵,邻接表,十字链表

邻接矩阵

边采用顺序存储结构,用二维数组存储

邻接表

采用链式存储结构,存储行的后继,即矩阵行的单链表

十字链表

图的邻接多重表:采用链式存储结构,存放行和列的后继

图的广度优先算法

从某一个顶点开始,一次性访问他的邻接点,直到访问结束

  1. 利用栈实现
  2. 从源节点开始把节点按照深度放入栈,然后弹出
  3. 每弹出一个点,把该节点下一个没有进过栈的邻接点放入栈
  4. 直到栈变空

图的深度优先算法

从某一个顶点开始,一次访问一个顶点,直到访问结束

  1. 利用队列实现
  2. 从源节点开始依次按照深度进队列,然后弹出
  3. 每弹出一个点,把该节点所有没有进过队列的邻接点放入队列
  4. 直到队列变空

最小生成树

kruskal算法

依次找出权值最小的边建立最小生成树,每次新增的边不能使生成树产生回路,直到找到n-1条边
kruskal算法的执行时间主要取决于图的边数,时间复杂度为O(n^2),适用于稀疏图的操作

Prim算法

最短路径

拓扑排序和关键路径

参考资料
《数据结构(Python版)》作者:吕云翔、郭颖美、孟爻

python数据结构-图相关推荐

  1. Python 数据结构 —— 图

    1. 图的存储方式 1.1 图的存储数据结构 图可以用 邻接矩阵 和 邻接表 (Adjacency List)来表示,当边数不多的时候,使用邻接表存储效率更高 如存储下面的图: 对应的邻接表为: 1. ...

  2. Python数据结构——图(graph)

    图由顶点和边组成.如果图中顶点是有序的,则称之为有向图. 由顶点组成的序列,称为路径. 除了可以对图进行遍历外,还可以搜索图中任意两个顶点之间的最短路径. 在python中,可利用字典 {键:值} 来 ...

  3. python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图

    python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...

  4. python数据结构推荐书-关于数据结构,有哪些不错的参考书推荐?

    学习编程,数据结构是你必须要掌握的基础知识,那么数据结构到底是什么呢? 其实数据结构就是用来描述计算机里存储数据的一种数学模型,因为计算机里要存储很多乱七八糟的数据,所以也需要不同的数据结构来描述. ...

  5. CodeSalt | Python数据结构的实现 — 链表

    Python数据结构实现-链表 1. 简单介绍 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Point ...

  6. python链表结构_CodeSalt | Python数据结构的实现 — 链表

    Python数据结构实现-链表 1. 简单介绍 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Point ...

  7. python数据结构和算法讲解_【学习】python数据结构和算法

    二.算法分析 2.2 什么是算法分析 大O表示法 image.png 2.3 python数据结构的性能 列表 image.png 字典 image.png 说一下list[index]的o(1)原理 ...

  8. Python 数据结构与算法——从二分图到寻找最大排列(Maximum Permutation)

    假设现在有 8 位有着特殊癖好的人去买票看电影,其中有一部分人得到了自己喜欢的座位,但大多数人并不满意.现在的问题是,如果这些人各自都有自己喜欢的座位(喜欢的座位有重叠,这是进行最大排列的前提,否则无 ...

  9. Python数据结构与算法(1.1)——数据结构与算法导论

    Python数据结构与算法(1.1)--数据结构与算法导论 0. 学习目标 1. 数据结构概述 1.1 什么是数据结构 1.2 逻辑结构和物理结构 1.3 抽象数据类型 1.4 数据结构学习的必要性 ...

最新文章

  1. linux创建sftp用户并指定访问目录,linux – 创建SFTP用户只能访问一个目录.
  2. crc错误 modbus poll_Modbus通讯错误检测方法
  3. Python3的深拷贝和浅拷贝
  4. 动画延迟效果css,每个子元素都有延迟的CSS动画
  5. boost::contract模块实现命名覆盖的测试程序
  6. Nginx 模块开发(1)—— 一个稍稍能说明问题模块开发 Step By Step 过程
  7. java 的简单代码_java初学 简单代码
  8. 面试官问你B树和B+树,就把这篇文章丢给他
  9. 引入CSS文件的@import与link的权重分析
  10. 统计挖掘那些事(五)--(理论+案例)如何通俗地理解极大似然估计?
  11. mac如何安装mysql可视化界面_Mac系统下安装mysql数据库和使用phpMyAdmin可视化
  12. hget和get redis_redis hget阻塞 使用redis时遇到的问题 - Redis - 服务器之家
  13. 设置eMMC和DDR的工作频率
  14. JS实现省市县三级联动
  15. 算法提高 7-2求arccos值
  16. 湍流公式推导系列——(一) 不可压湍动能方程的推导与含义
  17. VB中传值(ByVal)和传地址(ByRef)的区别
  18. 知识图谱常用评价指标:MRR,MR,HITS@K,Recall@K,Precision@K
  19. 基于STM32设计智能家居控制系统(OneNet)_2022
  20. 煮饭的机器人作文_做饭机器人作文

热门文章

  1. leedcode刷题——整数反转
  2. ubuntu16.04下在TensorFlow中实现快速风格迁移
  3. vim 添加到右键 windows
  4. 用Emmet写前端代码
  5. 51Nod:1268 和为K的组合
  6. MyISAM的key_buffer_size和InnoDB的innodb_buffer_pool_size
  7. mysqld或mysqld_safe启动时必须放在第一位的参数(first argument)
  8. 基于嵌入式系统的gnash最小库依赖关系
  9. Arrays.copyOfRange
  10. Adobe Acrobat的安装时出现:服务print spooler启动失败,请确认您有足够权限启动系统服务。解决方法...