前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

作者头像
小王不头秃
发布2024-06-19 15:01:39
1530
发布2024-06-19 15:01:39
举报
定义

图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G=(V,E) 其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。 图中可以没有边但必须有点。 分为有向图,无向图,还有混合图; 无向图:图的任意两个顶点之间的边都是无向边 有向图:图的任意两个顶点之间的边都是有向边

完全图

无向完全图: 任意两点之间都存在边的图 有向完全图: 任意两点之间都存在方向相反的两条弧

图的基本术语

稀疏图:称边数很少的图为稀疏图 稠密图:称边数很多的图为稠密图 顶点的度:在无向图中,顶点v的度是指依附于该顶点的边数,在有向图中,顶点的度为该点的入度(到顶点的边数)与出度(从顶点向外出的边的数量)之和。 路径长度:不带权的为路径上边的个数,带权图中为路径上边的权值之和, 回路:起点与终点相同的路径,包括环。 简单路径,简单回路:除了第一个顶点和最后一个顶点,剩下的顶点没有重复的。 连通图:任意两个顶点之间都存在互相到达的路径。 连通分量:非连通图中极大连通子图

构造方式
通过邻接表的方式建立图

需要自定义的两个结构体:存储节点信息的结构体

代码语言:javascript
复制
struct head
{
int data;
child *f;   //存储其中一个与其邻接的节点 
}

第二个是各个邻接节点的信息

代码语言:javascript
复制
struct child
{
int b;
child *brother;   //存储与其节点相连的其他节点
}
代码语言:javascript
复制
head p[size];
int p2[size][size];  //存储邻接矩阵
child *d;
for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
{
   if(p2[i][j]>0)
   {
   child *e=new child;
   e->b=j;
   d=p[i]->f;
   if(d==NULL)
   {
   p[i]->f=e;
   }
   else{
   while(1)
   {
   if(d->brother==NULL)
   {
   d->brother=e;
   }
   d=d->brother;
   break;
   }
   }
}
}
遍历方式
深度遍历方式

利用栈可以进行深度遍历。 基本思想就是将一个节点压入栈中,然后在判断与其邻接的节点中有没有未被访问的节点,有的话就将此节点压入栈中,访问之后的节点要对其进行标记防止其二次访问,每次都对栈顶元素进行判定是否还有未访问的邻接节点,若是全部访问,则出栈。

广度遍历方式

利用队列可以进行广度遍历,就是将一个节点入队,然后输出队首元素的值,将与队首元素相连的所有未被访问的邻接节点入队,队首元素出队,不断进行操作,知道队列为空,就完成了广度遍历。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义
    • 完全图
    • 图的基本术语
    • 构造方式
      • 通过邻接表的方式建立图
      • 遍历方式
        • 深度遍历方式
          • 广度遍历方式
          相关产品与服务
          对象存储
          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档