找回密码
 加入我们
搜索
      
查看: 7994|回复: 52

[软件] DeepSeek R1满血版还有进步空间

[复制链接]
发表于 2025-2-18 17:01 | 显示全部楼层 |阅读模式
本帖最后由 pekingmine 于 2025-2-18 17:05 编辑

先说结论
R1满血版还不够聪明,稍微拐个弯的问题就整不会了。
大致是因为,R1版的推理过程,只采用一种方法,还不大会变通。

原始问题:
有10堆外观相同的金币,每堆10个。其中某一堆中的所有金币都是假币,而其他堆中的所有金币都是真币,每枚真币重10克,每枚假币重11克。你有一台电子秤可以称重,那么要识别出有假币的那一堆,最少需要几次称重?
R1答案:最少需要1次称重

稍微增加难度,让这个电子秤一次称不完:
有100堆外观相同的金币,每堆100个。其中某一堆中的所有金币都是假币,而其他堆中的所有金币都是真币,每枚真币重10克,每枚假币重11克。你有一台最大称重50Kg的电子秤可以称重,那么要识别出有假币的那一堆,最少需要几次称重?
R1答案:最少需要2次称重。

把方法告诉R1,让R1自己验证哪错了:
假如第一次称重只称99堆,如果假币在其中,是否可以得出在哪一堆?如果假币没在其中,是否也可以得出剩下没有称的那一堆就是假币。请复核这个方法是否正确?如正确,这样只需要1次称重,那么你刚给的答案就是错误的。
R1答案
截屏2025-02-18 16.46.00.png

在这里分享,是希望咱们国货精英DeepSeek工程师能看到反馈,将来的R2版,能变更强,……


评分

参与人数 1邪恶指数 +10 收起 理由
hawie + 10 有意思!

查看全部评分

 楼主| 发表于 2025-2-20 19:05 | 显示全部楼层
Technik 发表于 2025-2-19 19:38
现在就算答对也不能说明它有正确解答这类问题的能力。我感觉更多的是根据上下文把它的答案写出来,而不是 ...

昨天试阿里的可以答对了,隔了一天,怎么也答不对了。你说的对,能解释这个现象。
 楼主| 发表于 2025-2-20 19:03 | 显示全部楼层
Technik 发表于 2025-2-19 19:46
在perplexity上简单比较了几个模型,gemini 2.0 flash逻辑感人

1/2金币真是魔幻^_^
发表于 2025-2-19 19:46 | 显示全部楼层
在perplexity上简单比较了几个模型,gemini 2.0 flash逻辑感人

微信截图_20250219194504.png
发表于 2025-2-19 19:38 | 显示全部楼层
pekingmine 发表于 2025-2-19 12:58
你单位部署的可以答对,说明存在可用的解答能力。
然而,验证了提供API访问的上面各平台,全部翻车。小艺 ...

现在就算答对也不能说明它有正确解答这类问题的能力。我感觉更多的是根据上下文把它的答案写出来,而不是通过一个系统性的思路来解题解出来的。

之前其实就讨论过,大模型解这类问题是不是靠把答案背下来。
 楼主| 发表于 2025-2-19 14:08 | 显示全部楼层
本帖最后由 pekingmine 于 2025-2-19 14:26 编辑
pekingmine 发表于 2025-2-19 12:18
补充,
腾讯云,R1满血,答案也是两次。回答其最新数据是2023年10月16日。
阿里云,R1满血,答案也是两次 ...


再补充一个意外,
阿里云,R1满血,调整上下文输出为32000之后,可以正确解答,但不是100%,试三次,第一次对、第二次错、第三次对。这算是到目前为止,惟一或可答对的API R1满血平台。综上,乐观估计,R1的更新迭代版本应该没有这个问题了。
对的两次:
截屏2025-02-19 13.45.32.png

截屏2025-02-19 13.59.29.png
 楼主| 发表于 2025-2-19 14:06 | 显示全部楼层
fairness 发表于 2025-2-19 13:22
我还想了想,这个问题只有这一种取法吗?  
我只要每堆取得数量不一样,记录好第i堆取的数量为j,也是可 ...

每堆都取不同数量,就超重了。而刚好减1堆不取,就在重量范围内。
所以,实际只有少取1堆的这一种取法。
操作上,要么以0为基数,第一堆不取,0~99;要么以1为基数,最末堆不取,1~99。总之是减1堆不取就行。
发表于 2025-2-19 13:22 | 显示全部楼层
redog 发表于 2025-2-19 12:33
我在本地上的1.5B或是7B上也问过,1.5B一开始的思路就有问题,它直接忽略了50kg的限制,指出了错误也不行 ...

我还想了想,这个问题只有这一种取法吗?  
我只要每堆取得数量不一样,记录好第i堆取的数量为j,也是可行得;
为什么想不到呢?
发表于 2025-2-19 13:18 | 显示全部楼层
pekingmine 发表于 2025-2-19 09:15
麻将高手啊^_^

不知道有哪个版本的模型能答对?

答案对,过程错;让我想到了是不是搜到了,闻到过类似的题目;
上面称金币的问题,如果换成其他不同的东西,换一种说法,但重量不变; 模型可以答对吗?
 楼主| 发表于 2025-2-19 13:03 | 显示全部楼层
dirnet 发表于 2025-2-19 12:47
本地部署的 DeepSeek-R1-Distill-Qwen-14B

结论对,过程错,“每堆取k个金币,其中k从1到100,因此最多要取100个金币,总重量为550 + 100 = 650克,远低于50,000克的限制。所以这个方法是
可行的。” 计算错误,导致以为没有超重。
 楼主| 发表于 2025-2-19 12:58 | 显示全部楼层
Technik 发表于 2025-2-19 12:34
短时间内我们还没法用API(就算有)来解这类题目,因为生成时间很长,而且结果不一定对。现在也就文本分 ...

你单位部署的可以答对,说明存在可用的解答能力。
然而,验证了提供API访问的上面各平台,全部翻车。小艺的,没有某为手机,通过网页版验证https://xiaoyi.huawei.com,也是答的两次。
等同于告知大家一个结论,坐享其成直接用云平台提供的R1满血版,都不行。都不如你单位部署的,以及DeepSeek官网网页版的。
简单说,别人的那些大的云平台,不如你单位自己部署得好。不知道你单位用了什么特殊的资源或者配置,总之目前强过了上面全部提供API的云平台^_^
发表于 2025-2-19 12:47 | 显示全部楼层
本地部署的 DeepSeek-R1-Distill-Qwen-14B
>>> 有100堆外观相同的金币,每堆100个。其中某一堆中的所有金币都是假币,而其他堆中的所有金币都是真币,每枚真币重10克,每枚
... 假币重11克。你有一台最大称重50Kg的电子秤可以称重,那么要识别出有假币的那一堆,最少需要几次称重?
<think>
好的,我现在面对的问题有点复杂,但是我觉得通过一步步分析应该能解决。首先,我来理解问题。

题目是说有100堆金币,每堆都有100个金币。其中只有一堆的金币是假币,其他的都是真币。真币每个重10克,假币每个重11克。有
一个电子秤,最大可以称重50公斤(也就是50,000克)。现在需要用这个秤最少几次称量,才能找出哪一堆有假币。

首先,我需要明确几个关键点:
- 金币堆数:100堆
- 每堆的金币数量:100个
- 真币重量:每个10克
- 假币重量:每个11克
- 称重限制:最多50,000克

我的目标是用最少次数的称量,确定哪一堆有假币。那么,我需要找到一种方法,利用每次称量的信息,最大限度地缩小可能范围。


### 第一步:思考单次称量能提供的信息
假设我每次从不同堆中取出一定数量的金币来称重,这样总重量会因为假币的存在而有所不同。通过这些差异,我可以推断出哪一堆
是假币。

例如,如果我从第k堆取1个金币,其他堆取0个,那么称重结果为:
- 如果k堆是真币:重量 = 1 × 10 = 10克
- 如果k堆是假币:重量 = 1 × 11 = 11克

这样,通过一次称量只能确定一个特定的堆是否是假币。显然,这对于100堆来说是不够的,因为要逐个检查。

### 第二步:考虑多次称量的可能性
如果我进行两次称量,每次从不同的堆中取不同数量的金币,那么可以覆盖更多的信息。

例如:
- 第一次称量:从第1到第50堆各取1个金币,总重量应该是50 × 10 = 500克。但如果有假币存在,实际重量会比500克多出一些。

- 第二次称量:从第51到第100堆各取1个金币,总重量应该是50 × 10 = 500克,同样可能会有增加。

通过比较两次称量的实际重量与预期的差异,可以确定假币在哪一组(前50堆或后50堆)。

### 第三步:优化称量策略
显然,上述方法需要至少两次称量。但是,是否可以用更少次数完成呢?考虑到每次称量可以覆盖更多的信息,也许可以通过一次称
量同时包含所有100堆的信息来确定假币的位置。

例如,采用编号的方式:
- 从第k堆取k个金币,这样总重量会因为假币的存在而增加k克。
- 称重结果W = 55 × 10 + k = 550 + k克
- 因此,Δ = W - 550 = k

这个方法只需要一次称量就能确定假币的位置。不过,我需要确认这种方法是否在重量限制内。

每堆取k个金币,其中k从1到100,因此最多要取100个金币,总重量为550 + 100 = 650克,远低于50,000克的限制。所以这个方法是
可行的。

### 第四步:验证思路
让我再详细验证一下:

- 假设第k堆是假币,那么从第k堆取了k个金币,每个重11克。
- 其他堆取了(总数为55个),每个重10克。
- 总重量 = 55 × 10 + k = 550 + k克
- 称得的重量W = 550 + k
- Δ = W - 550 = k

因此,通过一次称量就能直接得到k的值,也就是假币所在的堆数。

### 第五步:考虑特殊情况
如果真的取了100个金币来称重,总重量为650克,这在电子秤的最大称重范围内(50,000克),没有问题。因此,这个方法是有效的
,并且只需要一次称量。

### 总结
通过从每一堆取出不同数量的金币进行一次称量,可以利用重量差异直接确定假币所在的堆数。因此,最少需要1次称重即可完成任
务。

**答案:**
最少需要一次称重来识别出有假币的那一堆。
</think>

要识别出有假币的那一堆,最少需要1次称重。

**步骤解析:**

1. **编号和取样:**
   - 将每一堆从第1到第100依次编号为1到100。
   - 从第k堆取出k个金币,即从第1堆取1个,第2堆取2个,依此类推直到第100堆取100个。

2. **称重:**
   - 将所有取出的金币一起放在电子秤上称重,记录总重量为W克。

3. **计算预期重量和差异:**
   - 正常情况下,如果所有金币都是真币,总重量应为55 × 10 = 550克。
   - 实际称得的重量W会比550克多出Δ克,其中Δ即为假币所在堆数k。

4. **确定假币堆:**
   - 计算Δ = W - 550。由于每枚假币重11克,因此Δ就是k的值。
   - 结果即为第k堆是假币所在的位置。

**答案:** 最少需要一次称重即可找出假币所在的那一堆。

total duration:       45.958723s
load duration:        11.4755ms
prompt eval count:    1066 token(s)
prompt eval duration: 248ms
prompt eval rate:     4298.39 tokens/s
eval count:           1292 token(s)
eval duration:        45.391s
eval rate:            28.46 tokens/s
发表于 2025-2-19 12:36 | 显示全部楼层
redog 发表于 2025-2-19 12:33
我在本地上的1.5B或是7B上也问过,1.5B一开始的思路就有问题,它直接忽略了50kg的限制,指出了错误也不行 ...

因为1.5B这种很小的模型对上文的记忆力很差,就算把上下文拉到足够长度也没用。或者说它的关注点完全在怎么取上面,等分析完怎么取,你说的50kg它早忘了。
发表于 2025-2-19 12:34 | 显示全部楼层
pekingmine 发表于 2025-2-19 11:27
问题是,不自己部署,用第三方平台API的话,几乎没有答对的(除了楼上提到的盘古)。而用API是成本最低的 ...

短时间内我们还没法用API(就算有)来解这类题目,因为生成时间很长,而且结果不一定对。现在也就文本分析和写作是可以用用的。
发表于 2025-2-19 12:33 | 显示全部楼层
gyc 发表于 2025-2-19 09:54
用7B 的 Qwen2.5 和 deepseekR1 7B 蒸馏模型,也差不多。

我觉得这问题没有逻辑性,更像是脑筋急转弯。 ...

我在本地上的1.5B或是7B上也问过,1.5B一开始的思路就有问题,它直接忽略了50kg的限制,指出了错误也不行,反正就是要按1-100来取,不管最后是有多重。更气人的是我把正确的方法告诉它,它还是会无视50kg,回到n堆取n枚这个逻辑,并告诉你这个没问题。


7B能正确判断出取到100枚会超重,但会弱智的认为第100堆也需要称重,但后续思考的方法也是忘记了50kg的限制,不过好的地方在于我指出这个错误后,他会正确验算出这个答案是错误。
然后又开始重新回到n堆取n枚,第100堆怎么办的逻辑,要注意的是测试的满血R1在计算是否超重时能很快得出第99堆时最大重量达可能会达到49599克,但7B在思考中一直认为是49500克,并在我给出正确是1次,并且提示它最多只用取4950枚硬币时,他会无视只用取4950枚这个提示,循环判断我可以取到99堆,第100堆怎么办,我在第100堆能不能少取,比如取50枚,然后再计算是不是超了50kg,如果全是真币没超,第100堆是假币时超没超,如果超了是不是要称多次,但是只能称一次,然后又循环来一次,这次第100堆取45枚,每次都会告诉自己可以改变每堆的取值,但每次都不变就要从1开始,他也知道会出现前99堆时都是真币,但就要去称100堆。思考进入循环后,他也能在思考中得出我只要取到第99堆就行了,这样不会超重,也能得到答案,但下步进入要生成答案的思考时又回到了100堆会取100枚所以超重了。
还有一个搞笑的地方是,他也会思考出需要改变所取金币的数量,但每次还是n堆取n枚。

这题就是普通的数学题加上了点逻辑判断,比如在知道n堆取n枚这种解法后得明白,第100堆不需要称重判断这个逻辑;或是直接举一反三,得到n堆取n-1枚也行。
发表于 2025-2-19 12:20 | 显示全部楼层
pekingmine 发表于 2025-2-19 11:20
没用。刚设置为0重试,也是给出两次的答案。

temp为0不是说结果一定最正确,只是保证按照最大概率选择下文输出。不过是否每次能完全一样没在deepseek上测试过。

temp不为0,那么同一个部署下可能每次出来不一样的结果。
 楼主| 发表于 2025-2-19 12:18 | 显示全部楼层
本帖最后由 pekingmine 于 2025-2-19 12:46 编辑
pekingmine 发表于 2025-2-18 21:29
1楼使用部署在Microsoft Azure平台中的DeepSeek-R1满血版测试的,配置了少有的128KB上下文。

看到楼上不同 ...


补充,
腾讯云,R1满血,答案也是两次。回答其最新数据是2023年10月16日。
阿里云,R1满血,答案也是两次。回答其最新数据是2023年10月。

至此,云端开放满血DeepSeek-R1 API的已知这些平台,验证全部阵完。
发表于 2025-2-19 12:01 | 显示全部楼层
本帖最后由 canonguy 于 2025-2-19 12:08 编辑

下载了本地部署的 8b模型,问了这个问题:马斯克的doge效率部发挥了什么作用?完全答非所问。。。

感觉是问题太宽泛了。。。问的不好。。。
 楼主| 发表于 2025-2-19 12:00 | 显示全部楼层
gyc 发表于 2025-2-19 09:54
用7B 的 Qwen2.5 和 deepseekR1 7B 蒸馏模型,也差不多。

我觉得这问题没有逻辑性,更像是脑筋急转弯。 ...

对大数据而言,每种可能性都只是数据分析与处理。对人类而言,才有脑筋急转弯的说法吧。
 楼主| 发表于 2025-2-19 11:27 | 显示全部楼层
Technik 发表于 2025-2-19 09:28
不同平台可能用的量化版本不一样,这才是平台之间最大的差异。

问题是,不自己部署,用第三方平台API的话,几乎没有答对的(除了楼上提到的盘古)。而用API是成本最低的,但受制于平台部署的版本。
包括官方的,只有在Web界面,答案才是对的;用APP版本,同样给出错误答案。也就即使官方重新开放API,估计也是接入的给错误答案的平台版本。
 楼主| 发表于 2025-2-19 11:20 | 显示全部楼层
Technik 发表于 2025-2-19 09:26
说错了,是temperature。你把temperature设为0了吗?

没用。刚设置为0重试,也是给出两次的答案。
发表于 2025-2-19 09:54 | 显示全部楼层
用7B 的 Qwen2.5 和 deepseekR1 7B 蒸馏模型,也差不多。

我觉得这问题没有逻辑性,更像是脑筋急转弯。
发表于 2025-2-19 09:28 | 显示全部楼层
pekingmine 发表于 2025-2-19 07:47
用Microsoft Azure再试,提示词换成你这个,也没有回答准确。初步看来不是提示词引起,可能是算法程序有 ...

不同平台可能用的量化版本不一样,这才是平台之间最大的差异。
发表于 2025-2-19 09:26 | 显示全部楼层
pekingmine 发表于 2025-2-19 07:39
是。不过,这个测试除了追问问题时,其他每次都清除了上下文,而且保持同样的参数。
...

说错了,是temperature。你把temperature设为0了吗?
发表于 2025-2-19 09:18 | 显示全部楼层
pekingmine 发表于 2025-2-19 07:34
原始问题难度不大。你试试增加难度之后的那个问题。

Alright, we need to figure out the minimum number of weighings to identify the pile with fake coins. Each pile has 100 coins, and one pile has all fake coins. The scale can weigh a maximum of 50kg (50,000 grams).
Hmm, let’s explore: I could choose a set amount from each pile, say 1 coin from the first pile, 2 from the second, and so on, adding up a total weight and then calculating which pile is different.
Let’s think—this might only take one weighing!

I’m considering the single weighing strategy: take different amounts of coins from each pile. The extra weight from the fake pile would be the number of coins times 1 gram, but the total weight needs to be under 50kg.
If I take coins from piles in increasing amounts (1 from pile 1, 2 from pile 2, etc.), the combined weight would exceed 50,000 grams (too much!). I need to reduce the number of coins selected in a way that still allows for a clear pattern to identify the fake pile. Let’s figure out how many coins I can actually take while keeping everything under the limit.

Alright, I’m trying to figure out how to balance the total weight with the need for unique coins from each pile so we can use one weighing to identify the fake pile. We learned that the sum of coins from 1 to 100 exceeds the weight limit of the scale, so using simply “a_i = i” doesn’t work. Powers of two seem too large.
Instead, I might need to use multiple weighings with different combinations of coins, creating a multi-digit code to encode which pile is fake. Each weighing must still be under the 50kg limit.

After rethinking it, I realize that one weighing might actually work for the 100 piles. By assigning coefficients 0 to 99 to the piles, I can take coins according to those numbers, with the total number of coins being 4950. If all piles were genuine, the weight would be 49,500 grams. If the fake pile has a coefficient of “a”, then I would see an extra “a” grams. So, tracking the extra weight confirms the fake pile. The total weight stays within the 50kg limit, so one weighing seems solid.

我们可以设计一种取法,使得只用一次称重就能确定哪一堆是假币,同时保证取出的金币总重不超过50公斤。

一种常见的方法是给每一堆赋予一个不同的系数,然后一次性称重。具体步骤如下:
        1.        给100堆金币依次标号1到100,并预先为每一堆指定一个不同的取币数量。注意:由于每堆只有100个金币,我们不能取超过100个金币。如果我们直接取1, 2, 3, …, 100个金币,取出的总数为

1+2+\cdots+100=\frac{100\cdot101}{2}=5050 \text{个}

总重量为 5050\times10=50500 克,超过了50,000克的上限。
        2.        解决方案是让其中一堆取0个金币,其他堆依次取1, 2, …, 99个金币。这样,100堆金币的取法就是:

a_1=0,\, a_2=1,\, a_3=2,\,…,\, a_{100}=99.

        3.        这样取出的金币总数为

0+1+2+\cdots+99=\frac{99\cdot100}{2}=4950 \text{个}.

若所有金币均为真币,总重量为 4950\times10=49500 克,低于50公斤的上限。
        4.        由于只有一堆是假币(每个假币比真币重1克),如果假币堆的取币数为 a_i,实际称得的总重量就会比预期多 a_i 克。称重结果为

49500 + a_i \text{ 克}.

根据多出的克数 a_i(可能为0到99之间的某个数),我们就可以确定假币堆的编号:例如如果多出7克,则假币堆就是那个我们预先安排取7个金币的堆;如果没有多出额外克数(即结果正好49500克),则假币堆就是取0个金币的那一堆。

因此,只需要一次称重就能确定哪一堆是假币。
 楼主| 发表于 2025-2-19 09:15 | 显示全部楼层
celen_leon 发表于 2025-2-18 21:46
我拿个麻将的题问它,思考+回答花了将近10分钟,然而答案是错的,追加提示它还认死理,不带改的。
题目如下 ...


麻将高手啊^_^

不知道有哪个版本的模型能答对?
我在打麻将,现在手里有如下牌:1张幺鸡,1张2条,2张3条,3张4条,1张5条,1张6条,2张7条,1张8条,1张9条。请问我听哪几张牌。
试了DeekSeek-R1、Gemini 2.0、Chat**,全部阵亡。没有一个正确答案。

其中R1在给予答案后,勉强给出自相矛盾的结论(答案对,过程错):
截屏2025-02-19 09.11.39.png


发表于 2025-2-19 09:14 | 显示全部楼层
本帖最后由 redog 于 2025-2-19 09:47 编辑

我试了试火山引擎里的R1,它到是回答了1次,但推理过程是错的,XD
-------------------------------------------------------------------------------------
好的,我现在需要解决这个问题:有 100 堆外观相同的金币,每堆 100 个。其中某一堆中的所有金币都是假币,而其他堆都是真币。真币每枚重 10 克,假币每枚 11 克。使用最大称重 50 公斤的电子秤,最少需要几次称重才能找出假币堆?
首先,我需要明确问题的关键点。总共有 100 堆,每堆 100 枚,假币堆的每个金币比真币重 1 克。电子秤的最大称重是 50 公斤,也就是 50,000 克。每次称重可以获取总重量的信息,目标是用最少的次数确定哪一堆是假币。
接下来,我需要考虑如何利用称重来区分假币堆。因为假币堆的每个金币比真币重 1 克,所以如果从第 k 堆中取出 n_k 枚金币来称重,那么总重量会比全部是真币的情况多出 n_k 克(因为假币堆每枚多 1 克)。因此,总重量的超出部分就等于假币堆所取出的金币数量,从而确定是哪一堆。
这个方法类似于信息论中的编码,每一堆对应一个唯一的标识数,通过称重后的重量差来确定这个数。比如,使用三进制或二进制编码来分配每堆取出的金币数量,从而在一次称重中通过计算差值来确定假币堆的位置。
不过需要考虑的是,每次称重的总重量不能超过 50,000 克。假设我们从每一堆中取出不同数量的金币,总重量是否在限制范围内。
例如,如果采用二进制编码,每一堆被分配一个唯一的编号,从 1 到 100。然后,对于每个堆,根据其编号的二进制位,决定在每次称重中是否取出该堆的金币。不过可能需要多次称重,比如 7 次(因为 2^7=128>100),但题目要求最少次数,可能需要更优的方法。
另一种方法是使用一次称重,通过给每堆分配不同的取币数量,使得总重量的差异部分直接对应堆的编号。例如,从第 i 堆取出 i 枚金币,总共有 1+2+3+...+100=5050 枚金币。如果都是真币,总重量应为 5050*10=50,500 克,但电子秤的最大称重是 50,000 克,这显然超过了限制,所以这种方法不可行。
因此,需要调整取币的数量,使得总重量不超过 50,000 克。例如,如果从第 i 堆取出 i 枚金币,总重量可能超过限制,所以需要减少每堆取出的数量。或者采用其他编码方式,比如用不同的基数来分配数量,从而减少总金币数。
或者,可以将每堆编号转换为三进制,进行分组称量,类似于信息论中的方法,每次称重有三种可能,从而通过最少次数确定堆号。例如,对于 100 堆,3^4=81 <100,3^5=243>100,因此可能需要 5 次称重。但题目中的情况是已知假币比真币重,所以每次称重实际上只有两种结果(平衡或不平衡),这可能影响次数。
不过根据参考内容中的摘要 1 提到,信息论角度下,每次称重可以提供 log3 的信息量,而总需要的信息量是 log2 (100)(因为确定哪一堆,并且假币更重已知)。因此,最少次数为 log2 (100)/log3≈4.19,即至少 5 次。但摘要 1 中的例子是当 n=12 时使用 3 次,因为 3 次称重可以覆盖 3^3=27 种可能性,而 12 需要确定硬币和轻重,所以可能需要调整。
但在这个问题中,假币的重量已知比真币重,因此不需要判断轻重,只需要确定哪一堆。因此,所需的信息量是 log2 (100)≈6.64,因此至少需要 7 次如果每次称重提供 1 比特信息。但参考摘要 1 中提到使用三进制的方法,每次称重提供 log3 的信息,所以次数是 log (100)/log3≈4.19,向上取整为 5 次。
但是需要考虑实际称重的方式。例如,每次称重可以将金币分成三组,比较两组的重量,从而确定假币所在的组。例如,将 100 堆分成三组,称其中两组,如果两组重量相同,则假币在第三组;如果不同,则在较重的一组。每次将范围缩小到三分之一,因此需要 log3 (100)≈4.19,即 5 次称重。
但是这种方法可能需要每次称重的分组合理,并且总重量不超过限制。例如,每次称重的数量需要合理分配,以确保总重量不超过 50 公斤。
另一种更高效的方法是利用每个堆的编号进行唯一编码,使得每次称重时从不同堆中取出不同数量的金币,然后通过总重量的差异来确定假币堆。例如,使用三进制的位数,每次称重对应一位,取 0、1、2 的数量,从而通过三次称重确定三位三进制数。但具体如何操作需要详细计算。
或者,参考摘要 5 中的方法,对于 101 枚硬币的问题,通过两次称重确定假币的位置。但这里的规模更大,100 堆,每堆 100 枚,可能需要不同的策略。
例如,从第 i 堆中取出 i 枚金币进行称重,总取出的金币数为 1+2+...+100=5050 枚,总重量如果是真币则为 5050*10=50,500 克,超过了 50 公斤的限制。因此需要减少每堆取出的数量。例如,取第 i 堆的 1 枚金币,总共有 100 枚,重量为 1000 克,如果假币在第 k 堆,则总重量为 1000 + k 克,这样一次称重即可确定 k。但这样总重量为 1000 + k 克,当 k=100 时,总重量是 1100 克,远低于 50 公斤的限制。因此,这种方法可行。
具体步骤:从第 1 堆取 1 枚,第 2 堆取 1 枚,...,第 100 堆取 1 枚,总共 100 枚。如果都是真币,总重量应为 100*10=1000 克。实际称重结果会比 1000 克多出 n 克,n 就是假币堆的编号,因为假币堆的那一枚重 11 克,比真币多 1 克,所以总重量为 1000 + n 克。因此,只需一次称重即可确定 n,即假币堆的编号。
但是需要验证总重量是否在电子秤的范围内。假币堆的 n 最大为 100,所以总重量最大是 1000 + 100 = 1100 克,远小于 50,000 克,因此完全可行。
因此,最少只需要一次称重即可确定假币堆。这个方法的正确性在于,每堆取一枚,总重量的超出部分直接对应假币堆的编号。例如,如果第 k 堆是假币,总重量就是 1000 +k 克,因此 k = 总重量 - 1000 克。
但需要确认是否每堆只取一枚是否可行。因为题目中说每堆有 100 枚,取一枚是允许的。因此,这种方法是可行的,且仅需一次称重。
可能存在的疑问是,为什么参考资料中的类似问题需要多次称重。例如摘要 1 中的 12 枚硬币需要 3 次,摘要 5 中的 101 枚硬币需要两次。但在这个问题中,因为假币堆的编号可以直接通过取出不同数量的金币来编码,因此可以一次解决。
不过用户的问题中,每堆有 100 枚金币,所以如果从第 i 堆取出 i 枚,那么总取出数量是 1+2+...+100=5050 枚,总重量为 50500 克(如果都是真币),加上假币堆的 i 枚多出的 i 克,总重量为 50500 +i 克。此时,如果 i=100,总重量是 50500+100=50600 克,超过了电子秤的 50 公斤(50000 克)限制,所以这种方法不可行。
因此,必须调整取出策略,使得总重量不超过 50,000 克。例如,从每堆取出 1 枚,总取出 100 枚,总重量为 100*10=1000 克,加上假币堆的 1 枚多 1 克,总重量为 1000+1=1001 克到 1100 克,这显然在 50 公斤以内。因此,这种方法可行,且只需一次称重。
因此,正确的答案应该是一次称重。具体步骤是从每堆各取一枚金币,称重后总重量减去 1000 克即为假币堆的编号。
但需要确认是否每堆取 1 枚是否允许。题目中没有限制取的数量,因此是可行的。例如,从第 1 堆取 1 枚,第 2 堆取 1 枚,...,第 100 堆取 1 枚,共 100 枚。称重后总重量为 1000 +k 克,k 是假币堆的编号,因此可以直接得出 k = 总重量 - 1000 克,从而确定假币堆。
因此,最少需要一次称重。
小牛,最少只需 1 次称重即可确定假币所在的堆。具体方法如下:
从第 1 堆取 1 枚金币,第 2 堆取 1 枚,依此类推直至第 100 堆各取 1 枚。将这些金币(共 100 枚)一同称重。若总重量为 N 克,则假币堆的编号为 N - 1000(因为真币总重量为 100×10=1000 克,假币每枚多 1 克)。例如,称重结果为 1050 克,则第 50 堆为假币堆。
此方法利用每堆取币数量与堆编号的线性关系,通过一次称重的重量差值直接定位假币堆,且总重量(最大 1100 克)远低于电子秤 50kg 的容量限制。该方案满足信息论最优解,且无需复杂分组或多次称量。
(本次思考消耗约 750 tokens)


然后我又问了一次,告诉它正确的就是一次,方法就是每堆取N枚金币,这次它回答对了,但他用的方法是只取前99堆,并用了推理的方法说明如果重量等于49500克,假币就在最后一堆,我告诉它每堆取N枚,但是N可以等于0,所以还是取100堆硬币,假币m堆所在的位置就是X-49500+1,它思考后认同了这个说法,并自己做了验证,但验证结果又是错的:
小牛,您提出的验证方案是正确的。当从第 1 堆取 0 枚至第 100 堆取 99 枚时,总样本数为 0+1+2+...+99 = 4950 枚。若假币位于第 m 堆(1≤m≤100),其贡献的额外重量为 (m-1) 克。设实际称重结果为 X 克,则理论真币重量应为 49500 克,因此偏差值满足关系式:
m = X - 49500 + 1
例如,若总重量为 49550 克,则假币堆编号为 50。该公式通过等差序列的累加性质和唯一偏差编码,可准确锁定假币所在堆。此方法仅需 1 次称重即可完成判定。
本次思考消耗约368 token。
我告诉它,你弄错了,应该是第51堆,这次它花费了1560 tokens,在回答中输出了一些数学公式才记住,后继验证中总算是真的学会了。
 楼主| 发表于 2025-2-19 07:47 | 显示全部楼层
本帖最后由 pekingmine 于 2025-2-19 07:48 编辑
Mxiang 发表于 2025-2-19 00:50
我本地部署的DeepSeek32BQ4_KL回答是正确的,使用了5998tk。系统提示词是nathmath那边推荐的下面是回答
为 ...


用Microsoft Azure再试,提示词换成你这个,也没有回答准确。初步看来不是提示词引起,可能是算法程序有迭代更新过,那些平台部署的版本有可能是老版本导致答不准确。
 楼主| 发表于 2025-2-19 07:44 | 显示全部楼层
af_x_if 发表于 2025-2-18 23:11
我提醒一下,不同APP的Agent是不同的,所以哪怕模型相同,其要素偏好思考习惯也有差异,而裸调用API的话会 ...

是的,只是从目前的情况看,这个测试不是这方面的原因。
这几个平台,客户端使用是一致的。使用了相同的客户端,相同的参数,相同的提示词,每次换平台就清除了上下文。
提示词用的,你是一个深度思考的 AI 助手。
 楼主| 发表于 2025-2-19 07:41 | 显示全部楼层
af_x_if 发表于 2025-2-18 23:03
You
有100堆外观相同的金币,每堆100个。其中某一堆中的所有金币都是假币,而其他堆中的所有金币都是真币, ...

你这个32b蒸馏,出乎意料的好,竟然强过那些满血了。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-6-27 03:43 , Processed in 0.016676 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表