Python 的对象、容器与函数

名字绑定对象 Python 变量名绑定到对象。赋值不自动复制对象,两个名字可能引用同一个列表;函数参数也遵循同样的绑定方式。对象是否可变,比“参数是不是按值传递”更有解释力。 ...

2026年10月24日 · 2 分钟 · Cinna

Python 数据结构与算法学习路线

这条路线面向已经能写基本Python程序、希望建立系统算法知识的人。若列表、字典、函数与异常仍不熟,先完成路线中的Python基础;离散数学按证明、集合、图和计数的实际需求随学随查,不要求先背完整本数学书。 ...

2026年10月24日 · 2 分钟 · Cinna

SLAM、占据地图与因子图优化

定位通常在已有地图中估计机器人状态;SLAM同时估计轨迹与地图。测量的位置依赖机器人当时在哪,机器人在哪又要靠地图中的观测约束,两者因此耦合。里程计长期积累的误差,需要新的独立约束才能纠正。 ...

2026年10月24日 · 3 分钟 · Cinna

并查集与最小生成树

连通关系回答两点是否已通过若干条边连接。并查集把每个连通分量表示为一棵父指针树:find 找代表元,union 把两棵树合并。它保存的是连通划分,不能直接恢复图上的实际路径,也不负责保存每一条原始边。 ...

2026年10月24日 · 3 分钟 · Cinna

带权最短路:松弛与算法前提

带权最短路寻找边权总和最小的路径。松弛是一条基本操作:若已有到 u 的代价,再走 u→v 比当前记录更便宜,就降低 v 的距离。算法之间的差异主要在于按什么顺序做松弛,以及何时能确认结果不再改变。 ...

2026年10月24日 · 3 分钟 · Cinna

递归、分治与回溯剪枝

递归函数需要一个清楚的契约:当前调用解决哪个子问题,规模怎样缩小,最小问题返回什么。分治把大问题拆成相对独立的子问题,再合并答案;回溯则在候选决策树上探索,失败后恢复状态,继续下一条分支。 ...

2026年10月24日 · 3 分钟 · Cinna

动力学与反馈控制:PID、LQR和MPC

运动学回答机器人怎么动,动力学回答产生这种运动需要多少力。机械臂常用的模型写作 M(q) q_ddot + C(q,q_dot) q_dot + g(q) = tau + tau_ext。质量矩阵、速度相关项、重力、摩擦和外力共同决定响应;把关节目标角直接当作力矩发送,会跨过必要的控制接口。 ...

2026年10月24日 · 3 分钟 · Cinna

动态规划:状态、转移与恢复方案

动态规划把重复出现的子问题保存下来,按照依赖关系求值。关键在于状态必须同时做到两件事:保留决定后续答案所需的信息,把不影响未来的历史舍去。先想清状态含义,再写转移,能避免“数组长度对了但问题解错”的情况。 ...

2026年10月24日 · 3 分钟 · Cinna

二分查找:边界与单调判定

二分查找寻找一个有序边界。把目标从“找到某个相等元素”改成“找到第一个不小于目标的位置”,空数组、重复值和找不到目标就能共享同一套定义。 一个区间约定贯穿全过程 维护未确定区间 [lo, hi):lo 左侧全部小于目标,hi 及其右侧全部不小于目标。初始 lo=0, hi=len(values),两侧都是空区间,性质成立。检查中点,若值太小,中点和左侧都可排除;否则中点仍可能是答案,因此只把 hi 移到中点。 ...

2026年10月24日 · 3 分钟 · Cinna

范围查询与窗口:前缀和、单调队列、树状数组

遇到“连续一段”的问题,先区分范围是否固定、元素能否修改、查询是否在线。静态区间求和与频繁修改后的区间求和,虽然输出相似,需要的结构可能完全不同。 ...

2026年10月24日 · 3 分钟 · Cinna