首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 生活中关于清点人数之设计
【标  题】:生活中关于清点人数之设计
【关键字】:
【来  源】:http://blog.csdn.net/xiammy/archive/2007/04/11/1559827.aspx

生活中关于清点人数之设计

一提到数据结构,大家想起的都是计算机程序中的。到现实生活中,人们却往往容易忽视设计好的数据结构的重要性。

这次CSDN英雄会过程活动组织中,遇到一个需求。由于各路英雄众多,所以CSDN在组织的时候,经常需要清点人数。而CSDN的做法是这样的,由领队拿着一张名单,依此报出名字,在场的人喊声“到”。

我相信这是中国特色的清点方式。事实上,我们喊“到”的经验一定不少,以至于很多人都不愿意被迫喊这个字,有些人改成“来了”,有些人说“在”,有些人干脆举个手。不管怎么样,每个人基本用一句话来完成自己在清点过程中的任务,虽然感觉有点傻。

后来,在爬长城的时候,我又想起这个清单问题。因为这个时候情况比较混杂,不是什么时候都在一个车子上清点,清点的难度非常大。如果噪音大的话,这样的清点就更难了。于是我就想到了改进我们的清点方式。

我们先来看看传统的清点方式的特点:

  1. 有一位清点者
  2. 有一份名单列表
  3. 一般是顺序清点

这种方式的缺点,基本可以找到一些:

  1. 如果没有人清点,没有人知道是否来全了
  2. 由于顺序清点,效率很低。找人的效率也很低
  3. 如果找不到人,那么补救的方式比较被动

如果我们要改进,从哪里入手呢?分析一下这个系统,如果一个人相当于一台计算机的话,传统的清点方式,只是充分使用了“清点者”这台计算机。基本上所有的计算都集中到了它的身上。而每一个被清点的,只是完成了一个简单的报到工作。这显然是一个巨大的浪费。

而我们的数据结构的设计,正可以从此下手。整个思路,就是增加并行运算。我提出一个基本可行的方案:

  1. 取消清点者
  2. 每一个人记住两个人,保证一个群体中,每一个人被人记住
  3. 不存在任何一个子集,其中任何一个人不被子集外的人记住
  4. 清点的时候,每一个人都清点其记住的两个人

显然,这个方案的执行的时候,是非常迅速的。与之对应的,在队伍组织的初期,必须安排好每一个人应该记住的人。这也说明了,并行是需要统筹的。

观察这个方案,每一个人(计算机),已经不再只是承担“报到”的功能,每一个人都有自己的记忆,并且有各自的判断。他们只是在发生异常的时候,向整个系统报告,否则无需“报到”!

总结以下,其实,计算机中的计算方式就是从生活抽象而来的。但我们也应该关注到,计算机的思想,也可以借用到我们现实生活中来。一句话,只要是好的,我们都可以用。

ASP.NET2.0 文本编辑器FCKeditor的冰冷之心 【月儿原创】:【上一篇】
Visual C#来删除注册表中的注册信息:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • C/C++笔试题系列一
  • 白话面向智能体编程(Agent Oriented Programmig, AOP)之三
  • Data Conversions
  • FreeHand 界面和面板的变化
  • PHP--进行模块化设计
  • 找到最新版本oracle for x86
  • Linux网络命令
  • 3G的前世今生
  • 双核Itanium 2要到06年才会大规模上市
  • C++--iostream之一
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.