首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【数据结构】图论核心算法解析:深度优先搜索(DFS)的纵深遍历与生成树实战指南​

【数据结构】图论核心算法解析:深度优先搜索(DFS)的纵深遍历与生成树实战指南​

作者头像
蒙奇D索隆
发布于 2025-06-08 02:06:15
发布于 2025-06-08 02:06:15
53600
代码可运行
举报
运行总次数:0
代码可运行

导读:从广度到深度,探索图的遍历奥秘

大家好,很高兴又和大家见面啦!!!

在上一篇中,我们共同揭开了广度优先搜索(BFS)的神秘面纱:它以“分层扩散”的方式遍历图结构,借助队列实现层序遍历,擅长解决最短路径和连通性分析问题(例如社交网络中的好友推荐)。BFS如同一束光波,由近及远均匀覆盖每个角落,确保无遗漏地探索所有可能性。

而今天,我们将潜入另一种经典策略——深度优先搜索(DFS)。与BFS的“广撒网”不同,DFS更像一位执着探险家,认准一条路走到尽头,再回溯寻找新路径。这种策略在迷宫探索、拓扑排序、环路检测等场景中大放异彩。

为何需要DFS?关键差异一目了然👇

  • 遍历逻辑:BFS用队列实现“先进先出”,逐层扫描;DFS用栈(或递归)实现“后进先出”,纵深突破。
  • 适用场景:BFS适合最短路径,DFS擅长深入探测结构特性(如回溯问题、图的连通分量统计)。
  • 空间效率:BFS在稠密图中可能内存暴增,DFS的空间消耗通常与路径深度成正比,更适合树形结构。

本文你将收获:

  • DFS核心思想:从二叉树的先序/后序遍历,推演至图的深度优先法则,图解“一条路走到黑+回溯”的精髓。
  • 代码与逻辑全解:递归与非递归实现对比,visited数组如何避免重复访问,连通图与非连通图的遍历陷阱。
  • 深度优先生成树:如何用DFS“绘制”图的骨架,邻接矩阵与邻接表为何导致生成树不唯一?
  • 实战思考:DFS在有向图(如依赖解析)与无向图中的不同表现,强连通分量的秘密。

阅读建议:搭配上一篇“BFS详解”食用更佳!通过对比两大算法,你将真正掌握“何时用BFS,何时选DFS”的决策智慧。文末附生成树案例详解,帮助你将抽象理论转化为直观洞察。🚀

现在,让我们一起潜入图论的深海,揭开DFS的层层奥秘吧!

一、深度优先搜索

深度优先搜索(Depth-First-Search, DFS),简单的理解就是尽可能深的进行遍历,用一句话来描述就是一条路走到黑

在二叉树的遍历算法中,按照遍历的方式,我们可以将其分为4类:

  • 先根遍历:根—>左—>右
  • 中根遍历:左—>根—>右
  • 后根遍历:左—>右—>根
  • 层序遍历:分层遍历

其中层序遍历实际上就是我们所说的:广度优先搜索(BFS)在树中的一种实际应用。在上一篇的内容中我们已经详细介绍,这里就不再赘述。

下面我们就来分析一下其他的三种遍历;

  • 先根遍历的核心是:先访问根结点,再访问子树,对应到图中,就是先访问当前顶点,再访问与其邻接的顶点;
  • 中根遍历是二叉树这种特殊的树形结构独有的一种遍历方式,因此我们不能够通过该遍历方式来拓展到图的遍历中;
  • 后根遍历的核心是:先访问子树,再访问根结点,对应到图中,就是先访问与当前顶点邻接的顶点,再访问当前顶点;

不管是先根遍历还是后根遍历,其遍历的方式都是沿着一条路径先找到最深的结点,再去找其他结点。

对于先根遍历与后根遍历这种每次遍历时都是沿着一条路径,往深处走的方式进行遍历,就是**深度优先遍历(Depth-First-Traversal, DFT)**。

当我们要查找具体的对象时,采用这种沿着一条路径,往深处走的方式进行查找,这就是**深度优先搜索(Depth-First-Search, DFS)**。

这里我们需要区分一下遍历与搜索:

  • 遍历简单的理解就是无条件地数据结构中的所有元素进行访问;
  • 搜索简单的理解就是有条件地对数据结构中的特定元素进行访问;

由此可以看到,当所有元素都是搜索中的特定元素时,那么我们对存储这些数据元素的数据结构进行搜索时,实际上就是在遍历该数据结构。

因此我们可以简单的理解为,遍历与搜索的区别就是:对元素的访问条件不同

深度优先遍历(DFT)深度优先搜索(DFS) 是同一策略的不同应用场景,但术语上更常用 DFS 统称。

这里一定要注意,在下面的介绍中,我们说的 DFS 实际上是说的对图的遍历算法,而不是查找特定值的算法。

理解了深度优先遍历与深度优先搜索后,下面我们就来了解一下其算法思路;

二、算法思路

深度优先搜索的算法思路如下:

  • 首先访问图中某一起始顶点 v
  • 然后从 v 出发,访问与 v 邻接且未被访问的任意一个顶点 w_1
  • 再访问与 w_1 邻接且未被访问的人一个顶点 w_2
  • 重复上述过程,直到 w_i 不存在与其邻接且未被访问的顶点
  • 当无法继续访问时,依次退回到最近被访问的顶点
  • 当退回后的顶点存在还未被访问的邻接顶点,则从该顶点继续上述搜索过程,直至所有顶点完成访问

这里我们以二叉树的先序遍历为例:

上图中使用的是先根遍历的方式进行展示:

  • 二叉树:先访问根结点,再访问子树
  • 图:先访问当前顶点,再访问当前顶点的邻接顶点

对于图而言,其遍历序列根据其存储结构的不同而有所不同:

  • 邻接矩阵:同一起始顶点的遍历序列相同
  • 邻接表:同一起始顶点的遍历序列不同
  • 十字链表:同一起始点的遍历序列不同
  • 邻接多重表:同一起始点的遍历序列不同

上图所示的遍历序列对于除邻接矩阵外的存储结构而言,只是其中的一种遍历序列,仅供大家参考。

三、算法逻辑

今天我们要介绍的图的深度优先搜索与树的先根遍历类似,都是先访问当前顶点,再对一条路径进行深入,直至该路径无法继续深入后,开始回溯,选择下一条路径进行深入;

在图的 DFS 中我们需要对已经完成访问的顶点进行标记,因此需要一个标记数组 visited[] 来记录当前顶点是否被访问。整个过程如下所示:

  • 访问当前起始顶点,并对起始顶点进行标记
  • 通过 FirstNeighbor(G, x) 获取当前顶点x的下一个邻接顶点编号y,并通过 visited[y] 进行判断该顶点是否被访问:
    • visited[y] == false 则未被访问,继续对顶点y进行 DFS
    • visited[y] == true 则已被访问,则说明该路径上的顶点都已被访问,接下来通过 NexttNeighbor(G, x, y) 获取顶点x除了顶点y之外的下一个邻接顶点编号z,并对该顶点进行判断是否被访问:
      • 存在未被访问的顶点,继续对该顶点进行 DFS
      • 不存在未被访问的顶点,开始回溯

其代码表达如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 深度优先搜索
bool visited[MAXVERSIZE];
void DFS(graph* g, int x) {
	visit(g, x);					// 访问当前顶点
	visited[x] = true;				// 标记当前顶点
	for (int y = FirstNeighbor(g, x); y >= 0; y = NextNeighbor(g, x, y)) {
		// FirstNeighbor(g, x): 当前顶点x存在下一个邻接点,则返回对应顶点编号,否则,返回-1
		// NextNeighbor(g, x, y): 当前顶点x存在下一个除顶点y以外的邻接点,则返回对应顶点编号,否则,返回-1
		// y == -1时,说明此时该路径中不存在未被访问的邻接点
		if (!visited[y]) {			// 判断当前顶点是否被访问
			DFS(g, y);				// 未被访问,则对该点进行深度优先搜索
		}
	}
}

对于连通图而言,上述代码逻辑足以完成所有顶点的遍历,但是在非连通图中,从某一起始点开始进行 DFS 只能完成该点所在连通分量的所有顶点的遍历。

为了确保能够对非连通图完成所有顶点的遍历,我们需要借助 visited[] 数组来查找未被访问过的顶点信息,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void DFSTraverse(graph* g) {
	// 初始化标记数组
	for (int i = 0; i < MAXVERSIZE; i++) {
		visited[i] = false;
	}
	for (int i = 0; i < MAXVERSIZE; i++) {
		if (!visited[i]) {
			DFS(g, i);
		}
	}
}

在该函数中,每一次调用 DFS 就是对图中的一个连通分量进行遍历,图中存在多少个连通分量,就会调用多少次 DFS

四、算法评价

图的遍历算法的本质就是通过边来找顶点,因此对于 DFS 而言,其时间复杂度与 BFS 的时间复杂度一致:

  • 邻接矩阵:O(|V|^2)
  • 邻接表/十字链表/邻接多重表:O(|V| + |E|)

在 DFS 中,我们可以像上述展示的代码一样,通过递归实现,其对应的空间复杂度为:O(|V|)

同样也可以通过栈的方式来实现,对应的空间复杂度依然是:O(|V|)

五、深度优先生成树

与广度优先生成树一致,深度优先生成树也是在遍历图的过程中保留所有的顶点与其访问的边所得到的一棵生成树,我们以下面的例子来说明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
a---b---d
a---c---e---f---g
b---e
e---g

在上图中,其顶点集与边集如下所示:

  • 顶点集: V = {a, b, c, d, e, f, g}
  • 边集:E = {(a, b), (a, c), (b, d), (b, e), (c, e), (e, f), (e, g), (f, g)}

当我们从起始点 a 开始进行遍历时,此时点a 会被标记,其对应的生成树为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
a

对于点a而言,其邻接点有两个:

  • 点b:未访问
  • 点c:未访问

当我们找到第一个邻接点b时,点b会被标记,所对应的边 (a, b) 被访问,对应的生成树为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph TB
a---b

对于点b而言,其邻接点有3个:

  • 点a:已访问
  • 点d:未访问
  • 点e:未访问

这时找到的邻接点a已经被访问,算法会继续寻找除了点a外的下一个邻接点d。

当找到点d后,点d会被标记,所对应的边 (b, d) 被访问,其对应的生成树为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph TB
a---b---d

对于点d而言,其邻接点有1个:

  • 点b:被访问

由于点d不存在未被访问的邻接点,算法会开始回溯到点b,这时会继续寻找与点b邻接的下一个邻接点e。

当找到点e后,点e会被标记,所对应的边 (b, e) 被访问,对应的生成树为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph TB
a---b---d
b---e

对于点e而言,其邻接点有4个:

  • 点b:已访问
  • 点c:未访问
  • 点f:未访问
  • 点g:未访问

这时算法会重复上述的步骤依次找到并标记以下顶点与边:

  • 顶点:c,对应边:(e, c)
  • 顶点:f,对应边:(e, f)
  • 顶点:g,对应边:(f, g)

此时所有的顶点都完成了标记,我们也就得到了该图的深度优先生成树:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph TB
a---b---d
b---e---c
e---f---g

深度优先生成树在不同的存储结构中,同样不相同:

  • 邻接矩阵:深度优先生成树唯一
  • 邻接表/十字链表/邻接多重表:深度优先生成树不唯一

具体的原因我这里再重复一遍:

  • 在邻接表/十字链表/邻接多重表中,边的存储是以链表的形式进行存储,因此结点的位置可能发生变化,因此对应的生成树也会发生变化

六、有向图与无向图

现在我们已经了解了图的两种遍历方式:BFSDFS ,不管是哪种方式,在对无向图进行遍历与对有向图进行遍历时,是有些许区别的:

  • 在无向图中,两种遍历方式的调用次数 = 连通分量的数量
  • 在有向图中,两种遍历方式的调用次数都需要根据实际情况进行分析:
    • 起始点到其它顶点都有路径,则只需调用一次
    • 起始点与其它的顶点之间不存在路径,则需多次调用
    • 有向图为强连通图,无论从哪个顶点出发,都只需要调用一次

在这两个篇章中我们都是以无向图为例进行说明,但是在实际问题中,我们还是需要根据具体情况进行具体分析。

结语:深潜与回溯,揭开图论世界的另一面

通过本篇的探索,我们见证了深度优先搜索(DFS)如何以“不撞南墙不回头”的执着,在图结构中开辟出一条条纵深路径。与广度优先搜索(BFS)的“层层递进”不同,DFS以递归与回溯为利器,在迷宫寻路、拓扑排序、连通分量统计等场景中展现独特优势。

关键回顾🔍

  • DFS的核心逻辑:从二叉树的遍历(先序/后序)出发,推演至图的深度探索策略,通过visited数组避免重复访问,用递归或栈实现“一条路走到黑”的纵深突破。
  • 生成树的多样性:DFS生成树的形态因存储结构(邻接矩阵 vs 邻接表)而异,揭示了算法执行路径的不确定性,也体现了图遍历的灵活性。
  • 场景适应性
    • 无向图:DFS调用次数=连通分量数,天然适合检测图的连通性。
    • 有向图:强连通分量需特殊处理,DFS在依赖解析、环路检测中表现卓越。

实践启示💡

  • 代码实现:递归简洁但需警惕栈溢出,非递归栈实现更适合大规模图。
  • 性能权衡:邻接表下DFS时间复杂度为O(V + E),空间复杂度与递归深度正相关,树形图优化显著。
  • 决策智慧:遇到回溯问题、连通分量分析时优先考虑DFS;追求最短路径或层序关系时转向BFS。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
在图片中加入噪点就能骗过Google最顶尖的图像识别AI
近期,一群来自华盛顿大学网络安全实验室(NSL)的计算机专家发现,恶意攻击者可以欺骗Google的CloudVision API,这将导致API对用户提交的图片进行错误地分类。 近些年来,基于AI的图片分类系统变得越来越热门了,而这项研究针对的就是这种图片分类系统。现在,很多在线服务都会采用这种系统来捕捉或屏蔽某些特殊类型的图片,例如那些具有暴力性质或色情性质的图片,而基于AI的图片分类系统可以阻止用户提交并发布违禁图片。 虽然这种分类系统使用了高度复杂的机器学习算法,但是研究人员表示,他们发现了一种非
FB客服
2018/02/24
1.9K0
在图片中加入噪点就能骗过Google最顶尖的图像识别AI
危险!一张贴画就能迷惑AI,对抗补丁或让自动驾驶车毁人亡
来自北京航空航天大学(Beihang University)、悉尼大学(University of Sydney)和剑桥大学(University of Cambridge)的一项最新研究成果显示,将一张用打印机简单打印出来的涂鸦贴画贴在路牌上就可以让AI自动驾驶系统完全误分类。
新智元
2019/05/14
1.8K0
【机器学习看裸照】谷歌、微软、亚马逊,哪家图像API鉴黄能力强?
【新智元导读】如今,网络中每天会产生海量的图像文件,而对于这些图片进行安全性鉴定是非常有必要的。很多公司都会使用图像鉴定API对裸露或违法照片进行自动过滤和修改。本文便实现并比较了谷歌、微软、亚马逊等公司的鉴定API能力。
新智元
2018/08/16
2.2K0
【机器学习看裸照】谷歌、微软、亚马逊,哪家图像API鉴黄能力强?
98%都认错,图像识别AI遇上对抗性图像竟变“瞎子”
近几年来,计算机视觉有了很大的改善,但仍然有可能犯严重的错误。犯错如此之多,以至于有一个研究领域致力于研究AI经常误认的图片,称为“对抗性图像”。可以把它们看作计算机的光学错觉,当你看到树上有一只猫时,人工智能看到了一只松鼠。
代码医生工作室
2019/07/23
6680
98%都认错,图像识别AI遇上对抗性图像竟变“瞎子”
基于tensorflow实现AI图片鉴黄(NSFW)
本文介绍了一种基于深度学习的图像鉴黄方法,该方法使用OpenCV和Caffe库对图像进行鉴黄任务。首先,使用OpenCV库加载图像,并进行预处理操作,如灰度化、二值化等。然后,使用Caffe库中的卷积神经网络模型对图像进行特征提取和分类。最后,使用Python脚本来实现图像的鉴黄任务,并输出结果。该方法在测试数据集上取得了较好的效果,具有较高的准确率和实时性。
sparkexpert
2018/01/09
7.5K1
基于tensorflow实现AI图片鉴黄(NSFW)
修改一个像素,就能让神经网络识别图像出错
选自arXiv 作者:Su Jiawei等人 机器之心编辑部 用于识别图片中物体的神经网络可以被精心设计的对抗样本欺骗,这个问题目前在计算机视觉领域备受关注。此前,生成对抗样本通常需要向原图片中加入一
机器之心
2018/05/10
1.2K0
UnifyID的研究人员使用神经网络生成风格化图像扰乱API识别
肉眼可以相对容易地将猫的图片与迷惑人的版本连接起来,但这对于现成的计算机视觉API并非总是如此。在CVPR会议上,来自UnifyID的研究人员证明,猫科动物的风格化照片欺骗到Watson的物体识别工具概率超过97.5%。
AiTechYun
2018/07/27
5110
UnifyID的研究人员使用神经网络生成风格化图像扰乱API识别
麻省理工学院的新系统TextFooler, 可以欺骗Google的自然语言处理系统及Google Home的音频
两年前,Google的AI还不太成熟。一段时间以来,有一部分计算机科学研究一直致力于更好地理解机器学习模型如何处理这些“对抗性”攻击,这些攻击是故意用来欺骗或愚弄机器学习算法而创建的输入。
AI科技大本营
2020/02/20
5880
麻省理工学院的新系统TextFooler, 可以欺骗Google的自然语言处理系统及Google Home的音频
机器学习对抗案例 | 愚弄Google图像识别算法
2018年CES在美国拉斯维加斯召开,站在风口浪尖上的科技企业纷纷出动,在会场各显神通地展示自己的科技产品和各种智能算法。近年来,人工智能的浪潮不断拍打着 IT 领域的海岸,各家科技巨头们都喜欢向外骄
FB客服
2018/02/24
1.4K0
机器学习对抗案例 | 愚弄Google图像识别算法
【学术】麻省理工学院的学生们愚弄了谷歌图像识别技术 计算机视觉算法仍然很容易被骗
人工智能图像识别技术已经取得了一些令人惊叹的进步,但正如一项新的研究表明的那样,这些系统仍然可以被那些愚弄的例子所绊倒。 一群麻省理工学院的学生最近愚弄了谷歌开发的一种图像分类器,这群学生周三发布的一篇论文详细描述了一种可以更快地欺骗系统的技术。这种欺骗谷歌系统的方法提供了一个真实的例子,说明基于人工智能的图像识别系统是如何被黑客入侵的。 论文地址:https://arxiv.org/pdf/1712.07113.pdf 视频地址:http://imgcdn.atyun.com/2017/12/jqyqrd
AiTechYun
2018/03/05
7250
【学术】麻省理工学院的学生们愚弄了谷歌图像识别技术 计算机视觉算法仍然很容易被骗
学界 | 担心面部识别泄露隐私?多伦多大学图像「隐私过滤器」了解一下
每当用户将照片或视频上传到社交媒体平台时,这些平台的面部识别系统都会对用户有一定的了解。这些算法会提取包括用户的身份、所在地以及认识的人在内的数据,而且还在不断提升。
机器之心
2018/07/30
7350
学界 | 担心面部识别泄露隐私?多伦多大学图像「隐私过滤器」了解一下
学界 | 把人识别成狗?机器还是太容易被骗
AI 科技评论按:日前谷歌大脑负责人 Jeff Dean 在推特上转了一篇 Anish Athalye 的推文,推文内容如下: 防御对抗样本仍然是一个尚未解决的问题,三天前公布的 ICLR 接收论文里
AI科技评论
2018/03/30
5860
学界 | 把人识别成狗?机器还是太容易被骗
Salesforce通过Einstein Vision for Social Studio为营销人员提供基于AI的图像识别
社交媒体已经从基于文字分享逐步转化为视觉分享媒体。因为可即时从任何设备上传图片到社交媒体,人们在社交媒体上分享的照片比以往任何时候都要多。根据德勤发布的数据, 2016年有2.5万亿张照片被分享或存储在网上。可以肯定地说,这个数字还将不断增长。
臭豆腐
2019/04/16
1.1K0
Salesforce通过Einstein Vision for Social Studio为营销人员提供基于AI的图像识别
DALL·E 3辣眼图流出!OpenAI 22页报告揭秘:ChatGPT自动改写Prompt
不仅不用烧脑去想Prompt,而且还能直接配文,出图惊艳效果着实碾压了Midjourney。
新智元
2023/10/20
6170
DALL·E 3辣眼图流出!OpenAI 22页报告揭秘:ChatGPT自动改写Prompt
求职者可能是假货?冒名者用deepfake盗窃身份应聘远程工作,FBI:说话时能识别
大数据文摘出品 作者:Caleb 在线工作正在逐渐正式进入我们的生活。 根据数据公司Emsi Burning Glass统计,2020年初纽约全市16万3000个招聘岗位中,只有6700个允许在线工作,占总岗位数量的4%;但到去年12月,全市24万3000个招聘岗位中,在线工作的岗位数量增至2万5800个,已占到总岗位数量的10.6%。 不过俗话说得好,人心隔肚皮,更何况现在还多隔了一层屏幕,谁也保不准Neso事件不会再次发生。 这不,最近根据美国联邦调查局调查,越来越多的人正在窃取别人的个人身份信息,以及
大数据文摘
2022/07/12
2830
求职者可能是假货?冒名者用deepfake盗窃身份应聘远程工作,FBI:说话时能识别
这一次,MIT的科学家让谷歌AI把步枪误认成直升机
安妮 编译整理 量子位 出品 | 公众号 QbitAI 这是什么? 熟悉枪械的盆友可能一眼就认出这是步枪,即使对枪种类不熟悉的同学也能认出这最可能是枪。 但……这道题对谷歌Cloud Vision A
量子位
2018/03/22
7380
这一次,MIT的科学家让谷歌AI把步枪误认成直升机
ResNet图像识别准确率暴降40个点!这个ObjectNet让世界最强视觉模型秒变水货
计算机视觉模型已经学会了非常精确地识别照片中的物体,甚至有些模型在某些数据集上的表现比人类更好。但是,同样的物体检测器如果在现实世界中使用,它们的性能会显著下降,这就给自动驾驶汽车和其他使用机器视觉的安全至关重要的系统带来了可靠性方面的担忧。
新智元
2019/12/18
8670
Google 发布 AutoML Vision,全自动训练 AI 无需写代码
关键时刻,第一时间送达! 还记得去年5月,谷歌大脑团队对外宣布推出AutoML系统,让人工智能自动编写机器学习程序,试图使机器学习模型的设计变得更为简单。短短三个月后,AutoML在一次图像内容分类的测试中,以82%的准确率击败了编写AutoML的研究人员。 1月17日,基于自身云平台,谷歌又推出了机器学习系统Google Cloud AutoML,为更多正在尝试搭建机器学习模型的开发者、分析人员、企业群体,降低了使用人工智能相关工具和框架的门槛。“目前,全球只有少数企业在ML和AI的研发上投入足够的人
企鹅号小编
2018/02/05
1.3K0
Google 发布 AutoML Vision,全自动训练 AI 无需写代码
ICML 2018 | 英伟达提出仅使用噪点图像训练的图像增强方法,可去除照片噪点
近期在深度学习领域的研究聚焦于通过展示带噪点和清晰的图像示例对来训练神经网络修复图像。然后 AI 系统学习如何弥补差异。新方法的不同之处在于,它仅需要两张都带噪点的输入图像来训练。
机器之心
2018/07/26
7490
ICML 2018 | 英伟达提出仅使用噪点图像训练的图像增强方法,可去除照片噪点
AI图像识别:人类看的是形状,算法看的是纹理
图片中的动物轮廓是猫,但是猫披着大象皮肤纹理,将图片交给人识别,人会说是猫,如果给计算机视觉算法处理,它会说是大象。德国研究人员认为:人看的是形状,计算机看的是纹理。这一发现相当有趣,但它证明计算机算法离人类视觉还有很远距离。
小白学视觉
2019/11/14
1.2K0
AI图像识别:人类看的是形状,算法看的是纹理
推荐阅读
在图片中加入噪点就能骗过Google最顶尖的图像识别AI
1.9K0
危险!一张贴画就能迷惑AI,对抗补丁或让自动驾驶车毁人亡
1.8K0
【机器学习看裸照】谷歌、微软、亚马逊,哪家图像API鉴黄能力强?
2.2K0
98%都认错,图像识别AI遇上对抗性图像竟变“瞎子”
6680
基于tensorflow实现AI图片鉴黄(NSFW)
7.5K1
修改一个像素,就能让神经网络识别图像出错
1.2K0
UnifyID的研究人员使用神经网络生成风格化图像扰乱API识别
5110
麻省理工学院的新系统TextFooler, 可以欺骗Google的自然语言处理系统及Google Home的音频
5880
机器学习对抗案例 | 愚弄Google图像识别算法
1.4K0
【学术】麻省理工学院的学生们愚弄了谷歌图像识别技术 计算机视觉算法仍然很容易被骗
7250
学界 | 担心面部识别泄露隐私?多伦多大学图像「隐私过滤器」了解一下
7350
学界 | 把人识别成狗?机器还是太容易被骗
5860
Salesforce通过Einstein Vision for Social Studio为营销人员提供基于AI的图像识别
1.1K0
DALL·E 3辣眼图流出!OpenAI 22页报告揭秘:ChatGPT自动改写Prompt
6170
求职者可能是假货?冒名者用deepfake盗窃身份应聘远程工作,FBI:说话时能识别
2830
这一次,MIT的科学家让谷歌AI把步枪误认成直升机
7380
ResNet图像识别准确率暴降40个点!这个ObjectNet让世界最强视觉模型秒变水货
8670
Google 发布 AutoML Vision,全自动训练 AI 无需写代码
1.3K0
ICML 2018 | 英伟达提出仅使用噪点图像训练的图像增强方法,可去除照片噪点
7490
AI图像识别:人类看的是形状,算法看的是纹理
1.2K0
相关推荐
在图片中加入噪点就能骗过Google最顶尖的图像识别AI
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 导读:从广度到深度,探索图的遍历奥秘
  • 一、深度优先搜索
  • 二、算法思路
  • 三、算法逻辑
  • 四、算法评价
  • 五、深度优先生成树
  • 六、有向图与无向图
  • 结语:深潜与回溯,揭开图论世界的另一面
加入讨论
的问答专区 >
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档