英国深度思维公司的人工智能体“阿尔法开发”(AlphaDev),已被证明能发现并改进C++(一种常用的计算机编程语言)库里广泛使用的计算机排序算法。《自然》7日刊登的这些人工智能(AI)生成的算法已被整合到C++排序库,这也是10多年来对这部分库作出的首次更改。

研究团队使用“AlphaDev”进行改进探索。
图片来源:《自然》网站
算法对于计算是必不可少的,它能为执行特定计算任务提供一组指令。排序任务这类基础算法每天要运行数万亿次。由于人类专家无法进一步优化,改进这类算法的尝试遇到了瓶颈,而AI智能体有望解决这个问题。使用深度学习改进算法的努力一直受到限制,因为之前只能在开发深度学习系统的训练样本范围内进行发现和优化。“阿尔法开发”这种新的深度强化学习智能体被证明能突破这种限制,无需针对某个问题的任何训练就能发现新算法。
深度思维研究团队将寻找更优排序算法的任务编成了一个游戏,并训练“阿尔法开发”来玩这个游戏。通过玩这个游戏,“阿尔法开发”发现了超越当前最先进算法的排序算法。这次新发现的排序算法中有一些已与C++库的标准排序函数整合,这个系统有数百万名用户使用,包括许多大学和跨国公司。
“这种方法的优势在于这个系统能学习基于奖励信号生成高效程序,无需来自训练样本的任何指导。”美国麻省理工学院科学家阿曼多·索拉-勒泽玛在同时发表的新闻与观点文章中写道,“这种方法的通用性以及无需提前了解问题就能运行的能力使其成为一个关键进展,从而有望实现专家干预最小化的高效编程。”
C++早在20世纪70年代就被贝尔实验室开发出来,至今仍是集灵活与功能强大于一体的编程语言,其很大一部分原因在于C++拥有计算机运行的实用性特征,使得它几乎可以创建任何类型的程序,甚至其他编程语言的库和编译器也能使用C++编写。但这也意味着,改进这类算法对人类来说非常有难度。现在,AI通过深度学习,发现了超越当前最先进算法的排序,这无疑是AI发挥其作用和价值、优化人类科技的一个生动案例。
关键字:C++
编辑:王兆楠 引用地址:十多年来,C++排序库首次更改,人工智能改进计算机编程语言
推荐阅读最新更新时间:2023-09-21 14:28
以89C51单片机和PC机为核心的远程数据采集多机系统设计
工业生产过程中常常需要对温度、湿度、压力、流量等各种工艺参数随时进行检测和监控,同时还要将检测到的数据及时传递给上位机,以实现对参数的随机查询, 对信息的存储与处理,及时调整控制方案,提高生产效率和产品质量。为此,笔者以89C51单片机作为主控制器设计了一种简单易行的远程数据采集系统。 1 系统硬件电路的设计 远程数据采集系统框图,由两部分组成:一是基于89C51实现的现场数据采集电路,二是PC机与89C51之间的远程通讯电路。 1.1 89C51数据采集系统 数据采集系统的硬件原理如图1所示。 该系统选用89C51单片机作为主控制器,此芯片与8051完全兼容,且内部带有4 KB闪速可编程、可擦除PEROM,工作时钟可高
[单片机]
S3C2410中文芯片手册-11.串口
S3C2410x 提供3个独立的异步串行I/O接口,每一个都可以工作在中断或是 DMA 模式。UART 最高可以支持230. 4K bps波特率,通过使用系统时钟。如果有外部设备给 UART 提供 UCLK, 那么 UART 可以达到更高的速度。每个 UART 通道包含2个16个字节的 FIFO 用于接收和发送数据。 S3C2410 的 UART 包括 可编程波特率,infra-red 发送/接收, 1~2个停止位, 5~8位数据位和奇偶校验。 每个 UART 由波特率发生器、发送器、接收器和控制单元组成,如图11-1所示。波特率发生器可以由 PCLK 或是 UCLK 提供时钟。数据发送器和接收器包含16字节的 FIF
[单片机]
s3c2440中断总结+按键中断
一、启动代码之IRQ中断分析。 举例:timer4中断调用过程 1、当timer4发生中断,INTOFFSET寄存器的值变为中断源INT_TIMER4对应的值,即 14。 同时,程序将跳转到irq中断向量地址(0x18)处去执行,该处的指令为 b HandlerIRQ 2、在启动代码中有如下一段宏定义 $HandlerLabel HANDLER $HandleLabel $HandlerLabel sub sp,sp,#4 ;decrement sp(to store jump address) stmfd sp!,{r0} ;PUSH the work register to stack(lr does
[单片机]
兼容C3D02065E,碳化硅肖特基二极管B1D02065E助力LED显示屏电源
LED显示屏是一种迅速发展起来的新型信息显示媒体,凭借智能控制、节能环保、寿命长、光效高、安全可靠等优点,其使用愈发普遍。 LED显示屏电源是其重要组成部分,一款合格可靠的电源,对LED显示屏节能效果及使用寿命都是有明显的提升效果。LED显示屏电源主要用来给显示屏发光二极管提供必要的工作电流,保证显示屏体正常显示。肖特基二极管整流器因具有极快的开关速度、超低的正向电压降、极低的反向恢复时间、低泄漏和高结温能力而深受设计师们的喜爱。本文介绍了基本半导体碳化硅肖特基二极管B1D02065E在LED显示屏驱动电源中的应用。 众所周知,大功率LED显示屏其电光转换效率仅为15%~20%,其余的电能都转化成大量的热量,碳化硅肖特基二
[嵌入式]
想从事单片机工作,C语言要达到什么水平?
今天我来聊聊从事单片机开发工作,C语言要达到什么样的水平。 我用自己从入门到找到工作的经历来说或许更贴切点。 我是2011年毕业,非本专业,读的是电气工程,看到师兄那苦逼样决定转行。 实习期比较自由,我就开始自学,从入门到转行成功,前后花了4个月左右。 刚开始,我也很焦虑…. 自己能不能学得会?学到什么程度能去找工作? 万一花了几个月时间学习,找不到工作怎么办? 过程虽然很曲折,不过最终还是转行成功了,还记录当时学习的一些笔记。 只要你肯坚持下去,有兵来将挡,水来土掩的魄力,结果都不会太差 。 最怕就是你碰到问题就退缩,就质疑,这样还不如别开始。 我是从51单片机开始学习的,在某宝上买了一块51单片机开发板。 开发板一般都有配
[单片机]
s3c2440裸机-代码重定位(1.重定位的引入,为什么要代码重定位)
1.重定位的引入(为什么要代码重定位) 我们知道s3c2440的cpu从0地址开始取指令执行,当从nor启动时,0地址对应nor,nor可以像内存一样读,但不能像内存一样写。我们能够从nor上取指令执行。 例子1:当nand启动的时候,我们nand中的前4K指令会变自动加载到sram中去,这时的0地址对应sram。 那么我们的程序如果大于4K,要从nand启动,sram只拷贝了nand中的前4K代码,那么如何解决这个问题呢? 那么就需要重定位代码到sdram中去,sdram的容量较大,又可以直接被cpu访问。 例子2:我们知道,程序含有: 代码段(.text) 数据段(.data):存放初始值不为0的全局变量/静态变量
[单片机]
单片机攻略3——C51入门
一:背景介绍 随着时代的发展,人们希望把CPU、RAM等器件集成到一个平台上来工作,单片机就这么诞生了。到现在为止市面上的单片机款式种类多如牛毛,继承的功能也要根据实际需求演化出了不同的方向。以51系列为例,比较常见的是Intel开发的MCS-51系列,和国内的STC51系列。 之后也以51系列(STC89C52RC型号)学习。 STC89C52RC资源:8kbROM程序储存器,256B数据存储器RAM,3个定时器计数器,6个中断源,16位重装 二:51的结构 51是40针脚直插式排布。下图是51芯片的实际引脚图。(细枝末节的硬件结构以后再补) 2.1 各引脚的功能作用 C51总体来讲可以分为六个类型的
[单片机]
嵌入式linux开发 (二十三) 内存管理(5) s3c2440内存管理
之前想着s3c2440内存管理应该和imx6ull 是一样的,目前看起来是不一样 JZ2440 S3C2440 ARM920T ARMv5t -内置 Steppingstone (4K-Byte SRAM) 无rom -外扩 EM63A165TS-6G:32MB/片,SDRAM,共两片 MX29LV160DBTI:2MB,并口 NOR FLASH K9F2G08U0C: 256MB,NAND FLASH 硬件对内存的管理 soc Supports various types of ROM for booting (NOR/NAND Flash, EEPROM, and others) N
[单片机]