« 〖生活算法系列3〗—用图表符号呈现算法 〖生活算法系列5〗—计算机操作与生活算法 »

〖生活算法系列4〗—生活算法案例

  生活算法是针对方法与步骤的,能够体现在生活中的不同侧面,在生活中的大大小小的各个方面都会有所体现。有了生活算法的帮助,可以使复杂的事情简单起来,可以对简单的事情进行更深入的理解。
  生活算法可以使用图表、符号体系表现出来,是由环节、模块组成的。有了生活算法的帮助,可以使生活中很多复杂的事情变简单起来,可以对没有注意到的事情进行更深入的理解。
  1.生活算法分析-生活中的问题
 朋友佟君搬家,面对了不大不小的问题:
信息时代不能没有信息技术课- -
  星期六搬到新家,在处理一些日常生活琐事中感受到了信息技术在日常生活中的重要性。
  以电话移机过程中的几个步骤为例:
   1.网络查询天通苑所属电话局——2.电话咨询乘车路线——3.网通(北七家)营业厅(告知要先在总局办迁出手续)——4.西单营业厅办迁出手续——5.回网通(北七家)营业厅。折腾了一整天,很累!路上我想如果能够灵活运用好现代信息技术,通过网络或电话咨询直接问清办理手续就没必要跑多余的路了。在生活中象这种事情非常多,所以我觉得随着社会的不断进步,在我们的信息技术课中应该不断地增加信息技术应用内容(如网络的各种应用、电话、IC、IP、掌上电脑……)
  ……
网页原址:
  利用图表,可以将解决“电话移机”的方法与步骤画出下图:
图(略)
   利用生活算法,可以将复杂的生活活动简单化,这是生活算法中的特点。在“电话移机”的例子中可以体现出算法中的分治法、动态法等。
  在分析、解决问题时,主要应用了算法中的分治法,可以将“电话移机”这个大问题将分解成若干小的问题。有乘车(1)、总局办事(1)、乘车(2)、现电话局办事(2)、乘车(3)、总局办事(2)……。子问题如果是相似的,就可以把它们设计为是一个解决模块。 这样第一次解决了,其他各次仅按照本次,较简单重复即可。“电话移机”这样问题的解将是各子问题的解按一定次序的组合。
  在“电话移机”问题的解决中也能够应用出动态规划算法。人总是灵活的,不是按照流程机械地重复。如果某子问题的解决对整体有着重要影响,就会对其相应调整,这样就会对整体解决问题有着更好的影响——这也是我们生活中需要算法的原因之一。
  在整个活动中的过程为:提出问题,预设方案-利用技术手段获取信息-提出方案(算法)-在实践中修正方案。
  2.生活算法分析案例-经典统筹学中的问题
  生活算法与统筹科学有着重要的关系。如果利用生活算法对其进一步分析,往往能够从中发现更多的、更有意思的内容。
烧水就是统筹学中比较典型的例子。不过在生活中“烧水”可能会更复杂一些。
   当需要一个人独自去解决一个问题时,一般会使用串行的工作方式,先去解决这件事情,再去解决那件事情。其中有些事情之间是有先后次序的,不能随意颠倒次序。为了泡壶茶喝,需要进行的步骤有:洗烧开水的壶,洗茶壶、茶杯,灌水,取茶叶,烧开水,等水烧开了泡茶……。“泡茶”这件事,包含着多个模块的动作,还可以用多种不同的形式、多种工作方式完成。
烧水的分析图(图略)
  第一种方案:洗开水壶再灌自来水,烧开水;在烧水时,洗茶壶、茶杯,取茶叶;等水烧开了,泡茶喝。这是串行的工作方式。 由一个人按照顺序进行下去。(当然这是最笨的一种方法)
  第二种方案:做事情前先想一想总体的解决方案:烧开水花费的时间较多,可以在烧开水的同时做一些事情。 这样就可以节省了时间。对于泡茶这件事情而言,其中的第2、3、4步骤可以同时进行。一种烧水,一边就可以做好准备工作了。对各个模块的工作而言,这是一种并行形式的工作。 而对于个人来说,他要一步步地完成每个步骤,仍然是一种串行方式。
  第三种方案:如果有两个朋友A和B一起喝茶。大家可以将整个任务分解开,一起完成。 可以这样分工:A负责洗开水壶,烧开水,B负责洗茶壶、茶杯,取茶叶。在水烧开了以后两个人共同泡茶。这无论对于人,还是对于烧水的各个子任务都是并行的工作方式。
  串行是按照先后次序实行或实施的,并行则是同时的。对于计算机和程序设计算法而言,并行算法的难度与复杂度远远大于串行算法,而我们的生活中却随时发生着。这也是我们需要进一步研究生活算法的原因之一吧。
  3.生活算法分析案例-算法问题
  生活中的算法有时会非常接近程序设计算法,有着与程序设计算法相似的复杂度。
  基本问题:
  背包问题-需要对容量为C的背包进行装载。从N个物品中选取装入背包的物品,不同的物品的重量为W(I),分别对应的价值P(I)。如何装包?
  【算法】:
  贪心算法准则1-在剩余的物品中找出一个可以装入背包的价值最大的物品。
  贪心算法准则2-从剩余的物品中找出可以装入背包的重量最小的物品。
  贪心算法准则3-计算价值密度,用价值除以物品重量,P(I)/W(I)。从剩余的物品中选择可装入包的P(I)/W(I) 的物品。
  贪心算法之K阶优化-从装好的包中取出K件物品,并放入另外K件,如果获得的结果比原来的好,则选择新的方案,否则保持原有状态。用这种方案可以优化整个放入物品的序列。
动态规划算法-用递归进行计算求解。每装入一件物品后,计算基于现有状况下,再装包的最优解。当然这种装包方法需要比较复杂的计算。
……
    【变形问题】:
  基本问题往往是一种理想状态,在具体实践中还会有着更复杂的要求。例如:
  ·货郎的背包:一个走街串巷的货郎的背包应当如何装载?
  ·公司经理的背包:做为一名经理,要外出参加产品推销会需要如何装载自己背包?
  ·野外生存者的背包:如何进行装载野外生存者的背包?
  ……
  具体的生活会有不同的、具体的要求。公司经理装包时首先考虑到完成自己任务的必须工具,如笔记本电脑、便携式投影仪等,然后再考虑自己的生活用品;货郎在需要体力能够承受的前提下进行装包;野外生存者需要首先不是物品价值,而是野外最关键的物品,此时手电筒可能会比Gameboy游戏机更重要……。根据生活中的不同要求选择不同的装载算法。算法可以上升成为解决一类问题的策略。
  而掌握了算法、策略会在其他的各种活动中同样有着重要作用。
4.生活算法分析案例-信息技术课教学活动中的问题
技术不仅仅是硬件、设备,还应当包括应用设备的方法、过程。生活算法分析能更好地体现与技术产品的互动关系中。
生活中的算法分析需要明确两类关系,一类是层级/结构关系,另一类是流程次序关系。信息技术课的教学中也有着典型的体现。例如,指导做一个简单的相册网站的算法分析:
  结构分析 
  首先是网站规划。需要让学生首先清楚目标将是什么样子的,即规划的内容。网站的结构主要有分支型和顺序型:
    〖分支型网站的结构图〗:
   〖顺序型网站的结构图〗:
  步骤分析 
   在明确了目标的结构关系之后,可以进一步设计自己的工作流程:
  在这里用图表的形式可以清楚地表现出来两种不同的关系。一种是层级/关系,把目标的结构用图表的形式表现出来。另一种是应用技术的次序关系,是工作的流程图。
  熟练掌握技术的人需要在明确网站的层级/结构关系后才能明确自己的工作流程。在算法分析中,对层级/结构的分析是为了更准确、真实地找到解决问题的方法与步骤。结构是为次序服务的,使次序更明确。

【系列内容,随时更改,暂勿学术引用】

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们

日历

最新评论

最近发表

Powered By Z-Blog 1.7 Laputa Build 70216

Copyright 2003-2007 芸心芹意 bean.being.org.cn Some Rights Reserved.