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

2025年数学建模美赛 A题分析(3)楼梯使用方向偏好模型

2025年数学建模美赛 A题分析(1)Testing Time: The Constant Wear On Stairs
2025年数学建模美赛 A题分析(2)楼梯磨损分析模型
2025年数学建模美赛 A题分析(3)楼梯使用方向偏好模型
2025年数学建模美赛 A题分析(4)楼梯使用人数模型

特别提示:

  • 本文针对 2025年 A题进行分析,每天不断更新,建议收藏。
  • 其它题目的分析详见【youcans 的数学建模课】 专栏。

文章目录

  • 2025年数学建模美赛 A题分析(3)楼梯方向偏好模型
    • 1. 问题概述
    • 2. 楼梯使用方向偏好数学模型
      • 2.1 楼梯使用方向偏好数学模型的建立
      • 2.2 所需数据与测量方法
      • 2.3 假设条件
    • 3. 模型推导
      • 3.1 基本概念
      • 3.2 磨损深度与方向偏好的关系
      • 3.3 磨损深度的计算
    • 4. 实施步骤
    • 5. 模型验证
    • 6. 模型结论
    • 7. 图像区域分割基本方法
      • 例程 11.25:图像分割之区域生长
    • 8. 基于 k 均值聚类的区域分割
      • 例程 11.27:图像分割之 k 均值聚类


2025年数学建模美赛 A题分析(3)楼梯方向偏好模型


1. 问题概述

用于建造台阶的石材和其他材料经受着持续的长期磨损,并且这种磨损可能是不均匀的。

问题的任务是:开发一个模型,通过特定楼梯的磨损模式得出以下基本预测:

  • 楼梯使用的频率。
  • 使用楼梯时是否更倾向于某一方向。
  • 同时使用楼梯的人数(例如,人们是否成对并排爬楼梯,还是单列行走)。

进一步地,假设已经获得楼梯的建造年代、使用方式以及建筑中日常生活模式的估算信息,需要回答以下问题:

  • 磨损是否与现有信息一致?
  • 楼梯的年龄及其估算的可靠性如何?
  • 楼梯是否经历过维修或翻修?
  • 能否确定材料的来源?例如,石材的磨损是否与考古学家认为的原始采石场材料一致?若使用木材,其磨损是否与假定使用的树种和年代相符?
  • 有关楼梯典型每日使用人数的信息,以及是否有大量人群在短时间内使用,或少量人群长期使用的情况?

在这里插入图片描述


2. 楼梯使用方向偏好数学模型

2.1 楼梯使用方向偏好数学模型的建立

楼梯使用方向偏好分析的目标是确定使用者是否倾向于某一特定方向(上或下楼梯),以及这种偏好的强度。通过分析楼梯磨损的空间分布,可以量化这一偏好。


2.2 所需数据与测量方法

  1. 必须测量的数据
    (1)磨损深度的空间分布
    获取楼梯表面每一位置的磨损深度分布,尤其是台阶中心区域、边缘区域以及上下坡方向的差异。
    数据形式:三维高度模型或磨损深度的二维热力图。
    (2)楼梯的空间布局:
    台阶的宽度、坡度和方向性,确定不同区域的使用路径。
    (3)台阶材料特性:确定磨损速率是否一致(上下坡可能因压力差异导致磨损不同)。

  2. 非破坏性测量方法
    激光扫描:获取磨损深度和分布的高精度数据。
    3D建模:重建台阶表面,分析上下坡方向的磨损特征。
    图像处理:通过光学方法分析楼梯表面纹理变化。

  3. 其他辅助信息
    使用的历史记录:如建筑物的使用时间、功能(宗教场所、住宅等)以及可能的高峰使用时期。


2.3 假设条件

  1. 磨损方向性假设
    假设磨损深度与使用方向直接相关:上楼使用可能集中在前脚掌区域,而下楼使用可能在台阶边缘造成更多磨损。

  2. 对称性假设
    若楼梯不存在明显的方向性限制(如仅供单向使用),则在没有方向偏好的情况下,磨损应在两侧和上下方向接近对称。

  3. 单一变量假设
    假设影响磨损的主导因素是方向偏好,排除其他次要因素(如特殊气候条件、个别异常使用情况)。


3. 模型推导

3.1 基本概念

方向偏好用一个比率量化,表示上下楼人流量的分布:

P u p = N u p N u p + N d o w n P_{up} = \frac{N_{up}}{N_{up} + N_{down}} Pup=Nup+NdownNup

P d o w n = N d o w n N u p + N d o w n P_{down} = \frac{N_{down}}{N_{up} + N_{down}} Pdown=Nup+NdownNdown

其中:

  • Pup、Pdown 分别表示上楼和下楼的方向偏好比例。
  • Nup、Ndown 分别表示上楼和下楼的人次。

3.2 磨损深度与方向偏好的关系

假设楼梯的上下坡方向产生不同的磨损模式:

  • 上楼磨损:多集中于台阶前缘和中心位置。
  • 下楼磨损:多集中于台阶边缘位置。

根据上下方向的磨损深度差异,可以通过以下公式推导偏好比例:

P u p = d u p d u p + d d o w n P_{up} = \frac{d_{up}}{d_{up} + d_{down}} Pup=dup+ddowndup

P d o w n = d d o w n d u p + d d o w n P_{down} = \frac{d_{down}}{d_{up} + d_{down}} Pdown=dup+ddownddown

其中:
d u p d_{up} dup 表示上楼方向的磨损深度总和。 d d o w n d_{down} ddown 表示下楼方向的磨损深度总和。


3.3 磨损深度的计算

  1. 区域分割
    将楼梯的踏面分为两部分:
  • 上楼区域:台阶中心靠近上方方向的位置。
  • 下楼区域:台阶边缘靠近下方方向的位置。
  1. 深度积分
    对每个区域的磨损深度进行积分,计算总和:

d u p = ∫ u p a r e a h ( x , y ) d x d y d_{up} = \int_{up area} h(x,y) dxdy dup=upareah(x,y)dxdy

d d o w n = ∫ d o w n a r e a h ( x , y ) d x d y d_{down} = \int_{down area} h(x,y) dxdy ddown=downareah(x,y)dxdy

其中, h ( x , y ) h(x,y) h(x,y)是每个点的磨损深度。


4. 实施步骤

  1. 数据采集
    (1)获取磨损分布:通过激光扫描或3D建模获取楼梯表面磨损深度的分布图。
    (2)区域划分:根据楼梯几何特性,划分上楼区域和下楼区域。
    (3)材料特性校准:验证材料的磨损速率是否在两个方向一致。

  2. 参数计算
    (1)对磨损深度分布进行积分,分别计算 d u p d_{up} dup d d o w n d_{down} ddown
    (2)计算偏好比例:
    P u p = d u p d u p + d d o w n P_{up} = \frac{d_{up}}{d_{up} + d_{down}} Pup=dup+ddowndup

P d o w n = d d o w n d u p + d d o w n P_{down} = \frac{d_{down}}{d_{up} + d_{down}} Pdown=dup+ddownddown

  1. 结果分析
    (1)偏好程度:

(2)偏好强度:通过偏好比率的偏离程度量化,如:
Δ P = ∣ P u p − P d o w n ∣ \Delta P = |P_{up} - P_{down}| ΔP=PupPdown


5. 模型验证

  1. 实验验证
    在实验室中模拟上下楼的人流行为,记录磨损分布,验证模型预测的方向偏好是否与实际数据一致。

  2. 历史数据验证
    若存在建筑物的使用记录,检查预测的方向偏好是否符合历史使用情况。


6. 模型结论

  1. 模型的适用性
    通过分析磨损深度分布,模型能有效推导楼梯的方向偏好。
    适用于台阶磨损明显且历史记录缺乏的场景。

  2. 改进方向
    考虑非均匀使用(如特定时间段方向使用更集中)。
    引入人群行为模型,结合楼梯宽度和空间限制优化预测。


7. 图像区域分割基本方法

【youcans 的 OpenCV 例程200篇】168.图像分割之区域生长

区域生长方法将具有相似性质的像素或子区域组合为更大区域。

区域生长方法是以区域为处理对象,基于区域内部和区域之间的同异性,尽量保持区域中像素的临近性和一致性的统一 。

区域生长的基本方法是,对于一组“种子”点,通过把与种子具有相同预定义性质(如灰度或颜色范围)的邻域像素合并到种子像素所在的区域中,再将新像素作为新的种子不断重复这一过程,直到没有满足条件的像素为止。

种子点的选取经常采用人工交互方法实现,也可以寻找目标物体并提取物体内部点,或利用其它算法找到的特征点作为种子点。

区域增长方法的步骤:
(1)对图像自上而下、从左向右扫描,找到第 1 个还没有访问过的像素,将该像素作为种子 (x0, y0);
(2)以 (x0, y0) 为中心, 考虑其 4 邻域或 8 邻域像素 (x, y),如果其邻域满足生长准则 则将 (x, y) 与 (x0, y0) 合并到同一区域,同时将 (x, y) 压入堆栈;
(3)从堆栈中取出一个像素,作为种子 (x0, y0) 继续步骤(2);
(4)当堆栈为空时返回步骤(1);
(5)重复步骤(1)-(4),直到图像中的每个点都被访问过,算法结束。


例程 11.25:图像分割之区域生长

    # # 11.25 图像分割之区域生长def getGrayDiff(image, currentPoint, tmpPoint):  # 求两个像素的距离return abs(int(image[currentPoint[0], currentPoint[1]]) - int(image[tmpPoint[0], tmpPoint[1]]))# 区域生长算法def regional_growth(img, seeds, thresh=5):height, weight = img.shapeseedMark = np.zeros(img.shape)seedList = []for seed in seeds:if (0<seed[0]<height and 0<seed[1]<weight): seedList.append(seed)label = 1  # 种子位置标记connects = [(-1,-1), (0,-1), (1,-1), (1,0), (1,1), (0,1), (-1,1), (-1,0)]  # 8 邻接连通while (len(seedList) > 0):  # 如果列表里还存在点currentPoint = seedList.pop(0)  # 将最前面的那个抛出seedMark[currentPoint[0], currentPoint[1]] = label  # 将对应位置的点标记为 1for i in range(8):  # 对这个点周围的8个点一次进行相似性判断tmpX = currentPoint[0] + connects[i][0]tmpY = currentPoint[1] + connects[i][1]if tmpX<0 or tmpY<0 or tmpX>=height or tmpY>=weight:  # 是否超出限定阈值continuegrayDiff = getGrayDiff(img, currentPoint, (tmpX, tmpY))  # 计算灰度差if grayDiff<thresh and seedMark[tmpX,tmpY]==0:seedMark[tmpX, tmpY] = labelseedList.append((tmpX, tmpY))return seedMark# 区域生长 主程序img = cv2.imread("../images/Fig1051a.tif", flags=0)# # 灰度直方图# histCV = cv2.calcHist([img], [0], None, [256], [0, 256])  # 灰度直方图# OTSU 全局阈值处理ret, imgOtsu = cv2.threshold(img, 127, 255, cv2.THRESH_OTSU)  # 阈值分割, thresh=T# 自适应局部阈值处理binaryMean = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 3)# 区域生长图像分割# seeds = [(10, 10), (82, 150), (20, 300)]  # 直接给定 种子点imgBlur = cv2.blur(img, (3,3))  # cv2.blur 方法_, imgTop = cv2.threshold(imgBlur, 250, 255, cv2.THRESH_BINARY)  # 高百分位阈值产生种子区域nseeds, labels, stats, centroids = cv2.connectedComponentsWithStats(imgTop)  # 过滤连通域,获得质心点 (x,y)seeds = centroids.astype(int)  # 获得质心像素作为种子点imgGrowth = regional_growth(img, seeds, 8)plt.figure(figsize=(8, 6))plt.subplot(221), plt.axis('off'), plt.title("Origin")plt.imshow(img, 'gray')plt.subplot(222), plt.axis('off'), plt.title("OTSU(T={})".format(ret))plt.imshow(imgOtsu, 'gray')plt.subplot(223), plt.axis('off'), plt.title("Adaptive threshold")plt.imshow(binaryMean, 'gray')plt.subplot(224), plt.axis('off'), plt.title("Region grow")plt.imshow(255-imgGrowth, 'gray')plt.tight_layout()plt.show()

在这里插入图片描述

8. 基于 k 均值聚类的区域分割

【youcans 的 OpenCV 例程200篇】170.图像分割之K均值聚类

聚类方法的思想是将样本集合按照其特征的相似性划分为若干类别,使同一类别样本的特征具有较高的相似性,不同类别样本的特征具有较大的差异性。

基于聚类的区域分割,就是基于图像的灰度、颜色、纹理、形状等特征,用聚类算法把图像分成若干类别或区域,使每个点到聚类中心的均值最小。
a r g min ⁡ C ( ∑ i = 1 k ∑ z ∈ C i ∥ z − m i ∥ 2 ) arg \min_{C} \Big( \sum^k_{i=1} \sum_{z \in C_i} \lVert z - m_i \rVert ^2 \Big) argCmin(i=1kzCizmi2)
k 均值(k-means)是一种无监督聚类算法。基于 k 均值聚类算法的区域分割,算法步骤为:

(1)首先从图像中选取 k 个点作为初始的聚类中心;

(2)对所有的像素点,计算像素到每个聚类中心的距离,将像素分类到距离最小的一个聚类中;

(3)根据分类结果计算出新的聚类中心;

(4)如此反复迭代直到聚类中心收敛到稳定值。

OpenCV 提供了函数 cv.kmeans 来实现 k-means 聚类算法。函数 cv.kmeans 不仅可以基于灰度、颜色对图像进行区域分割,也可以基于样本的其它特征如纹理、形状进行聚类。

函数说明:

cv.kmeans(data, K, bestLabels, criteria, attempts, flags[, centers]) → compactness, labels, centersdst

函数 cv.kmeans 实现 k-means 算法寻找聚类中心,并按聚类对输入样本进行分组。

参数说明:

  • data:用于聚类的数据,N 维数组,类型为 CV_32F、CV_32FC2
  • K:设定的聚类数量
  • bestLabels:整数数组,分类标签,每个样本的所属聚类的序号
  • criteria:元组 (type, max_iter, epsilon),算法结束标准,最大迭代次数或聚类中心位置精度
    • cv2.TERM_CRITERIA_EPS:如果达到指定的精度 epsilon,则停止算法迭代
    • cv2.TERM_CRITERIA_MAX_ITER:在指定的迭代次数max_iter之后停止算法
    • cv2.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER:当满足上述任何条件时停止迭代
  • attempts:标志,指定使用不同聚类中心初值执行算法的次数
  • flags:像素邻域的尺寸,用于计算邻域的阈值,通常取 3,5,7
    • cv2. KMEANS_RANDOM_CENTERS:随机产生聚类中心的初值
    • cv2. KMEANS_PP_CENTERS:Kmeans++ 中心初始化方法
    • cv2. KMEANS_USE_INITIAL_LABELS:第一次计算时使用用户指定的聚类初值,之后的计算则使用随机的或半随机的聚类中心初值
  • centers:聚类中心数组,每个聚类中心为一行,可选项
  • labels:整数数组,分类标签,每个样本的所属聚类的序号
  • centersdst:聚类中心数组

例程 11.27:图像分割之 k 均值聚类

    # 11.27 图像分割之 k 均值聚类img = cv2.imread("../images/imgB6.jpg", flags=1)  # 读取彩色图像(BGR)dataPixel = np.float32(img.reshape((-1, 3)))criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 200, 0.1)  # 终止条件flags = cv2.KMEANS_RANDOM_CENTERS  # 起始的中心选择K = 3  # 设置聚类数_, labels, center = cv2.kmeans(dataPixel, K, None, criteria, 10, flags)centerUint = np.uint8(center)classify = centerUint[labels.flatten()]  # 将像素标记为聚类中心颜色imgKmean3 = classify.reshape((img.shape))  # 恢复为二维图像K = 4  # 设置聚类数_, labels, center = cv2.kmeans(dataPixel, K, None, criteria, 10, flags)centerUint = np.uint8(center)classify = centerUint[labels.flatten()]  # 将像素标记为聚类中心颜色imgKmean4 = classify.reshape((img.shape))  # 恢复为二维图像K = 5  # 设置聚类数_, labels, center = cv2.kmeans(dataPixel, K, None, criteria, 10, flags)centerUint = np.uint8(center)classify = centerUint[labels.flatten()]  # 将像素标记为聚类中心颜色imgKmean5 = classify.reshape((img.shape))  # 恢复为二维图像plt.figure(figsize=(9, 7))plt.subplot(221), plt.axis('off'), plt.title("Origin")plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))  # 显示 img1(RGB)plt.subplot(222), plt.axis('off'), plt.title("K-mean (k=3)")plt.imshow(cv2.cvtColor(imgKmean3, cv2.COLOR_BGR2RGB))plt.subplot(223), plt.axis('off'), plt.title("K-mean (k=4)")plt.imshow(cv2.cvtColor(imgKmean4, cv2.COLOR_BGR2RGB))plt.subplot(224), plt.axis('off'), plt.title("K-mean (k=5)")plt.imshow(cv2.cvtColor(imgKmean5, cv2.COLOR_BGR2RGB))plt.tight_layout()plt.show()

在这里插入图片描述

【未完待续,请继续关注】

[2025年数学建模美赛 A题分析(4)楼梯使用人数模型]

相关文章:

2025年数学建模美赛 A题分析(3)楼梯使用方向偏好模型

2025年数学建模美赛 A题分析&#xff08;1&#xff09;Testing Time: The Constant Wear On Stairs 2025年数学建模美赛 A题分析&#xff08;2&#xff09;楼梯磨损分析模型 2025年数学建模美赛 A题分析&#xff08;3&#xff09;楼梯使用方向偏好模型 2025年数学建模美赛 A题分…...

复古壁纸中棕色系和米色系哪个更受欢迎?

根据最新的搜索结果&#xff0c;我们可以看到棕色系和米色系在复古壁纸设计中都非常受欢迎。以下是对这两种颜色系受欢迎程度的分析&#xff1a; 棕色系 受欢迎程度&#xff1a;棕色系在复古壁纸中非常受欢迎&#xff0c;因为它能够营造出温暖、质朴和自然的氛围。棕色系的壁纸…...

编译安装PaddleClas@openKylin(失败,安装好后报错缺scikit-learn)

编译安装 前置需求&#xff1a; 手工安装swig和faiss-cpu pip install swig pip install faiss-cpu 小技巧&#xff0c;pip编译安装的时候&#xff0c;可以加上--jobs64来多核编译。 注意先升级pip版本&#xff1a;pip install pip -U pip3 install faiss-cpu --config-s…...

t113_can增加驱动

1 基于太极派的SDK添加 //设备树添加can0: can2504000 {compatible "allwinner,sun20i-d1-can";reg <0x0 0x02504000 0x0 0x400>;interrupts <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;clocks <&ccu CLK_BUS_CAN0>;resets <&ccu RST_BUS_…...

达梦数据库建用户,键库脚本

-- 1.创建表空间 CREATE TABLESPACE "表空间名称" DATAFILE /dmdata/data/DAMENG/表空间名称.DBF SIZE 512 AUTOEXTEND ON NEXT 512 MAXSIZE UNLIMITED; -- 2.创建用户 CREATE USER "表空间名称" IDENTIFIED BY "表空间名称" HASH WITH SHA512 S…...

上海亚商投顾:沪指冲高回落 大金融板块全天强势 上海亚商投

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一&#xff0e;市场情绪 市场全天冲高回落&#xff0c;深成指、创业板指午后翻绿。大金融板块全天强势&#xff0c;天茂集团…...

MySQL 的索引类型【图文并茂】

基本分类 文本生成MindMap:https://app.pollyoyo.com/planttext <style> mindmapDiagram {node {BackgroundColor yellow}:depth(0) {BackGroundColor SkyBlue}:depth(1) {BackGroundColor lightGreen} } </style> * MySQL 索引** 数据结构角度 *** B树索引*** 哈…...

天聚地合:引领API数据流通服务,助力数字经济发展

天聚地合&#xff1a;引领API数据流通服务,助力数字经济发展 爱企猫01月24日消息&#xff1a;天聚地合&#xff08;苏州&#xff09;科技股份有限公司,成立于2010年,总部位于苏州,是一家综合性API数据流通服务商。公司旗下品牌‘聚合数据’已开发超过790个API,服务百万企业级客…...

【反悔堆】【hard】力扣871. 最低加油次数

汽车从起点出发驶向目的地&#xff0c;该目的地位于出发位置东面 target 英里处。 沿途有加油站&#xff0c;用数组 stations 表示。其中 stations[i] [positioni, fueli] 表示第 i 个加油站位于出发位置东面 positioni 英里处&#xff0c;并且有 fueli 升汽油。 假设汽车油…...

electron typescript运行并设置eslint检测

目录 一、初始化package.json 二、安装依赖 1、安装electron 2、安装typescript依赖 3、安装eslint 三、项目结构 四、配置启动项 一、初始化package.json 我的&#xff1a;这里的"main"没太大影响&#xff0c;看后面的步骤。 {"name": "xlo…...

服务器上安装Nginx详细步骤

第一步&#xff1a;上传nginx压缩包到指定目录。 第二步&#xff1a;解压nginx压缩包。 第三步&#xff1a;配置编译nginx 配置编译方法&#xff1a; ./configure 配置编译后结果信息&#xff1a; 第四步&#xff1a;编译nginx 在nginx源文件目录中直接运行make命令 第五步&…...

Timeout or no response waiting for NATS JetStream server

当使用jetStream 出现"Timeout or no response waiting for NATS JetStream server" 错误的时候要注意后面的“no response”&#xff0c;尤其是开发测试&#xff0c;要去check server 是否启动了 jet stream。 [20112] 2025/01/24 08:27:42.738396 [INF] _ ___…...

5.2 软件需求分析

文章目录 需求分析的意义软件需求的组成需求分析的5个方面需求分析方法 需求分析的意义 需求分析解决软件“做什么”的问题。由于开发人员比较熟悉计算机而不熟悉领域业务&#xff0c;用户比较熟悉领域业务而不熟悉计算机&#xff0c;双方需要通过交流&#xff0c;制定出完整、…...

DF 开发1

https://www.bilibili.com/video/BV1RFChYxEhJ/ 多个 workspace 图片上传 S3 上传大量文档 https://www.bilibili.com/video/BV1ySsEeUE6i 解决方案 返回 metadata https://www.bilibili.com/video/BV1t3e5eaENo 给出内容引用出处 模型负载均衡 可以以 ollama 在不同端口起服…...

【现代深度学习技术】深度学习计算 | 参数管理

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

团体程序设计天梯赛-练习集——L1-024 后天

前言 首先祝大家新年快乐&#xff0c;然后博主今点炮让炮崩了一下&#xff0c;水一天 这道题5分非常简单&#xff0c;有不少的做法 L1-024 后天 如果今天是星期三&#xff0c;后天就是星期五&#xff1b;如果今天是星期六&#xff0c;后天就是星期一。我们用数字1到7对应星期…...

JVM栈溢出线上环境排查

#查看当前Linux系统进程ID、线程ID、CPU占用率&#xff08;-eo后面跟想要展示的列&#xff09; ps H -eo pid,tid,%cpups H -eo pid,tid,%cpu |grep tid #使用java jstack 查看进程id下所有线程id的情况 jstack pid 案例2 通过jstack 排查死锁问题 #启动java代码 jstack 进…...

Java实现FIFO缓存策略实战

实现FIFO模型选择FIFO模型实现过程FIFO模型完整代码下面看一下先进先出的示例过程总结FIFO(First In First Out,先进先出)策略是一种基本的数据处理和存储管理方法,在Java中,这种策略通常用于管理那些需要按照顺序处理的数据项,比如任务的队列、数据的传输缓冲区等。在Ja…...

set集合

set集合 Set系列集合&#xff1a; 无序&#xff1a;存取顺序不一致 不重复&#xff1a;可以去除重复 无索引&#xff1a;没有带索引的方法&#xff0c;所以不能使用普通for循环遍历&#xff0c;也不能通过索引来获取元素 可以看出set是无序的存和打印的顺序不一样 Set接中的…...

【数据结构】 并查集 + 路径压缩与按秩合并 python

目录 前言模板朴素实现路径压缩按秩合并按树高为秩按节点数为秩 总结 前言 并查集的基本实现通常使用森林来表示不同的集合&#xff0c;每个集合用一棵树表示&#xff0c;树的每个节点有一个指向其父节点的指针。 如果一个节点是它自己的父节点&#xff0c;那么它就是该集合的代…...

无耳科技 Solon v3.0.7 发布(2025农历新年版)

Solon 框架&#xff01; Solon 框架由杭州无耳科技有限公司&#xff08;下属 Noear 团队&#xff09;开发并开源。是新一代&#xff0c;面向全场景的 Java 企业级应用开发框架。从零开始构建&#xff08;非 java-ee 架构&#xff09;&#xff0c;有灵活的接口规范与开放生态。…...

UART、I2C和SPI对比

UARTSPII2C英文Universal Asynchronous Receive/TransmitSerial Peripheral InterfaceInner Integrated Communication通讯速度115200、38400 bit/s高达100M bit/s 100k、400k、1M、3.4M bit/s时钟同/异步性时钟异步时钟同步时钟同步接线方式3线(Rx、Tx、GND) 4线(MISO、…...

Vue 响应式渲染 - 待办事项简单实现

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 响应式渲染 - 待办事项简单实现 目录 待办事项简单实现 页面初始化 双向绑定的指令 增加留言列表设置 增加删除按钮 最后优化 总结 待办事项简单实现 页面初始化 对页面进行vue的引入、创建输入框和按钮及实例化V…...

ResNeSt: Split-Attention Networks论文学习笔记

这张图展示了一个名为“Split-Attention”的神经网络结构&#xff0c;该结构在一个基数组&#xff08;cardinal group&#xff09;内进行操作。基数组通常指的是在神经网络中处理的一组特征或通道。图中展示了如何通过一系列操作来实现对输入特征的注意力机制。 以下是图中各部…...

澳洲硕士毕业论文写作中如何把握主题

每到毕业季时&#xff0c;澳洲硕士毕业论文写作是留学生学业的头等大事。但是经常有留学生在澳洲毕业论文写作过程中会遇到写了一半&#xff0c;但是不知道应该如何继续下去的问题。有时候是在literature review的部分就越写越觉得偏离了方向&#xff0c;有时候是在数据收集阶段…...

STM32 LED呼吸灯

接线图&#xff1a; 这里将正极接到PA0引脚上&#xff0c;负极接到GND&#xff0c;这样就高电平点亮LED&#xff0c;低电平熄灭。 占空比越大&#xff0c;LED越亮&#xff0c;占空比越小&#xff0c;LED越暗 PWM初始化配置 输出比较函数介绍&#xff1a; 用这四个函数配置输…...

Java数据库操作指南:快速上手JDBC【学术会议-2025年数字化教育与信息技术(DEIT 2025】

大会官网&#xff1a;www.ic-deit.org 前言 在现代企业应用中&#xff0c;数据库是数据存储和管理的重要组成部分。Java作为一种广泛使用的编程语言&#xff0c;提供了多种方式与数据库进行交互。本文将介绍 JDBC&#xff08;Java Database Connectivity&#xff09;&#x…...

2024年个人总结

序 照例&#xff0c;每年都有的个人年度总结来了&#xff0c;看了很多其他大佬的总结&#xff0c;感觉自己的2024过于单薄&#xff0c;故事也不太丰满&#xff0c;自己就回去比较&#xff0c;自己哪里做的不好 &#xff1f;但后来发现已经进入了一个思维误区。 年度总结年度总结…...

GitHub 仓库的 Archived 功能详解:中英双语

GitHub 仓库的 Archived 功能详解 一、什么是 GitHub 仓库的 “Archived” 功能&#xff1f; 在 GitHub 上&#xff0c;“Archived” 是一个专门用于标记仓库状态的功能。当仓库被归档后&#xff0c;它变为只读模式&#xff0c;所有的功能如提交代码、创建 issue 和 pull req…...

LeetCode:56.合并区间

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;56.合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti,…...