当前位置: 首页 > news >正文

连通性1(Tarjan 理论版)

目录

一、无向图割点、桥、双连通分量

 Tarjan 算法求割点和桥(割边)

“割点”代码

边双和点双连通分量

边双连通分量 和 点双连通分量 的缩点

二、有向图强连通分量

1.有向图的弱连通与强连通

2.强连通分量

Kosaraju算法

Tarjan 算法(求强连通分量)


一、无向图割点、桥、双连通分量

  • 给定无向连通图 G = (V, E)
  • 对于一个点 x,若从图中删除 x 及所有与 x 相连的边,图不再连通,x 是 G 的割点
  • 对于一条边 e,从图中删去 e,图不再连通, e 是 G 的割边
  • 一个图如果不存在割点,则它是一个点双连通图,一个图的极大点双连通子图是它的点双连通分量
  • 一个图如果不存在割边,则它是一个边双连通图,一个图的极大边双连通子图是它的边双连通分量

先借用OI Wiki (传送门)的图解释几种边:

 Tarjan 算法求割点和桥(割边)

  • 时间戳 dfn:第几个搜到这个点
  • 返祖边:搜索树上一个点连向它另一条支链上的点的边
  • (横插边:在搜索树上一个点连向它另一条支链上的点的边——在无向图不存在【因为下一条支链在dfs序中会直接接在当前这条支链后面成为“子树”】
  • 追溯值 low:当前点及其子树通过一条返祖边能连到的最小 dfn 值
  • 如果 <u, v> 是搜索树的边low[u] = min(low[u], low[v])
  • 如果 <u, v> 是返祖边:low[u] = min(low[u], dfn(v))

下面来看一个连通图,寻找割点和割边(桥)所满足的规律。右图为左图的一个dfs搜索树,水蓝色标记每个点的dfn(时间戳),梅红色标记每个点的 low 值。

low 值从叶节点开始标记,因为其值作为子节点可以向上更新父节点的 low 值,比如序号为4的点有一条连向1号节点的返祖边,其 low 值为1,7号结点 low 值等于其 dfn = 9,10号结点 low 值也为8,而对于8号结点,它的子树中4号结点 low 值为1,根据 “ 如果 <u, v> 是搜索树的边:low[u] = min(low[u], low[v]) ” ,其 low 值为1 ,再依次向上更新。

例如:10号点为割点,若将其去掉,其下的7号结点无法与上面的连通。

规律:【割点有两类】

  1. 子树里不存在跨越它连向它上方的点的边
  2. 有多个儿子的根

(u, v)割边(u 为父亲,v 为儿子):以 v 为根的子树中不存在连向 u 以及 u 上方的边。

用low和dfn的关系表示即

  • u点是割点, v 是 u 搜索树上的一个儿子:① dfn[u] <= low[v] —— v的子树中没有返祖边能跨越 u 点;② 有多个儿子的根节点
  • 边是桥,搜索树上 v 是 u 的一个儿子:dfn[u] < low[v] —— v 的子树中没有返祖边能跨越<u,v> 这条边

注意割点的式子有等号,判割边没有等号(如果有一条返祖边将 v 与 u 相连,则dfn[u] = low[v] ,这时原本v和u相连的边删掉也能连通,故u-v不是割边) 

“割点”代码

注意第32行为 dfn[y],与第25行的 low[y] 不一样。在求“割边”里写成 low[y] 虽然也不会错,但在求割点里就是错的,可能有些题目数据不够强这里写错了也能过,但一旦错了就很难找到,所以极度建议割点割边代码此处按照定义写成一致,能大大减少出错率。

关于为什么写low[y]为错的说明:

如下图,因为搜索的顺序不确定(取决于建图时的顺序)若3号点的low值通过一条返祖边更新为1后,再来更新5号结点时,若是 low[x] = min(low[x],low[y]),low[5]=low[3]=1,然后4号点就会继承5号点的 low 值也为1,这样dfn[3]>=low[4],就会误判点3不是割点,而事实上3号点是割点。这里相当于是将1--3这条返祖边与3--5这条返祖边连起来当成了1--5的返祖边,而我们的low值定义是当前点及其子树通过一条返祖边能连到的 最小dfn 值。5到3,3再到1,而3恰是我们的割点,而求割边的时候就不会出现这种情况,跨越了一条边就是跨越了一条边,不会存在要两条边连在一起才跨越一条边。

 

边双和点双连通分量

  • 把桥删了每个连通块都是一个边双连通分量——标记处桥之后dfs一遍即可
  • 点双连通分量要复杂一些——一个割点可能属于多个双连通分量

 

 dfs时(这里假设在8号结点先搜向9的那条支链)……9入栈,6入栈,10入栈,再向上返回(系统dfs递归调用的返回,系统栈的10,6,9弹出,自己维护的栈没有弹出)当返回到结点8时,dfn[8] <= low[y],判断8为割点,此时弹出自己维护的栈里8以上的所有结点(10,6,9)与8组成一个点双连通分量;8再到7号结点,发现7号结点没有儿子结点了,再返回,又成立dfn[8]<=low[7],8为割点,于是弹出7号点与8组成第二个点双连通分量;8再到4,发现low[4]=1,low[4] < dfn[8],8不是其中的割点……到最后回到根节点1,因为所有的结点的low值总不会比根节点的dfn还要小,即只有一个子节点的根节点总是割点,所以靠1号根节点将剩余的所有点弹出,组成最后一个点双连通分量。(无所谓,根节点会出手

边双连通分量 和 点双连通分量 的缩点

  • 每个边双连通分量缩成一个点,再用原来的桥把它们连起来
  • 点双连通分量因为一个割点可能包含在多个点双连通分量里面,所以我们将每个割点保留割点与其所在的点双连通分量连边即可。

如上图的点双连通分量可改为:

 

二、有向图强连通分量

1.有向图的弱连通与强连通

2.强连通分量

 如上图的黄色点构成一个强连通分量。

Kosaraju算法

 

对左图,从1开始搜:1进栈,5进栈,8进栈,4进栈,3进栈,3不能往下搜了,3出栈,回到4,4也没有向下搜的点,4出栈,回到8,6进栈,6出栈,8出栈,5出栈,1出栈;

然后再找图中一个没有访问过的点继续上述操作,从2开始,2入栈,2出栈;

再从7开始,7入栈,9入栈,9出栈,7出栈。

得到出栈顺序:3,4,6,8,5,1,2,9,7

再以这个出栈时间的逆序反图(即原来A->B变为B->A)进行dfs:从7开始,7无法到达其它点,7独自为一个强连通分量;再看9,因为9原本能去到的7已经被删了,9也单独是一个强连通分量;2号点为一个强连通分量;1号点为一个强连通分量(原本可以通向的2号点已经成为一个单独的强连通分量了);又5->3->4->8,3->6,所以5,3,4,6,8为一个强连通分量

原理:在一个 dfs 搜索树里面,越先出栈说明越多的点可以到达这个点,即在它后面的点都能到达它,如【3,4,6,8,5,1】3后面的点都能到达3,4后面的点都能到达4,依此类推。若顺序为A, B, C, 则实际图中关系为 A<--B<--C,那么倒叙,反图能到(C-->B)也即原图有反向边能到(C<--B)【意会~意会~】 

Tarjan 算法(求强连通分量)

 

相关文章:

挂载mount指令

挂载注意事项 1.一个目录、同一时间只能被一个设备挂载 2.一个设备可以挂载多个目录 3.如果一个目录被多个设备挂载,只能看到最后一个挂载的设备数据,其他的设备数据会被隐藏。 4.工作里建议用新的文件夹,作为挂载点。 mount命令参数解释-l显示系统以挂载的设备信息-a加载文…...

10-项目范围管理(2/10 十大管理)

9.1 管理基础 9.1.1 产品范围和项目范围产品范围:指某项产品、服务或成果所具有的特征和功能。产品范围的完成情况是根据产品需求来衡量的。 项目范围:包括产品范围,是为交付具有规定特性与功能的产品服务或成果而必须完成的工作。项目范围的完成情况是根据项目管理计划来衡…...

基于Hadoop的电商数据分析系统设计与实现

基于Hadoop的电商数据分析系统设计与实现 Design and Implementation of E-commerce Data Analysis System based on Hadoop 完整下载链接:基于Hadoop的电商数据分析系统设计与实现 文章目录 基于Hadoop的电商数据分析系统设计与实现摘要第一章 绪论1.1 研究背景1.2 研究目的…...

nodejs 中间件

一、是什么 Node.js 中的中间件&#xff0c;特别是针对 Web 开发框架&#xff08;如 Express、Koa、Hapi 等&#xff09;的中间件&#xff0c;其核心功能是用来对 HTTP 请求生命周期进行拦截、处理和传递的。 中间件这一概念是 Web 开发框架为了实现请求处理流程的模块化、可…...

Mudem,打造私密安全、高效稳定的私人空间

Mudem 是 Codigger 平台中的一个关键组件&#xff0c;它提供基础通讯服务&#xff0c;确保不同类型的机器之间可以进行安全和高效的连接。它其设计理念在于将本地机器、公有云以及私有云上的设备无缝地整合为一个可远程在线访问的工作站&#xff08;Workstation&#xff09;。这…...

网络安全数字孪生:一种新颖的汽车软件解决方案

摘要 随着汽车行业转变为数据驱动的业务&#xff0c;软件在车辆的开发和维护中发挥了核心作用。随着软件数量的增加&#xff0c;相应的网络安全风险、责任和监管也随之增加&#xff0c;传统方法变得不再适用于这类任务。相应的结果是整车厂和供应商都在努力应对汽车软件日益增加…...

连通性1(Tarjan 理论版)

目录 一、无向图割点、桥、双连通分量 Tarjan 算法求割点和桥&#xff08;割边&#xff09; “割点”代码 边双和点双连通分量 边双连通分量 和 点双连通分量 的缩点 二、有向图强连通分量 1.有向图的弱连通与强连通 2.强连通分量 Kosaraju算法 Tarjan 算法&#xff08…...

数据库02_函数依赖,数据库范式,SQL语句关键字,数据库新技术---软考高级系统架构师009

1.首先我们来看这个,给定一个X,能确定一个Y那么就说,X确定Y,或者Y依赖x,那么 比如y = x * x 就是x确定y,或者y依赖于x 2.然后再来看图,那么左边的部分函数依赖,就是,通过A和B能决定C,那么如果A只用给就能决定C,那么就是部分函数依赖. 3.然后再来看,可以看到,A可以决定B,那么…...

王者荣耀入门技能树-解答

前言 前段时间写了一篇关于王者荣耀入门技能树的习题&#xff0c;今天来给大家解答一下。 职业 以下哪个不属于王者荣耀中的职业&#xff1a; 射手法师辅助亚瑟 这道题选&#xff1a;亚瑟 王者荣耀中有6大职业分类&#xff0c;分别是&#xff1a;坦克、战士、刺客、法师、…...

java基础学习 day37 (集合)

集合与数组的区别 长度&#xff1a;数组长度固定&#xff0c;一旦创建完成&#xff0c;就不能改变。集合长度可变&#xff0c;根据添加和删除元素&#xff0c;自动扩容或自动收缩&#xff0c;&#xff08;添加几个元素就扩容多少&#xff0c;删除几个元素就收缩多少&#xff0…...

C语言:数组

往期文章 C语言&#xff1a;初识C语言C语言&#xff1a;分支语句和循环语句C语言&#xff1a;函数 目录往期文章前言1. 一维数组的创建和初始化1.1 数组的创建1.2 数组的初始化2. 一维数组的使用3. 一维数组在内存中的存储4. 二维数组的创建和初始化4.1 二维数组的创建4.2 二维…...

斐波那契数列的--------5种算法(又称“兔子数列”)

斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;因数学家莱昂纳多斐波那契&#xff08;Leonardo Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为“兔子数列”&#xff0c;指的是这样一个数列&#xff1a;…...

【计算机网络(考研版)】第一站:计算机网络概述(二)

目录 四、OSI参考模型和TCP/IP模型 1.ISO/0SI参考模型 2.TCP/IP模型 3.OSI/RM参考模型和TCP/IP参考模型的区别和联系 4.五层教学模型 5.数据流动示意图 四、OSI参考模型和TCP/IP模型 前面我们已经讨论了体系结构的基木概念&#xff0c;在具体的实施中有两个重要的网络体系…...

Python内置包Tkinter的重要控件(下)

本文将接着介绍剩下的五个重要的控件&#xff0c;包括Canvas&#xff0c;Messagebox&#xff0c;Listbox&#xff0c;Checkbutton&#xff0c;Radiobutton。 目录 前言 控件 1. Canvas 2. Messagebox 3. Listbox 4. Radiobutton 5. Checkbutton 总结 前言 包括但不…...

(Java高级教程)第四章必备前端基础知识-第二节2:CSS属性

文章目录一&#xff1a;CSS属性一览表二&#xff1a;常用属性详解&#xff08;1&#xff09;字体属性&#xff08;2&#xff09;文本属性&#xff08;3&#xff09;背景属性一&#xff1a;CSS属性一览表 W3C&#xff1a;元素属性 A&#xff1a; align-content规定弹性容器内…...

听障人士亲述:我们在VRChat用手语交流,成员规模5000人

如果你在B站上搜索VRChat&#xff0c;排在前面的热门视频几乎都是与老外聊天的内容。除了练习语言、交文化流外&#xff0c;你还能在VRChat上遇到不少哇哇乱叫的小孩。作为一款VR社交应用&#xff0c;除了有趣的小游戏外&#xff0c;说话聊天也是VRChat关键的玩法之一。而有这么…...

设计一个70W在线人数的弹幕系统

背景&#xff1a; 直播业务中增加弹幕系统&#xff0c;支持单房间百万用户同时在线。 问题分析&#xff1a; 带宽压力&#xff1a; 假如说每3秒促达用户一次&#xff0c;那么每次内容至少需要有15条才能做到视觉无卡顿。15条弹幕http包头的大小将超过3k&#xff0c;那么每秒…...

一起自学SLAM算法:第9章-视觉SLAM系统

连载文章&#xff0c;长期更新&#xff0c;欢迎关注&#xff1a; 上一章介绍了以激光雷达做为数据输入的激光SLAM系统&#xff0c;激光雷达的优点在于数据稳定性好、测距精度高、扫描范围广&#xff0c;但缺点是价格昂贵、数据信息量低、安装部署位置不能有遮挡、雨天烟雾等环境…...

LeetCode 437. 路径总和 III

LeetCode 437. 路径总和 III 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff…...

LinuxC—高级IO

高级IO 1 非阻塞IO/有限状态机编程 1.1 基本概念 定义 有限状态机(Finite State Machine) 缩写为 FSM&#xff0c;状态机有 3 个组成部分&#xff1a;状态、事件、动作。 状态&#xff1a;所有可能存在的状态。包括当前状态和条件满足后要迁移的状态。事件&#xff1a;也称为…...

WebSocket 入门:简易聊天室

大家好&#xff0c;我是前端西瓜哥&#xff0c;今天我们用 WebSocket 来实现一个简单的聊天室。 WebSocket 是一个应用层协议&#xff0c;有点类似 HTTP。但和 HTTP 不一样的是&#xff0c;它支持真正的全双工&#xff0c;即不仅客户端可以主动发消息给服务端&#xff0c;服务…...

Windows10添加WebDav地址时报错“输入的文件夹无效,请选择另一个”

一、问题描述在使用Windows10添加WebDav网络地址时&#xff0c;报错“输入的文件夹无效&#xff0c;请选择另一个”&#xff0c;如下图所示&#xff1a;二、问题分析这是由于Windows10的WebDav默认只支持https协议&#xff0c;没有支持http协议导致的。三、解决办法3.1、修改注…...

Cadence PCB仿真使用Allegro PCB SI生成串扰总结报告Crosstalk Summary Report及报告导读图文教程

🏡《Cadence 开发合集目录》   🏡《Cadence PCB 仿真宝典目录》 目录 1,概述2,生成报告3,报告导读4,总结1,概述 Crosstalk Summary Report是各种串扰问题的一个简要总结报告。本文简单介绍使用Allegro PCB SI生成Crosstalk Summary Report报告的方法,及其要点导读。…...

【5-卷积神经网络】北京大学TensorFlow2.0

课程地址&#xff1a;【北京大学】Tensorflow2.0_哔哩哔哩_bilibiliPython3.7和TensorFlow2.1六讲&#xff1a;神经网络计算&#xff1a;神经网络的计算过程&#xff0c;搭建第一个神经网络模型神经网络优化&#xff1a;神经网络的优化方法&#xff0c;掌握学习率、激活函数、损…...

C++初阶:vector类

文章目录1 vector介绍2 实现vector2.1 类的定义2.2 默认成员函数2.2.1 构造函数2.2.2 析构函数2.2.3 拷贝构造2.2.4 赋值重载2.3访问接口2.4 容量接口2.5 修改接口2.5.1 尾插尾删2.5.2 任意位置插入2.5.3 任意位置删除2.6 其他接口1 vector介绍 1 vector是表示可变大小数组的序…...

机器学习中软投票和硬投票的不同含义和理解

设置一个场景&#xff0c;比如对于今天音乐会韩红会出现的概率三个人三个观点 A&#xff1a;韩红出现的概率为47% B&#xff1a;韩红出现的概率为57% C&#xff1a;韩红出现的概率为97% 软投票&#xff1a;软投票会认为韩红出现的概率为1/3*(47%57%97%)67% 硬投票&#xff1a;…...

Linux系统之网络客户端工具

Linux系统之网络客户端工具一、Links工具1.Links工具介绍2.安装Links软件3.Links工具的使用4.打印网页源码输出5.打印url版本到标准格式输出二、wget工具1.wget工具介绍2.安装wget软件3.wget工具的使用三、curl工具1.curl工具的介绍2.curl的常用参数3.curl的基本使用四、scp工具…...

c++函数(2)

这里写自定义目录标题默认参数函数重载递归函数变量周期默认参数 可为形参指定默认值&#xff0c;如果在函数调用时&#xff0c;没有指定与形参对应的实参时&#xff0c;就自动使用默认值。 默认参数可简化复杂函数的调用。 默认参数在函数名第一次出现在程序中指定&#xff0…...

HackTheBox Stocker API滥用,CVE-2020-24815获取用户shell,目录遍历提权

靶机地址&#xff1a; https://app.hackthebox.com/machines/Stocker枚举 使用nmap枚举靶机 nmap -sC -sV 10.10.11.196机子开放了22&#xff0c;80端口&#xff0c;我们本地解析一下这个域名 echo "10.10.11.196 stocker.htb" >> /etc/hosts 去浏览器访问…...

Java线程池应用实例

线程池的学习基本概念好处应用场景ThreadPoolExecutor实例理解&#xff1a;执行流程自定义线程池4大核心参数测试demo结论&#xff1a;ExecutorService常用方法思考获取ExecutorService代码示例ScheduleExecutorService常用获取方式如下ScheduledExecutorService常用方法如下:代…...

数字签名技术

介绍数字签名 数字签名是一种用于确认数据的完整性、确认发送者身份的技术。 签名主要包含两个过程&#xff1a;做摘要、进行非对称加密。 做摘要&#xff1a;签名者使用消息摘要算法对消息做摘要&#xff1b;进行非对称加密&#xff0c;得到签名值&#xff1a;签名者使用私…...

WPF-3D图形

WPF-3D图形 WPF的3D功能可以在不编写任何c#代码的情况下进行绘制&#xff0c;只需要使用xaml即可完成3D图形的渲染。本文主要讲述了WPF-3D中的关键概念&#xff0c; 以及常用到的命中测试、2d控件如何在3D对象中进行渲染&#xff0c;除此之外&#xff0c;还演示了如何导入外部…...

返回值的理解

前言 我们写的函数是怎么返回的&#xff0c;该如何返回一个临时变量&#xff0c;临时变量不是出栈就销毁了吗&#xff0c;为什么可以传递给调用方&#xff1f;返回对象的大小对使用的方式有影响吗&#xff1f;本文将带你探究这些问题&#xff0c;阅读本文需要对函数栈帧有一定…...

前端布局神器display:flex

Flexbox&#xff0c;一种CSS3的布局模式&#xff0c;也叫做弹性盒子模型&#xff0c;用来为盒装模型提供最大的灵活性。首先举一个栗子&#xff0c;之前我们是这样实现一个div盒子水平垂直居中的。在知道对象高宽的情况下&#xff0c;对居中元素绝对百分比定位&#xff0c;然后…...

【Typescript学习】使用 React 和 TypeScript 构建web应用(三)所有组件

教程来自freecodeCamp&#xff1a;【英字】使用 React 和 TypeScript 构建应用程序 跟做&#xff0c;仅记录用 其他资料&#xff1a;https://www.freecodecamp.org/chinese/news/learn-typescript-beginners-guide/ 第三天 以下是视频(0:40-0:60) 的内容 目录第三天1 创建Todo…...

7.3 矩阵范数

定义 向量有范数&#xff0c;矩阵也有范数&#xff0c;定义和向量范数类似&#xff0c;不过多了一条要求。它的定义如下&#xff1a; 正定性positivity,∥A∥≥0\parallel A\parallel\ge 0∥A∥≥0&#xff0c;只有A0A0A0时才取等号&#xff1b;非负齐次性homogeneity或scalin…...

Jetpack架构组件库:Hilt

Hilt Hilt 是基于 Dagger2 的依赖注入框架&#xff0c;Google团队将其专门为Android开发打造了一种纯注解的使用方式&#xff0c;相比 Dagger2 而言使用起来更加简单。 依赖注入框架的主要作用就是控制反转&#xff08;IOC, Inversion of Control&#xff09;, 那么什么是控制…...

InstanceNorm LayerNorm

InstanceNorm && LayerNorm author: SUFEHeisenberg date: 2023/01/26 先说结论: 将Transformer类比于RNN&#xff1a;一个token就是一层layer&#xff0c;对一整句不如token有意义原生Bert代码或huggingface中用的都是InstanceNorm instead of LayerNorm&#xff…...

数据结构---堆

堆 定义 基本操作 建堆 堆排序 优先队列 一、堆的定义&#xff1a; 堆必须是一个完全二叉树 还得满足堆序性 什么是完全二叉树呢&#xff1f; 完全二叉树只允许最后一行不为满 且最后一行必须从左到右排序 最后一行元素之间不可有间隔&#xff0c;中间不可有空缺 如下几棵树…...

3小时精通opencv(五) 利用TrackBar进行颜色检测

3小时精通opencv(五) 利用TrackBar进行颜色检测 参考视频资源:3h精通Opencv-Python 本章内容介绍如何利用TrackBar调节色域, 手动提取到我们需要的颜色 文章目录3小时精通opencv(五) 利用TrackBar进行颜色检测创建Trackbar色彩检测创建Trackbar 在opencv中使用createTrackbar函…...

学习记录673@项目管理之进度管理案例

本文主要是进度管理之关键链路法的案例。 案例 Perfect 项目的建设方要求必须按合同规定的期限交付系统&#xff0c;承建方项目经理李某决定严格执行项目进度管理&#xff0c;以保证项目按期完成。他决定使用关键路径法来编制项目进度网络图。在对工作分解结构进行认真分析后&…...

【设计模式】结构型模式·组合模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易&#xff0c;如果您觉得写的不错&#xff0c;欢迎给博主来一波点赞、收藏~让博主更有动力吧&#xff01; 一.概述 又称为部分整体模式&#xff0c;用于把一组相似的对象当作一个单一的对象。组合模式依…...

Vue-Router详解

1、前端路由的发展历程 1.1、认识前端路由 路由其实是网络工程中的一个术语&#xff1a; 在架构一个网络时&#xff0c;非常重要的两个设备就是路由器和交换机。当然&#xff0c;目前在我们生活中路由器也是越来越被大家所熟知&#xff0c;因为我们生活中都会用到路由器&…...

Eclipse中的Build Path

Eclipse中的Build Path简介如果修改了Build Path中的中的JRE版本&#xff0c;记得还需要同步修改Java编译器的版本&#xff0c;如下图红框所示简介 Build Path是Java工程包含的资源属性合集&#xff0c;用来管理和配置此Java工程中【除当前工程自身代码以外的其他资源】的引用…...

Python与Matlab混合编程案例

前言因为项目需要&#xff0c;需要批处理很多Matlab的.m文件&#xff0c;从每个文件中提取结果合并到一个文件中。 很明显&#xff0c;如果手工统计&#xff0c;几百个文件会累死的。 因此立即想到了Python在批处理方面的优势&#xff0c;因此就在网上找了相关资料&#xff0c;…...

stack、queue、priority_queue

容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff0c;该种模式是将一个类的接口转换成客户希望的另外一个接口。 其中stack和queue都是容器适配器&#xff0c;其中stack可以封装vector、list以及我们…...

高通平台开发系列讲解(GPS篇)gpsONE 系统架构

文章目录 一、系统架构图二、gpsONE系统组成三、gpsONE交互流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢高通的定位系统模块,名称叫gpsONE。 一、系统架构图 二、gpsONE系统组成 GPS系统架构可以分为六个部分: APP层Framework Client端(LocationManager API…...

zkMove——针对Move合约生态的zkVM

1. 引言 Move为不同于Solidity的&#xff0c;开源的安全的智能合约开发语言&#xff0c;最早由Facebook为Diem链创造开发。不过&#xff0c;Move本身设计为与平台无关的语言&#xff0c;具有通用的库、工具&#xff0c;并使得采用完全不同数据模型和执行模型的链的开发者社区都…...

贪心算法的题目

每一步都做出一个局部最优的选择&#xff0c;最终的结果就是全局最优 只有一部分问题才能用贪心算法&#xff08;严格来讲&#xff0c;一个问题能不能用贪心算法需要证明的&#xff09; 2022.8.30 蔚来笔试题&#xff1a; 有a个y,b个o,c个u,用这些字母拼成一个字符串&#xf…...

线程控制--Linux

文章目录线程理解线程的优点与缺点进程的多个线程共享线程控制线程创建线程终止线程等待线程分离总结线程理解 谈及线程&#xff0c;就不得不谈起进程与线程的关系了。学习完前面有关进程的知识&#xff0c;之前我们对进程的定义是&#xff1a;内核数据结构代码和数据。但是今…...

17 | 如何做好面试复盘?将经验提升为能力

前言 前言&#xff1a;面试是最好的查漏补缺机会&#xff0c;做好面试复盘又是十分的重要。 文章目录前言一. 关于复盘1. 什么是复盘&#xff08;What&#xff09;2. 复盘的目的&#xff08;Why&#xff09;3. 什么时候需要复盘&#xff08;When&#xff09;4. 怎么进行复盘&am…...

数据结构-树

1. 二叉树遍历 #include <stdbool.h> #include "stdio.h" #include "stdlib.h"typedef struct TNode *Position; typedef Position BinTree; // 二叉树类型 typedef char ElementType;// 树结点定义 struct TNode {ElementType Data; // 结点数据Bin…...

Python3 循环语句

本章节将为大家介绍 Python 循环语句的使用。 Python 中的循环语句有 for 和 while。 Python 循环语句的控制结构图如下所示&#xff1a; while 循环 Python 中 while 语句的一般形式&#xff1a; while 判断条件(condition)&#xff1a;执行语句(statements)…… 执行流程…...

时序数据处理中的拟合问题

对于深度学习或机器学习模型而言,我们不仅要求它对训练数据集有很好的拟合(训练误差),同时也希望它可以对未知数据集(测试集)有很好的拟合结果(泛化能力),所产生的测试误差被称为泛化误差。度量泛化能力的好坏,最直观的表现就是模型的过拟合(overfitting)和欠拟合(…...

[数据结构基础]排序算法第一弹 -- 直接插入排序和希尔排序

目录 一. 排序的概念及分类 1.1 排序的概念 1.2 常见的排序算法 二. 直接插入排序 2.1 直接插入排序的实现逻辑 2.2 直接插入排序的实现代码 2.3 直接插入排序的时间复杂度分析 三. 希尔排序 3.1 希尔排序的实现逻辑 3.2 希尔排序实现代码 3.3 希尔排序的效率测试 …...

厚积薄发打卡Day115:Debug设计模式<简单工厂、工厂方法、抽象工厂>

厚积薄发打卡Day115&#xff1a;Debug设计模式<简单工厂、工厂方法、抽象工厂> 简单工厂 定义 由一个工厂对象决定创建出哪一种产品类的实例&#xff08;严格意义并不是设计模式&#xff0c;更是一种风格&#xff09; 类型&#xff1a;创建型&#xff0c;但不属于GOF…...

汽车Type-C接口:特点与要求解析

汽车Type-C接口的需求增长 随着汽车科技的不断发展&#xff0c;车载电子设备的功能和数量不断增加&#xff0c;因此&#xff0c;对于汽车Type-C接口的需求也在逐渐增长。作为一种高速、多功能的连接标准&#xff0c;汽车Type-C接口在车载设备连接中扮演着越来越重要的角色。 …...

Vim编辑器常用操作总结

目录 命令模式 命令尾行模式 a.基础命令 b.设置环境 c.文件替换 编辑模式 可视模式 a.可视行模式&#xff08;shift v&#xff09; b.可视块模式 &#xff08;ctrl v&#xff09; 命令模式 文本编辑 光标定位键盘&#xff08;直接按键就行&#xff09;&#xff1a;…...

SpringBoot中Bean的创建过程及扩展操作点 @by_TWJ

目录 1. 类含义2. Bean创建过程 - 流程图3. 例子3.1. 可变属性注入到实体中3.2. 模拟Bean创建的例子 1. 类含义 BeanDefinition - 类定义&#xff0c;为Bean创建提供一些定义类的信息。实现类如下&#xff1a; RootBeanDefinition - 类定义信息&#xff0c;包含有父子关系的Be…...

ic基础|时序篇:握手协议valid和ready的时序优化

大家好&#xff0c;我是数字小熊饼干&#xff0c;一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结&#xff0c;并通过汇总成文章的形式进行输出&#xff0c;相信无论你是在职的还是…...

伙伴匹配(后端)-项目简介

文章目录 伙伴匹配系统介绍需求分析技术栈 伙伴匹配系统介绍 帮助大家找到志同道合的伙伴&#xff0c;移动端h5网页 需求分析 1.给用户添加标签&#xff0c;标签的分类&#xff08;要有哪些标签&#xff0c;怎么把标签分类&#xff09; 2.主动搜索&#xff1a;允许用户根据标…...

SpringBoot整合Websocket的使用

一、什么是WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议。它允许客户端和服务器之间的双向通信&#xff0c;使得实时数据传输成为可能。相比传统的 HTTP 请求-响应模型&#xff0c;WebSocket 具有更低的延迟&#xff0c;更高的性能和更少的网络开销。…...