某天去外地出差,同行的一位女士不小心把行李箱的密码锁号码弄乱了,说箱子打不开。
问我是否有办法尽快找到正确的密码。行李箱密码锁的号码是由三个数字组成,总共可以有一千个不同的号码。如果一个一个号码试验,需要试验一千次,时间太长。但是,她不是故意将号码弄乱,而是不小心碰到了某个号码才弄乱的,我假定她最多将三个号码中的一个弄乱了,不大可能同时弄乱两个号码或者三个号码。这样,只要每次固定两个号码,将另一个号码实验10次,至多30次试验就行了。
她按照我说的这个方法试验,果然很快就找到了正确的密码,打开了箱子,她告诉我:原来的初始密码是000,弄乱之后变成了900,按照我所说的方法先固定后两位数字,只试验了10次就找出了正确答案。受这个结果的启发,我进一步修正了寻找正确密码的方法:不小心弄乱号码,很可能只弄乱一个数字,而且很可能不会改动很大,最大的可能性是只改变一“格”,将这一个数字加1或者减1。按照这样的假设,只要试验6次就行了:在原来密码的基础上将第一位、第二位、第三位分别加1或减1。比如,她的原来密码是000,弄乱之后的密码很有可能是100,900,010,090,001,009这6个号码之一。
我将这个故事写成一则数学聊斋在博客上发表了。有一位网友留言说他的密码锁也发生了类似的情况,用我说的方法很快就打开了。也有人忠告我不要到处宣扬这个方法,否则会被怀疑我有本事打开别人的密码箱偷东西。还有人担心:如果小偷知道了这个方法,专门打开别人的密码箱偷东西怎么办?这个担心是多余的:箱子的主人知道原来的密码,可以在原来密码的基础上试验少数几次找到新的密码。别的人都不知道他原来的密码,还得试一千次。
这个方法只能说是成功的可能性很大,不能保证100%成功。如果试验了6次或者30次还是打不开,还应当考虑别的可能性。例如,有可能3个号码“齐步走”同时走了几格,这时只要再试10次就可以打开。也可能齐步走的时候某个号码多走或少走了一格,这时可以先将某个数字加1或减1,再齐步走试验10次,试验60次就可以打开。总之,3个数字变动越小的可能性越大,变动越大的可能性越小,按照可能性由大到小的顺序试验,总比穷举一千次要好。
* 本文摘自《数学大观》,李尚志著,高等教育出版社。
每天好玩的数学
微信号:DailyMathFun
↑
以数学学习为主题,以传播数学文化为己任,以激发学习者学习数学的兴趣为目标,分享有用的数学知识、有趣的数学故事、传奇的数学人物等,为你展现一个有趣、好玩、丰富多彩的数学世界。
↓
点阅读原文逛好玩商城,发现更多好玩的数学。