当前位置: 首页 > news >正文

【论文阅读】23_SIGIR_Disentangled Contrastive Collaborative Filtering(分离对比协同过滤)

【论文阅读】23_SIGIR_Disentangled Contrastive Collaborative Filtering(分离对比协同过滤)

文章目录

  • 【论文阅读】23_SIGIR_Disentangled Contrastive Collaborative Filtering(分离对比协同过滤)
    • 1. 来源
    • 2. 介绍
    • 3. 模型方法
      • 3.1 分解的意图表示
        • 3.1.1 建模潜在的意图因素
        • 3.1.2 具有全局上下文的多意图表示
      • 3.2 分离对比学习
        • 3.2.1 解纠缠数据增强
        • 3.2.2 对比学习
      • 3.3 模型分析
    • 4. 实验
      • 4.1 数据集
      • 4.2 评估指标和实验设置
      • 4.3 实验结果(大表)
    • 5. 总结

1. 来源

在这里插入图片描述

  • 2023—SIGIR
  • 论文地址
  • code 地址

2. 介绍

最近的研究表明,图神经网络(GNNs)普遍用于建模协同过滤(CF)。对于这一研究方向,图对比学习(GCL)通过学习增强的用户和项目表示,在解决监督标签短缺问题方面表现出了强大的性能。虽然其中许多显示了其有效性,但有两个关键问题仍未被探索:

  • i)大多数现有的基于gcl的CF模型仍然受到限制,因为忽略了用户-项目交互行为往往是由各种潜在意图因素(例如,购买家庭聚会、首选颜色或产品品牌);
  • ii)他们引入的非自适应增强技术容易受到噪声信息的影响,这引起了人们对模型的鲁棒性和合并误导性自我监督信号的风险的关注。

针对这些限制,作者提出了一个分离对比协同过滤框架(DCCF),以自适应的方式实现与自监督增强的意图解纠缠。通过全局背景学习分离表示,作者的DCCF不仅能够从纠缠的自监督信号中提取更细粒度的潜在因素,而且可以减轻增强诱导的噪声。最后,引入了交叉视图对比学习任务,利用参数化交互掩模生成器实现自适应增强。在各种公共数据集上的实验表明,作者的方法与现有的解决方案相比的优越性。

3. 模型方法

在这里插入图片描述

3.1 分解的意图表示

3.1.1 建模潜在的意图因素

在推荐场景中,作者将大小为 𝐼 的用户集 U = 𝑢1,…,𝑢𝑖,…,𝑢𝐼 和大小为 𝐽 的项目集 I = 𝑣1,…,𝑣𝑗,…,𝑣𝐽 之间的交互矩阵表示为 A \mathcal A A∈R𝐼×𝐽。如果用户 𝑢𝑖 以前采用了项目 𝑣𝑗,则 A𝑖𝑗∈A 设置为1,否则,A𝑖𝑗为0。模型旨在预测候选用户在其观察到的交互作用下采用一个项目的可能性。从概率的角度来看,作者的预测模型旨在估计用户 𝑢𝑖 和项目 𝑣𝑗 之间交互的条件概率 𝑃(𝑦|𝑢𝑖,𝑣𝑗),其中 𝑦 是学习的偏好得分。

当与物品互动时,用户通常会有不同的意图,比如对特定品牌的偏好或对电影的类型和演员的兴趣。为了捕获这些不同的意图,作者分别从用户端和项目端假设 𝐾 不同的意图 𝑐𝑢 和 𝑐𝑣。物品方面的意图也可以被理解为物品的上下文,例如,一个打算在情人节购物的用户可能会偏好那些具有“浪漫”上下文的物品。作者对用户-项目偏好的预测目标可以呈现如下:
在这里插入图片描述
用户-项目交互概率 𝑦 由潜在意图 𝑐𝑢 和 𝑐𝑣 决定,可以通过以下公式推导出:
在这里插入图片描述
在这里,作者使用 𝑓(·)来表示编码意图上的预测函数。根据统计理论,作者做了以下近似来推导出预测目标:
在这里插入图片描述
通过上述推断,近似误差,称为Jensen gap,可以在作者的预测函数𝑓(·)中很好地有界。

3.1.2 具有全局上下文的多意图表示

虽然意图多样性通过解纠缠表示被编码在现有的推荐系统中,但全局层面的意图感知协作关系在很大程度上被忽视了。全局级用户(项目)依赖建模可以通过不受直接本地连接限制的信息传播,增强基于GNN的消息传递模型对稀疏性和过平滑问题的鲁棒性。为此,作者建议通过本地和全局级别的嵌入来理清用户和项目之间的协作关系,以便进行信息传播。

  • 基于图的消息传递。由于图神经网络的强大力量,gnn已经成为在最先进的推荐系统中捕获协同滤波信号的普遍学习范式。例子包括LightGCN 、LR-GCCF 和HGCF 。这些研究所提供的见解启发了作者使用基于图的消息传递框架来构建DCCF模型。一般来说,作者的消息传播层由用户/项目嵌入矩阵 E ( u ) E^{(u)} E(u)∈R𝐼×𝑑 和 E ( v ) E^{(v)} E(v)∈R𝐽×𝑑 如下:
    在这里插入图片描述
    在这里插入图片描述
    为了利用高阶协同滤波信号,作者在不同的图层之间执行基于gnn的嵌入传播,例如从(𝑙−1)层到(𝑙)层,如下所示:
    在这里插入图片描述
    为了抑制过平滑效应,这里也引入了残差连接。

  • 意图感知的信息聚合。作者将描述如何将具有意图感知的全局用户(项目)依赖项合并到基于gnn的协作过滤框架中。在作者的多意图编码器中,解纠缠的用户-条目偏好保留在 E P ( c u ∣ u ) [ c u ] E_{P(c^u|u)}[c^u] EP(cuu)[cu] E P ( c v ∣ v ) [ c v ] E_{P(c^v|v)}[c^v] EP(cvv)[cv] 中。在作者的DCCF中,作者分别为用户和项目定义了 𝐾 全局意图原型 { c u k ∈ R d } k = 1 K \{c_u^k \in R^d\}_{k=1}^K {cukRd}k=1K { c v k ∈ R d } k = 1 K \{c_v^k \in R^d\}_{k=1}^K {cvkRd}k=1K。有了这些可学习的意图嵌入,作者通过使用第 𝑙 个图嵌入层的全局上下文聚合不同 𝐾 意图原型之间的信息来生成用户和项目表示,使用以下设计:
    在这里插入图片描述
    第 𝑙 层特定的用户和物品嵌入表示如下:
    在这里插入图片描述
    用户 𝑢𝑖 与每个意图原型 c𝑢 之间的相关性得分定义为 P ( c u k ∣ e i , j ( u ) ) P(c_u^k|e_{i,j}^{(u)}) P(cukei,j(u)),可以推导如下:
    在这里插入图片描述
    这里是 𝜂(·)=exp(·)。在生成传播的消息后,作者将局部协同滤波信号与全局解纠缠协同关系集成,对其进行细化,(6) 式变为:
    在这里插入图片描述
    在这个方程中, R l − 1 ( u ) ∈ R I × d R^{(u)}_{l-1} \in R^{I \times d} Rl1(u)RI×d R l − 1 ( v ) ∈ R J × d R^{(v)}_{l-1} \in R^{J \times d} Rl1(v)RJ×d 表示所有的用户意图嵌入和项目意图嵌入。将意图解纠缠后合并到图的神经结构中,使作者学习到的表示能够有效地解开了复杂的用户-项目交互行为的潜在因素。

3.2 分离对比学习

从对比学习的最新发展中得到启发,作者探索了对比增强的潜力,以解决推荐系统中的数据稀疏性问题。虽然自监督信号可以通过最大化对比视图之间的正对之间的一致性来产生,但作者认为这种增强容易受到数据噪声的影响,如错误点击。有噪声的对比正则化可能会误导自监督的学习过程。例如,通过有噪声交互边缘上的节点自识别来增强模型以实现嵌入一致性,可能涉及有噪声的自监督信号,导致次优表示。为了解决这一挑战,作者设计了可学习的增强器,它同时考虑本地协作关系和全局分离的用户(项)依赖关系。通过这样做,可学习的对比增强器可以自适应地学习解纠缠的SSL信号。

3.2.1 解纠缠数据增强

为了使数据增强能够适应每个连接跳,作者为每个GNN层引入了一个可学习的关系矩阵 G l ∈ R I × J \mathcal{G}^l \in R^{I \times J} GlRI×J 来编码用户和项目之间的隐式关系。受之前关于图去噪的工作的启发,作者的目标是生成一个图掩模 M l ∈ R I × J \mathcal{M}^l \in R^{I \times J} MlRI×J,它可以通过元素级乘法获得关系矩阵: G l = M l ⊙ A \mathcal{G}^l = \mathcal{M}^l ⊙ \mathcal A Gl=MlA

  • 学习图形掩码。图形掩码 M𝑙 中的每个条目 M l \mathcal{M}^l Ml𝑖𝑗∈[0,1]都反映了用户𝑖和项目𝑗之间的交互被掩码的程度。该值越接近0,交互作用的重要性就越小,反之亦然。在作者的DCCF模型中,作者基于用户 ( r i , l u ) (r^{u}_{i,l}) (ri,lu) 和项目 ( r i , l v ) (r^{v}_{i,l}) (ri,lv) 的分离嵌入,推导出了 M l \mathcal{M}^l Ml𝑖𝑗,以保持意图感知的交互模式。具体来说,作者使用节点嵌入之间的余弦相似度来衡量交互的重要性:
    在这里插入图片描述
    掩模值是通过将与[0,1]的相似性范围线性变换得到的,使用公式: M i , j l = ( s ( r i , l u , r j , l v ) + 1 ) / 2 \mathcal{M}^l_{i,j} = (s(r^{u}_{i,l}, r^{v}_{j,l}) + 1)/2 Mi,jl=(s(ri,lu,rj,lv)+1)/2

  • 可学习的增强。当用户 𝑖 和项目 𝑗 之间没有交互作用时,A𝑖𝑗为0。 G l \mathcal{G}^l Gl 是通过 M l \mathcal{M}^l Ml A \mathcal{A} A的元素级乘法得到的。为了计算简单,只计算观察到的交互作用的掩模值。利用学习到的关系矩阵,作者用节点的度将其归一化如下(为简单起见,省略了层索引):
    在这里插入图片描述
    为了将作者的自适应增强与消息传递方案相结合,作者将归一化学习关系矩阵 G ˉ l \bar{\mathcal{G}}^l Gˉl应用于节点的消息上进行可学习传播。通过这种设计,作者扰动图的结构,以生成对比学习视图与自适应增强。具有自适应掩蔽的增强可以正式表示如下:
    在这里插入图片描述
    为了生成多个对比视图,作者同时考虑了局部协作信号和全局解纠缠关系。特别地,作者在等式中使用两个可学习的掩模矩阵(Z𝑙(𝑢)和Z𝑙(𝑢)进行增强 等式5),以及在等式中具有意图分离的全局嵌入(R𝑙(𝑢)和R𝑙(𝑢) 等式7)。作者分别使用以下公式推导出两个掩模值 M l \mathcal{M}^l Ml𝑖𝑗: M i , j l = ( s ( r i , l u , r j , l v ) + 1 ) / 2 \mathcal{M}^l_{i,j} = (s(r^{u}_{i,l}, r^{v}_{j,l}) + 1)/2 Mi,jl=(s(ri,lu,rj,lv)+1)/2 M ′ i , j l = ( s ( z i , l u , z j , l v ) + 1 ) / 2 \mathcal{M'}^l_{i,j} = (s(z^{u}_{i,l}, z^{v}_{j,l}) + 1)/2 Mi,jl=(s(zi,lu,zj,lv)+1)/2。在此之后,作者的增强感知消息传递范式可以用以下嵌入细化细节来描述:
    在这里插入图片描述
    这里,H𝛽 和 H𝛾分别表示局部级和全局级的增广表示。类似地,项目嵌入也以类似的方式进行融合。

3.2.2 对比学习

使用上述增强表示视图,作者对用户和项目的不同视图嵌入进行对比学习。根据监督对比信号的方法,作者使用来自原始CF视图和每个增强视图的相同用户(项目)的嵌入来生成每个正对。不同节点的编码表示被视为负对。具体来说,作者使用增强器:

  • i)具有自适应增强的局部协作视图(H𝛽,(𝑢));
  • ii)分离的全局协作视图(R(𝑢));
  • iii)自适应增强视图(H𝛾,(𝑢))。

作者使用InfoNCE损失生成对比性的自我监督信号如下:
在这里插入图片描述
这里,m表示从GNN编码的嵌入(z∈Z(𝑢))的原始视图。n从三个增强嵌入数据之一(h𝛽∈H𝛽,𝑢),R(𝑢)和h𝛾∈H𝛾,(𝑢)中采样。余弦相似度函数用𝑠(·)表示。来自用户侧的对比性学习损失可以形式化如下:
在这里插入图片描述
通过叠加𝐿图神经层,特定层的嵌入跨不同的层聚合如下:E(𝑢)= ∑ \sum E(𝑢)𝑙和E(𝑣)= ∑ \sum E𝑙(𝑣)。用户项目偏好得分衍生为:
在这里插入图片描述
为了使用估计的偏好评分来优化经典的监督推荐任务,作者使用了以下贝叶斯个性化排名(BPR)损失:
在这里插入图片描述
其中 R 是每个小批中采样交互的集合。对于每个用户 𝑢𝑖,作者从训练数据中抽取𝑆 阳性项目(𝑝𝑠索引)和𝑆阴性项目(𝑛𝑠索引)。
最后,作者将自监督损失与经典推荐损失整合到多任务学习目标中,如下:
在这里插入图片描述
其中,𝜆1,𝜆2和𝜆3是可调的权重。Θ1={E(𝑢)0,E(𝑣)0} 和 Θ2 = {{c𝑘𝑢}𝐾𝑘=1,{c𝑘𝑣}𝐾𝑘=1}是作者的模型中可训练的参数。

3.3 模型分析

见原论文 3.3 节。

4. 实验

4.1 数据集

在这里插入图片描述

4.2 评估指标和实验设置

为了减轻负项目实例抽样的偏差,作者对所有项目遵循全秩协议来衡量作者的推荐结果的准确性。作者使用两个被广泛采用的基于排名的指标来评估所有方法的性能,即 Recall@N and NDCG (Normalized Discounted Cumulative Gain)@N:召回率@N和NDCG(标准化贴现累积增益)@N。
在这里插入图片描述

4.3 实验结果(大表)

在这里插入图片描述

5. 总结

本文提出了一种解纠缠对比学习方法,探讨了交互隐含意图的潜在因素。作者引入了一个图结构学习层,它基于学习的解纠缠用户(项目)意图感知依赖来实现自适应交互增强。沿着增强的意图感知图结构,作者提出了一种意图感知的对比学习方案,它带来了解纠缠自监督信号的好处。作者广泛的实验验证了作者提出的模型在不同的推荐数据集上的有效性。在未来的工作中,一个潜在的扩展是将解纠缠表示学习与因果分析相结合,以解决有噪声交互数据的偏差问题。此外,通过考虑用户特征的多样性,个性化增强可以进一步增强推荐者中定制图扰动操作的对比学习能力。通过根据特定的用户特征定制增强操作,作者可以更好地捕获个人偏好。

相关文章:

【论文阅读】23_SIGIR_Disentangled Contrastive Collaborative Filtering(分离对比协同过滤)

【论文阅读】23_SIGIR_Disentangled Contrastive Collaborative Filtering(分离对比协同过滤) 文章目录 【论文阅读】23_SIGIR_Disentangled Contrastive Collaborative Filtering(分离对比协同过滤)1. 来源2. 介绍3. 模型方法3.1…...

目前的网络情况与特点

现有网络无法进展安全管理与控制,缺乏可管理与安全性,一旦 网络出现病毒与网络攻击现象,将会涉与到个别部门部数据丢失与影 响相关的业务运作。 1 1.1 采用普通傻瓜式交换机 目前全所各部门采用的交换机根本上为 TP-LINK、D-LINK 10/100M 傻瓜…...

css选择器及其权重

1. 类型选择器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…...

RK3588平台开发系列讲解(项目篇)RKNN-Toolkit2 的使用

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、RKNN-Toolkit2安装二、模型转换和模型推理三、性能和内存评估沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 NPU 是专门用于神经网络的处理单元。它旨在加速人工智能领域的神经网络算法,如机器视觉和自…...

C/C++基础讲解(九十九)之经典篇(第几天/排序)

C/C++基础讲解(九十九)之经典篇(第几天/排序) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一样都是这么啃过来的,从不知到知知,懵懂到入门,每一步都走的很艰辛,…...

quickstart Guide快速入门

本文档参考backtrader官方文档&#xff0c;是官方文档的完整中文翻译&#xff0c;可作为backtrader中文教程、backtrader中文参考手册、backtrader中文开发手册、backtrader入门资料使用。 快速入门章节目录 快速入门使用平台从0到100&#xff1a;一步一步的演示基本设置设置现…...

Kubernetes 证书详解

K8S 证书介绍 在 Kube-apiserver 中提供了很多认证方式&#xff0c;其中最常用的就是 TLS 认证&#xff0c;当然也有 BootstrapToken&#xff0c;BasicAuth 认证等&#xff0c;只要有一个认证通过&#xff0c;那么 Kube-apiserver 即认为认证通过。下面就主要讲解 TLS 认证。 …...

Python常用数据结构

Python 提供了多种内置的数据结构&#xff0c;用于存储和组织数据。以下是一些常见的 Python 数据结构&#xff1a; 1.列表&#xff08;List&#xff09;&#xff1a;列表是一个有序、可变的数据集合&#xff0c;可以包含任意类型的元素。列表使用方括号 [] 表示&#xff0c;元…...

CompletableFuture详解-初遇者-很细

目录 一、创建异步任务 1. supplyAsync 2. runAsync 3.获取任务结果的方法 二、异步回调处理 1.thenApply和thenApplyAsync 2.thenAccept和thenAcceptAsync 2.thenRun和thenRunAsync 3.whenComplete和whenCompleteAsync 4.handle和handleAsync 三、多任务组合处理 1…...

【iOS】—— iOS中的相关锁

文章目录 自旋锁1.OSSpinLock2.os_unfair_lock3.atomic 互斥锁pthread_mutexsynchronizedobjc_sync_enterobjc_sync_exit注意事项 NSLockNSRecursiveLock信号量条件锁NSConditionNSConditionLock 读写锁总结 锁作为一种非强制的机制&#xff0c;被用来保证线程安全。每一个线程…...

表单重复提交:

1. 表单重复提交原因 当用户提交完请求&#xff0c;浏览器会记录最后一次请求的全部信息。用户按下功能键F5&#xff0c;就会发起浏览器记录的最后一次请求。如果最后一次请求为添加操作&#xff0c;那么此时刷新按钮就会再次提交数据&#xff0c;造成表单重复提交。 2. 表单…...

【0197】共享内存管理结构(shmem)之创建共享内存分配机制(Shared Memory Allocation)(2 - 2)

文章目录 1. 概述2. 初始化事务管理器 ShmemVariableCache2.1 从共享内存分配 VariableCacheData 大小内存空间2.1.1 分配对齐块2.2 内存空间清零相关文章: 【0195】共享内存管理结构(shmem)之概念篇(1) 【0196】共享内存管理结构(shmem)之创建共享内存分配机制(Shared…...

ChatGPT国内免费使用方法有哪些?

目录 ChatGPT介绍:一、ChatGPT是什么?二、ChatGPT发展:三、ChatGPT 优点:四、国内使用ChatGPT方法五、结语: ChatGPT介绍: 一、ChatGPT是什么? ChatGPT 是一个基于语言模型 GPT-3.5 的聊天机器人&#xff0c;ChatGPT模型是Instruct GPT的姊妹模型&#xff08;siblingmodel&a…...

【CloudCompare教程】012:基于点云数据的测量功能

本文讲解CloudCompare基于点云数据的测量功能,主要有:点云索引、坐标、距离、角度、面积、标签等。 文章目录 一、加载地形点云数据二、基于点云数据的测量功能1. 选择单点并显示信息2. 选择两点并显示分割信息3. 选择三点并显示相关三角形信息4. 定义矩形2D标签5. 保存当前标…...

一体化医学影像平台PACS源码,影像存档与传输系统源码

PACS影像存档与传输系统源码 PACS即影像存档与传输系统&#xff0c;是医学影像、数字化图像技术、计算机技术和网络通讯技术相结合的产物&#xff0c;是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。 是基于DICOM标准的医学影像管理系统&…...

一篇文章打好SQL基础,熟悉数据库的基础操作和方法,以及安装MySQL软件包和Python操作MySQL基础使用

1.SQL的概述 SQL的全称&#xff1a;Structured Query Language&#xff0c;结构化查询语言&#xff0c;用于访问和处理数据库的标准计算机语言。 SQL语言1974年有Boyce和Chamberlin提出的&#xff0c;并且首先在IBM公司研制的关系数据库系统SystemR上实现。 经过多年发展&am…...

C4D R26 渲染学习笔记 建模篇(3):生成器

文章目录 前文回顾介绍篇建模篇 生成器介绍生成器变形器搭配举例 生成器详细介绍细分曲面布料曲面 未完待续 前文回顾 介绍篇 C4D R26 渲染学习笔记&#xff08;1&#xff09;&#xff1a;C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记&#xff08;2&#xff09;&#xff…...

智慧梁场3D建模

智慧梁场3D建模&#xff1a;数字化革命下的新起点 ​ 随着科技的迅猛发展&#xff0c;数字化已经成为了现代工业生产的必然趋势。作为传统工业的核心产业&#xff0c;建筑行业也在不断地探索数字化变革的新路径。而“智慧梁场3D建模”便是其中的一项杰出实践。 ​ 梁场是建筑…...

《程序员面试金典(第6版)》面试题 02.08. 环路检测(哈希法,双指针,检测链表是否有环)

题目描述 给定一个链表&#xff0c;如果它是有环链表&#xff0c;实现一个算法返回环路的开头节点。若环不存在&#xff0c;请返回 null。 题目传送门&#xff1a;面试题 02.08. 环路检测 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链…...

软考A计划-试题模拟含答案解析-卷六

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…...

Linux 上的 .NET 崩溃了怎么抓 Dump

一&#xff1a;背景 1. 讲故事 训练营中有朋友问在 Linux 上如何抓 crash dump&#xff0c;在我的系列文章中演示的大多是在 Windows 平台上&#xff0c;这也没办法要跟着市场走&#xff0c;谁让 .NET 的主战场在工控 和 医疗 呢&#xff0c;上一张在 合肥 分享时的一个统计图…...

QT桌面项目(状态栏和导航栏设置)

文章目录 前言一、状态栏二、导航栏三、同时添加状态栏和导航栏总结 前言 为了和我们这个项目做的更加真实&#xff0c;这里为我们的项目添加上状态栏和导航栏让他变成更加接近手机的桌面效果。 一、状态栏 这个状态栏就是显示时间和wifi状态&#xff0c;电池电量的&#xf…...

数据链路层:点对点协议PPP

数据链路层&#xff1a;点对点协议PPP 笔记来源&#xff1a; 湖科大教书匠&#xff1a;点对点协议PPP 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 数据链路层只负责直接相连的两个结点之间的通信 PPP是点对点数据链路层协议 用户通过ISP接入因特…...

C/C++读取txt文件中的float数据并用指针存储

C语言中读取txt文件中的数据 以下是一个简单的示例代码&#xff0c;演示如何在C语言中读取txt文件中的数据&#xff1a; #include <stdio.h>int main() {FILE *fp;char buffer[100];// 打开文件fp fopen("example.txt", "r");// 如果文件打开失败…...

对KMP算法的一点碎碎念——上篇

对KMP算法的一点碎碎念——上篇 文章目录 对KMP算法的一点碎碎念——上篇1. KMP 算法 Next数组 求解问题1.1 前置知识-最长公共前后缀LCP1.1.1 前缀与后缀1.1.2 最长公共前后缀LCP 1.2 手算法求解 Next数组值(3种常见情况)1.2.1 情况1: next数组 正常存放匹配字符的长度情况1的…...

算法---边界着色

题目 给你一个大小为 m x n 的整数矩阵 grid &#xff0c;表示一个网格。另给你三个整数 row、col 和 color 。网格中的每个值表示该位置处的网格块的颜色。 两个网格块属于同一 连通分量 需满足下述全部条件&#xff1a; 两个网格块颜色相同 在上、下、左、右任意一个方向上…...

二叉排序树的查找、插入、删除

目录 二叉排序树的定义 二叉排序树的查找 二叉排序树的插入 二叉排序树的定义 二叉排序树的定义 二叉排序树&#xff08;Binary Sort Tree&#xff0c; BST&#xff09;&#xff0c;也称二叉查找树。 二叉排序树或者是一棵空树&#xff0c;或者是一棵具有下列特性的非空二叉…...

《Opencv3编程入门》学习笔记—第三章

《Opencv3编程入门》学习笔记 记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。 第三章 HighGUI图形用户界面初步 一、图像的载入、显示和输出到文件 &#xff08;一&#xff09;OpenCV的命名空间 简单的OpenCV程序标配&#xff1a; #include <o…...

如何从Ubuntu Linux中删除Firefox Snap?

Ubuntu Linux是一款广受欢迎的开源操作系统&#xff0c;拥有强大的功能和广泛的应用程序选择。默认情况下&#xff0c;Ubuntu提供了一种称为Snap的软件打包格式&#xff0c;用于安装和管理应用程序。Firefox是一款流行的开源网络浏览器&#xff0c;而Firefox Snap是Firefox的Sn…...

数学建模的初阶-快速上手

目录 第一步&#xff1a;明确问题 第二步&#xff1a;选择建模方法 第三步&#xff1a;收集数据 第四步&#xff1a;构建数学模型 第五步&#xff1a;模型验证与评估 数学建模软件推荐 统计模型 (1) 线性回归模型 (2) 逻辑回归模型 (3) 时间序列模型 优化模型 (1) …...