什么是图:

无向图:可以理解QQ中的互加好友

无向图: 可以理解为微博中的关注

图的一些概念:

顶点:图中的元素(A,B,C,D....)

边: 图中的一个顶点可以与任意其他顶点建立连接关系,这种建立的关系就是边

度: 与顶点相连接的边的条数(无向图概念)(图一A的度就是3)

无向图: 边无方向的图

有向图: 边有方向的图

稀疏图(Sparse Matrix) : 顶点很多,但每个顶点的边并不多

带权图(weighted graph) 。在带权图中,每条边都有一个权重 (weight)

有向图的一些概念:

入度(In-degree) : 表示有多少条边指向这个顶点

出度(Out-degre) : 表示有多少条边是以这个顶点为起点推向其他顶点

图的存储:

邻接矩阵(Adjacency Matrix):

邻接矩阵的底层依赖一个二维数组。对于无向图来说,如果顶点 i 与顶点 j 之间有边,我们就将 A[i][j] 和 A[j][i] 标记为 1;对于有向图来说,如果顶点 i 到顶点 j 之间,有一条箭头从顶点 i 指向顶点 j 的边,那我们就将 A[i][j] 标记为 1。同理,如果有一条箭头从顶点 j 指向顶点 i 的边,我们就将 A[j][i] 标记为 1。对于带权图,数组中就存储相应的权重。

优点: 简单直观,

缺点:浪费空间

无向图,如:A[i][j] 和 A[j][i] 只需一个就行了。

稀疏图:顶点很多,但每个顶点的边并不多。

邻接表存储法:

每个顶点对应一条链表,链表中存储的是与这个顶点相连接的其他顶点。

邻接矩阵存储起来比较浪费空间,但是使用起来比较节省时间。相反,邻接表存储起来比较节省空间,但是使用起来就比较耗时间。

数据结构与算法学习笔记——图(Graph)相关推荐

  1. 数据结构与算法学习笔记——图 C++实现

    数据结构与算法学习笔记--图 C++实现 1 概念 2 图的表示方法 3 算法 3.1 拓扑排序 3.2 图的搜索算法 3.2.1 广度优先搜索(BFS) 3.2.2 深度优先搜索(DFS) 3.3 ...

  2. 数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配

    数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配 引入小题:最短路径 最大流问题(maximum flow problem) ...

  3. 数据结构与算法学习笔记之 从0编号的数组

    数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...

  4. 数据结构与算法学习笔记之 提高读取性能的链表(上)

    数据结构与算法学习笔记之 提高读取性能的链表(上) 前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览 ...

  5. 数据结构与算法学习笔记——链栈

    数据结构与算法学习笔记(C语言) 链栈 在开始链栈的学习之前,我们先实现一下上一篇文章中提到的检查括号匹配的小程序,鉴于水平有限,本人就随便写一下代码好了,目标仅限于对功能的实现. /*用顺序栈这种数 ...

  6. 数据结构与算法学习笔记4:递归+分治法

    数据结构与算法学习笔记4 递归 斐波那契数列 青蛙跳台阶问题 链表倒序打印 分治法 二分查找/折半查找 Binary Search 题目1:快速幂 题目2:如何判断一个数是否为2的次幂 递归 指在函数 ...

  7. 数据结构与算法 学习笔记(5):字符串

    数据结构与算法 学习笔记(5)- 字符串 本次笔记记录了LeetCode中关于字符串的一些问题,并给出了相应的思路说明和代码.题目编号与LeetCode对应,方便查找. 题目1:LeetCode 13 ...

  8. 数据结构与算法学习笔记之先进先出的队列

    前言 队列是一种非常实用的数据结构,类似于生活中发排队,可应用于生活,开发中各个方面,比如共享打印机(先请求先打印),消息队列.你想知道他们是怎么工作的么.那就来一起学习一下队列吧 正文 一.队列的定 ...

  9. 数据结构与算法 学习笔记(8):字典、集合、哈希表

    数据结构与算法 学习笔记(8):字典.集合.哈希表 本次文章记录的是和字典.集合.哈希表等数据结构相关的LeetCode算法题(题号与LeetCode对应),包括其构造和使用,针对每一题或一类题给出了 ...

最新文章

  1. Spring自学教程-ssh整合(六)
  2. cpout引脚是干什么的_电源IC欠压保护(Brown-out)功能介绍
  3. [汇编语言]-第十章 ret,retf,call指令
  4. java:十六进制转十进制
  5. Spring AOP基础—JDK动态代理
  6. 四层负载均衡和七层负载均衡的区别
  7. 各hadoop安装的收集
  8. mysql 5.5 主从同步_Windows下mysql5.5主从同步
  9. Myeclipse 更改web项目的访问名
  10. 视觉传达对中职计算机教育影响,自考视觉传达设计毕业论文:平面设计专业信息化教学资源库建设...
  11. 鼠标点击改变单元格颜色或点击改变行颜色
  12. 深入 Java 调试体系: 第 1 部分,JPDA 体系概览
  13. linux bind 源码,rpcbind 源码 分析
  14. vim打开文件时显示行号
  15. 用Visio画软件(模块)功能图
  16. svn process exited with error code: 1
  17. windows核心编程--2、windows的画笔画刷以及一些简单的应用
  18. 单台计算机 双ip设置,单网卡设双IP也有优先级
  19. 【SQL基础】SQL常用函数简要解析
  20. pdf转换成word转换器在线

热门文章

  1. Vue学习笔记三(组件间通信)
  2. 华为android系统是什么意思,华为HarmonyOS与安卓系统有什么区别?一文了解
  3. (附源码)Springboot宠物领养系统毕业设计241104
  4. 【STM32+机智云】机智云手机APP点灯实验踩坑记录
  5. JNI:本地代码调用Java代码
  6. Mysql 存储过程详解(procedure)
  7. Java多线程模拟运动比赛
  8. 写php程序出现乱码怎么办?
  9. 怎样提高报表呈现的性能?
  10. POJ2228 Naptime 【例题精讲】