一、引论,《组合数学(第4版)》卢开澄 卢华明
零、前言
发现自己数数题做的很烂,重新学一遍组合数学吧。
参考卢开澄 卢华明 编著的《组合数学(第4版)》,只打算学前四章。
通过几个经典问题来了解组合数学所研究的内容。
一、幻方问题
据说大禹治水之前,河里冒出来一只乌龟,龟背上是一个3*3的矩阵,每个格子里面有若干点,行和列和对角线和都相等且为15。然后大禹就以15为周期来治水了。
对于一个nxn的矩阵,满足行和,列和,主副对角线和都相等,那么这个矩阵就是一个n阶幻方。
最早研究幻方的是南宋的杨辉(杨辉三角那个),他罗列了3x3、4x4、5x5甚至10x10的幻方。
定义:行/列整数和为该幻方的幻和。
n 阶幻方的幻和为 (n^2 + 1) * n / 2
并非任意阶幻方都有解法:
2阶幻方就不存在:
会推出某两个元素相等,但是a b c d 互不相同。
大约30年前,德国数学家L · Bieberbach证明:
对于任意大于等于 3 的数 n,都存在一个 n 阶的幻方阵。
杨辉提出了一种三阶幻方的构造方法:
- 123、456、789 斜着摆三列,得到一个菱形
- 交换菱形对角元素,挤压成一个正方形,就是一个三阶幻方
但是对于更高阶该如何构造呢?
法国一位数学家研究了奇数阶幻方的一般化构造方法:
- 记第 i 行 第 j 列 方格坐标为 (i, j),0 索引
- 初始将 1 放在第 0 行的中间 (0, n / 2)
- 对于 当前要放置的棋子,上一枚棋子的坐标为 (x, y)
- 我们尝试放在 ((x - 1) % n, (y + 1 % n))
- 如果已经被占用,则放在 ((x + 1) % n, y)
- 证明略
事实上,我们可以将幻方分成三类:
- 奇数阶幻方
- 4m 阶幻方
- 4m + 2 阶幻方
每一类都有对应的构造算法。
然而我们发现杨辉构造的三阶幻方和奇数阶构造算法得到的幻方不同,但是把幻方上下翻转就相同了。
这让我们思考,对于n阶幻方有多少种构造方法?
三阶幻方,如果认为翻转旋转一样的话,只有一种。
四阶幻方,如果认为翻转旋转一样的话,有880种,否则有7040.
五阶已经有 2亿七千多万个了。
六阶数学家大概确定了其数量落在某个范围,七阶已经无从得知了……
可见,计数问题是组合数学中的一大难题。
算竞中经常遇到这样一类构造题:行列乘积、gcd、异或等限制来构造矩阵,这其实都是幻方的变形。
二、羊皮纸卷
阿基米德在羊皮纸上的论文流落到寺庙,僧人清洗后重新抄写经文。
2003年,科学家通过X光照射,发现羊皮纸经文下面的阿基米德关于十四巧板的论文。
一位数学家以此为题,设置100美元奖项,谁先解出来给谁。
然后计算机学家借助计算机设计算法解出来是17152种,后来数学家利用排列组合的方式,也得到了正解。阿基米德无意间开创了西方世界的组合数学的篇章。
1666年,莱布尼茨研究概率学时,生造了**组合数学(Combinatorics)**这个单词。
三、手机密码安全吗
平时在学校基本都是翘课,有一次遇到学习通4位密码签到,我一看乐了,整个程序暴力枚举,几乎一瞬间就签上到了。
为什么这么快呢?
4位密码,每位10种可能,也就10000种,计算机基本几毫秒就能枚举完所有可能。
很多人手机都有3 * 3 的手势密码,其实手势密码可以看作是从一个格子出发得到的一条路径,我们怎么计数呢?
正难则反,总情况 - 不合法路径。
不合法的定义:如果选择的两个点连成的线段,穿越了第三个点,如果这第三个点,之前没有被连过,则不合法;反之,则合法
通过计算机程序得到一共有 389112 种方案。
可见,如果手机没有输入次数限制的话,一部手机很快就能被破解。
计数问题是一类很常见的问题,但是并不简单,如何做到不重不漏,是一个难点。
四、世界杯引出的问题
n 支球队参加比赛,一共需要多少场复赛?
比较笨的方法:局面抽象成节点,代表当前剩下的队伍集合,挑出两个队伍比赛,扔掉一个败者,得到新的节点,最后节点的数目就是总比赛场数。
但事实上,每进行一场比赛都会产生一个败者,一个胜者,我们最后只有一个冠军,所以要进行n - 1场比赛。
可见同样是计数问题,不同方法的效率是天差地别的。
五、哥尼斯堡七桥问题
即欧拉路径问题:欧拉图,欧拉通路,欧拉回路,Hierholzer算法详解-CSDN博客
沿着桥走,每个桥恰好走一次有多少种走法?
我们能直接取排列数作为答案吗?
显然不能,太多非法解了。
不过我们可以借助定理 + 计算机枚举来求解。
通过定理,我们保证枚举方案的合法性,可见有技巧的枚举可以更加精巧简洁。
相关文章:

一、引论,《组合数学(第4版)》卢开澄 卢华明
零、前言 发现自己数数题做的很烂,重新学一遍组合数学吧。 参考卢开澄 卢华明 编著的《组合数学(第4版)》,只打算学前四章。 通过几个经典问题来了解组合数学所研究的内容。 一、幻方问题 据说大禹治水之前,河里冒出来一只乌龟,…...

Vue3+TS 实现批量拖拽文件夹上传图片组件封装
1、html 代码: 代码中的表格引入了 vxe-table 插件 <Tag /> 是自己封装的说明组件 表格列表这块我使用了插槽来增加扩展性,可根据自己需求,在组件外部做调整 <template><div class"dragUpload"><el-dialo…...

二叉树的所有路径(力扣257)
因为题目要求路径是从上到下的,所以最好采用前序遍历。这样可以保证按从上到下的顺序将节点的值存入一个路径数组中。另外,此题还有一个难点就是如何求得所有路径。为了解决这个问题,我们需要用到回溯。回溯和递归不分家,每递归一…...

Python OrderedDict 实现 Least Recently used(LRU)缓存
OrderedDict 实现 Least Recently used(LRU)缓存 引言正文 引言 LRU 缓存是一种缓存替换策略,当缓存空间不足时,会移除最久未使用的数据以腾出空间存放新的数据。LRU 缓存的特点: 有限容量:缓存拥有固定的…...

LabVIEW项目中的工控机与普通电脑选择
工控机(Industrial PC)与普通电脑在硬件设计、性能要求、稳定性、环境适应性等方面存在显著差异。了解这些区别对于在LabVIEW项目中选择合适的硬件至关重要。下面将详细分析这两种设备的主要差异,并为LabVIEW项目中的选择提供指导。 硬件设…...

Ansys Speos | Speos Meshing 网格最佳实践
概述 网格划分是在各种计算应用中处理3D几何的基本步骤: 表面和体积:网格允许通过将复杂的表面和体积分解成更简单的几何元素(如三角形、四边形、四面体或六面体)来表示复杂的表面和体积。 模拟和渲染:网格是创建离散…...

elasticsearch segment数量对读写性能的影响
index.merge.policy.segments_per_tier 是一个配置选项,用于控制 Elasticsearch 中段(segment)合并策略的行为。它定义了在每一层的段合并过程中,允许存在的最大段数量。调整这个参数可以优化索引性能和资源使用。 假设你有一个索…...

全同态加密理论、生态现状与未来展望(中2)
《全同态加密理论、生态现状与未来展望》系列由lynndell2010gmail.com和mutourend2010gmail.com整理原创发布,分为上中下三个系列: 全同态加密理论、生态现状与未来展望(上):专注于介绍全同态加密理论知识。全同态加密…...

鸿蒙UI(ArkUI-方舟UI框架)-开发布局
返回主章节 → 鸿蒙UI(ArkUI-方舟UI框架) 开发布局 1、布局概述 1)布局结构 2)布局元素组成 3)如何选择布局 声明式UI提供了以下10种常见布局,开发者可根据实际应用场景选择合适的布局进行页面开发。 …...

RPC是什么?和HTTP区别?
RPC 是什么?HTTP 是什么? 作为一个程序员,假设我们需要从A电脑的进程发送一段数据到B电脑的进程,我们一般会在代码中使用 Socket 进行编程。 此时,可选性一般就是 TCP 和 UDP 二选一,由于 TCP 可靠、UDP 不…...

Linux C\C++编程-建立文件和内存映射
【图书推荐】《Linux C与C一线开发实践(第2版)》_linux c与c一线开发实践pdf-CSDN博客 《Linux C与C一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 Linu…...

行政纠错——pycorrector学习
pycorrector是一个开源中文文本纠错工具,它支持对中文文本进行音似、形似和语法错误的纠正。此工具是使用Python3进行开发的,并整合了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer等多种模型来实现文本纠错功能。pycorrector官方仓库…...

Go的defer原理
Go 的 defer 原理 defer 是 Go 语言中的一个关键字,用于延迟执行一个函数调用。它通常用于处理资源释放、连接关闭等操作,确保这些操作在函数返回之前执行。 1. 什么是 defer? defer 关键字用于延迟执行一个函数调用,直到包含它…...

Windows 下本地 Docker RAGFlow 部署指南
Windows 下本地 Docker RAGFlow 部署指南 环境要求部署步骤1. 克隆代码仓库2. 配置 Docker 镜像加速(可选)3. 修改端口配置(可选)4. 启动服务5. 验证服务状态6. 访问服务7. 登录系统8. 配置模型8.1 使用 Ollama 本地模型8.2 使用在线 API 服务9. 开始使用10. 常见问题处理端…...

专题三_穷举vs暴搜vs深搜vs回溯vs剪枝_全排列
dfs解决 全排列&子集 1.全排列 link:46. 全排列 - 力扣(LeetCode) 全局变量回溯 code class Solution { public:vector<vector<int>> ans;vector<int> cur;vector<bool> used;vector<vector<int>> permute…...

【IEEE Fellow 主讲报告| EI检索稳定】第五届机器学习与智能系统工程国际学术会议(MLISE 2025)
重要信息 会议时间地点:2025年6月13-15日 中国深圳 会议官网:http://mlise.org EI Compendex/Scopus稳定检索 会议简介 第五届机器学习与智能系统工程国际学术会议将于6月13-15日在中国深圳隆重召开。本次会议旨在搭建一个顶尖的学术交流平台…...

华为E9000刀箱服务器监控指标解读
美信监控易内置了数千种常见设备监测器,能够监测超过20万项指标。这些指标涵盖了从硬件设备到软件系统,从网络性能到安全状态等各个方面。如下基于美信监控易——IT基础监控模块,对华为E9000刀箱服务器部分监控指标进行解读。 一、华为E9000…...

【LC】2544. 交替数字和
题目描述: 给你一个正整数 n 。n 中的每一位数字都会按下述规则分配一个符号: 最高有效位 上的数字分配到 正 号。剩余每位上数字的符号都与其相邻数字相反。 返回所有数字及其对应符号的和。 示例 1: 输入:n 521 输出&…...

QT QTreeWidget控件 全面详解
本系列文章全面的介绍了QT中的57种控件的使用方法以及示例,包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizontalSpacer)、…...

欧几里得算法求最小公倍数和最大公约数
一.最大公约数 gcd(a,b)gcd(b,a%b) 递归式,当且仅当b0,易得0和a的公约数为a.(可作为递归的出口) 证明: int gcd(int a, int b) {if (b 0) return a;else return gcd(b, a % b); } 二.最小公倍数 给定整数a b,求a b的最小公倍数 有图可知…...

Selenium配合Cookies实现网页免登录
文章目录 前言1 方案一:使用Chrome用户数据目录2 方案二:手动获取并保存Cookies,后续使用保存的Cookies3 注意事项 前言 在进行使用Selenium进行爬虫、网页自动化操作时,登录往往是一个必须解决的问题,但是Selenium每次…...

DeepSeek R1模型解读与使用
字节在春节前发布了doubao-1.5,它的官方介绍竟然是这样的: 这次发布了四个型号,doubao-1.5-pro-32k, doubao-1.5-pro-256k, doubao-1.5-lite-32k, doubao-1.5-vision-pro-32k,价格全部与上一个版本doubao模型一致,加量…...

Windows电脑不小心点击了关机,关机过程中如何阻止
如果电脑正在关机的过程中,想要阻止关机,可以尝试以下方法: 如果关机过程较慢,可以按下键盘组合键 Win R 打开运行窗口。输入 shutdown -a 后按回车键,这将中断关机操作(适用于 Windows 系统)…...

CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)
CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据) 目录 CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)预测效果基本介绍CNN-GRU卷积门控循环单元时间序列预测一、引言1.1、研究背景与意义1.2、研究现状1…...

【吉林乡镇界】面图层shp格式arcgis数据乡镇名称和编码wgs84无偏移内容测评
标题中的“吉林省乡镇界面图层shp格式arcgis数据乡镇名称和编码wgs84无偏移”揭示了这是一个地理信息系统(GIS)相关的数据集,主要用于描绘吉林省的乡镇边界。这个数据集包含了一系列的文件,它们是ArcGIS软件能够识别和处理的Shape…...

fpga学习入门 串口rs232回环
奇偶检验位这里是省略了 做好回环后可以使用上位机做回环测试,top文件写的方式就是将rx(fpga端)接受到的模块(pc端)tx发送出去,这两个端口用杜邦线连接,同理模块的rx连接fpga的tx,…...

智启未来,AI筑梦科技新星”------华清远见成都中心2025冬令营圆满结束
2025年1月11日-16日,华清远见成都中心为期6天的“智启未来,AI筑梦科技新星”2025冬令营活动圆满结束。此次活动吸引了众多对人工智能和无人驾驶技术充满热情的学生参与,共同开启了一段点燃科技梦想的精彩旅程。 报道接待 以AI无人驾驶小车为核…...

接上篇基于Alertmanager 配置钉钉告警
Alertmanager 是一个用于处理和管理 Prometheus 警报的开源工具。它负责接收来自 Prometheus 服务器的警报,进行去重、分组、静默、抑制等操作,并通过电子邮件、PagerDuty、Slack 等多种渠道发送通知。 主要功能 去重:合并相同或相似的警报&a…...

DDD - 如何设计支持快速交付的DDD技术中台
文章目录 Pre概述打造快速交付团队烟囱式的开发团队(BAD)大前端技术中台(GOOD) 技术中台的特征简单易用的技术中台建设总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服务、实体与值对象的两种设计思路…...

JAVA与数据结构-线性表
目录 一.线性表的概念 二.线性表的关系及分类 三.数组与顺序表 四.链表 1.静态链表(链表的的数组底层实现) 2.循环链表 3.双向链表 五.栈 1.栈的概念 2.栈的底层实现 3.共享空间栈 4.逆波兰表达式(后缀表达式) 5.栈与递归 六.…...