经典题解析:三个警察和三个囚徒过河,怎样用 BFS 找最短方案
三个警察和三个囚徒过河,凭直觉往返安排,很容易漏掉另一岸的约束。把它改写成状态图后,问题会清楚得多:什么叫一个局面,哪些动作能产生新局面,以及怎样知道找到的是最少渡河次数。
三个警察和三个囚徒过河,凭直觉往返安排,很容易漏掉另一岸的约束。把它改写成状态图后,问题会清楚得多:什么叫一个局面,哪些动作能产生新局面,以及怎样知道找到的是最少渡河次数。
一个问题只有几个字,知识库里的段落却往往包含背景、术语和完整解释。直接把两者编码成向量,表达形式的差异有时会妨碍检索。HyDE 给出的思路是:先根据问题生成一篇假设性文档,再用它的向量去寻找真实资料。
训练进程退出后,把模型权重加载回来,为什么接下来的损失曲线仍可能和原来不同?因为训练不是一个只依赖当前参数的函数。优化器记住了过去的更新,调度器记录了进度,数据加载和随机数也有自己的位置。恢复文件能被读取,与训练真正接着原轨迹继续,是两种不同承诺。
在配置里写上 servername ,是不是就能拦住所有陌生域名?很多误解来自把一个约定俗成的占位名字,当成了带特殊语义的通配符。真正决定请求落到哪里的,是监听地址、端口、名称匹配,以及这些条件下的默认服务器。
“全局变量在堆,局部变量在栈。”这句话同时混淆了几件事:名字能在哪里被访问,对象活多久,以及某个编译器最后怎样安排存储。要回答 C 语境里的这道题,先把三个维度拆开,才不会被一个局部静态变量轻易推翻。
训练时显存不够,除了减小批次,还可能开启梯度检查点。但它不是把模型偷偷压缩了,也不是定期把训练进度存到磁盘。这里的检查点指激活保存策略:前向少保存一些中间张量,反向求导需要它们时,再把相应前向片段重新执行。
读到 RMSNorm 的公式,很容易把实现写成“逐个平方、求平均、开根、再相除”。对普通数字,这条路径没有问题。但把输入换成两个极大的有限数,平方可能先变成无穷,最后得到的归一化结果反而接近零。数学答案并没有变成零,坏掉的是中间计算。
“public 谁都能访问,protected 子类能访问,private 只有自己能访问。”这张口诀表能帮助入门,却很容易在一道跨包继承题上失效。Java 的访问控制不只检查有没有继承关系,还检查访问发生在哪里、对象表达式的类型是什么,以及声明所在的类型本身是否可访问。
判断 12321 是不是回文,转成字符串再反转当然直观。但如果题目限制不能使用字符串,真正的考点就变成了:怎样取出末位、怎样缩短原数,以及怎样避免为了检查一个数,先把整个数反转到溢出。
一句“RMSNorm 是简化版 LayerNorm”,容易让人以为两者只是少写一行代码。真正要问的是:它省掉了什么统计量,因此失去了什么性质,又保留了什么性质?把这三件事说清,比背一个速度结论更有用。