首页 > 编程语言 >【算法】笔试题记录

【算法】笔试题记录

时间:2024-09-25 23:00:55浏览次数:1  
标签:位置 期望 好子 记录 笔试 矩阵 算法 权值 每个

哇今天做了道特别有意思的题。

编程就给了两道,第一题特别简单,a、b两个数,每次选其中一个数*2,这样操作两次,问最后得到的两数之和的期望值是多少。

简单吧?因为每次选择都有两种可能性,操作两次后就会有四种可能的结果(22)。其中有两个结果是重复的(2a, 2b),剩下两个分别是(a, 4b)和(4a, b)。把这四个结果求和除以4就是期望值。或者还有种角度,分别计算两次操作后 a 的期望和 b 的期望,把两者相加就是两数之和的期望(期望的线性性)。

第二题上来就看懵了。定义2*2的相邻元素(上下、左右)互不相同的01矩阵为好矩阵(比如[1 0 0 1]),而一个矩阵中包含好子矩阵的数量为它的权值。输入n、m,问所有 n * m 的矩阵权值的总和是多少? 

啥玩意?我真的想破脑袋。后来笔试结束了才猛然醒悟,这两题是有联系的!第一题看似简单,其实正暗示了第二道题的解法:期望

问题描述

矩阵定义:我们考虑所有可能的  n * m  的 0-1 矩阵。

•权值定义:每个矩阵的权值是其中包含的好子矩阵的数量。

好子矩阵定义:一个  2 * 2  的子矩阵,满足相邻元素(上下、左右)互不相同。

变量定义

总矩阵数  N :所有可能的  n * m  矩阵的数量。N = 2n*m(因为每个元素有 2 种可能,共有  n * m  个元素)

子矩阵位置数  K :每个矩阵中可能的  2 * 2  子矩阵的数量。K = (n - 1) * (m - 1)(因为在  n * m  的矩阵中,横向有  n - 1  个位置,纵向有  m - 1  个位置)

•好子矩阵的概率  P :随机生成的  2 * 2  子矩阵是好子矩阵的概率。P = 2/16 = 1/8(因为共有 16 种可能的  2 * 2  0-1 矩阵,其中只有 2 种是好子矩阵)

推导过程

目标:计算所有可能的  n * m  矩阵的权值总和,即所有矩阵中好子矩阵的总数量。

思路从整体角度考虑,我们可以将问题转化为计算所有位置上好子矩阵出现的总次数。

1. 计算单个位置上的好子矩阵数量

•在单个位置上,可能的子矩阵数量等于总矩阵数  N ,因为每个矩阵在该位置上都有一个对应的子矩阵。

•在该位置上,好子矩阵的总数量为: N * P(每个矩阵在该位置上有一个子矩阵,成为好子矩阵的概率为  P )

2. 计算所有位置上的好子矩阵数量

•总的位置数为  K ,每个位置独立且等价。

•所有位置上的好子矩阵总数为:总权值 = K * N * P

逻辑解释

有人可能疑惑了,每个位置怎么会独立呢?相邻子矩阵不是有共享的元素吗?

这里就要引入关键概念:期望的线性性

期望的线性性是指,对于任意随机变量的和,其期望等于这些随机变量的期望之和,即使这些随机变量之间有相关性。这一点非常重要。

在我们的情境中:

随机变量定义:对于矩阵中的每个可能的  2 * 2  子矩阵位置,我们定义一个指示变量  Xi ,如果该位置上的子矩阵是好子矩阵,其值为 1 ,否则为 0。

总权值:所有矩阵的总权值等于所有  Xi  的和。

尽管这些  Xi 之间存在相关性(因为子矩阵共享元素),但在计算期望时,这种相关性并不影响总期望值的计算,期望的线性性仍然成立。

对于每个位置  i :

总期望值:

其中  E[X]  是任意一个位置上子矩阵为好子矩阵的概率  P 。

标签:位置,期望,好子,记录,笔试,矩阵,算法,权值,每个
From: https://www.cnblogs.com/Aikoin/p/18432496

相关文章

  • 【鸟类识别系统】+计算机毕设项目+卷积神经网络算法+人工智能+深度学习+模型训练+Pyth
    一、介绍鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作......
  • 【动物识别系统】计算机毕设项目案例+Python卷积神经网络算法+模型训练+人工智能+深度
    一、介绍动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现......
  • 求最大公约数的三种算法
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intgcdByBruteForce(inta,intb){for(inti=min(a,b);i>0;--i){if(a%i==0&&b%i==0){returni;......
  • 矿山井下/传送带堆料检测AI算法的检测作用、工作原理及其解决方案
    传送带堆料分为两种情况,一种是传送带的井下堆料检测AI算法,一种是传送带上面的堆料检测AI算法,传送带井下堆料检测AI算法是在带式输送机的漏煤下方井下安装摄像仪,通过视频分析检测井下堆煤情况,当洒煤堆积到一定程度后,智慧矿山版ai盒子自动产生报警,并语音通知值班人员,也可通过前端音箱......
  • vue3-vben-admin开发记录、知识点
    vue3-vben-admin知识点一、vue3写法1、生命周期setup-组件在创建时onMounted-挂载在dom时运行onUpdated-响应数据修改时运行2、reactive定义:接收一个普通对象然后返回该普通对象的响应式代理。等同于2.x的Vue.observable()定义一个全局常量letotherParam=r......
  • IDEA如何查看每一行代码的提交记录(人员,时间)
    前言我们在使用IDEA开发时,一般需要使用git来管理我们的代码,而且大家协同开发。 有时候,我们在开发的时候,经常需要看一下当前的代码时谁开发的,除了看类上面的作者外,更精细的方式是看每一行代码的提交记录。 那么,我们该怎么查看呢?如何查看首先,我们需要保证我们的代码是有git......
  • 代码中的大数定律:蒙特卡洛算法逼近圆周率π
    摘要:当程序员遇上π,蒙特卡洛算法成了他们的魔法棒。本文用一段C语言代码,将随机点的雨滴洒向数字的海洋,用概率的网捕捉π的踪迹。这不仅是一场算法的探险,更是对编程魔法的一次奇妙展示。认识蒙特卡洛算法蒙特卡洛算法是一类基于概率的算法的统称,不是特指某一种算法。它也被称为统计......
  • 10.解析解方法推导线性回归——不容小觑的线性回归算法
    引言线性回归是许多复杂机器学习模型的基础。作为一种基本的机器学习方法,线性回归提供了清晰的思路和工具,通过理解其推导过程,可以更好地掌握机器学习的基本原理和模型设计。通过阅读本篇博客,你可以:1.学会如何用解析解的方法推导线性回归的最优解2.了解如何判定损失函数是凸......
  • 较快速的最大带权独立集算法
    前言重新来吧别输在过去最得意的事上。只是单纯的记录一下这个小知识点。很多时候,题目可以转化为求最大带权最小点覆盖或者是最大独立集。但是他又经常把这个范围给到\(n\le40\)这种看上去可以用指数又不太能用指数的情况。可能这个时候你就需要用到短小精悍的它。基......
  • flutter开发适配鸿蒙HarnomyNext系统过程步骤以及问题记录
    flutter项目适配鸿蒙HarnomyNext系统步骤记录本人是在Window环境下开发第一:环境搭建1.下载鸿蒙next开发工具DevEchoStudio,类似AndroidStudio的工具,页面都类似鸿蒙开发套件官方下载地址:https://developer.huawei.com/consumer/cn/download/下载之前需要先登录,后面的模拟......