2023 年 五一杯 B 题过程 + 代码(第一问)

news2024/12/23 17:50:04

文章目录

  • 第一题
    • 问题分析
    • PageRank 算法(可跳过)
    • PageRank 算法修正
    • 权重系数
  • 结果
    • 各城市链出与链入
      • 链出 + 权重
      • 链入 + 权重
    • PageRank 算法结果
    • 代码

第一题

问题分析

从收货量、发货量、快递数量增长/减少趋势、相关性等多角度考虑,建立数学模型,对各站点城市的重要程度进行综合排序

用脚丫子想,收货量大、发货量大、快递数量呈现增长趋势、链出的城市多,城市就重要。

如何建模?可以参考谷歌网页排名算法 pagerank,通过对网页之间的链接结构和链接权重分析网页重要性。

附件 1 数据中,快递的路径取值如下:
‘A->O’, ‘S->R’, ‘S->Q’, ‘S->L’, ‘S->I’, ‘S->D’, ‘R->S’, ‘R->O’, ‘R->L’, ‘R->G’, ‘R->D’, ‘Q->V’, ‘Q->M’, ‘Q->A’, ‘P->D’, ‘O->R’, ‘O->Q’, ‘O->G’, ‘T->X’, ‘N->V’, ‘U->A’, ‘U->O’, ‘Y->X’, ‘Y->W’, ‘Y->L’, ‘X->Y’, ‘X->W’, ‘X->L’, ‘X->G’, ‘W->Y’, ‘W->X’, ‘W->L’, ‘V->Q’, ‘V->N’, ‘V->M’, ‘V->G’, ‘V->C’, ‘V->A’, ‘U->V’, ‘U->G’, ‘N->M’, ‘T->B’, ‘M->V’, ‘G->X’, ‘G->V’, ‘G->R’, ‘G->Q’, ‘G->O’, ‘G->N’, ‘G->L’, ‘E->I’, ‘D->R’, ‘D->E’, ‘D->A’, ‘C->V’, ‘C->U’, ‘C->N’, ‘C->M’, ‘B->G’, ‘N->G’, ‘I->E’, ‘I->J’, ‘A->Q’, ‘J->I’, ‘I->S’, ‘M->N’, ‘M->G’, ‘M->C’, ‘L->X’, ‘L->W’, ‘L->R’, ‘L->P’, ‘L->O’, ‘M->U’, ‘L->J’, ‘L->G’, ‘L->D’, ‘K->L’, ‘K->J’, ‘J->L’, ‘J->K’, ‘L->K’, ‘Q->O’, ‘D->L’, ‘Q->N’, ‘H->J’, ‘H->K’, ‘H->L’, ‘J->H’, ‘L->H’, ‘K->H’

绘制有向图:
在这里插入图片描述

PageRank 算法(可跳过)

PageRank 算法将互联网看作一个有向图,每个网页看作图中的一个节点,每个链接看作图中的一条边,网页之间的链接关系构成了整个图的拓扑结构。在这个图中,PageRank 算法将网页的重要性定义为所有指向该网页的链接节点 PageRank 值的加权平均值。即一个网页的重要性等于它所链接的所有网页的重要性之和,这些网页的重要性需要按照它们自身的 PageRank 值进行加权。

PageRank 算法将网页的重要性定义为一个网页被其他重要网页链接的数量和质量的加权平均值。具体来说,网页 A 的 PageRank 值可以用以下公式计算:
P R ( A ) = 1 − d N + d ⋅ ∑ i ∈ B A P R ( i ) L ( i ) PR(A) = \frac{1-d}{N} + d \cdot \sum_{i\in B_A} \frac{PR(i)}{L(i)} PR(A)=N1d+diBAL(i)PR(i)

其中, P R ( A ) PR(A) PR(A) 表示网页 A 的 PageRank 值, N N N 表示网页总数, d d d 是一个介于 0 和 1 之间的阻尼系数(也称为跳转概率,通常取值为 0.85), B A B_A BA 表示所有指向网页 A 的网页集合, L ( i ) L(i) L(i) 表示网页 i 的出度(即指向其他网页的链接数)。

公式的意义是:网页 A 的 PageRank 值等于一个固定的基础值 1 − d N \frac{1-d}{N} N1d 加上所有指向网页 A 的其他网页的 PageRank 值的加权平均值。其中,权重取决于链接网页的出度(出度越大,权重越小)和这些链接网页的 PageRank 值(PageRank 值越高,权重越大),同时还要乘以阻尼系数 d。

PageRank 算法修正

PageRank 算法的核心思想是基于以下两个假设:

  1. 如果一个网页被很多其他网页链接到,那么它很可能是一个重要的网页。
  2. 如果一个网页链接到很多其他网页,那么它很可能是一个不太重要的网页。

要用于解决问题一,套用 pagerank 肯定不行。因为链出城市越多,这个城市越重要才对,因此修正如下:
P R ( A ) = 1 − d N + d ⋅ ∑ i ∈ B A P R ( i ) ⋅ L ( i ) N PR(A) = \frac{1-d}{N} + d \cdot \sum_{i\in B_A} PR(i) \cdot \frac{L(i)}{N} PR(A)=N1d+diBAPR(i)NL(i)
除法该惩罚,简单粗暴。

此外,每一个链出,应赋予权重,这个权重表示收货量、发货量、快递量增长。为此,将上式引入权重,修正为:
P R ( A ) = 1 − d N + d ⋅ ∑ i ∈ B A P R ( i ) ⋅ L ( i ) N ⋅ w i − > A PR(A) = \frac{1-d}{N} + d \cdot \sum_{i\in B_A} PR(i) \cdot \frac{L(i)}{N} \cdot w_{i->A} PR(A)=N1d+diBAPR(i)NL(i)wi>A
其中, w i − > A w_{i->A} wi>A为 i 链到 A 的权重

权重系数

那么权重如何求?
我们手头上有 2018-04-19 至 2019-04-17 的快递量数据(路径已经包含了收发信息),针对每一月进行 Zscore 标准化,得到“快递量(局部标准化)”。然后对所有数据进行 Zscore 标准化,得到 “快递量(全局标准化)”。

局部标准化中,每一天的快递量与本月做对比。全局快递量与一年作对比。前者没有考虑月度增长,能够静态反映所有路径快递量的情况。后者考虑增长,动态反映了所有路径的快递量情况。

增长率的考虑应引入一元线性回归,然后取他的斜率和相关系数。

一元线性回归的数学原理基于统计学中的线性回归模型,假设响应变量 y 和一个或多个解释变量 x 之间存在线性关系,即

y = a * x + b + e

其中,a 为斜率,b 为截距,e 为随机误差。通过最小二乘法,我们可以得到 a 和 b 的估计值,以及其他统计信息,如 t 值、p 值、标准误差和相关系数等。

相关系数(r)是表示两个变量之间关系的一种统计量,其取值范围在 -1 和 1 之间。当 r=1 时,表示两个变量之间存在完全正向线性关系;当 r=-1 时,表示两个变量之间存在完全负向线性关系;当 r=0 时,表示两个变量之间不存在线性关系。

于是表示增长率权重系数为:将斜率和 r 进行最大最小值标准化后,用 a × r a\times r a×r 表示。

同样,对快递数(全局)、快递数(局部)进行最大最小值标准化,然后得到权重公式:
w = [ 快递数(全局) + 快递数(局部) + a × r ] / 3 w = [快递数(全局) + 快递数(局部)+ a\times r ] / 3 w=[快递数(全局)+快递数(局部)+a×r]/3

最终可得:
在这里插入图片描述

结果

各城市链出与链入

链出 + 权重

A -> [(‘O’, 0.1), (‘Q’, 0.14)]
B -> [(‘G’, 0.38)]
C -> [(‘M’, 0.06), (‘N’, 0.05), (‘U’, 0.05), (‘V’, 0.06)]
D -> [(‘A’, 0.08), (‘E’, 0.08), (‘L’, 0.08), (‘R’, 0.08)]
E -> [(‘I’, 0.19)]
G -> [(‘L’, 0.61), (‘N’, 0.06), (‘O’, 0.27), (‘Q’, 0.1), (‘R’, 0.13), (‘V’, 0.72), (‘X’, 0.08)]
H -> [(‘J’, 0.33), (‘K’, 0.08), (‘L’, 0.06)]
I -> [(‘E’, 0.12), (‘J’, 0.25), (‘S’, 0.1)]
J -> [(‘H’, 0.05), (‘I’, 0.28), (‘K’, 0.27), (‘L’, 0.22)]
K -> [(‘H’, 0.27), (‘J’, 0.09), (‘L’, 0.25)]
L -> [(‘D’, 0.15), (‘G’, 0.58), (‘H’, 0.18), (‘J’, 0.27), (‘K’, 0.21), (‘O’, 0.08), (‘P’, 0.12), (‘R’, 0.19), (‘W’, 0.41), (‘X’, 0.15)]
M -> [(‘C’, 0.07), (‘G’, 0.08), (‘N’, 0.11), (‘U’, 0.18), (‘V’, 0.11)]
N -> [(‘G’, 0.08), (‘M’, 0.17), (‘V’, 0.17)]
O -> [(‘G’, 0.2), (‘Q’, 0.21), (‘R’, 0.16)]
P -> [(‘D’, 0.14)]
Q -> [(‘A’, 0.09), (‘M’, 0.11), (‘N’, 0.11), (‘O’, 0.08), (‘V’, 0.08)]
R -> [(‘D’, 0.13), (‘G’, 0.08), (‘L’, 0.2), (‘O’, 0.19), (‘S’, 0.3)]
S -> [(‘D’, 0.13), (‘I’, 0.15), (‘L’, 0.14), (‘Q’, 0.14), (‘R’, 0.19)]
T -> [(‘B’, 0.38), (‘X’, 0.68)]
U -> [(‘A’, 0.1), (‘G’, 0.08), (‘O’, 0.09), (‘V’, 0.13)]
V -> [(‘A’, 0.17), (‘C’, 0.05), (‘G’, 0.57), (‘M’, 0.11), (‘N’, 0.11), (‘Q’, 0.1)]
W -> [(‘L’, 0.38), (‘X’, 0.21), (‘Y’, 0.13)]
X -> [(‘G’, 0.09), (‘L’, 0.21), (‘W’, 0.23), (‘Y’, 0.23)]
Y -> [(‘L’, 0.21), (‘W’, 0.13), (‘X’, 0.19)]

链入 + 权重

O <- [(‘A’, 0.1), (‘G’, 0.27), (‘L’, 0.08), (‘Q’, 0.08), (‘R’, 0.19), (‘U’, 0.09)]
Q <- [(‘A’, 0.14), (‘G’, 0.1), (‘O’, 0.21), (‘S’, 0.14), (‘V’, 0.1)]
G <- [(‘B’, 0.38), (‘L’, 0.58), (‘M’, 0.08), (‘N’, 0.08), (‘O’, 0.2), (‘R’, 0.08), (‘U’, 0.08), (‘V’, 0.57), (‘X’, 0.09)]
M <- [(‘C’, 0.06), (‘N’, 0.17), (‘Q’, 0.11), (‘V’, 0.11)]
N <- [(‘C’, 0.05), (‘G’, 0.06), (‘M’, 0.11), (‘Q’, 0.11), (‘V’, 0.11)]
U <- [(‘C’, 0.05), (‘M’, 0.18)]
V <- [(‘C’, 0.06), (‘G’, 0.72), (‘M’, 0.11), (‘N’, 0.17), (‘Q’, 0.08), (‘U’, 0.13)]
A <- [(‘D’, 0.08), (‘Q’, 0.09), (‘U’, 0.1), (‘V’, 0.17)]
E <- [(‘D’, 0.08), (‘I’, 0.12)]
L <- [(‘D’, 0.08), (‘G’, 0.61), (‘H’, 0.06), (‘J’, 0.22), (‘K’, 0.25), (‘R’, 0.2), (‘S’, 0.14), (‘W’, 0.38), (‘X’, 0.21), (‘Y’, 0.21)]
R <- [(‘D’, 0.08), (‘G’, 0.13), (‘L’, 0.19), (‘O’, 0.16), (‘S’, 0.19)]
I <- [(‘E’, 0.19), (‘J’, 0.28), (‘S’, 0.15)]
X <- [(‘G’, 0.08), (‘L’, 0.15), (‘T’, 0.68), (‘W’, 0.21), (‘Y’, 0.19)]
J <- [(‘H’, 0.33), (‘I’, 0.25), (‘K’, 0.09), (‘L’, 0.27)]
K <- [(‘H’, 0.08), (‘J’, 0.27), (‘L’, 0.21)]
S <- [(‘I’, 0.1), (‘R’, 0.3)]
H <- [(‘J’, 0.05), (‘K’, 0.27), (‘L’, 0.18)]
D <- [(‘L’, 0.15), (‘P’, 0.14), (‘R’, 0.13), (‘S’, 0.13)]
P <- [(‘L’, 0.12)]
W <- [(‘L’, 0.41), (‘X’, 0.23), (‘Y’, 0.13)]
C <- [(‘M’, 0.07), (‘V’, 0.05)]
B <- [(‘T’, 0.38)]
Y <- [(‘W’, 0.13), (‘X’, 0.23)]

PageRank 算法结果

最终结果,G、L、V、W、O 最重要!可以从链出、链入和权重中亦可以发现

达到精度, 迭代终止,迭代次数为: 11
城市 G 的 PageRank 值为 0.00682
城市 L 的 PageRank 值为 0.00648
城市 V 的 PageRank 值为 0.00584
城市 W 的 PageRank 值为 0.00539
城市 O 的 PageRank 值为 0.00519
城市 R 的 PageRank 值为 0.00519
城市 J 的 PageRank 值为 0.00518
城市 X 的 PageRank 值为 0.0051
城市 K 的 PageRank 值为 0.00493
城市 D 的 PageRank 值为 0.00479
城市 H 的 PageRank 值为 0.00478
城市 Q 的 PageRank 值为 0.00477
城市 N 的 PageRank 值为 0.00463
城市 A 的 PageRank 值为 0.00459
城市 I 的 PageRank 值为 0.00454
城市 M 的 PageRank 值为 0.00454
城市 S 的 PageRank 值为 0.00451
城市 P 的 PageRank 值为 0.00447
城市 Y 的 PageRank 值为 0.00442
城市 U 的 PageRank 值为 0.00436
城市 C 的 PageRank 值为 0.0043
城市 B 的 PageRank 值为 0.00429
城市 E 的 PageRank 值为 0.00429
城市 T 的 PageRank 值为 0.00417

代码

代码文章链接:2023 年 五一杯 B 题第一问代码

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

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

相关文章

如何使用git更新别人的代码

文章目录 如何使用git更新别人的代码问题说明省流问题示例操作步骤总结总结 如何使用git更新别人的代码 问题说明 当自己git clone别人的代码之后&#xff0c;代码一直停留到本地电脑上&#xff0c;而你就跑了一次程序就搁置了。 后来有一天你想再次运行该代码&#xff0c;但…

可观测性:你的应用健康吗?

一、需求来源 首先来看一下&#xff0c;整个需求的来源&#xff1a;当把应用迁移到 Kubernetes 之后&#xff0c;要如何去保障应用的健康与稳定呢&#xff1f;其实很简单&#xff0c;可以从两个方面来进行增强&#xff1a; 首先是提高应用的可观测性&#xff1b;第二是提高应…

Matplotlib 安装介绍

文章目录 安装步骤 Matplotlib 不止是一个数学绘图库&#xff0c;它也是可视化和分析工具中最流行之一。我们可用其制作简单的图表&#xff0c;如折线图和散点图。 安装步骤 先进入&#xff1a;python官网 跳转到界面&#xff1a; 录入并搜索 下载之前&#xff0c;看一下自…

嵌入式linux学习笔记--虚拟局域网组网方案分享,基于自组zerotier -planet 网络的方案

0. 前言 五一假期期间重新考虑了目前的组网环境&#xff0c;准备对目前的组网进行一个重新的划分。 目前有的资源 ① 两台 服务器&#xff0c;阿里云-深圳&#xff08;5M上行&#xff09;和腾讯云 广州&#xff08;3M上行&#xff09; ② 带动态公网IP的家庭宽带 &#xff08;…

伽马校正的前世今生

关于伽马校正的前因后果&#xff0c;在网上有不同版本的说法&#xff0c;由于年代久远的因素&#xff0c;导致原本很简单的事情越说越复杂。今天我们的目标就是抓住伽马的头&#xff0c;而不是摸一下伽马的尾巴。 一&#xff0c;鱼龙混杂的论调 1&#xff0c;CRT 显示器的物理…

系统集成项目管理工程师下午真题 计算题 及考点 汇总(更新中。。。)

文章目录 2022下半年广东卷 2022下半年广东卷 1、质量保证、质量控制。质量管理方面存在的问题&#xff0c;并给出正确的做法。判断下列选项的正误。 2、下表是一个软件项目在编码阶段各活动的计划和实际完成情况&#xff08;工作量&#xff0c;单位&#xff1a;人天&#xf…

Linux环境下的redis

一&#xff1a;安装与启动 1.下载redis安装包 2.解压&#xff1a;tar –xvf 文件名.tar.gz 3.安装 进入redis目录&#xff08;cd redis-x.x.x/)后&#xff0c;执行make install 命令 4.启动 进入src目录&#xff0c;执行redis-server 此时该界面无法再使用&#xff0c;需要…

Eureka 服务注册源码探秘——图解、源码级解析

&#x1f34a; Java学习&#xff1a;社区快速通道 &#x1f34a; 深入浅出RocketMQ设计思想&#xff1a;深入浅出RocketMQ设计思想 &#x1f34a; 绝对不一样的职场干货&#xff1a;大厂最佳实践经验指南 &#x1f4c6; 最近更新&#xff1a;2023年5月2日 &#x1f34a; 点…

NPOI导出word文档中插入公式总结

1. XWPFOMath类 XWPFDocument doc new XWPFDocument(); //创建新行 XWPFParagraph p doc.CreateParagraph(); //创建空的公式 XWPFOMath math p.CreateOMath();通过XWPFParagraph的扩展方法创建 方法名备注CreateAcc();创建XWPFAcc类&#xff0c;实现字符在文字上面的类Cr…

【前端】2.HTML基础知识

文章目录 1. 基本概念1.1 HTML是什么1.2 HTML的作用1.3. 学习导引1.4 开发工具 2. HTML 基础语法2.1 demo2.1.1 HTML 详述2.1.2 HTML标签2.1.3 HTML网页结构2.1.4HTML版本 2.2 常用元素2.3 属性2.4 文本相关语法2.5 链接相关语法2.6 头部相关语法 3. 总结3.1 HTML 基础语法总结…

什么是VLAN?为什么要划分VLAN?

VLAN(Virtual Local Area Network)即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域&#xff0c;VLAN内的主机间可以直接通信&#xff0c;而VLAN间则不能直接互通。这样&#xff0c;广播报文就被限制在一个VLAN内。 一、为…

如何简单快速搭建自己的云对象存储服务(OSS)

简单来说&#xff0c;其实我们只需要有一台服务器&#xff0c;利用服务器的各种资源&#xff0c;搭配其它厂商开发的软件&#xff0c;就能很轻易拥有自己的云对象存储服务。不需要在阿里云上花钱买什么服务&#xff0c;甚至还能自己给别人提供服务&#xff0c;真的是太爽了。 云…

五一创作【Android构建篇】MakeFile语法

前言 对于一个看不懂Makefile构建文件规则的人来说&#xff0c;这个Makefile语法和shell语法是真不一样&#xff0c;但是又引用了部分shell语法&#xff0c;可以说是shell语法的子类&#xff0c;Makefile语法继承了它。 和shell语法不一样&#xff0c;这个更难一点&#xff0…

云原生架构的发展历史

目录 1 单机小型机时代2 垂直拆分3 集群化负载均衡架构4 服务化改造架构5 服务治理6 微服务时代7 服务网格新时期 &#xff08;service mesh&#xff09;7.1 背景7.2 SideCar7.3 Linkerd7.4 istio7.5 什么是服务网格7.6 什么是Service Mesh7.7 CNCF云原生组织发展和介绍7.8 国内…

C++11--线程库的认识

目录 thread 线程的构造方式 相关成员函数 join与detach 线程传参 互斥量mutex mutex Locks 原子性操作库 条件变量 thread 线程的构造方式 它是不支持拷贝构造&#xff0c;赋值的&#xff0c;但是可以支持移动构造&#xff0c;移动赋值。还可以直接创建无参的对象。 …

存储器(一)

目录 一、存储器的分类 1.按介质分类 1.1半导体存储器 1.2磁表面存储器 1.3光盘存储器 2.按存取方式分类 2.1随机存储器(RAM) 2.2只读存储器(ROM) 2.3串行访问存储器 3.按在计算机中的作用分类 ​编辑 二、存储器的层次结构 1.存储器的主要性能指标: 2.存储系统体系…

模式识别是什么意思

模式识别是一种通过分析数据特征、模型、算法等手段&#xff0c;从数据中寻找规律、发现隐藏的模式或结构的技术。通常是从某些对象、场景、过程等方面入手&#xff0c;对数据进行处理&#xff0c;以便于对这些对象、场景、过程进行分类、检测、识别、分割、分析等目的。 模式…

HJ20 密码验证合格程序

写在前面&#xff1a; 题目链接&#xff1a;牛客网 华为机试题 HJ20 密码验证合格程序 题目难度&#xff1a;中等 编程语言&#xff1a;C 一、题目描述 描述 密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 &#xff08;注&#xff1a;其他符号不…

死信队列

死信队列 死信的概念 先从概念解释上搞清楚这个定义&#xff0c;死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;字面意思可以这样理解&#xff0c;一般来说&#xff0c;producer 将消息投递到 broker 或者直接到queue 里了&#xff0c;consumer 从 queue 取出消息…

[Pandas] 构建DataFrame数据框

DataFrame是二维数据结构&#xff0c;数据以行和列的形式排列 构建DataFrame最基本的定义格式如下 df pd.DataFrame(dataNone, indexNone, columnsNone) 参数说明 data: 具体数据 index: 行索引&#xff0c;如果没有指定&#xff0c;会自动生成RangeIndex(0,1,2,...,n) colu…