2023 年 五一杯 D 题大奖预定第一问求解过程与结果

news2024/12/24 9:08:30

文章目录

  • 第一题
    • 问题分析
    • 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 年 五一杯 D 题大奖预定第一问代码

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

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

相关文章

[MAUI]模仿iOS多任务切换卡片滑动的交互实现

文章目录 原理创建布局创建分布函数创建动效创建绑定数据细节调整首张卡片的处理为卡片添加裁剪跳转到最后一张卡片 项目地址 看了上一篇博文的评论&#xff0c;大家对MAUI还是比较感兴趣的&#xff0c;非常感谢大家的关注&#xff0c;这个专栏我争取周更&#x1f609;。 App之…

git把我本地文件传到我的指定的仓库

在使用Git将本地文件推送到指定仓库之前&#xff0c;请确保已经安装了Git并进行了基本配置。接下来&#xff0c;遵循以下步骤将本地文件推送到远程仓库&#xff1a; 兄弟先赏析悦目一下&#xff0c;摸个鱼 首先&#xff0c;在本地文件夹中打开命令行界面&#xff08;在Windows上…

关于I帧/IDR、B帧、P帧、SPS、PPS

在h264编解码中&#xff0c;常常有I帧/IDR/B帧/P帧/IDR/NALU/GOP/&#xff0c;但往往没有关注细节。或者我们本身在实际应用中与使用过很多次&#xff0c;但对相关的技术名词不清楚。 在H264协议里定义了三种帧&#xff0c;完整编码的帧叫I帧&#xff0c;参考之前的I帧生成的只…

【C语言】 知识点汇总--基础知识点梳理(超全超详细)

目录 一、从源代码到exe 二、基本数据类型 三、字符在屏幕上的显示原理 四、溢出现象 五、类型转换规律 六、短路问题 七、指针变量类型的作用 八、指针类型的扩展——多级指针 九、指针类型的扩展——指针数组 十、指针类型的扩展——数组指针 十一、一维数组-名-特…

Doris(24):Doris的函数—聚合函数

1 APPROX_COUNT_DISTINCT(expr) 返回类似于 COUNT(DISTINCT col) 结果的近似值聚合函数。 它比 COUNT 和 DISTINCT 组合的速度更快,并使用固定大小的内存,因此对于高基数的列可以使用更少的内存。 select city,approx_count_distinct(user_id) from site_visit group by c…

Go语言-数据结构与算法

20.4 稀疏 sparsearray 数组 20.4.1 先看一个实际的需求  编写的五子棋程序中&#xff0c;有存盘退出和续上盘的功能 稀疏数组的处理方法是 : 1) 记录数组一共有几行几列&#xff0c;有多少个不同的值 2) 思想&#xff1a;把具有不同值的元素的行列及值记录在一个…

前端三剑客之HTML】

⭐个人主页&#xff1a;书生♡博客主页&#x1f64b;‍♂ &#x1f351;博客领域&#xff1a;java编程,前端&#xff0c;算法&#xff0c;强训题目 写作风格&#xff1a;干货,干货,还是tmd的干货 支持博主&#xff1a;点赞、收藏⭐、留言&#x1f4ac; 目录 1.前端1.1什么是前端…

MySQL学习笔记第七天

第07章单行函数 2. 数值函数 2.4 指数函数、对数函数 函数用法POW(x,y)&#xff0c;POWER(X,Y)返回x的y次方EXP(X)返回e的x次方&#xff0c;其中e是一个常数&#xff0c;2.718281828459045LN(X)&#xff0c;LOG(X)返回以e为底的X的对数&#xff0c;当x<0时&#xff0c;返…

基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集模块设计(一)总体方案

本章将根据高速数据采集指标要求&#xff0c;分析并确定高速数据采集模块的设计方 案&#xff0c;由此分析数据存储需求及存储速度需求给出高速大容量数据存储方案&#xff0c;完成 双通道高速数据采集模块总体设计方案&#xff0c;并综合采集、存储方案及 AXIe 接口需求 …

第一个C++程序

一、c结构 计算两个数的和&#xff1a; #include <iostream> using namespace std;int main(){int a,b;cin>>a>>b;cout<<"ab"<<ab<<endl;return 0; } #include <iostream> 是 C 标准库中的头文件之一&#xff0c;它包含…

Python程序员的薪资待遇怎么样?我来讲述一下自己五年的工作经历

大家好&#xff0c;我是一名毕业五年的程序员。接下来我将讲述一下我的五年经历&#xff0c;以及一些关于程序员薪资的问题。大学时学的是计算机专业&#xff0c;当时选择这个专业是因为听说这个专业比较好找工作。于是我就选了计算机专业&#xff0c;然后在大四的时候开始找工…

权限提升:漏洞探针.(Linux系统)

权限提升&#xff1a;漏洞探针. 权限提升简称提权&#xff0c;由于操作系统都是多用户操作系统&#xff0c;用户之间都有权限控制&#xff0c;比如通过 Web 漏洞拿到的是 Web 进程的权限&#xff0c;往往 Web 服务都是以一个权限很低的账号启动的&#xff0c;因此通过 Webshel…

同一云厂商同一内网云服务器中使用CentOS 7.6安装Kubernetes集群

查看Linux发行版版本号 cat /etc/redhat-release查看版本号。 更改yum源 参考我写的博客。 主节点操作系统参数配置和软件安装 cat >> /etc/hosts <<OFF&#xff0c;将你的两台云服务器的内网IP和对应的主机名写到/etc/hosts。 需要修改“/etc/fstab”&…

Redis监控步骤get!Google精髓的四大法则直接掌握

Redis也是对外服务&#xff0c;所以Google四个黄金指标同样适用&#xff0c;还从延迟、流量、错误、饱和度分析Redis关键指标。 1 延迟 选择Redis是想得到更快响应速度和更高吞吐量&#xff0c;所以延迟数据对使用Redis的应用程序至关重要。 1.1 如何监控延迟 ① 客户端应用…

C++基础——运算符详解

详解运算符 初识运算符位运算认识位运算的相关运算符。能实现什么样的操作&#xff1f;及实现原理。 比较运算符逻辑运算符赋值运算符 初识运算符 运算符分为5大类&#xff1a;算数运算符、赋值运算符、复合赋值运算符、比较运算符、逻辑运算符。算数运算符就是加减乘除运算&a…

bytetrack 多目标跟踪 学习笔记

效果&#xff1a; ByteTrack在遮挡情况下ID不丢失演示 最近几天在看Bytetrack,感觉自己的学习方法有点问题, 应该先断点跑通&#xff0c;总体把握 然后完全理解算法代码的每一行,可以自己复现(这个就很难,看github的大佬把python转C 好羡慕) 所以如果学习Bytetrack,需要: 了…

【Git】Git(分布式项目管理工具)在Windows本地/命令行中的基本操作以及在gitee中的操作,使用命令行、图形化界面,进行提交,同步,克隆

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

菜鸡shader:L1基于兰伯特原理的玉石、条纹、点阵材质

目录 玉石材质条纹材质点阵效果 这里就简单说下原理吧&#xff0c;使用unity很久之前的一个插件shaderforge&#xff0c;最近几年好像在unity资源商店已经不再维护了&#xff0c;但是有shader forge的官网&#xff1a;在这&#xff0c;碰到节点不会的时候可以查一下官方文档&am…

手把手,带你发布你的第一个npm包

我们在编写项目的时候&#xff0c;都会引入很多很好用的工具包&#xff0c;例如VueX、axios、Router、Element UId等。这些包很好用&#xff0c;安装引入也很方便。那如果我们也想发布一个我们自己的工具包&#xff0c;在以后编写项目时&#xff0c;直接引入我们自己的工具包要…

干货 | 正确引用参考文献的6大技巧

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐&#xff5e; 对于学术研究而言&#xff0c;正确引用参考文献非常重要。参考文献不仅展现了自己的学术水平&#xff0c;同时也给研究定位&#xff0c;突显研究在前人研究基础上作出的贡献。 …