论文《Enhancing Hypergraph Neural Networks with Intent Disentanglement for SBR》阅读

news2024/10/7 19:26:21

论文《Enhancing Hypergraph Neural Networks with Intent Disentanglement for Session-based Recommendation》阅读

  • Introduction
  • Preliminaries
    • 问题形式化
    • Hypergraph
  • Methodology
    • 嵌入层 (Intent-Aware Embedding)
    • 会话超图构建
  • 微观解耦
    • 宏观解耦
    • 预测层
    • 模型训练
  • Experiments
  • 论文总结

今天给大家带来的是SIGIR 2022 一篇短文《Enhancing Hypergraph Neural Networks with Intent Disentanglement for Session-based Recommendation》,论文通过引入多意图解耦视角,分别从微观角度(超图构造和Intent Graph方法)与宏观角度(自监督意图分离)完成了会话推荐问题。论文由清华大学、美团共同完成,提出模型HIDEHypergraph Neural Networks with Intent DisEntanglement)。

论文地址:https://doi.org/10.1145/3477495.3531794

Introduction

作者在 intro 中回顾了会话推荐(Session-based Recommendation, SBR)的主要问题:

  • 用户兴趣是动态的,复杂的
  • Session 序列中除了能够体现user intent 的交互以外还包含 noises。

因此,作者提出了HIDE,主要思路就是将一个 item 对应到多个( K K K 个)embedding,每个 embedding 对应到一个 intent,通过在微观角度、宏观角度分别完成对意图的解耦(Disentanglement),完成SBR预测。

具体来说,微观角度,主要通过构造超图,通过 n2e (节点到超边)和 e2n (超边到节点)完成节点的embedding更新。宏观角度,对 K K K 个 intent 进行分离,主张多个 intent 应该对应到不同的 target item click,进行自监督训练,构成 auxiliary task。

下面进行详细介绍。

Preliminaries

问题形式化

V = { v 1 , v 2 , ⋯   , v m } \mathcal{V}=\{v_1, v_2, \cdots, v_m \} V={v1,v2,,vm} 表示物品集合,个数一共 m m m 个。 一个匿名会话序列 s s s 由若干通过时间顺序排列的交互物品组成,表示为: s = [ v s , 1 , v s , 2 , ⋯   , v s , n ] s = \left[ v_{s,1}, v_{s,2}, \cdots, v_{s,n} \right] s=[vs,1,vs,2,,vs,n] v s , i ∈ V v_{s,i} \in \mathcal{V} vs,iV 表示交互物品, n n n 表示会话长度。

问题形式化表示为:给定一个会话 session s s s 的前 n n n 个交互物品,需要预测第 n + 1 n+1 n+1 个物品( v s , n + 1 v_{s, n+1} vs,n+1)是什么。具体来说,完成一个排序问题,生成 K K K 个候选物品,完成模型的 evaluation。

Hypergraph

超图(Hypergraph),其实就是点集。正常图通过点,以及两点之间的连线组成边构成。
超图就是在这个概念上更进一步,若干个点构成一个超边(Hyperedge),可以理解为超边中的节点两两连接。具体表示为: G = ( V , E ) \mathcal{G} = \left(\mathcal{V}, \mathcal{E} \right) G=(V,E) V \mathcal{V} V 还是原来那个 V \mathcal{V} V E = { e } \mathcal{E} = \left\{ e \right\} E={e} 表示超边集合,每条超边表示为 e = { v i 1 , v i 2 , ⋯   , v i k } e = \left\{ v_{i_{1}}, v_{i_{2}}, \cdots, v_{i_{k}} \right\} e={vi1,vi2,,vik},就是一个 V \mathcal{V} V的子集,即 e ⊆ V e \subseteq \mathcal{V} eV

Methodology

Architecture

嵌入层 (Intent-Aware Embedding)

引入 Intent 概念,将 embedding 分为 K K K 组,每组保持独立。
即,对于任意 v ∈ V v \in \mathcal{V} vV,其 intent-aware embedding表示为 h v i = ( h v i 1 , h v i 2 , … , h v i K ) \mathbf{h}_{v_{i}}=\left(\mathbf{h}_{v_{i}}^{1}, \mathbf{h}_{v_{i}}^{2}, \ldots, \mathbf{h}_{v_{i}}^{K}\right) hvi=(hvi1,hvi2,,hviK)。每个物品具备 K K K 个 intent embedding h v i k ∈ R d K \mathbf{h}_{v_{i}}^{k} \in \mathbb{R}^{\frac{d}{K}} hvikRKd,用于表示物品不同的 intent。
多个 intent 的中心概念化为 intent prototype, 通过平均池化表示为: h p k = Mean ⁡ ( h v i k ∣ v i ∈ V ) \mathbf{h}_{p}^{k}=\operatorname{Mean}\left(\mathbf{h}_{v_{i}}^{k} \mid v_{i} \in \mathcal{V}\right) hpk=Mean(hvikviV)

会话超图构建

如图1(a) 所示,通过 3 3 3 种 超边构造超图,分别如下:

  • Transition Hyperedges E s t \mathcal{E}_{s}^{t} Est:每个 session 的会话图中所有 指向节点 v v v 的节点 (incoming nodes)构成超边。
  • Context Hyperedges E s c \mathcal{E}_{s}^{c} Esc:通过一个窗口大小为 w w w 的滑动窗口,沿着会话序列方向移动,所有窗口内的物品构成超边。最大窗口为 W W W,取所有窗口截取到的超边并集作为上下文超边集合,即 E s c = ∪ w = 1 W E s w c \mathcal{E}_{s}^{c} = \cup_{w=1}^{W}\mathcal{E}_{s_{w}}^{c} Esc=w=1WEswc
  • Intent Hyperedges E s i \mathcal{E}_{s}^{i} Esi:对任意意图 k ∈ { 1 , 2 , ⋯   , K } k \in \left\{1, 2, \cdots, K\right\} k{1,2,,K},任意物品与intent prototype的相似性表示为 S k i = cos ⁡ ( h p k , h v i k ) S_{k i}=\cos \left(\mathbf{h}_{p}^{k}, \mathbf{h}_{v_{i}}^{k}\right) Ski=cos(hpk,hvik)。Top- ε ⋅ n \varepsilon \cdot n εn 相似性分数的物品构成超边。其中, ε \varepsilon ε 为 比例系数, n n n 为 session 长度。

上述所有超边的并集构成超边组合,即 E s = E s t ∪ E s c ∪ E s i \mathcal{E}_{s} = \mathcal{E}_{s}^{t} \cup \mathcal{E}_{s}^{c} \cup \mathcal{E}_{s}^{i} Es=EstEscEsi。重合的边进行去除操作。

微观解耦

micro-disentanglement,实际上就是构造超图,完成 node->hyperedge->node 的embedding传播过程。具体而言:
1) Node to hyperedge (n2e) 可以表示为:

f j k = A G G n 2 e ( α j o k h v o k ∣ v o ∈ e j ) (1) \mathbf{f}_{j}^{k}=\mathbf{AGG}_{n 2 e}\left(\alpha_{j o}^{k} \mathbf{h}_{v_{o}}^{k} \mid v_{o} \in e_{j}\right) \tag{1} fjk=AGGn2e(αjokhvokvoej)(1)
即通过GAT完成,GAT系数计算通过 softmax 进行归一化如下所示:

α j o k = exp ⁡ ( LeakyReLU ⁡ ( q 1 k ⊤ ( h c j k ⊙ h v o k ) ) ) ∑ v o ′ ∈ e j exp ⁡ ( LeakyReLU ⁡ ( q 1 k ⊤ ( h c j k ⊙ h v o ′ k ) ) ) (2) \alpha_{j o}^{k}=\frac{\exp \left(\operatorname{LeakyReLU}\left(\mathbf{q}_{1}^{k^{\top}}\left(\mathbf{h}_{c_{j}}^{k} \odot \mathbf{h}_{v_{\boldsymbol{o}}}^{k}\right)\right)\right)}{\sum_{v_{o^{\prime}} \in e_{j}} \exp \left(\operatorname{LeakyReLU}\left(\mathbf{q}_{1}^{k^{\top}}\left(\mathbf{h}_{c_{j}}^{k} \odot \mathbf{h}_{v_{o^{\prime}}}^{k}\right)\right)\right)} \tag{2} αjok=voejexp(LeakyReLU(q1k(hcjkhvok)))exp(LeakyReLU(q1k(hcjkhvok)))(2)

2)Hyperedge to node (e2n) 可以表示为:

h v i k ′ = A G G e 2 n ( β i j k f j k ∣ e j ∈ E s v i ) (3) {\mathbf{h}_{v_{i}}^{k}}^{\prime} = \mathbf{AGG}_{e 2 n}\left(\beta_{i j}^{k} \mathbf{f}_{j}^{k} \mid e_{j} \in \mathcal{E}_{s_{v_{i}}}\right) \tag{3} hvik=AGGe2n(βijkfjkejEsvi)(3)
其中,GAT 网络注意力系数计算如下:

β i j k = exp ⁡ ( LeakyReLU ⁡ ( q 2 k ⊤ ( h q v i k ⊙ f j k ) ) ) ∑ e j ′ ∈ E s v i exp ⁡ ( LeakyReLU ⁡ ( q 2 k ⊤ ( h q v i k ⊙ f j ′ k ) ) ) (4) \beta_{i j}^{k}=\frac{\exp \left(\operatorname{LeakyReLU}\left(\mathbf{q}_{2}^{k^{\top}}\left(\mathbf{h}_{q_{v_{i}}}^{k} \odot \mathbf{f}_{j}^{k}\right)\right)\right)}{\sum_{e_{j^{\prime}} \in \mathcal{E}_{s_{v_{i}}}} \exp \left(\operatorname{LeakyReLU}\left(\mathbf{q}_{2}^{k^{\top}}\left(\mathbf{h}_{q_{v_{i}}}^{k} \odot \mathbf{f}_{j^{\prime}}^{k}\right)\right)\right)} \tag{4} βijk=ejEsviexp(LeakyReLU(q2k(hqvikfjk)))exp(LeakyReLU(q2k(hqvikfjk)))(4)

这里, h q v i k = h v i k + s k \mathbf{h}_{q_{v_{i}}}^{k}=\mathbf{h}_{v_{i}}^{k}+\mathbf{s}^{k} hqvik=hvik+sk s k \mathbf{s}^{k} sk 表示当前 intent 下 session 中所有物品 embedding 的期望。

通过n2e, e2n,得到 refined embedding h v i k ′ {\mathbf{h}_{v_{i}}^{k}}^{\prime} hvik

宏观解耦

Macro-disentanglement,即预测当前 intent 下的 target 目标,并计算损失:

y ^ s p = Softmax ⁡ ( MLP ⁡ ( { h v i k ′ ∣ v i ∈ V s } ) ) , (5) \hat{\mathbf{y}}_{s}^{p} =\operatorname{Softmax}\left(\operatorname{MLP}\left(\left\{\mathbf{h}_{v_{i}}^{k^{\prime}} \mid v_{i} \in \mathcal{V}_{s}\right\}\right)\right), \tag{5} y^sp=Softmax(MLP({hvikviVs})),(5)
这里, MLP ⁡ ( ⋅ ) \operatorname{MLP}\left(\cdot\right) MLP() 表示单层MLP网络,得到了 y ^ s p \hat{\mathbf{y}}_{s}^{p} y^sp 表示 session s s s 下对所有物品的预测分数,只对当前 intent 进行计算,得到当前 intent 的计算分数如下:

L d s = − ∑ k = 1 K 1 p = k log ⁡ ( y ^ s k p ) , (6) \mathcal{L}_{d}^{s}=-\sum_{k=1}^{K} 1_{p=k} \log \left(\hat{y}_{s k}^{p}\right), \tag{6} Lds=k=1K1p=klog(y^skp),(6)
这里 1 p = k 1_{p=k} 1p=k 表示 指示函数,只有在预测当前 intent 时赋值为 1 1 1

预测层

如上所示,针对会话 s = [ v s , 1 , v s , 2 , ⋯   , v s , n ] s = \left[ v_{s,1}, v_{s,2}, \cdots, v_{s,n} \right] s=[vs,1,vs,2,,vs,n],任意物品 v s i v_{s_{i}} vsi 具有intent-specific embedding chunks ( h v s i 1 ′ , h v s i 2 ′ , … , h v s i K ′ ) \left(\mathbf{h}_{v_{s_{i}}}^{1}{ }^{\prime}, \mathbf{h}_{v_{s_{i}}}^{2}{ }^{\prime}, \ldots, {{\mathbf{h}_{v_{s_i}}^{K}}^{\prime}}\right) (hvsi1,hvsi2,,hvsiK)

Inspired by GCE-GNN,通过将最后一个物品作为锚,计算注意力系数 γ i k \gamma_i^k γik 对物品 embedding 进行整合,具体如下:

z i k = tanh ⁡ ( W 1 k [ h v s i k ′ ∥ p n − i + 1 ] ) , h s ∗ k = W 2 k [ h v s i k ′ ∥ h v s n k ′ ] , γ i k = q k ⊤ σ ( ( W 3 k [ h v s i k ′ ′ ⊙ h s ∗ k ] ) ∥ ( W 4 k h s ∗ k ) ∥ ( W 5 k z i k ) + b k ) , (7) \begin{aligned} & \mathbf{z}_i^k=\tanh \left(\mathbf{W}_1^k\left[\mathbf{h}_{v_{s_i}}^k{ }^{\prime} \| \mathbf{p}_{n-i+1}\right]\right), \quad \mathbf{h}_{s^*}^k=\mathbf{W}_2^k\left[\mathbf{h}_{v_{s_{i}}}^k{ }^{\prime} \| \mathbf{h}_{v_{s_{n}}}^k{ }^{\prime}\right], \\ & \gamma_i^k=\mathrm{q}^{k^{\top}} \sigma\left(\left(\mathbf{W}_3^k\left[\mathbf{h}_{v_{s_i}}^k{ }^{\prime}{ }^{\prime} \odot \mathbf{h}_{s *}^k\right]\right)\left\|\left(\mathbf{W}_4^k \mathbf{h}_{s *}^k\right)\right\|\left(\mathbf{W}_5^k \mathbf{z}_i^k\right)+\mathbf{b}^k\right), \end{aligned} \tag{7} zik=tanh(W1k[hvsikpni+1]),hsk=W2k[hvsikhvsnk],γik=qkσ((W3k[hvsikhsk]) (W4khsk) (W5kzik)+bk),(7)
其中, p n − i + 1 \mathbf{p}_{n-i+1} pni+1 表示位置embedding,具体实现没说,应该是参考 GAT 的做法进行位置编码。 h v s i ′ \mathbf{h}_{v_{s_i}}^{\prime} hvsi 是物品 embedding。

W 1 k , W 2 k ∈ R d K × 2 d K \mathbf{W}_{1}^{k}, \mathbf{W}_{2}^{k} \in \mathbb{R}^{\frac{d}{K} \times \frac{2d}{K}} W1k,W2kRKd×K2d W i k ∣ i = 3 5 ∈ R d K × d K \left.\mathbf{W}_{i}^{k}\right|_{i=3} ^{5} \in \mathbb{R}^{\frac{d}{K} \times \frac{d}{K}} Wik i=35RKd×Kd b k \mathbf{b}^{k} bk,及 q k ∈ R 3 d K \mathbf{q}^{k} \in \mathbb{R}^{\frac{3 d}{K}} qkRK3d 都是 可训练权重参数。

从而得到 session 表示:
h s k = ∑ i = 1 n γ i k ⋅ h v s i k ′ , (8) \mathbf{h}_{s}^{k}=\sum_{i=1}^{n} \gamma_{i}^{k} \cdot \mathbf{h}_{v_{s i}}^{k}{ }^{\prime}, \tag{8} hsk=i=1nγikhvsik,(8)
K K K 个 intent 进行加和,得到预测分数:
p s i = ∑ k = 1 K h s k ⊤ h v i k . (9) p_{s i}=\sum_{k=1}^{K} \mathbf{h}_{s}^{k^{\top}} \mathbf{h}_{v_{i}}^{k} . \tag{9} psi=k=1Khskhvik.(9)

模型训练

损失项通过 primary & auxiliary 方式进行,如下所示:
L r s = − ∑ i = 1 m y s i log ⁡ ( y ^ s i ) + ( 1 − y s i ) log ⁡ ( 1 − y ^ s i ) , (10) \mathcal{L}_{r}^{s}=-\sum_{i=1}^{m} y_{s i} \log \left(\hat{y}_{s i}\right)+\left(1-y_{s i}\right) \log \left(1-\hat{y}_{s i}\right), \tag{10} Lrs=i=1mysilog(y^si)+(1ysi)log(1y^si),(10)

L s = L r s + λ L d s (11) \mathcal{L}^{s} = \mathcal{L}_{r}^{s} + \lambda \mathcal{L}_{d}^{s} \tag{11} Ls=Lrs+λLds(11)

Experiments

  • 数据集:TMall 和 LastFM
  • Metric:Precision@K、MRR@K
  • 实验结果如下:

Overall Experiment

论文总结

文章整体较为完整,由于短文篇幅限制,一些内容语焉不详,例如超图在 K K K 个意图下的划分,除此以外比较突出。

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

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

相关文章

SpringMVC+入门案例

一、入门案例 1.依赖导入 <!--1. 导入SpringMVC与servlet的坐标--> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scop…

postgresql-数据库与模式

postgresql-数据库 基本概念创建数据库修改数据库删除数据库管理模式 基本概念 数据库管理系统&#xff08;DBMS&#xff09;是用于管理数据库的软件系统。常见的关系型DBMS有PostgreSQL、 MySQL、Oracle、Microsoft SQL Server、SQLite 等。常见的 NoSQL 数据库有 Redis、Mon…

vue3-ts-vite:Google 多语言调试 / 翻译

一、实现目标 二、代码实现 2.1、项目vue3 - ts - vite 2.2、index.html 引入文件 <script>window.onload function () {const script document.createElement(SCRIPT)script.src https://translate.google.com/translate_a/element.js?cbgoogleTranslateElementI…

kr 第三阶段(六)C++ 逆向

结构体 结构体对齐 设置结构体对齐值 方法1&#xff1a;在 Visual Studio 中可以在 项目属性 -> 配置属性 -> C/C -> 所有选项 -> 结构体成员对齐 中设置结构体对齐大小。方法2&#xff1a;使用 #pragma pack(对齐值) 来设置&#xff0c;不过要想单独设置一个结…

2023 “华为杯” 中国研究生数学建模竞赛(D题)深度剖析|数学建模完整代码+建模过程全解全析

问题一&#xff1a;区域碳排放量以及经济、人口、能源消费量的现状分析 思路&#xff1a; 定义碳排放量 Prediction 模型: CO2 P * (GDP/P) * (E/GDP) * (CO2/E) 其中: CO2:碳排放量 P:人口数量 GDP/P:人均GDP E/GDP:单位GDP能耗 CO2/E:单位能耗碳排放量 2.收集并统计相关…

vuereact质检工具(eslint)安装使用总结

1、ESLint ESLint工具主要类似java中的checkStyle和findbugs&#xff0c;是检查代码样式和逻辑规范的工具。 1.1、ESLint安装流程 打开VSCode软件&#xff0c;打开扩展中心&#xff0c;下载ESLint插件 图1.1 点击后面的install按进行安装&#xff0c;如图1.2所示&#xff1…

MySQL(8) 优化、MySQL8、常用命令

一、MySQL优化 从上图可以看出SQL及索引的优化效果是最好的&#xff0c;而且成本最低&#xff0c;所以工作中我们要在这块花更多时间。 服务端参数配置&#xff1b; max_connections3000 连接的创建和销毁都需要系统资源&#xff0c;比如内存、文件句柄&#xff0c;业务说的支持…

代码随想录算法训练营第四十二天| 01背包问题,你该了解这些! 01背包问题,你该了解这些! 滚动数组 416. 分割等和子集

正式开始背包问题&#xff0c;背包问题还是挺难的&#xff0c;虽然大家可能看了很多背包问题模板代码&#xff0c;感觉挺简单&#xff0c;但基本理解的都不够深入。 如果是直接从来没听过背包问题&#xff0c;可以先看文字讲解慢慢了解 这是干什么的。 如果做过背包类问题&…

网络安全深入学习第七课——热门框架漏洞(RCE— Fastjson反序列化漏洞)

文章目录 一、什么是json?二、Fastjson介绍三、Fastjson-历史漏洞四、Fastjson特征1、在请求包里面有json格式的2、报错信息中会显示fastjson字眼 五、Fastjson序列化和反序列化六、Fastjson反序列化漏洞原理七、Fastjson反序列化漏洞过程八、Fastjson反序列化漏洞&#xff08…

农林种植类VR虚拟仿真实验教学整体解决方案

传统的葡萄嫁接需要在固定月份&#xff0c;实操成本高&#xff0c;管理周期长&#xff0c;葡萄嫁接VR虚拟仿真实训是VR虚拟仿真公司深圳华锐视点通过在虚拟环境中模拟葡萄嫁接过程&#xff0c;融入教学和实训考核多种模式&#xff0c;打造了全新的职业技能培训方式。 葡萄嫁接V…

【Java实战项目】【超详细过程】—— 大饼的图片服务器6

目录 前言一、引入MD51.引入md5计算依赖2.按照md5值查找图片属性3.存储图片4.删除图片 二、防盗链三、分类查看图片1.思路&#xff1a;2.数据库3.Image4.from表单5.ImageDao类中原有方法6.按照类型sort在数据库中查找图片属性7.ImageServlet 类8.ImageSortServlet类9.WEB.xml绑…

DevExpress WinForms图表组件 - 直观的数据信息呈现新方式!(一)

凭借界面控件DevExpress WinForms全面的2D和3D图表类型的集合&#xff0c;DevExpress WinForms的图表控件设计大大简化了开发者直观地向最终用户呈现信息的方式。 DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。同时能完…

[python 刷题] 739 Daily Temperatures

[python 刷题] 739 Daily Temperatures 题目&#xff1a; Given an array of integers temperatures represents the daily temperatures, return an array answer such that answer[i] is the number of days you have to wait after the ith day to get a warmer temperatur…

记一次实战案例

1、目标&#xff1a;inurl:news.php?id URL&#xff1a;https://www.lghk.com/news.php?id5 网站标题&#xff1a;趋时珠宝首饰有限公司 手工基础判断&#xff1a; And用法 and 11: 这个条件始终是为真的, 也就是说, 存在SQL注入的话, 这个and 11的返回结果必定是和正常页…

修改vscode底部栏背景和字体颜色

修改vscode底部栏背景和字体颜色 如图&#xff1a; 首先打开齿轮&#xff0c;打开设置搜索workbench.colorCustomizations,然后点击编辑setting.json修改setting.json内内容 "workbench.colorCustomizations": {"statusBar.foreground": "#FFFFFF…

为什么u盘在mac上显示不出来

插入U盘是个看似简单的操作&#xff0c;但有时候在Mac电脑上却出现了无法显示U盘的情况。这样的问题是非常让人头疼的&#xff0c;特别是当你急需使用U盘中的文件时。那么&#xff0c;究竟为什么U盘在Mac上会显示不出来呢&#xff1f;今天就让我们一起来深入了解一下这个问题&a…

OR54 字符串中找出连续最长的数字串

目录 一、题目 二、解答 &#xff08;一&#xff09;问题一&#xff1a;在记录完一组连续字符串后&#xff0c;没有注意判别紧随其后的非数字字符 &#xff08;二&#xff09;问题二&#xff1a;越界访问 &#xff08;三&#xff09;正确 一、题目 字符串中找出连续最长的…

powerDesigner 的基本使用

打开powerDesigner 新建 PDM(物理数据模型) 添加表字段 双击表&#xff0c;设置ID自增 选择导出数据库表SQL 导出成功 使用三方工具连接数据库&#xff0c;然后运行对应SQL文件即可 导入SQL文件数据到powerDesigner

Ae 效果:CC Tiler

扭曲/CC Tiler Distort/CC Tiler CC Tiler &#xff08;CC 平铺器&#xff09;主要用于将图像以平铺的方式重复显示&#xff0c;可以创建有趣的复制和平铺的视觉效果。 平铺的范围限制在图层大小。如果想在合成大小内进行平铺&#xff0c;最简单的方法是先将源图像&#xff08;…

【数据结构】逻辑结构与物理结构

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 根据视点的不同,我们把数据结构分为逻辑结构和物理结构. &#x1f333;逻辑结构 逻辑结构:是指数据对象中数据元素之间的相互关系. 逻辑结构分为以下四种: 1.集合结构 集合结…