第一次算法作业
以下是 C++ 核心编码规范(简短版):
一、命名规则
变量 / 函数:驼峰命名(如studentName、calculateSum)
类 / 结构体:帕斯卡命名(如StudentManager)
常量:全大写 + 下划线(如MAX_COUNT)
二、代码格式
缩进:4 个空格(禁用制表符)
运算符 / 标点:两侧加空格(如a = b + c;),大括号单独换行(如if (cond) {\n // 逻辑\n})
三、内存与资源
优先用智能指针(unique_ptr/shared_ptr),避免裸new/delete
容器资源(如vector)用完无需手动释放,依赖 RAII 自动管理
四、面向对象
类成员默认私有,通过get/set方法访问
多态类析构函数声明为virtual
继承用public,避免多重继承(复杂场景用接口组合替代)
五、注释与风格
类 / 公共函数用/** 文档注释 */(说明功能、参数、返回)
复杂逻辑加行注释(如// 处理边界条件:当size为0时返回空)
函数长度不超过 50 行,类不超过 300 行
读《数学之美》第 6 章 “信息的度量和作用” 与第 10 章 “PageRank 网页排名” 感想
吴军博士以通俗语言拆解复杂数学原理的方式,彻底改变了我对 “数学实用性” 的认知,其中信息熵与 PageRank 的思想尤其令人震撼。
一、信息熵:量化不确定性的 “通用语言”
第 6 章中 “信息即消除不确定性” 的核心观点极具启发性。香农提出的信息熵概念,将抽象的 “信息量” 转化为可计算的数学指标 —— 变量的不确定性越大,熵值越高,所需信息量也越大。例如判断 32 支球队的冠军归属,需 5 比特信息(2⁵=32),而已知强队晋级后,熵值降低,所需信息随之减少。这一原理在生活中无处不在:搜索引擎通过关键词(信息)缩小结果范围,本质是用信息熵降低网页筛选的不确定性;中文冗余度低(约 5 比特 / 字),因此短信、二维码等场景更适合高效传输。此前我认为数学是 “纸上公式”,如今才明白它是解读信息世界的底层逻辑。
二、PageRank:简单模型解决复杂问题的典范
第 10 章对网页排名算法的解读让我惊叹于数学的简洁力量。PageRank 的核心思想源于 “投票理论”:网页的权重由链接它的页面质量决定 —— 高排名页面的链接更有价值,形成递归加权逻辑。这种将网页关系抽象为图论问题的思路,用矩阵运算即可实现海量网页的排序。这打破了我的 “复杂问题需复杂解法” 的固有认知。Google 早期凭借这一简单模型超越众多竞品,印证了吴军博士强调的 “好的数学模型是对现实世界的精准抽象”。反观编程实践,我曾为实现 “任务优先级排序” 设计复杂逻辑,实则可借鉴 PageRank 的 “加权投票” 思想,通过依赖关系量化优先级,大幅简化代码。
三、跨领域的启发:数据与模型的平衡
书中反复强调 “数据是模型的血液”:统计语言模型依赖海量语料训练参数,PageRank 需真实网页链接数据优化权重。这与编码规范中的 “测试驱动” 异曲同工 —— 脱离实际数据的模型(或代码)易陷入逻辑闭环,而贴合场景的数据能暴露隐藏问题(如统计模型的 “零概率平滑” 需求)。同时,书中对 “过度设计” 的警示也适用于编程:正如自然语言处理从 “规则驱动” 转向 “统计驱动” 是因为规则无法覆盖所有场景,编码时追求 “完美设计” 不如优先实现核心逻辑,再通过数据反馈迭代优化。