史话

乐高深度扫盲⑨-收纳篇

2017-08-17 16:54   彩色蚂蚁
  玩乐高最痛苦的事情,不是拼装,而是拆卸。而比拆卸更痛苦的,是零件的收纳和分类整理。。。
 
乐高深度扫盲⑨-收纳篇
 
  比如,在乐高街景,10232大剧院的套装里,橱窗里今日电影的海报就有那么一张:Forever Sorting, 看起来是言情片哈。btw. 另外两部电影,你看出现实题材的来源了么 ;)
 
  所以,这一篇文章,我来讨论一下乐高零件的收纳问题,乐高是用来玩的,所以,谈收纳,收起来并不是目的,拿出来才是重点。基于应用场景的不同,其实并没有单一的最佳的收纳方案,只有在那个场景下,相对适合的方案。
 
  论收纳的重要性
 
  这一篇文章,其实已经搁置了很长时间了,迟迟没写,是因为预计会很枯燥,更可怕的是,我居然想先理性的证明一下收纳的重要性。。。只想看结论的同学,可以直接跳过这一节了。
 
  下面,让我简单借助算法,来科学的论证一下收纳的重要性 :-)
 
  先让我们假设一个套装有一千个零件,那么你搭建过程中花在找零件身上的代价有多高呢?
 
  让我们简单计算一下,如果你的零件完全不做整理,那么,你找到一个零件平均需要检索五百个零件,而这个过程,你要重复一千遍,所以你需要检索的量级约为五十万次。
 
  为了加快检索速度,最常见的手段,当然就是对零件进行预分类。如果你是个合格的程序员,那么你应该知道,这就是所谓的Hash,理论上,Hash算法无论是分类还是检索,就单个零件来看,代价都是常量 O(1),所以同样一千个零件,分类加检索,总的代价大概是两千次。
 
  当然,上面的计算是极度简化了的,实际上第一种方法中,因为零件会有重复,零件总量也会随着搭建过程不断减少等,代价会远小于此。第二种方法中,检索的代价也不完全是常量1,因为现实中,如果你背不住零件放在哪个容器里,你还是要挨个检索容器的。
 
  但无论如何,分类零件的收益是显而易见的,可是问题来了,应该把零件分类到多少个容器中呢?
 
乐高深度扫盲⑨-收纳篇
 
  在Hash算法中,为了减少Hash碰撞(不同零件放在同一个容器里),提高检索效率,你最好是拥有无限的容器,但现实生活中,你在家里拥有的空间大小是有限的,即使你是住别墅的土豪,钱和空间都不是问题,无限的容器方案对你的体力和记忆力也是个严峻的考验。所以,如何选择具体的分类和收纳方案,还是值得思考的。

当前位置:首页 > 资讯 > 文化 > 史话 > 正文

玩具批发选品、读资讯

下载中外玩具网APP