将知识图谱结合到地铁客流预测中:一个分散注意力关系图卷积网络

news2024/12/23 13:42:25

导读

论文题目《Combining knowledge graph into metro passenger flow prediction: A  split-attention relational graph convolutional network 》。该论文于2023年发表于《Expert Systems With Applications》,文章基于知识图谱,提出了一种分割注意力关系图卷积网络(SARGCN)来进行客流预测。

摘要

随着地铁系统智能运营和管理的快速发展,准确的网络规模乘客流量预测已经成为实时地铁管理的重要组成部分。尽管在这一领域已经应用了许多新方法,但在将出行行为和综合时空依赖性整合到预测中仍然存在重要障碍。本研究将地铁系统构建为知识图,并提出了一种分割注意力关系图卷积网络(SARGCN)来应对这些挑战。突破了物理地铁网络的限制,本文基于历史出发地-目的地(OD)矩阵开发了一种地铁拓扑图构建方法,以涵盖出行行为。然后,本文设计了一个地铁知识图构建方法,以整合土地利用特征。为了适应地铁系统的先前知识,本文随后提出了SARGCN模型,用于网络规模的地铁乘客流量预测。该模型整合了关系图卷积网络(R-GCN)、分割注意力机制和长短期记忆(LSTM),以探索乘客流入和流出之间的时空相关性和依赖关系。根据在中国深圳和杭州的地铁系统上进行的模型验证,SARGCN模型优于先进的基准模型。此外,定量实验证明了其组件以及构建的地铁知识图的有效性。

数据描述

3.1. 地铁数据

本研究应用中国深圳和杭州收集的智能卡数据来验证提出的模型。智能卡记录包括智能卡ID、采集机器ID、状态(即进入或退出)、采集时间、地铁线路和地铁站。可以从这个数据源中提取乘客出行特征,如出行时间矩阵和OD矩阵。本文统计了每个车站的乘客进出人数,称为流入和流出,从原始智能卡记录中。此外,本文还从智能卡记录中提取历史OD矩阵,以衡量不同地铁站之间的空间依赖关系。

3.2. 用地数据

POI数据是指城市地区具有不同功能属性的特定点,广泛用于出行模式分析。因此,本文利用POI数据来反映每个地铁站周围的土地利用特征,用于乘客流分析和预测。本研究涉及的POI数据是通过百度地图的应用程序编程接口(API)收集的。原始POI数据有19个类别和140个子类别。本文根据表1的定义合并类似的类别,最终获得了五个类别。这五个合并类别的详细描述如表2所示。

783c86a577113214cf215b3ed8bf2f12.png

表1 地铁客流预测中网络规模预测模型的比较

d688cc5d7a4b4914f05d71914df6046c.png

表2 POI数据的分类和描述

方法论

4.1. 问题陈述

假设68b036e0e546ccb4e9a7ec112faab7c5.pngb0b237929acc38524c30721167e912b2.png分别表示时间间隔t处的流入和流出的特征矩阵,其中N代表站点数,M代表以前的时间步数。本研究中的地铁乘客流量预测任务可以总结如下:在给定先前的乘客流量(It和Ot)和知识图(G)的情况下,目标是学习一个映射函数F(⋅),以预测每个站点在第p步之后的流入e2f5db7a70ff29231931c2bd036a9f5e.png和流出(ot+p ∈ RN)。

59f63f4f9ef9e8fe3a8bd7b6e7117d55.png

4.2. 地铁知识图构建

4.2.1. 地铁拓扑图构建

上述提到的隧道效应是地铁出行行为中不可忽视的特点。根据本研究中使用的智能卡数据,深圳地铁系统的出行距离分布如图1所示。

10428cff69b2e80d97748fb283b9bc19.jpeg

图1 在深圳地铁网络中的旅行距离分布

在这里,本文使用Floyd-Warshall算法和地铁拓扑网络来计算地铁站之间的距离。从这幅图中,一个直观的发现是大多数乘客选择地铁作为中短途和长途交通工具,很少有乘客选择相邻站点作为目的地。这一发现表明相邻地铁站之间的乘客流互动不够强烈。

根据这些发现,由于拓扑网络忽略了这些出行模式,因此不适用于乘客流量预测。因此,构建一个适应地铁系统出行行为的合理图表是必要的。本研究使用所有站点之间的OD关系作为图构建的相似性度量。然后,应用复杂网络构建算法来构建一个有向图。Cupertino等人在图构建中使用了距离度量,因此该方法旨在连接具有短距离的节点。然而,在本研究中,由于本文使用OD关系作为相似性度量,本文希望在构建图中的边上的OD乘客流尽可能大。因此,本文将此方法中的min(⋅)和max(⋅)操作分别替换为相应的max(⋅)和min(⋅)操作。最后,本文在算法1中总结了这一地铁图构建算法。

34c698f16b180a3ea80aba449d52990c.png8358be7d4f14747172652e9315248e41.png

算法1. 地铁拓扑图构建方法

在此算法中,步骤7中的select(⋅)操作旨在从ωm和ωn中选择最相似的K个节点对。同时,dm和dn分别表示节点组ωm和ωn内的平均相似性。在第13步中,concat(⋅)表示连接操作,旨在将节点组ωm和ωm合并为一个较大的组。在第14步中,通过节点组ωi和ωj之间最相似节点对的相似度来更新WΩ[i, j]。此外,由于每个站点的先前乘客流明显影响其未来状态,本文对每个节点应用自环连接(即第16步)以保留其先前的影响。

4.2.2. 知识图构建

在本研究中,本文使用地铁站周围的POI数据来表示它们的语义类型,以获得地铁知识图。确定节点的语义类型和它们之间的关系是知识图构建的关键步骤。POI数据通常被分类为几个类别,并根据周围具有最大数量的POI类别为每个站点分配标签。这种方法依赖于每个地铁站周围的POI类别数量,但忽略了每个类别的总数的差异。如果每个类别的数量差距很大,仅基于数量来确定站点类型将不公平。为了获得更合理的分类,本文利用每个类别的分布频率来确定站点类型,这在方程(2)和(3)中总结。在这些方程中,aacf82721fdf077eba0a35bf6dec970c.png91d8d86c7d880bba33aa7ed8e0a8a5c1.png分别表示站点i周围POI类别j的数量和分布频率,dc49de289d72c6345a403f89f5042244.png表示站点i确定的语义类型。在方程(3)中,每个站点的类型被分配为具有最高分布频率的POI类别。

513a655be3b5962be573f9b11b7026d7.png

cce985ceb29d396d6b73517bead52596.png

利用上述构建的有向图G,本文可以通过为相应的站点分配语义类型来建立地铁知识图。因此,建立的知识图可以表示为G = (V ,E ,R )。这里,V , E和R分别表示节点集合,边集和节点类型。

4.3. SARGCN的框架

图3展示了所提出的预测方法的框架。

5ebb8c7cacd872d56cc889f659509f88.png

图3 所提出的SARGCN模型的框架

基于构建的知识图,本文整合了R-GCN、LSTM和分割注意力机制以构建SARGCN块。在每个块中,R-GCN层用于提取在建立的知识图上的空间相关性。与此同时,本文使用分割注意力机制和LSTM来捕捉乘客流动态并探索流入和流出之间的依赖关系。分割注意力机制允许将输入特征分为若干组。然后,提取并汇总每个组的独特特征以整合全局上下文信息。之后,多个SARGCN块堆叠在一起,以提高隐藏特征提取的能力。

4.4. 空间相关性建模

R-GCN 是GCN的有效变种,它具有学习实际知识库的强大能力。因此,本文采用它来模拟在构建的地铁知识图上的空间依赖性。

假设R-GCN的输入特征是H = {h1, h2, ⋯, hN},其中hi表示节点i的特征,R-GCN的计算细节总结在方程(4)和图4中。

9717260f17e057e36671fd2171fc9a7b.png

图4 R-GCN的计算框架

565f5c787be2c0c400086fbf665d7d12.png

这里,R代表节点类型的数量,设定为5,5fe12280fa70f4e9e9df2a0e131c0ae5.png表示具有类型r的节点i的邻居。2337173c9d96f7705d27370d6cdd7ad9.png是特定于问题的标准化常数。为了突出每个节点本身与其邻居的重要性,W0用于表示自环的特定连接类型。

此外,方程(4)中应用了一种称为基分解的正则化,通过权重共享来减少参数。Wr的正则化是线性组合,描述在方程(5)中,其中c971c8eeb829c5e74b7fcf998d22383b.pngb90be4b1887046a842724217199c3bc5.png分别表示可学习的基变换和系数。

e1995311a5586d3b9887574ddb5feb46.png

4.5. 时间依赖性建模

除了上面提到的空间相关性之外,地铁乘客流数据仍然具有两种依赖关系:(i) 时间动态;(ii) 流入和流出之间的依赖关系。这两种依赖关系对提高预测准确性都至关重要。本文将其核心组件,即分割注意力机制,与R-GCN和LSTM模型整合起来,以模拟这两种重要的依赖关系。具体来说,原始的分割注意力机制使用组卷积操作来提取特征映射的关注,并利用加权组合操作来挖掘全局上下文信息。根据这一观点,本文使用分割操作来设计在以前的乘客流上的基于图的组卷积操作。此外,由于乘客流数据中存在明显的时间依赖性,本文使用LSTM来处理这种时间序列特征。

4.5.1. 特征分割操作

考虑流入和流出之间的依赖关系,本文将以前的乘客流分为S个分组(例如,流入和流出)。在交通预测中,不同时间步的交通数据对未来状态有不同的影响。因此,在本研究中,本文还将每个分组进一步分类为C个基数分组(例如,长期、中期和短期),根据时间维度。假设It和Ot的时间维度为6,当S=2和C=3时,开发的特征分割操作如图5所示。8d5042ee8d521b1a6e51876647f2c7d5.png

图5 在S = 2,C = 3下的特性分割操作的一个示例

由于每个子组独特地影响未来的乘客流,使用不同的模型来捕获每个子组的特征将有助于实现准确的预测结果。

4.5.2. 组图卷积操作

组卷积在分割注意力机制中起着重要作用。该操作的原则可以总结如下:输出特征只能接收来自相同组的输入特征的信息。因此,本文采纳了这一观点,并提出了一种组卷积操作。所涉及的组R-GCN操作的计算过程总结在方程(6)和(7)中,其中hli表示组l中节点i的输入特征,hli'表示相应的输出特征。图6显示了图卷积操作和组图卷积之间的差异。88f2cbc5aaa2ae44f5e4b60fa6097067.png

图6 图卷积运算和群图卷积运算的结构

4.5.3. LSTM层

本文根据时间维度对输入特征进行分组。这些分组之间存在时间依赖性。许多研究已经证明了LSTM处理时间序列数据的强大能力,因此本文使用它来模拟R-GCNs的输出特征之间的时间动态。LSTM单元的核心组成部分包括输入门it,遗忘门ft,输出门ot和记忆单元ct。假设xt表示输入向量,LSTM单元的计算过程如下所示。

8c78cca27fd07a08c3e59c780e6b2a31.png

这里,W和b分别表示权重矩阵和偏置,⊙是元素逐个相乘的操作,σ(⋅)表示S形激活函数。

4.5.4. SARGCN块

所提出的SARGCN模型由多个堆叠的SARGCN块组成。基于R-GCN、特征分割操作和LSTM的描述,本文在本小节中详细介绍SARGCN块(如图7所示)。421d1bd20e400850f9a945f533c9e293.png

图7 对SARGCN块的详细描述

与ResNeSt中的朴素分割注意力机制相比,本文将卷积操作替换为R-GCN,并利用LSTM来探索分组之间的时间动态。

根据第4.1节的描述,It和Ot表示SARGCN模型的输入特征。以第一个SARGCN块为例,其输出特征̂V可以通过以下方程计算。在这里,方程(14)表示特征分割过程,方程(15)表示R-GCN操作。方程(17)-(21)呈现了分割注意力机制应用于R-GCNs输出特征的情况。

最后,在训练过程中,采用了一种残差结构(在方程(22)中描述),以增强稳定性并提高收敛速度。在方程(19)中,ξc(⋅)表示带有ReLU激活函数的两个堆叠的稠密层。在方程(22)中,WF是一个可学习的权重矩阵,旨在将输入特征F的维度转换为V的维度。

根据方程(14)-(22),所提出的SARGCN块具有强大的能力,通过整合R-GCN、分割注意力机制和LSTM来探索时空依赖关系。具体来说,R-GCN可以捕获建立的知识图上的空间相关性,并探索具有不同语义类型的站点之间的交互作用。分割注意力机制可以为深度学习模型分配交通重要性,并有效地挖掘流入和流出之间的时间动态和依赖关系。此外,由于乘客流数据具有典型的时间序列特征,LSTM被用来增强SARGCN处理这种时间相关性的能力。

85b15f32aff9ae004187cfaa73d5ca5d.png

所提出的SARGCN模型是通过堆叠SARGCN块进行的模块化设计。这一模块化设计思想使得网络结构相对紧凑,便于构建复杂和深层模型。因此,通过改变组数(包括分割组和基数组)以及R-GCN的输出维度,可以轻松修改模型结构。与朴素的R-GCN模型相比,分割注意力机制还可以帮助SARGCN减少模型参数并构建轻量级模型。

实验

5.1. 评估指标

本研究采用了三个指标来评估预测性能,包括均方根误差(RMSE)、平均绝对误差(MAE)和平均绝对百分比误差(MAPE)。这三个指标的定义如下所示。这里,N表示地铁站点的数量,n表示测试样本的数量。同时,y可以代表地面真实的流入和流出,而^y表示相应的预测值。

ec634c5244390c6538e51d0dde243002.png

然而,许多研究表明,当遇到零或接近零的真实数据时,MAPE总是面临很大的挑战。在地铁系统在清晨开始运行时,许多站点没有乘客出站,因此流出数据为零。因此,本文采用MAPE@10来解决这个问题。具体来说,本文计算占地铁乘客流量前10%的站点的MAPE。

5.2. 实验设置

5.2.1. 网络构建方法

通过使用第4.2节中描述的构建方法,本文可以将深圳和杭州地铁系统转化为知识图,如图8所示。根据算法1,网络构建方法有两个关键参数,命名为K和λ,这些参数显着影响网络密度。在本研究中,本文将λ的值设置为0.1,并将K的值分别分配给这两个数据集,分别为7和13。最终,深圳数据集包含166个节点和832条边(包括166个自环边)。在杭州数据集中,本文获得了80个节点和715条边(包括80个自环边)。

346e7ba5294b6b6a37b7a66629e67ba5.png

图8 具有不同语义类型的地铁站的空间分布

5.2.2. SARGCN模型

关于提出的SARGCN模型在深圳和杭州地铁系统上的实施细节如下:

(1) 深圳地铁系统。本文将流入和流出聚合成10分钟的数据,并最终为每个站点获得3162条记录。这些乘客流记录根据70%:10%:20%的分割率划分为训练集、验证集和测试集。本文使用前12个时间步的流入和流出来预测下一步、第4步、第7步和第10步的网络规模乘客流。本文使用了两个堆叠的SARGCN块来构成SARGCN模型。所提出的SARGCN模型的隐藏维度设置为站点数量的相同,即N = 166。考虑到实际的交通重要性,本文将SARGCN中的组数设置为S = 2和C = 3。也就是说,本文首先将乘客流分为两个分组(即流入和流出),然后将每个分组进一步分为三个基数组(即短周期流、中期流和长周期流)。同时,本文对ξ的隐藏维度的最佳值进行了网格搜索策略,搜索范围为{16,32,48,64,96}。最终,预测准确度在48时达到最佳,因此本文将其用作最佳超参数。

(2) 杭州地铁系统。由于这个数据集是从开源数据获得的,本文遵循原始数据集的所有设置。也就是说,本文使用前4个时间间隔的流入和流出数据来同时预测接下来的4个时间步。此外,本文使用了一个两层的SARGCN模型来进行杭州地铁网络的乘客流预测,并将隐藏维度设置为224。经过网格搜索策略,ξ的隐藏单元数设置为96。由于历史乘客流的时间间隔为4,本文将组数设置为S = 2和C = 2。

在输入深度学习模型之前,本文首先对这两个数据集进行归一化。小批量训练策略的批量大小为深圳地铁系统设置为40,杭州地铁系统设置为32,并使用学习率为0.001的Adam优化器进行模型训练。所有参数都是由Xavier初始化初始化的。训练周期数设置为300,采用提前停止策略来避免过拟合。

5.3. 性能比较

5.3.1. 深圳地铁系统

本小节首先介绍并采用11种广泛使用的交通状态预测模型,与拟议的SARGCN模型在深圳地铁系统上进行比较。这些模型包括传统的统计模型、机器学习模型、浅层深度学习模型和新颖的图神经网络。

表3至表5显示了深圳地铁系统中SARGCN与基线的定量比较。ac21186754e3cb760b5312b426c25671.png

表3至表5

表3中显示的预测性能包括全部乘客流量,因此本文还将流入和流出的预测指标分别列在表4和表5中。表4和表5中显示的性能与表3中的指标对应。此外,本文在图9中说明了三个典型站点的实际乘客流量和预测值。

这些表格表明,在1步和多步的预测精度方面,SARGCN始终优于基线。例如,在表3中,与最准确的基线相比,SARGCN在这四个步骤上分别将RMSE提高了10.38%、12.28%、4.54%和3.35%。这些结果表明,拟议的SARGCN模型具有探索地铁系统时空相关性的强大能力。在图9中显示的预测结果和实际情况对比显示,不同站点的乘客流动呈现出不同的时变模式,而拟议的SARGCN模型能够有效地捕捉不同时变模式中的时空动态。此外,与没有空间相关性的基线(即HA、MLP、LSTM和GRU)相比,几乎所有基于GNN的模型在1步预测任务中具有更高的准确性,在多步预测任务中具有更高的稳定性。这一现象进一步证明了地铁乘客流量的时空相关性。此外,与其他GNN模型相比,拟议的SARGCN模型通常具有更高的性能。这可能是因为SARGCN考虑了节点类型和边缘关系,提供了更准确的信息,从而导致更好的性能。表4和表5中的流入和流出的预测性能也表现出相似的趋势。请注意,表3、表4和表5中的值均为平均值。错误的值由三种不同步骤生成,而SARGCN的性能在这些步骤中总体上具有较好的一致性。此外,SARGCN的稳定性在多步预测中有所提高,这是因为该模型能够捕获时空相关性,提高了模型对未来时刻的预测准确性。本文还进行了统计显著性检验,以检验SARGCN是否显著优于每个基线。在所有实验中,SARGCN均显著优于所有基线(p < 0.05)。这些结果表明,SARGCN模型在深圳地铁系统中实现了显著的性能改进。

5.3.2. 杭州地铁系统

为了评估 SARGCN 模型在杭州地铁系统上的预测性能,本文直接引用了之前的研究中的实验结果。ea7f59c12db84235beccd8a68801e2ab.png

表6 杭州地铁系统全客流量的定量比较

在基线模型中,有三种传统时间序列模型、三种通用深度学习模型和六种最近提出的图神经网络,STG2Seq,DCRNN,GCRNN,Graph-WaveNet,PVCGN。从这张表格中,本文可以看到,SARGCN 模型可以在所有最先进的方法中在15分钟内实现最低的RMSE和MAE。尽管 PVCGN 的MAE比SARGCN随着预测水平的增加降低,但本文的SARGCN模型始终在RMSE上表现出色。同时,与SARGCN的MAE相比,PVCGN在30分钟、45分钟和60分钟时分别减少了0.55%、0.86%和1.42%。然而,与SARGCN相比,PVCGN的RMSE分别增加了3.99%、3.91%和2.45%。根据这些实验结果,SARGCN在RMSE方面的提升高于MAE的降低。因此,这些比较表明,提出的SARGCN模型可以实现更高的预测准确性。然而,由于本文的SARGCN模型缺乏Seq2Seq结构,在长时间预测中,其预测性能会在一定程度上下降。除了预测性能,本文还在表7中对SARGCN和PVCGN在杭州数据集上的计算成本进行了进一步比较。

edebff995a6d85e8a1c5f8577507bc33.png

表7 在杭州城域数据集上的计算效率比较

这些比较在相同的工作站和批处理大小上进行,以确保公平性。这张表表明,SARGCN可以显著降低计算成本。特别是,SARGCN中的参数数量仅为PVCGN的3.51%。这一现象表明,提出的SARGCN模型比最先进的基线模型要轻得多。此外,就计算效率而言,SARGCN在每个时代的平均训练时间方面仅为PVCGN的49.1%。因此,本文可以得出结论,SARGCN可以在参数数量和训练效率两方面降低培训成本。因此,它更适合地铁管理的实际应用,更加友好。

Attention

欢迎关注微信公众号《当交通遇上机器学习》!如果你和我一样是轨道交通、道路交通、城市规划相关领域的,也可以加微信:Dr_JinleiZhang,备注“进群”,加入交通大数据交流群!希望我们共同进步!

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

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

相关文章

【操作系统】考研真题攻克与重点知识点剖析 - 第 1 篇:操作系统概述

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…

数组元素逆序交换

数组元素逆序交换 例如&#xff1a; 输入&#xff1a; 1,2,3,4,5 输出&#xff1a; 5,4,3,2,1 代码&#xff1a; #include<stdio.h> #define N 5 int main() {int a[N], i, temp;for (i 0; i < N; i) {scanf("%d", &a[i]);}for (i 0; i < N…

FL Studio 21.2 升级,支持 Stem 分离和可以发布音乐的 FL Cloud

FL Studio 21.2 带有 stem 分离和 FL Cloud&#xff0c;这是一项专为 FL Studio 打造的具有里程碑意义的新服务。其他新功能包括 FL Studio Fruity Edition 的 Audio Clips&#xff08;音频剪辑&#xff09;和一个新的模拟建模合成器 Kepler。 fl studio 21直装版: https://pan…

JavaEE-cookie和session

本部分内容包括 cookie基本概念&#xff0c;sendcookies和getcookies代码&#xff1b; session基本概念&#xff0c;session实现登陆界面&#xff1b; 上述过程中涉及的代码如下&#xff1a; 1 import javax.servlet.ServletException; import javax.servlet.annotation.WebSe…

2318.不同骰子序列的数目

经典的DP题目&#xff0c;求方案数 从序列中最后一个数字往前考虑 当前状态取决于前一个的状态和再前一个的状态所以dp&#xff08;n&#xff0c;last&#xff0c;last1&#xff09;为当前考虑的是第n个并且前一个数字是last 再前一个数字是last1的所有方案数&#xff0c;递归的…

Leetcode—21.合并两个有序链表【简单】

2023每日刷题&#xff08;十三&#xff09; Leetcode—21.合并两个有序链表 直接法实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* mergeTwoLists(struct ListNode* list1, struct…

0033Java程序设计-基于java的NBA球队运营管理系统的的设计与实现论文

文章目录 摘 要目 录系统设计开发环境 摘 要 本NBA球队运营管理系统设计目标是实现NBA球队运营管理的信息化管理&#xff0c;提高管理效率&#xff0c;使得NBA球队运营管理工作规范化、科学化、高效化。 本文研究的NBA球队运营管理系统基于SSM架构&#xff0c;采用JSP技术、J…

python爬虫selenium和ddddocr使用

python爬虫selenium和ddddocr使用 selenium使用 selenium实际上是web自动化测试工具&#xff0c;能够通过代码完全模拟人使用浏览器自动访问目标站点并操作来进行web测试。 通过pythonselenium结合来实现爬虫十分巧妙。 由于是模拟人的点击来操作&#xff0c;所以实际上被反…

一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium

大家好&#xff0c;我是python222小锋老师。前段时间卷了一套 Python3零基础7天入门实战 以及1小时掌握Python操作Mysql数据库之pymysql模块技术 近日锋哥又卷了一波课程&#xff0c;python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium&#xff0c;文字版视频版。1…

[java/力扣110]平衡二叉树——优化前后的两种方法

分析 根据平衡二叉树的定义&#xff0c;只需要满足&#xff1a;1、根节点两个子树的高度差不超过1&#xff1b;2、左右子树都为平衡二叉树 代码 public class BalancedBinaryTree {public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int va…

基于SSM的n省出口基地公共信息服务平台设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

软考下午第一题 案列分析

期待分值 10&#xff0c;前三问12左右分&#xff0c;最后一题2、3分左右&#xff0c;重点在于拿下前面三题。 小心谨慎&#xff0c;不要大意。 数据流图 外部系统 数据存储 加工&#xff08;&#xff09;process 数据流 第二小题 说明给出存储名称&#xff0c;就使用该名称&…

C# Socket通信从入门到精通(6)——单个同步TCP服务器监听多个客户端C#代码实现

前言: 我们在C# Socket通信从入门到精通(5)——单个同步TCP服务器监听一个客户端C#代码实现这篇文章中讲述了一个服务器如何与一个客户端进行交互,但是有时候我们需要一个服务器与多个客户端进行交互,这时候上一篇文章介绍的方法就不足以实现这个功能,本篇文章就是介绍如…

基于Qt 文本读写(QFile/QTextStream/QDataStream)实现

​ 在很多时候我们需要读写文本文件进行读写,比如写个 Mp3 音乐播放器需要读 Mp3 歌词里的文本,比如修改了一个 txt 文件后保存,就需要对这个文件进行读写操作。本章介绍简单的文本文件读写,内容精简,让大家了解文本读写的基本操作。 ## QFile 读写文本 QFile 类提供了读…

[2021]不确定成本下的处理分配

英文题目&#xff1a;Treatment Allocation under Uncertain Costs 中文题目&#xff1a;不确定成本下的处理分配 单位&#xff1a;swager、uber 时间&#xff1a;2021 论文链接&#xff1a;https://arxiv.org/pdf/2103.11066.pdf 代码&#xff1a; 摘要&#xff1a; 我…

一个基于Excel模板快速生成Excel文档的小工具

介绍 DocumentGenerator是一个Excel快速生成工具&#xff0c;目标以后还能实现Word、pdf等的文件的生成。该程序独立运行&#xff0c;可通过HTTP接口调用其生成接口。 典型使用场景为如下&#xff1a; 使用者编写模板文件使用者准备模板文件的填充JSON数据内容使用者通过网络…

STM32:串口轮询模式、中断模式、DMA模式和接收不定长数据

一.串口轮询模式底层机制&#xff1a; 在STM32每个串口的内部都有两个寄存器&#xff1a;发送数据寄存器(TDR)/发送移位寄存器,当我们调用HAL_UART_Transmit 把数据发送出去时&#xff0c;CPU会将数据依次将数据发送到数据寄存器中&#xff0c;移位寄存器中的数据会根据我们设置…

leetcode做题笔记206. 反转链表

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输入&am…

k8s replicaSet,deployment 学习笔记

文章目录 replicaSet 和 deployment 两者的关系。创建滚动更新回滚 replicaSet 和 deployment 两者的关系。 在 Kubernetes 中&#xff0c;ReplicaSet 和 Deployment 都是用来确保某种 Pod 的副本数目。但是&#xff0c;ReplicaSet 和 Deployment 是有差别的&#xff0c;二者的…

【送书福利-第二十二期】《Vue.js 3企业级项目开发实战(微课视频版)》

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…