//求关节点(atriculation point)算法
/***某个顶点A时关节点必须满足下列条件之一*1:A的是深度优先生成树的根,并且A子树的个数大于等于2。*2:A不是深度优先生成树的根和叶子节点,并且A的子树根以及子树根的儿孙都没有指向A祖先的回边(回边就是在图中但不在生成树中的边)。*//**算法思想*1:在深度优先遍历过程中,记录下每棵顶点访问的次序,在单纯的dfs中visited[MAX]数组用来标记一个顶点是否被访问过,但是在这里还用来记      录访问的次序,visited[i]>0表示此顶点已经被访问过并且访问的次序是visited[i]。2:当判断A顶点是不是关节点的时候,需要知道需要知道A顶点的子树以及子树的儿孙时候有指向A顶点的祖先(即被访问的次序小于A的顶点就是AA的祖先),A顶点的子树及子树的儿孙可能有许多的回边指向A的祖先,我们需要求visted[A],low[w],visted[k]中最小的值就可以,这个最小的之就是A的low[A]值,low[MAX]数组用来记录某个顶点(包括这个顶点)以及这个顶点的儿孙中指向这个顶点的祖先顶点中最小的次序顶点。但是怎么求low[MAX]中的值呢?low[v]=min{visited[v],low[w](w为v的邻接点),visited[k](v到k的回边)},其中visited[v]和visited[k]可以很容易求得,那low[w]怎么求呢?显然这里是递归的概念,求low[v]需要知道他的所有的子树根的low[w],同样求low[w]需要知道w的所有子树根的low[w'].当low[w] >= visited[v]v必定是关节点*///代码参考
#include "stdio.h"
#include "string.h"
//图的邻接矩阵表示方法
int Matrix[8][8] = {/*a b c d e f g h*//*a*/{0,1,0,0,0,1,1,1},/*b*/{1,0,1,0,0,0,0,0},/*c*/{0,1,0,1,1,1,0,0},/*d*/{0,0,1,0,1,0,0,0},/*e*/{0,0,1,1,0,0,0,0},/*f*/{1,0,1,0,0,0,0,0},/*g*/{1,0,0,0,0,0,0,1},/*h*/{1,0,0,0,0,0,1,0},
};int count = 0;//当前有多少个顶点已经访问过
int visited[10];//用来记录顶点访问的次序
int low[10];
int vertex_num = 8;
//v顶点的下一个邻接点
int next_adjacent_vertex (int v,int index) {int i;for (i = index;i < 8;i++) {if (1 == Matrix[v][i]) {return i;}} return -1;//表示没有下一个邻接点了
}
void atriculation_point_step2 (int v) {int min;int w = -1;visited[v] = ++count;min = visited[v];while (-1 != (w = next_adjacent_vertex(v,w+1))) {if (0 == visited[w]) {atriculation_point_step2 (w);if (low[w] >= visited[v]) {printf ("-->%c\n",97+v);}if (min > low[w]) {min = low[w];}}else if(visited[w] < min){min = visited[w];//w已经被访问过,w是v在生成树上的祖先}}low[v] = min;
}void atriculation_point_step1 (int v) {int adjacent = next_adjacent_vertex (v,0); memset (visited,0,sizeof(visited));visited[v] = ++count;atriculation_point_step2(adjacent);if (count < vertex_num) {printf ("-->%c\n",97+v);while (-1!= (adjacent = next_adjacent_vertex(v,adjacent+1))) {if (0 == visited[adjacent]) {atriculation_point_step2(adjacent);}}}
}int main () {  atriculation_point_step1 (0);printf ("%d\n",count);return 0;
}

关节点(atriculation point)算法相关推荐

  1. python算法完整教程专栏完整目录

    python算法完整教程专栏完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:python算法完整教程 数量:692篇博文(2023年2月15日截止) 更新时间至:2023年2月15日(后续加上去 ...

  2. 研读《基于人体三维姿态的动作评价系统》论文

    类似论文:<基于OPENPOSE的三维上肢康复系统> 本论文涉及的知识点比较多. 我将分成以下部分介绍本论文的主要内容: 1.摘要 2.双目识别环境搭建(参考我写的博文:最详细的双目摄像头 ...

  3. 关节点和重连通分量,trajan算法实现(python)

    问题:关节点和重连通分量 题目描述 假若在删去顶点v以及和v相关联的各边之后,将图的一个连通分量分割成两个或两个以上的连接分量,则称顶点v为该图的一个关节点.一个没有关节点的连通图称为重连通图.在重连 ...

  4. 研读《基于关节点提取的老年人跌倒检测算法》论文

    摘要: 随着人口老龄化问题日益严重,老年人的安全问题变得愈加重要,而对老年人安全问题威胁最大的便是老年人的跌倒问题,因此本文提出了一种基于关节点提取以及 SVM 分类器的老年人跌倒检测算法.首先,通过 ...

  5. SPF Tarjan算法求无向图割点(关节点)入门题

    SPF 题目抽象,给出一个连通图的一些边,求关节点.以及每个关节点分出的连通分量的个数 邻接矩阵只要16ms,而邻接表却要32ms,  花费了大量的时间在加边上. //   time  16ms 1 ...

  6. V2V-PoseNet算法和应用详解(3D关节点估计领域)

    本文主要梳理V2V关节点估计算法的原理.网络结构.以及工程应用. 虽然V2V是2017年的算法,但是其3D点云处理流程和效果还是很经典的,值得作为入门3D深度学习领域的一个窗口. 1 算法部分 V2V ...

  7. 基于深度学习和传统算法的人体姿态估计,技术细节都讲清楚了

    作者 | 站长 pursueYfuture 来源 | AI专栏(ID: pursue-Y-future) 计算机视觉的一大研究热点是人体姿态估计,还有很多问题急需解决,比如遮挡,交互等等.在最近的CV ...

  8. COCO 2018 Keypoint冠军算法解读

    作者简介:王志成,清华大学计算机系硕士,现为旷视科技研究员,人体姿态估计研究负责人,COCO Keypoint 冠军算法 CPN.MSPN 共同第一作者,研究方向涵盖人体姿态估计与跟踪.人体动作识别, ...

  9. 基于3D深度视觉的人体姿态估计算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 人体姿态估计是当前计算机视觉领域的热点研究问 ...

最新文章

  1. MapReduce统计排序和HDFS的读写
  2. 鸿蒙系统开发者公测,公测尝鲜开启!华为Mate40/P40开始和安卓渐行渐远
  3. luoguP2479 [SDOI2010]捉迷藏
  4. python中常见的流程结构-python常见对象的结构
  5. 为什么要做电路保护,电路保护的意义是什么?
  6. android6.0重力工具箱,重力工具箱 GravityBox For Android8.0/8.1(Oreo)稳定版发布!
  7. C++set容器去重法
  8. PHP5.6的安装与配置(win7)
  9. 零基础学python-5.6 数字位操作与其它工具
  10. svn中的文件夹上的标志的意思
  11. C++获取硬件相关信息
  12. 离散数学第六版第er章偶数题答案_离散数学第2章习题解答
  13. github系列(一) Windows环境下载与安装
  14. ka电器表示什么意思_电气原理中,QS、FU、KM、KA、KI、KT、SB、SQ分别是什么电器元件的文字符号?...
  15. 驾考——科一,三笔记
  16. 如何将二维数组转化为一维数组
  17. 中国农业大学计算机专硕2019分数线,2019中国农业大学生物学院硕士生复试分数线(北京)...
  18. DEDE标签调用说明
  19. 拉灌电流和短路电流测量
  20. 联想小新蓝屏问题解决方法三步走!

热门文章

  1. 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 )
  2. 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )
  3. WPF解决WindowsFormsHost背景透明
  4. PHP操作MYSQL--PDO
  5. idea Empty git --version output:解决
  6. oracle数据恢复方法
  7. 自己动手实现一个MVVM库
  8. 任务05—学习 MARKDOWN 语言
  9. hdu 4493 Tutor 水题
  10. Nagios 安装配置