使用 AlphaZero 和 Tabu 搜索查找越来越大的极值图

news2024/9/22 13:24:52

使用 AlphaZero 和 Tabu 搜索查找越来越大的极值图
AlphaZero 方法最佳研究(第1部分)

文章目录

  • 一、说明
  • 二、引言
  • 三、预备知识
  • 四、方法
    • 4.1 AlphaZero
    • 4.2 禁忌搜索
  • 五、实验与结果
  • 六、讨论
  • 七、附录
    • A 一个例子
    • B 问题背景

一、说明

   人工智能的树和图的检索问题,一直是一个较头痛的问题。在AlphaZero开发棋类游戏中的博弈树搜索问题,本篇是一个相关论文,其中对图的顶点、边之间关系进行理论模型建设。下面且看其内容。

二、引言

   随着神经网络的最新进展,人工智能 (AI) 方法在游戏 [37]、生物学 [23]、数学 [12]、化学和机器人等多个领域取得了巨大的成功。人工智能研究人员对数学特别感兴趣,因为它具有挑战性的多步骤推理结构、开放式问题和有限的数据。虽然自动定理证明一直被人工智能研究人员作为推理基准[2,5,25,26,33,35]感兴趣,但最近的一些工作已经使用机器学习来解决表示论、结理论和矩阵代数领域的研究问题[12,15,44]。许多数学问题可以建模为在极大的空间中搜索具有所需特征的对象或结构。事实上,自动定理证明通常被建模为在具有几个运算符的不断增长的操作数空间中搜索一系列操作(证明)。另一个例子是反例生成[44],其中感兴趣的对象是特定猜想的反例或改善问题边界的数学结构。AlphaTensor[15]最近的工作也依赖于神经网络引导的树搜索来寻找新的张量分解,从而产生更快的矩阵乘法算法。受此启发,我们关注了Erdůs[13]研究的经典极值图论问题,即对于任意给定数量的节点,找到一个最大化其边数但被限制为不具有3周期或4周期的图。虽然这个问题很简单,但数学家还没有找到所有大小的最佳结构:已知最多 53 个节点的最大边数 [22],并且使用局部搜索的下界已经报告了多达 200 个节点的下限 [9, 18]。由于有很强的本地搜索方法,这个问题对于基于学习的搜索方法来说是一个简单但具有挑战性的基准。我们相信,为这个问题开发的方法可以在其他领域有广泛的应用,从药物发现到软件验证。在本文中,我们使用强化学习(RL)并将图生成公式化为顺序决策过程。与Wagner[44]使用的图生成RL环境不同,它从一个空图开始,以固定的顺序逐个添加边,我们从任意图开始,以任意顺序添加/删除边。这种称为边缘翻转环境的RL环境至少有两个优点:(a)我们可以从已知的“好”图开始找到更好的图,以及(b)我们可以通过使用课程扩展到更大的尺寸。作为我们的RL代理,我们使用最先进的AlphaZero[36]算法,该算法在张量分解[15]、发现新的排序算法[27]和游戏[36]等多个领域取得了巨大的成功。

   神经网络架构。由于AlphaZero是由神经网络引导的,我们还需要一个与搜索空间的不变量一致的表示。我们处理简单的无向图,因此自然而然地想到了图神经网络[41];但是我们超越了它们,并引入了一种称为 PairFormer 的新表示:与在节点之间传递消息的传统图神经网络不同,PairFormer 在节点对之间传递消息。配对器给我们带来了额外的计算成本,但在检测周期方面要好得多。课程学习。当搜索所有图时,一个挑战是具有给定节点数 n 的图的数量随 n 呈指数增长;因此,随着 n 的增长,找到最优图变得更加困难。有趣的是,这个问题的已知最优图具有子结构性质:在许多情况下,给定大小的最优图是较大尺寸的最优图的近子图(参见,例如,[7,定理3])。因此,为较小的 n 找到接近最优的图可以作为为较大的 n 值找到好图的垫脚石。此属性可用于构建课程表:从发现的给定大小的图形开始,生成更大大小的新解,然后重复。我们的边缘翻转环境提供了从任何图形开始并任意添加或删除边缘的灵活性,因此我们不局限于起始图形的超图形,并且可以访问该大小的所有图形。在AlphaZero中部署这些想法,我们改进了64到136的下限。课程学习[38]是RL中广泛使用的方法,特别是用于解决许多领域的困难探索问题,包括机器人[4]和自动定理证明[5]以及解决魔方和其他困难的谜题[3,31]。需要注意的是,在机器学习文献中,“课程学习”一词被用于不同的语境,在本文中,我们使用“课程学习”一词来首先解决小尺寸的问题,并使用较小问题的解决方案来解决相同且较大的问题。

   使用课程进行本地搜索。子结构属性还可以增强其他类型的搜索。我们开发了一种禁忌搜索的增量版本,这是一种已知的局部搜索方法[19],其中每个大小的初始图形是从先前发现的较小尺寸的“好”图形中采样的。该算法也比现有技术有所改进。我们的消融表明,通过使用利用子结构属性的课程,这两种搜索策略都得到了显着改善。文稿摘要。我们引入了一个具有挑战性的基准,用于在大型状态空间中学习搜索,其灵感来自极值图论中的一个开放问题,迄今为止,该问题的最佳解决方案是通过局部搜索实现的。我们将图生成表述为边缘翻转环境,并引入了新的表示对立函数,该函数非常适合检测无向图中的循环。我们介绍了本地搜索方法和AlphaZero课程的使用,并表明它是改善这个极值图论问题结果的关键因素。最后,我们将所有图大小的问题下限从 64 提高到 134,并将这些图发布给研究社区以帮助进一步研究。这些图表可以在cccc上找到

三、预备知识

   我们只考虑简单和无向的图。设 f(n) 表示n顶点图。没有 3环路或 4 环路的 n 节点图中可能的最大边数(有关小 n 的 f(n) 值,请参阅附录中的表 1)。鄂尔多斯[13]推测,limn→∞ f(n) n √ n = 1 2 √ 2 .自1975年以来,这一猜想一直悬而未决(更多背景信息见附录B)。最严格的界限要归功于Garnick等人[18],他们证明了
1 2 2 ≤ lim ⁡ n → ∞ f ( n ) n n ≤ 1 2 − − − − − − − − ( 1 ) \frac{1}{2\sqrt{2}}\leq \lim_{n\rightarrow \infty }\frac{f(n)}{n\sqrt{n}}\leq \frac{1}{2} --------(1) 22 1nlimnn f(n)21(1)

   受此猜想的启发,我们想估计 n 的特定值的 f(n) 值。已知 f ( n ) ≤ n n − 1 / 2 f(n)≤ n \sqrt{n − 1}/2 f(n)nn1 /2对于所有 n [18]。当 n ≤ 53 [22] 时,f(n) 的确切值是已知的,并且所有 n ≤ 200 [9, 18] 都报告了建设性下界。我们的目标是改善 54 ≤ n ≤ 200 的这些下限。因此,我们希望找到没有 3 个周期或 4 个周期的 n 节点图,这些图具有尽可能多的边。图形的大小是其节点数。对于任何图形 G,我们分别用 e(G)、△(G) 和 □(G) 表示其边数、3 个周期和 4 个周期。我们说,如果图 G 没有 3 个周期,也没有 4 个周期,那么它是可行的。图形 G 的分数定义为

s ( G ) : = e ( G ) − △ ( G ) − □ ( G ) . − − − − − − ( 2 ) s(G) := e(G) − △(G) − □(G). ------(2) s(G):=e(G)(G)(G).(2)
   以下引理(附录 C 中的证明)意味着,对于任何给定数量的节点 n,证明 f(n) 的下限等价于最大化所有 n 节点图的分数.

  •    引理 1.对于任何 n 节点图 G,我们有 s(G) ≤ f(n);并且至少存在一个相等成立的 n 节点可行图。根据引理 1,我们可以通过两种方式表述最大化 f(n) 的问题:我们可以在可行的 n 节点图上最大化 e(G) 或在所有 n 节点图上最大化 s(G)。这两种公式具有相同的最优值,但它们的搜索空间不同。第一个公式的搜索空间较小,但我们使用的第二个公式允许我们定义一个方便的邻域函数,这有助于我们的算法更顺畅地导航图形空间。
  •    定义 1(翻转)。设 G 是一个图,让 u 和 v 是它的两个节点。如果 uv 是 G 中的边,则通过从 G 中去除边 uv 来获得 G Luv;否则,通过添加边缘 uv 获得 G Luv。无论哪种情况,我们都说 G′ 是通过翻转 uv 获得的。翻转操作有两个理想的属性:首先,任何 n 节点图都假设正好有 n 次翻转,这对 RL 代理的动作空间来说是一种技术上的便利;其次,任何 n 节点图都可以通过执行多达 n 2 次翻转从任何其他 n 节点图到达;也就是说,没有“死胡同”。

四、方法

   关于我们问题的一个关键观察结果是,在许多情况下,给定大小的最优图几乎是较大大小的最优图的子图。例如,根据 [7, 定理 3],大小为 40、45、47、48、49 的所有最优图都是大小为 50 的最优图的子图。虽然这并不适用于所有尺寸,但它可以用作指导搜索的启发式方法。由于所有最大尺寸为 52 的最佳图都是已知的 [30],因此我们使用较小大小的高分图(用适当数量的隔离节点装饰)作为初始图并进行迭代。因此,如果较小尺寸的结果有所改善,这有望导致较大尺寸的后续改进。这不仅利用了问题的近似子结构属性,而且还受到机器学习中众所周知的课程学习思想的启发[8]。在这项工作中,我们研究了两种主要方法:AlphaZero,它举例说明了强化学习,以及禁忌搜索,它举例说明了局部搜索。

4.1 AlphaZero

   我们将图生成定义为边缘翻转 RL 环境,其中状态空间由给定大小 n 的所有可能图组成,动作由所有 n 对节点组成,转换是在当前图中添加或删除边缘,奖励等于分数的变化, s(G),在采取行动后。AlphaZero智能体从给定的图开始,通过使用UCB规则[24]平衡探索和利用来构建树搜索。树搜索由两个神经网络(策略网络和价值网络)引导。这些网络与 pairformer 架构共享一个共同的躯干,该架构输入邻接矩阵并输出图嵌入。此图嵌入由策略和值头分别转换为操作和状态值的概率分布。我们实现了两个版本的AlphaZero:一个从空图开始,另一个从分数较高的较小尺寸的图开始。后者导致了自然的课程,并显着提高了表现。使用分布式基础设施训练代理,其中多个参与者并行操作并将数据提供给学习者,学习者又将更新的参数提供给参与者。详见附录D。

4.2 禁忌搜索

   局部搜索一直是证明 f(n) 下界的主要方案。我们实施了广泛使用的基于禁忌搜索的局部搜索方法。我们观察到禁忌搜索也受益于开始来自较小尺寸的良好图表,因此我们创建了一个增量本地搜索框架并表明这个想法显着提高了禁忌搜索的性能。详细信息请参见附录 F。

五、实验与结果

   我们比较了五种方法:从空图开始禁忌搜索;增量禁忌搜索,其中使用课程来使用每个尺寸找到的高分图表作为更大尺寸的起点(在附录 F 中解释); AlphaZero 从空图开始;增量 AlphaZero,其中使用课程(附录 D 中解释);和瓦格纳的交叉熵方法[44],第一个机器学习方法寻找数学猜想的反例(见附录G)。对于 AlphaZero,我们还对网络表示的选择进行了消融(参见附录 E)。由于 f ( n ) = θ ( n ( n ) f(n) = θ(n\sqrt{(n)} f(n)=θ(n(n) (参见(1))我们已将分数归一化为 n n n \sqrt{n} nn 在图中。

  •    与最先进的下限进行比较。如图1所示,增量禁忌搜索当 n ∈ 64 , . . , 134 ∪ 138 , . . . , 160 ∪ 176 , . . . , 186 ∪ 188 , . . . , 190 n ∈ {64, . . , 134}∪{138, . .. , 160}∪{176,... , 186} ∪ {188, . .. ,190} n64,..,134138,...,160176...186188...190(具体示例见附录A).在表 2 中,我们有列出了通过增量禁忌搜索 n = 1, 2, … 实现的下限…,200.AlphaZero 与课程还改进了许多尺寸的最先进的下限,并且完全符合与 54 到 100 之间所有大小的增量禁忌搜索相同,n = 56, 57, 64, 66, 77 除外,96,增量禁忌搜索领先一步。我们观察到瓦格纳的交叉熵方法[44]的性能比禁忌搜索和AlphaZero都要差。详情请参阅附录 G。
    使用课程的好处。如果没有课程,代理必须构建给定的图表size 从空图开始,而在课程中,智能体从先前找到的较小尺寸的图开始,翻转一些边以获得所需尺寸的图。图2(左)说明了对于尺寸 54 至 100,使用课程进行禁忌搜索的好处,其中随着节点数量的增加而显着增加。图 2(右)显示了类似的图AlphaZero:不带课程的 AlphaZero 与带课程的 AlphaZero 的大小差不多30但之后恶化。我们认为原因是剧集长度较长和困难勘探和信用分配。我们的结论是,使用课程是一个重要的组成部分将强化学习应用于这个问题,并且可能适用于任何优化问题一个子结构属性和一个巨大的状态空间。
    在这里插入图片描述
    图 1:归一化分数,由边数给出 n u m b e r o f e d g e s n n \frac{number of edges}{n \sqrt{n}} nn numberofedges,根据大小 n 绘制。 AlphaZero 与课程(未绘制)与 41 个尺寸的增量禁忌搜索获得相同的分数54到100。Erdos推测红色和蓝色曲线都收敛到青色水平线为˝ n → ∞ n → \infty n。最先进的下界来自[1,17,30,18],理论上限来自[18]。
    在这里插入图片描述
    图 2:左:使用课程的增量禁忌搜索,表现越来越好比禁忌搜索更大的问题规模。右:添加课程可以提高绩效AlphaZero 显着,尤其是在较大尺寸上。

六、讨论

   我们研究了一个具有挑战性的学习搜索基准,其灵感来自极值中的一个开放问题图论。我们将神经网络引导的蒙特卡罗树搜索与禁忌搜索进行了比较,并且观察到使用课程对于提高结果至关重要,但增加学习并没有改善结果(在另一个极值图论问题中观察到类似的现象,参见[32])。这可能是因为问题有很多局部最优,使得探索变得困难。
   此外,对于某些尺寸(例如 40、45、47、48 和 49),只有一个带有分数的 n 节点可行图f(n) [7,定理 3]。再举个例子,在我们的实验中,有一个大小,n = 96,其中只有一次运行的得分为 411,所有其他运行的得分都较小。在与 RL 改进了现有技术的问题(例如,张量分解问题[15]),没有强大的本地搜索基线,对于这个问题,自然,快速,并且存在强大的本地搜索算法。至关重要的是,禁忌搜索的探索速度比 lphaZero 快得多:
在给定的时间内,前者看到并评估的图形比后者多几个数量级
   后者。最后,与典型的强化学习问题相反,典型的强化学习问题的目标是最大化预期回报在非确定性环境中,在这个问题中,我们希望最大化最佳情况的回报确定性环境。换句话说,我们只需要找到一次好的解决方案。这使得一个想知道强化学习是否是解决这个问题的正确方法。

   我们研究了一个具有挑战性的学习搜索基准,其灵感来自极值图论中的一个开放问题。我们将神经网络引导的蒙特卡洛树搜索与禁忌搜索进行了比较,并观察到使用课程对于改善结果至关重要,但添加学习并不能改善结果(在另一个极值图论问题中观察到了类似的现象,参见[32])。这可能是由于存在大量局部最优值的问题,因此难以探索。
   此外,对于某些大小(例如,40、45、47、48 和 49),只有一个得分为 f(n) 的 n 节点可行图 [7,定理 3]。再举一个例子,在我们的实验中,有一个大小,n = 96,对于它,我们只有一个运行的分数是 411,而所有其他运行的分数都较小。与RL改进了现有技术的问题(例如张量分解问题[15])相比,这些问题没有很强的局部搜索基线,对于这个问题,存在自然、快速和强大的局部搜索算法。至关重要的是,禁忌搜索的探索速度比AlphaZero快得多:在给定的时间内,前者看到和评估的图形比后者多几个数量级。最后,与典型的RL问题相反,在非确定性环境中,人们的目标是最大化预期回报,在这个问题中,我们希望在确定性环境中最大化最佳情况回报。换句话说,我们只需要找到一次好的解决方案。这让人怀疑RL是否是解决这个问题的正确方法

七、附录

在这里插入图片描述
表 2:增量禁忌找到的没有 3 或 4 循环的图的最大边数搜索以及为每个尺寸找到的非同构图的数量。

在这里插入图片描述
在这里插入图片描述

A 一个例子

   作为我们结果的具体示例,我们提供了 64节点,边为230的一张图的稀疏 6 表示 [29]我们通过增量禁忌搜索(最好的已发表的界限为 229 [30]):

B 问题背景

   设 G 是一个简单的无向 n 节点图,没有 3 环路。G 可以有最大数量是多少条边? Mantel [28] 证明答案正是 ⌊ n 2 / 4 ⌋ ⌊n^2/4⌋ n2/4,启动极值图论领域。 Turán [40]将此结果推广到不连通的多图群模型和单连通图模型,对于任何 k,没有 k 派系的 n 节点图可以拥有的最大边数。
   一般来说,对于顶点集合 H 的图,令 ex(n, H) 表示 n 节点中的最大边数不包含 H 的任何成员作为子图的图(符号 ex 代表“极值”)。
   计算各种图类 H 的 ex(n, H) 是极值图论的中心问题。在这篇论文,我们研究函数
f ( n ) : = e x ( n , { C 3 , C 4 } ) − − − − − − − ( 3 ) f(n):=ex(n,\{C_3,C_4\})-------(3) f(n):=ex(n,{C3,C4})3)
我们知道 e x ( n , { C 3 } ) = ⌊ n 2 / 4 ⌋ ex(n,\{C_3\})=⌊n^2/4⌋ ex(n,{C3})=n2/4,通过 Mantel 的理论, lim ⁡ n → ∞ e x ( n , { C 4 } ) n n = 1 / 2 \lim_{n\rightarrow \infty }\frac{ex(n,\{C_4\})}{n\sqrt{n}}=1/2 limnnn ex(n,{C4})=1/2

   但是,真正的 f ( n ) f(n) f(n)表达式目前没有找到。,甚至它的渐近行为也不是很好理解。最严格的界限是由 Garnick 等人提出的。 [18],他们证明了
1 2 2 ≤ lim ⁡ n → ∞ f ( n ) n n ≤ 1 2 − − − − − − − − ( 1 ) \frac{1}{2\sqrt{2}}\leq \lim_{n\rightarrow \infty }\frac{f(n)}{n\sqrt{n}}\leq \frac{1}{2} --------(1) 22 1nlimnn f(n)21(1)
   Erdos˝[13]认为左不等式确实是一个等式。这个猜想仍然存在,自1975年以来没进展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1901648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos源码分析:心跳机制、健康检查、服务发现、AP集群

文章目录 心跳机制与服务健康检查NacosClient端NacosServer端NacosServer端健康检查 服务发现NacosClient端NacosServer端 AP集群从源码启动集群心跳设计原理各节点状态同步服务实例数据同步服务实例状态变动同步 心跳机制与服务健康检查 官方文档:发送某个实例的心…

SpringBoot新手快速入门系列教程四:创建第一个SringBoot的API

首先我们用IDEA新建一个项目,请将这些关键位置按照我的设置设置一下 接下来我将要带着你一步一步创建一个Get请求和Post请求,通过客户端请求的参数,以json格式返回该参数{“message”:"Hello"} 1,先在IDE左上角把这里改为文件模式…

MySQL基础篇(三)数据库的修改 删除 备份恢复 查看连接情况

对数据库的修改主要指的是修改数据库的字符集,校验规则。 将test1数据库字符集改为gbk。 数据库的删除: 执行完该数据库就不存在了,对应数据库文件夹被删除,级联删除,里面的数据表全部被删除。 注意:不要随…

【IO】文件操作

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. 文件1.1 认识文件1.2 分清操作的是内存还是硬盘1.3 路径1.3.1 目录结构1.3.2 相对和绝对路径 1.4 文本文件…

Kafka系列之Kafka知识超强总结

一、Kafka简介 Kafka是什么 Kafka是一种高吞吐量的分布式发布订阅消息系统(消息引擎系统),它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览, 搜索和其他用户的行动)是在现代网络上的许多社…

Feign-未完成

Feign Java中如何实现接口调用?即如何发起http请求 前三种方式比较麻烦,在发起请求前,需要将Java对象进行序列化转为json格式的数据,才能发送,然后进行响应时,还需要把json数据进行反序列化成java对象。 …

基于顺序表的通讯录实现

一、前言 基于已经学过的顺序表,可以实现一个简单的通讯录。 二、通讯录相关头文件 //Contact.h #pragma once#define NAME_MAX 20 #define TEL_MAX 20 #define ADDR_MAX 20 #define GENDER_MAX 20typedef struct PersonInfo {char name[NAME_MAX];char gender[G…

node的下载、安装、配置和使用(node.js下载安装和配置、npm命令汇总、cnpm的使用)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 愿将腰下剑,直为斩楼兰。 ——《塞下曲》 文章目录 一、node.js的下载、安装和配置1. node.js下…

Latex--制作幻灯片

目录 1.基本介绍 (1)案例引入 (2)相关说明 (3)控制顺序 (4)帧环境的创建 (5)内置主题 (6)生成标题页面 1.基本介绍 &#xff0…

磁盘就是一个超大的Byte数组,操作系统是如何管理的?

磁盘在操作系统的维度看,就是一个“超大的Byte数组”。 那么操作系统是如何对这块“超大的Byte数组”做管理的呢? 我们知道在逻辑上,上帝说是用“文件”的概念来进行管理的。于是,便有了“文件系统”。那么,文件系统…

vue侦听器watch()

侦听器watch&#xff08;&#xff09; 侦听器侦听数据变化&#xff0c;我们可以使用watch 选项在每次响应式属性变化时触发一个函数。 <template><h3>侦听器watch</h3><hr> <p>{{nessage}}</p> <button click"exchage">…

Fill - UVA 10603

网址如下&#xff1a; Fill - UVA 10603 - Virtual Judge (vjudge.net) 感觉有点浮躁&#xff0c;没法完全将思绪投入题的思考中 脑袋糊糊的 一道bfs题 代码如下&#xff1a; #include<queue> #include<cstdio> #include<cstring> #include<vector&g…

计算机网络——数据链路层(以太网扩展、虚拟局域网、高速以太网)

在许多情况下&#xff0c;我们希望把以太网的覆盖范围扩展。本节先讨论在物理层把以太网扩展&#xff0c;然后讨论在数据链路层把以太网扩展。这种扩展的以太网在网络层看来仍然是一个网络。 在物理层扩展以太网 现在&#xff0c;扩展主机和集线器之间的距离的一种简单方法就是…

Apache Seata新特性支持 -- undo_log压缩

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata新特性支持 – undo_log压缩 Seata新特性支持 – undo_log压缩 现状 & 痛点…

读书到底有什么意义?从笨小孩到名人的逆袭之路

点击上方△腾阳 关注 作者 l 腾阳 转载请联系授权 读书到底有什么意义&#xff1f; 有一个鸟语花香的农场里&#xff0c;住着老农夫和他的小孙子。 老农夫经常在清晨会坐在窗边&#xff0c;捧着厚厚的《圣经》&#xff0c;沉浸在知识的海洋里。 小孙子问他&#xff1a;…

政策公告与提醒

自 2024 年 4 月 3 日起,您将至少有 30 天的时间来更新应用,使其符合下方所述的政策变更。 我们将推出“儿童安全标准”政策,规定社交应用和约会交友应用必须遵循特定标准,并在 Play 管理中心内以自行认证的形式证明合规后才能发布。 为了提高健康相关应用在 Google Play…

BulingBuling - 作息安排 [Reset Your Routine] - 1

The Blinkist Team: [ Reset Your Routine ] 如果你发现自己很难按部就班&#xff0c;或者陷入工作效率低的困境&#xff0c;那么你可能需要重新调整一下作息时间&#xff01;从睡眠和营养&#xff0c;到待办事项和井井有条--本指南为你提供了各种技巧和策略&#xff0c;让你的…

linux下高级IO模型

高级IO 1.高级IO模型基本概念1.1 阻塞IO1.2 非阻塞IO1.3 信号驱动IO1.4 IO多路转接1.5 异步IO 2. 模型代码实现2.1 非阻塞IO2.2 多路转接-selectselect函数介绍什么才叫就绪呢&#xff1f;demoselect特点 2.3 多路转接-pollpoll函数介绍poll优缺点demo 2.4 多路转接-epoll&…

Python通过HiperMATRIX API写数据

PyCharm编程和调试 参考&#xff1a;写入数据接口 | HiperM 产品帮助中心 其中token 我偷懒了&#xff0c;只是调试&#xff0c;打开HiperMATRIX界面&#xff0c;登录&#xff0c;从浏览器console里面找到token value。 URL中有设备的ID&#xff0c;比如7123766549772505088&…

Linux期末考试复习资料分享(可打印)

Linux期末考试复习资料分享&#xff08;可打印&#xff09; 祝大家都有个好成绩&#xff5e; 获取链接:https://pan.baidu.com/s/1TrAqkeGTv6pYVHqxJIsyDw 提取码&#xff1a;x0za 获取链接:https://pan.baidu.com/s/1TrAqkeGTv6pYVHqxJIsyDw 提取码&#xff1a;x0za