An Experimental Study of State-of-the-Art Entity Alignment Approaches论文阅读

最先进的实体对齐方法的实验研究综述

Title: An Experimental Study of State-of-the-Art Entity Alignment Approaches
日期: 2022
发表单位: IEEE
github: https://github.com/DexterZeng/EAE
原文地址: https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9174835
概括: 近年来,EA 方法迅速增加,但它们的相对性能仍不清楚,部分原因是经验评价不完整,以及比较是在不同设置(即数据集、用作输入的信息等)下进行的。在本文中,我们通过对最先进的 EA 方法进行全面评价和详细分析来填补空白。

An Experimental Study of State-of-the-Art Entity Alignment Approaches

Abstract

实体对齐 (EA) 寻找位于不同知识图谱(KG)中的等价实体,这是提高KG质量的重要步骤,因此对下游应用程序(例如,问答和推荐)具有重要意义。

1 Introduction

典型的KG以三元组的形式存储世界知识(即⟨entity, relation, entity⟩),其中实体(entity)指的是真实世界中的独特对象,而关系描述了将这些对象联系起来的关系。

一般来说,当前的EA方法主要通过假设不同KG中的等价实体具有相似的相邻结构,并采用表示学习方法将实体作为数据点嵌入到低维特征空间中来解决该问题。本文对最先进的EA方法进行经验评价,具有以下特征:

  1. 类别内和类别间的公平比较。将这些分组,然后比较类别内和类别间的结果。
  2. 代表性数据集的综合评价。现有研究仅报告他们在一个或两个特定数据集上的结果,因此难以评价它们在各种可能场景中的有效性,例如跨语言/单语言、稠密/正态、大型/中型KG。
  3. 应对现实生活挑战的新数据集。

本研究是系统和全面评价最先进的 EA 方法的首批尝试之一。这通过以下方式实现:

  1. 确定现有 EA 方法的主要组成部分,并提供一个通用 EA 框架
  2. 将最先进的方法分为三类,并进行详细的组内和组间评价,从而更好地定位不同的EA 解决方案
  3. 在广泛的用例上检查这些方法,包括跨/单语言对齐,以及在稠密/正态、大/中规模数据上的对齐。经验结果揭示了每个解决方案的有效性、效率和稳健性。

2 PRELIMINARIES

2.1 Task Definition

在这里插入图片描述

嵌入学习模块分别为 K G E N KG_{EN} KGEN K G E S KG_{ES} KGES中的实体生成嵌入。然后对齐模块将实体嵌入投影到相同的向量空间中,这样 K G E N KG_{EN} KGEN K G E S KG_{ES} KGES中的实体嵌入可以直接比较。最后,利用统一的嵌入,预测模块为 K G E N KG_{EN} KGEN中的每个源实体预测 K G E S KG_{ES} KGES中的等价目标实体。额外信息模块利用多种技术来提高EA性能。自助法旨在将从上一轮检测到的可信EA对,加入到训练集中,以用于下一轮学习。另一种方法是使用额外的文本信息来补充实体嵌入以进行对齐。

2.2 Scope and Related Work

实体对齐的不同角度:实体消解(ER)、实体匹配、记录链接、去重、实例/本体匹配、链接发现、实体链接/实体消歧

**实体链接:**实体链接(EL)的任务也称为实体消歧。它关注识别自然语言文本中的实体提及(mention),并将它们映射到给定参考目录(大多数情况下为 KG)中的实体。现有方法利用大量信息,包括实体提及周围的单词、某些目标实体的先验概率、已经消歧的实体提及、维基百科等背景知识,以消除链接目标的歧义。

**实体消解:**实体消解(ER)的任务,也被称为实体匹配、去重或记录链接,假定输入是关系数据,每个数据对象通常都有大量的文本信息,用多个属性来描述。许多已知的相似度或距离函数(例如,名称的Jaro-Winkler 距离和日期之间的数字距离)用于量化两个对象之间的相似度。基于规则或基于机器学习的方法能够解决将两个对象分类为匹配或不匹配的问题。更具体地说,对于主流的ER解决方案,为了匹配实体记录,首先手动或自动对齐属性,然后计算相应属性值之间的相似度,最后汇总对齐属性之间的相似度得分以得出记录之间的相似度。

由于EA追求与ER相同的目标,因此可以将其视为ER的一个特殊但非平凡的例子。所以,一般的ER方法可以适用于EA问题。

**KG实体消解:**一些ER方法旨在处理KG并专门处理二元关系,即图数据。这些方法也经常被称为实例/本体匹配方法。

图数据有其自身的挑战:

  1. 关于实体的文本描述信息通常较少存在,或者以实体名称的形式减少到最低限度
  2. KG在开放世界假设下运作,其中实体的属性可能不存在于KG中,尽管它们在现实中存在。这将KG与经典数据库区分开来,后者通常假设记录的所有字段都存在
  3. KGs 有额外的预定义语义。在最简单的情况下,它们采用类别分类表(taxonomy of classes)的形式。在更复杂的情况下,KG 可以配备逻辑公理的本体。

在过去二十年里,已经开发了许多专门用于KG的方法。这些可以分为几个维度:

**范围。**一些方法对齐两个KG的实体,其他方法对齐关系名(也称为模式),还有其他方法对齐两个KG的类别分类表。

**背景知识。**一些方法使用本体(T-box)作为背景信息。对于参与本体对齐评价倡议 (Ontology Alignment Evaluation Initiative, OAEI)的方法尤其如此。

训练。

有些方法是无监督的,直接操作输入数据,不需要训练数据或训练阶段(例如 PARIS和 SiGMa)。另一方面,其他方法基于预定义的映射来学习实体之间的映射。

3 A GENERAL EA FRAMEWORK

在这里插入图片描述

EA框架四个主要组件:

**嵌入学习模块:**该组件旨在学习实体的嵌入,大致可分为两类:基于KG表示的模型,(TransE)和基于图神经网络(GNN)的模型(GCN)。

**对齐模块:**该组件旨将(上一个模块中学到的)不同KG中的实体嵌入映射到一个统一的空间中。大多数方法使用基于边界(margin)的损失来强制来自不同KG的种子实体嵌入接近。另一个经常使用的方法是语料库融合,它在语料库级别对齐KG,并将不同KG中的实体直接嵌入到同一向量空间中。

**预测模块:**给定统一的嵌入空间,对于测试集中的每个源实体,预测最有可能的目标实体。常见的策略包括使用余弦相似度、曼哈顿距离或实体嵌入间的欧几里得距离来代表实体之间的距离(相似度),然后选择距离最小(相似度最高)的目标实体作为对应实体。

**额外信息模块。**在基本模块之上,一些解决方案建议利用额外信息来增强 EA 性能。一种常见的做法是自助法(bootstrapping,或自学习)策略,它利用预测模块生成的可信对齐结果作为后续对齐迭代的训练数据(图 2 中的黑色虚线)。此外,其他人建议利用多类型文字信息,例如属性、实体描述和实体名称,来补充KG结构(蓝色虚线)。

在这里插入图片描述

3.1 Embedding Learning Module(嵌入学习模块)

**TransE。**TransE将关系解释为对实体的低维表示间的平移(translation)操作。更具体地说,给定一个关系三元组(h,r,t),TransE建议尾实体的嵌入应该接近头实体 h 的嵌入加上关系 r 的嵌入,即h ⃗ + r ⃗ ≈ t ⃗。因此,实体的结构信息得以保留,并且共享相似邻居的实体将在嵌入空间中具有近似的表示。

**GCN。**图卷积网络(GCN)是一种直接对图结构数据进行操作的卷积网络。它通过对节点邻域信息进行编码来生成节点级嵌入。GCN的输入包括KG中每个节点的特征向量,以及矩阵形式的图结构的代表性描述,即邻接矩阵。输出是一个新的特征矩阵。GCN模型通常包含多个堆叠的GCN层,因此它可以捕获距离实体多跳的部分KG结构。

对于基于GCN的模型,注意到GCN忽略了KG中的关系,RDGCN采用双原始图卷积神经网络(dual-primal graph convolutional neural network, DPGCNN)作为补救。另一方面,MuGNN利用基于注意力的 GNN 模型为不同的相邻节点分配不同的权重。KECG结合了图注意力网络 (GAT)和TransE来捕获图内结构和图间对齐信息。

其他设计了新的嵌入模型方法:RSNs使用带有残差学习的循环神经网络(RNN)来学习实体之间的长距离关系路径。TransEdge中,设计了一种新的能量函数来度量实体嵌入间的边平移误差,用于学习KG嵌入,其中边嵌入通过上下文压缩和投影来建模。

3.2 Alignment Module(对齐模块)

最常见的策略是在嵌入学习模块之上添加基于边界(margin)的损失函数。基于边界的损失函数要求正对实体间的距离应该很小,负对实体间的距离应该很大,并且正对间距离和负对间距离之间应该存在一个边界。这里正对表示种子实体对,而负对是通过破坏正对来构造的。这样,两个KG各自的嵌入空间可以被放入一个向量空间。

另一种常用的方法是语料库融合,它利用种子实体对来连接两个KG的训练语料库。给定两个KG的三元组,一些方法(例如BootEA和NAEA)交换种子实体对中的实体并生成新的三元组以将嵌入校准到统一空间中。其他方法将种子实体对中的实体视为同一实体,并构建连接两个KG的覆盖(overlay)图,然后将其用于学习实体嵌入。

3.3 Prediction Module(预测模块)

最常见的方法是根据实体嵌入之间的特定距离度量返回每个源实体的目标实体的排名列表,其中排名最高的实体被视为匹配项。常用的距离度量包括欧几里得距离、曼哈顿距离和余弦相似度。

此外,最近的一种方法CEA指出,不同的EA决策之间通常存在额外的相互依赖关系,即如果目标实体与具有更高置信度的另一个源实体对齐,则目标实体与当前源实体匹配的可能性较小。为了对这样的集体信号进行建模,它将这个过程表述为建立在距离度量基础上的稳定匹配问题,从而减少了不匹配并提高了准确性。

3.4 Extra Information Module(额外信息模块)

一种常见的方法是自助法(通常也称为迭代训练或自学习策略),它迭代地将可能的EA对标记为下一轮的训练集,从而逐步改进对齐结果。已经设计了几种方法,主要区别在于选择置信EA对。ITransE采用基于阈值的策略,而BootEA、NAEA和TransEdge将选择表示为一一映射约束下的最大似然匹配过程。

一些方法使用多类型文字信息来提供更全面的对齐视图。与实体相关的属性经常被使用。有些仅使用属性名称的统计特征(例如,JAPE、GCN-Align和HMAN),但其他方法通过编码属性值的字符(例如,AttrE和MultiKE)来生成属性嵌入。

4 EXPERIMENTS AND ANALYSIS

4.1 Categorization

根据主要组成部分分为三组:
第一组,仅利用 KG 结构进行对齐。
第二组,利用迭代训练策略来改善对齐结果。
第三组,利用除了 KG 结构之外的信息。

4.2 Experiment Settings

采用三个常用且具有代表性的数据集:DBP15K(三个多语言KG对)、DWY100K(两个单语KG对)、SRPRS(两个跨语言KG、两个单语KG对)

度分布:数据集中实体的度数分布。

实体的度数:实体所涉及的三元组的数量。度数越高意味着相邻结构越丰富。

评价指标。使用 Hits@k(k=1, 10)和排名倒数均值(mean reciprocal rank, MRR)作为评价指标。Hits@k反映了前k个最接近的目标实体中包含正确对齐的实体的百分比。MRR 表示基本事实排名的倒数的平均值。

还与几种基于名称的启发式方法进行了比较(验证典型的 ER 解决方案仍然可以处理 EA 的任务),(1) Lev ,它使用Levenshtein距离对齐实体,这是一种用于测量两个序列之间差异的字符串度量, (2) Embed,它根据两个实体的名称嵌入(平均词嵌入)之间的余弦相似度来对齐实体。

4.3 Results and Analyses on DBP15K

第一组在仅使用KG结构的方法中,RSN结果最佳。第二组TransEdge采用以边为中心的嵌入模型来捕获结构信息,从而生成更精确的实体嵌入,结果最佳。第三组CEA效果最佳,因为它有效地利用和融合了可用的特征。基于名称的启发式方法Embed结果更佳。

类别内比较:CEA在所有数据集上实现了最佳 Hits@1 性能。这验证了使用额外信息(即引导策略和文本信息)的有效性。

4.4 Results and Analyses on SRPRS

第一组,SRPRS 的整体性能低于DBP15K ,RSNs结果最佳。第二组TransEdge结果最佳。第三组CEA效果最佳。基于名称的启发式方法Lev和Embed在单语言 EA 数据集上实现了100%的性能指标。
与DBP15K不同,包含实体名称(第三组)的方法在SRPRS上占主导地位。这是因为:(1)KG 结构在这个数据集上效果较差(与DBP15K相比要稀疏得多), (2)实体名称信息在单语言数据集和密切相关语言对的跨语言数据集上起着非常重要的作用,其中等价实体的名称非常相似。

4.5 Results and Analyses on DWY100K

第一组的方法在这个数据集上取得了更不错的结果。第二组的方法进一步提高了结果第三组中的方法,CEA实现了百分百的性能指标。基于名称的启发式Lev和Embed也获得了百分百的结果。

4.6 Efficiency Analysis

在这里插入图片描述

4.7 Comparison with Unsupervised Approaches

在这里插入图片描述

4.8 Module-Level Evaluation

嵌入学习模块,使用GCN和TransE。对于对齐模块,采用基于边界的损失函数(Mgn)和语料库融合策略(Cps)。按照目前的方法,将GCN与Mgn结合起来,将TransE与Cps结合起来,其中参数分别根据GCN-Align和JAPE进行调整。在预测模块中,使用欧几里得距离(Euc)、曼哈顿距离(Manh)和余弦相似度(Cos)。额外信息模块,通过实现中的迭代方法将引导策略的使用表示为B。多类型信息的使用表示为Mul ,采用CEA中实体名称的语义和字符串级特征。

添加引导策略和/或文本信息确实提高了整体性能,距离度量也会对结果产生影响。

在这里插入图片描述

4.9 Summary

EA与ER:

  1. ER解决方案可以在EA上运行,而性能在很大程度上取决于两者之间的文本相似性实体
  2. 尽管ER解决方案可以胜过大多数基于结构的EA方法,但它们仍然逊于使用名称信息来补充实体嵌入的EA方法
  3. 将ER中的主要思想,即依靠字面相似性来发现实体之间的等价性,融入EA方法,是一个值得探索的有前途的方向(正如CEA所证明的那样)。

EA 解决方案的性能在不同的数据集上差异很大。EA 方法在稠密数据集上取得相对较好的结果,单语 KG 的结果优于跨语言 KG。

4.10 Guidelines and Suggestions

建议:

  1. 输入信息。如果输入仅包含 KG 结构信息,则可能必须从第一组和第二组中的方法中进行选择。反之,如果存在丰富的辅助信息,使用第三组的方法。
  2. 数据规模。在做出对齐决策之前应考虑数据的规模。对于非常大规模的数据,可以使用一些简单但高效的模型,例如GCN-Align来减少计算开销。
  3. 对齐的目标。如果只关注实体的对齐,可能会想采用基于GNN的模型。如果有额外的任务,例如关系对齐,可能需要使用基于 KG 表示的方法,因为它们本质上同时学习实体和关系表示。
  4. 自举的权衡。自举过程是有效的,因为它可以逐步增加训练集并导致越来越好的对齐结果。然而,它存在错误传播问题,这可能会引入错误匹配的实体对,并在接下来的轮次中放大它们对对齐的负面影响。此外,它可能很耗时。如果数据集相对简单,例如,具有丰富的文字信息和稠密的KG结构,利用引导策略可能是更好的选择。

未来研究:

  1. 长尾实体EA。大多数实体具有相当稀疏的邻域结构。利用额外信息来补充结构信息以对齐尾实体。长尾实体指的是在知识图谱中连接关系较少、相邻实体数量较少的实体。
  2. 多模态EA。一个实体可以与多种形式的信息相关联,例如文本、图片,甚至视频。。
  3. 开放世界EA。当前的 EA 解决方案在封闭域设置下工作,也就是说,他们假设源 KG 中的每个实体在目标 KG 中都有一个等价的实体。然而,在实际环境中,总是存在无法匹配的实体。此外,大多数最先进的方法所需的标记数据可能不可用。因此,在开放世界环境中探索 EA 具有重要意义。

5 NEW DATASET AND FURTHER EXPERIMENTS

EA数据集存在的问题:在现实世界的知识图谱(KG)中,实体标识符通常不是人类可读的,而且不同的实体可能共享相同的名称,这使得基于名称匹配的EA方法不准确。此外,现有的EA数据集通常假设源KG中的每个实体在目标KG中都有一个对应的实体,这在现实中并不成立。

5.1 Dataset Construction(数据集构建)

构建了一个新的数据集DBP-FB,它使用Freebase作为目标KG,DBpedia作为源KG。在构建过程中,作者利用了DBpedia中的消歧记录来收集共享相同消歧术语的实体,并使用DBpedia和Freebase之间的外部链接作为黄金标准来检索Freebase中与源实体对应的实体。此外,作者还从各自的KG中挖掘涉及这些实体的关系和属性三元组。

5.2 Experiment Results on DBP-FB(DBP-FB实验结果)

DBP-FB具有更高的结构异质性。DBP-FB能够更好地反映实体名称歧义的挑战

5.3 Unmatchable Entities(未匹配的实体)

DBP-FB还包括无法匹配的实体:设置了一个阈值 θ \theta θ来预测不匹配的实体。EA解决方案通常使用特定的距离度量来检索目标实体。如果源实体与其最近的目标实体之间的距离值大于 θ \theta θ,认为源实体是不可匹配的并且不为其生成对齐结果。阈值 θ \theta θ可以从训练数据中学习。

深度学习小白,知识图谱方向,欢迎交流学习~

参考

https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9174835

最先进的实体对齐方法的实验研究综述 An Experimental Study of State-of-the-Art Entity Alignment Approaches_实体对齐准确率-CSDN博客

https://github.com/DexterZeng/EAE

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

启扬RK3568核心板助力智慧步道轻装健身,打造全民健康生活新方式

随着物联网、AI智能等新技术的快速发展,智慧步道成为全国各地公园建设和全民健身公共服务设施改造的新主题。智慧步道基于物联网、人脸识别、大数据分析等技术,对人们的运动进行监测和数据采集,显示运动数据,包括里程统计、热量消…

档案四性检测可复用组件接口说明

nhdeep提供在归档、移交与接收、长期保存等各环节根据需求进行自主配置和调用的可复用组件,支持客户端和接口调用两种功能使用模式。档案四性检测组件为自建档案管理系统和各种业务系统(如OA),提供标准化的档案四性检测功能利用&a…

YOLOv5改进系列:主干ConvNeXTV2结构助力涨点

一、论文理论 论文地址:ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders 1.理论思想 ConvNeXt V2 在 ConvNeXt 的基础上增加了两个创新点(一个 framework 和一个 technique):全卷积掩码自编码器&…

人工智能 框架 paddlepaddle 飞桨 使用指南 使用例子 线性回归模型demo 1

安装过程&使用指南&线性回归模型 使用例子 本来预想 是安装 到 conda 版本的 11.7的 但是电脑没有gpu 所以 安装过程稍有变动,下面简单讲下 conda create -n paddle_env117 python=3.9 由于想安装11.7版本 py 是3.9 所以虚拟环境名称也是 paddle_env117 activa…

nuxt3使用自定义组件

说明:nuxt3只有components文件夹里面的页面会自动注册为组件,但是有些单独的页面也需要组件,但是也不是全局的,所以写在pages里面的页面,需要手动注册为组件使用 1.创建组件 在pages里面创建页面文件夹,在…

【node】express使用(三)

1、express.static快速托管静态资源 express:快速、开放、极简的Web开发框架。(npm第三方包,提供快速创建web服务器便捷方法) Express中文官网 (1) express快速创建web网站服务器以及api接口服务器 // 1、导入express const express require(express) // 2、创…

【 Vue 3 】Vue3.0所采用的CompositionApi与Vue2.x使用的Options Api 有什么不同?

1. 开始之前 Composition API可以说是Vue3的最大特点,那么为什么要推出Composition Api,解决了什么问题? 通常使用Vue2开发的项目,普遍会存在以下问题: 代码的可读性随着组件变大而变差每一种代码复用的方式,都存在缺点TypeScr…

搭建Spark单机版环境

在搭建Spark单机版环境的实战中,首先确保已经安装并配置好了JDK。然后,从群共享下载Spark安装包,并将其上传至目标主机的/opt目录。接着,解压Spark安装包至/usr/local目录,并配置Spark的环境变量,以确保系统…

高效解决Visual Studio无法识别到自定义头文件

文章目录 问题解决方案 问题 说明你没有好好配置项目属性 解决方案 把头文件都集中存放到一个文件夹里 之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路…

[C++]C/C++内存管理——喵喵要吃C嘎嘎5

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

鸿蒙Harmony跨模块交互

1. 模块分类介绍 鸿蒙系统的模块一共分为四种,包括HAP两种和共享包两种 HAP(Harmony Ability Package) Entry:项目的入口模块,每个项目都有且只有一个。feature:项目的功能模块,内部模式和En…

在Semantic Kernel中使用Qdrant向量数据库

本文将介绍如何在Semantic Kernel中使用Qdrant向量数据库,并演示如何在Semantic Kernel中进行向量更新和查询操作。 1. 背景 在前一篇文章《Qdrant 向量数据库的部署以及如何在 .NET 中使用 TLS 安全访问》中,我们介绍了如何使用 Docker 部署 Qdrant 向…

Python私有属性和私有方法

私有属性和私有方法 在实际开发中,对象的某些属性或者方法只希望在对象内部被使用,而不希望在外界被访问。 私有属性:对象不希望公开的属性 私有方法:对象不希望公开的方法 定义方式:在属性名或者方法名前添加两个下划…

代理重加密+GO开源代码

目录 一、场景说明 二、代理重加密流程 三、具体原理 本地密钥生成​编辑 加密数据​编辑 生成代理重加密密钥​编辑 密钥代理重加密​编辑 重解密密钥​编辑S X_A 解密数据​编辑 四、开源代码 一、场景说明 一个数据方想要将数据发布到云服务器上进行数据共享&am…

VITIS更新硬件平台

VITIS硬件平台更新以后如何重新导入 在之前建立的硬件平台上右击,选择Update Hardware Specification,选择最新导出的硬件平台文件; 重建板级支持包 选择复位重建BSP源文件,然后Clean,再然后Build 参考连接

前端实例:页面布局2--Tab标签页切换(后端数据实现)

效果 index.php(数据库连接部分不写) <!DOCTYPE html> <html><head><style>.tab_pos {display: flex;justify-content: center;align-items: center;background-color: #fff;}/* 设置标签页外层容器样式 */.tab-container {width: 90%;background-col…

PyQt5:Python中最强大的GUI开发工具

目录 PyQt5简介 关键特性 优势 如何开始使用PyQt5 结论 在Python生态系统中&#xff0c;GUI&#xff08;图形用户界面&#xff09;应用程序的开发一直是一个热门话题。有许多工具和框架可供选择&#xff0c;但PyQt5被认为是Python中最强大的GUI开发工具之一。PyQt5是一个P…

ROS机器人虚拟仿真挑战赛学习笔记

仿真效果 146s录屏&#xff1a; ROS机器人虚拟仿真挑战赛rviz跟随base 103s录屏&#xff1a; ROS机器人虚拟仿真挑战赛rviz和gazebo 98s录屏&#xff1a; ROS机器人虚拟仿真挑战赛时间98秒总分65分 F1TENTH线上仿真赛&#xff0c;乃无人车竞速之盛事&#xff0c;以ROS机器人操…

力扣236、235、701、450

一、236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 1.1题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff…

C++ 3.25作业

1、定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定义一个全局函数完成对该字符串的反转 #include <iostream>using namespace std;namesp…
最新文章