1. 决策的主要方法有哪些
两人同兼一职的现象是不存在的。同样,在晋升时,必须一个是胜利者,一个是失败者。
在瞬息万变的经营环境中,企业家要为自己的企业航船把握正确的方向,仅靠你的生活经验和直观感觉是不行的,要借助于现代成熟的定量分析方法,用以检验经验与直感的可靠性和正确性,并根据定量分析结果,进行正确的决策。哈佛商学院的管理经济学课程,教给学生们如何将主观的定性判断,与客观的定量分析相结合进行经营决策的技能。学生们通过这门课的学习,理解了定量分析对于决策的重要性。
哈佛认为,企业经营者,要做好企业的决策,必须了解企业三种经营状态。它们是“零和游戏”、“囚犯两难”和“自然淘汰”。企业面临的多数经营情况,都可归为这三种游戏类型。企业家须判断经营状况属于哪种游戏,从而决定应该采取的行动模式。
“零和游戏”就是一方得分他方失分,即合计为零的游戏。所有竞争项目都有价值,胜者得到价值。
掷硬币可谓典型的零和游戏。正面朝上,背面自然朝下。一方取胜,他方定败。这样便产生了零和游戏。同样,赌赛马、赛狗也可以说是零和游戏的一种。赌赛马取胜的人,从负者手中得到了钱,即赌注和找还钱的总和(当然要交跑道、维护费、赢马所有者的奖金、税款等)是零。
在企业中也是如此,两人同兼一职的现象是不存在的。同样,在晋升时,必须一个是胜利者,一个是失败者。
的确,在这种零和游戏中,选手可选择的战略只是一个,那就是取胜,另无他法。各选手必须竭尽全力,胜利者独享战利品,因此在这里毫无妥协的余地,谈判也毫无意义。
在“囚犯两难”的场合,如果各位参赛者都不想独占好处,那么全体选手就能得到最好的结果。如果大家齐心协力,就能取得对众人来说是最好的结局。如果每个人都姿意妄为,得到的将是最坏的结果。
犯人A、B分别在两间房子内受审。检察官要判犯人无期徒刑,由于种种原因暂时不能判决,于是,检察官向他们两人暗示:如果犯人坦白,省去了法院的时间和经费,就可以得到减刑。如果其中的一个囚犯坦白,提供了证词,此犯人就可得到特别减刑。但是实际上,如果二人都坦白,证词便无用了,所以不能得到相应的减刑。
假设犯人A坦白并提供了证词,但犯人B没有坦白,那么犯人A判刑10年,犯人B就会被判无期徒刑;反之,如果犯人B坦白并作证,犯人A缄默不语的话,则犯人B判10年刑,犯人A则判无期徒刑。如果二人都坦白,省去了二审费用,二人都会被判20年刑。但是假如二人都不坦白,就会因证据不足被免予起诉。
如上所述,如果二人相互配合都不坦白,就能得到最好的结果。然而,二人却分别被关在不同房间里受审,由于对对方不信任,二人都希望因自己坦白而减刑,这也许便招致了最坏的结果。只有信任对方,形成互相配合的状态时,犯人矩阵作战才能成功。
美国航空业在80年代中期,就陷人了这种“犯人两难”矩阵的状况。在实行严厉的管理措施时期,航空公司为缓和价格的航线竞争,就采取了相应措施。但是,管制措施一旦废除,各航空公司便想方设法增加哪怕是数目很少的飞行次数,各航空公司相对降价,来实现自己最大利润的欲望。其结果是,几乎所有的航空公司都得到了最坏的结果。原因是,各航空公司在管制措施取消以前,与职工订立了长期的工作合同,从而无法削减劳务成本。可如果航空公司都一起提高价格,整个航空公司的效益就会大为改观。但是,对消费者来说,幸运的是,在反托拉斯法中,已明确地禁止这样的价格协定。
“自然淘汰”是结婚或其他所有亲密关系中都存在的窘境。游戏中的选手A,希望得到与选手B同样的最好结果。这时对方如果放弃对最好结果的追求、,那么选手A就达到目的了。反之,选手B也亦然。
很多公司为满足各种特定的市场需求而制造产品,但实际上,往往只有一种产品幸存下来。这是因为生产方面的固定费用很高,各公司为了从投资中得到利益,就必须拥有较大的市场占有率。
在商场实战中,为了不让竞争对手进入市场,利害相关者之间的交流和暗示,就具有决定的作用了。让失败可能性很大的人在市场上竞争,是任何当事者都不喜欢的。因此,很多时候,将今后要投放市场的产品消息告诉竞争对手,使其放弃市场竞争,是一种明智而有效的方法。了解究竟谁弃权的最有效的手段,是你自己第一个进入市场。
因为不可能详细叙述所有的分析,我们这里所介绍的框架,只能将复杂的决策,分解为最简单的要素。这是应用于各种职能规范中所必需的决策方法。
管理经济学是数量分析类型学生们喜欢的科目。这是因为在分析过程中;他们可能会发现意想不到的“正确”答案。但是,习惯用主观判断和常识进行决策的学生们,也热衷于学习数量化方法和逻辑分析方法。利用数量分析法,可以避免片面性增加其准确性和可靠性。明白了一个很有趣的道理,那就是,要使决策的数量化过程正确而有效,你必须具备一种靠直觉判断各相关要素的能力。
虽然不能否认优秀的判断力和决策的关键,但管理经济学讲座的目的,是教授在若干个选择方案中,判断哪种方案最为合适的方法。哈佛将送给你一个理想的答案,送给你一个基本的方法。学生学到的定量化技术,适用于正确评价候补方案的价值;预测不确定的未来;防范风险的对策;并用游戏来预测竞争者的反应用线性规划法进行资源配置等等。
管理经济学不仅教授判断方案是否得当的方法,而且对如何向他人明确地表达自己的思考过程也有重大作用。用决策方法的一个最大好处是,如果在分析者之外,可以根据情况做出反应并能把所分析情况资料化,如果有人与分析家做出了不同的预测,是否应采取不同的行动方案,利用决策树方法便可一目了然地明确。所以,决策树利于传达思想和交流情报,可以说是非常好的系统方法之一。
管理经济学的另一个重要内容是敏感性分析。敏感性分析最终左右着判断的结果。对未来的假设和预测,并对这些预测和假设进行检验。利用敏感性分析,即使如果有人做出了错误的假设,也能检验出该假设的错误所在。
哈佛研究的决策方法,适用于非常广泛的领域,比如可以用于下面的各种职业和各种不同的决策问题。
你也许是一位着名的棒球队的市场部部长,你想要搞清几年来对主场比赛的入场观众最有影响的因素是什么?并从分析因素中判断今后该怎样进行市场活动。
你是一个对即将来临的暴风雨应采取对策的葡萄园营业部主任,暴风雨的长短与强弱和你采取的对策,可能造成葡萄全部被毁,也可能使今年成为历史上产量最高的丰收年。
假如你是一个在似乎有石油,又无充分证明的原野上,决定是否投标取得采掘石油权,而且如果投标,又必须决定价格水平的事业部长,你该如何进行决策呢?
哈佛商学院管理经济学的分析基础是决策树。
决策树由决策者必须做出决定的场合和可能出现的不确定事项的场合两部分构成。
利用决策树分析法,必须明确以下几个问题:
第一,描述决策和发生事情的顺序。
第二,应清楚选择列出的方案,与有可能发生的事情之间可能有矛盾。另外还要透彻地进行选择方案的调查。
第三,决策者应预定时间范围。在决策尚未决断时,其决策可根据不同情况而定。
在任何领域都会存在竞争对手。因此,在管理经济学讲座的案例讨论中,教授很重视训练学生们预测竞争对手可能作出的反应,并根据预测的反应来制定行动计划。学生们在各种方案中,要逐个评定各竞争对手的状况,从而选择出对自己公司有利的可靠的战略决策。
第四,在进行决策时,必须依照对某种事件的预测来筹划战略行动。所以,决策树是决定各阶段选择的指南。
在决策上列出选择方案和预想结果后,决策者必须计算所预算各种结果的现金价值。学生要进行的是分析由各种战略的实施所产生的现金收支的现值数额。
按决策的方法逐个分析备选方案,了解其合理的耗费和支出。不过在收益占两个格支出分析中,不包括埋没成本(即与决策无关的开支、应与投资决策分开考虑的财务费用等等)。
为了进行比较,教授还必须帮学生确定以税前或者税后(一般为后者)为甚准计算。其次指导学生在计算各种决策方案结果时,应如何考虑资金的时间价值,因为一切都要用现值表示。所利用的减价要素,不应与税前税后的现金收支发生矛盾。计算中还可能利用加权平均资本成本及再投资率(决策者将剩余资金用于再投资的比率)等指标。
作出“推进”决策的制造部长预计,如果新产品推进成功,税后的现金收入是550万美元,如果失败就要损失350万美元。这时如果放弃该产品,则仅损失开发阶段的埋没成本。
在现实中,要正确地评价末端值,恐怕要用到相当多的数据才行。因此用上述方式辅助判断,并记录各种假设和方案,是比较方便实用的方法。
将预计结果全部绘制于图中,便可预测各种结果的概率了。如掷硬币时,正、反面的概率各为一半,即50%,掷骰子的概率为六分之一。
评价概率时,主观判断同样重要,尽管每种可能结果的概率是根据预测、推测得来的,但是决策者要提高其精确度,还要充分利用以往的经验和数据。
那么,如何将以上步骤用于决策上去呢?哈佛的方法是:
根据预测结果和概率的所有情报,确定可能产生现金价值的行动方式。如果这样能做成决策树,然后再决定哪种行动战略能带来最大利益,而选择“惜售”或“甩卖”等行为,去“分解”决策树。进行这种作业时,哈佛的学生从计算末端值开始,即通过计算结果的加权平均值,得到该事项节的预想现金值。
回归分析比预测更为复杂,一般要借助计算机进行数据计算。也许有人一听就会皱眉头,确实,回归分析技术有些高深,如果你在企业中看到一群人在谈论回归分析的话,差不多可以肯定其中有一两位企业管理硕士或经济学博士。
回归分析是将预想的可能出现的结果,在计算机上实际摸拟的一种技术。采用此技术,能分析出现在的情况及与过去类似的情况,搞清所有对事项可能产生影响的要素。
下面我们来看看美国职业棒球队比赛时,主场比赛观念的预测方法。
首先要考虑对观众数量有影响的各种因素,如比赛球队、比赛时间、比赛季节、星期几、平均票价、客队和主队的明星队员、气温、电视转播、全部比赛场次数量等。
其次,在计算机上输入有关各要素的各种变量数据和各场的观念数,以及过去各比赛季节等信息。
使用回归分析方法,须用计算机进行数千个数据的处理,才可知道哪种变量对观念数量影响最大。根据回归分析所得出的影响要素及其结果的关系,可以说明今后的趋向。
哈佛1981年秋天进行的有关这一问题的调查分析结论是,对观众数量最具影响力的,是有无明星选手参加比赛以及该场比赛是否为决赛两个主要因素{而电视是否转播,对观众的数量影响并不很大。这个调查结果,对承办者来说是很有意义的。
由以上结果可知,纽约·尼克思队给着名球星哈特里克·阿温很高的年薪无可厚非,达克·富罗蒂的年薪猛增也理所当然。因为人们大多是来看他们表演的。可见回归分析证明了直感的正确性。
决策者为收集预测数据还有一个方法,就是选择对于结果有象征性的若干实例,以此来预测结果。相信此技术效果的人们,称之为推销试验。
生产新型口香糖的制造部长,为预测产品实际在全国有无反响,准备在一些地区进行推销试验。抽样越多,收集的情报就越准。另外,试销和抽样要花费大量的时间和金钱,但产品实际投入市场后却不一定能够成功。经营者不断盘算的是“为获得更准确的情报,准备花多少钱?”
哈佛的管理经济学讲座,教给学生们对此类问题应采取的正确方法。决策者对不完整的情报,是不会投入很多资金的。而要获得完整的情报,能使决策者作出正确的判断,又必须投入相当多的资金。
分析两种情况,但在说明之前有一点必须明确,那就是并非分析者描述了决策树就可万事大吉了,而是要把输入公式中的重要情报整体作一下重新分析。
例如,制造部长虽已得出成功和失败的概率,但是不能判断其结果是否正确。为检查这种假设的敏感性,部长会自问,怎样才能开拓一个具有取消中止计划的充分魅力的市场呢?盈亏平衡分析应是解决这一问题的不可缺少的分析方法。
如果用管理经济学的语言来说,就是有多大的成功概率时,投放战略会处于同一水平之上。
制造部长要考虑的另一个因素是非货币价值分析,在这判断新型口香糖的生产会使公司对零售业可施加多大的影响力方面是非常重要的。当他们改变中止投放市场的决定时,这种影响力在何种程度上才为必要。
例如,假定投放市场的成功率为30%,公司为使产品投放市场并获得在功,必须拥有相当于270万美元以上价值的影响力,即在市场上要产生相当的反响。如果制造部长认为没有270万美元以上的市场效果,那么,不能投放市场的决断也就成立了。
但是,尽管如此,制造部长依然担心自己的判断不准时该怎么办呢?除计算预想现金值之外,就没有其他判断标准了吗?此时最好把风险的概率及对风险的讨厌程度也考虑在内。
即便冒风险也不愿放过增加收益的机会的话,就应事先考虑投放后发生什么事情,如果搞得好可赚550万美元。可是如果考虑到企业预算比较紧张,即使是350万美元的损失,也不能小看的话,就要谨慎地考虑投放市场的决策了。
哈佛商学院告诉那些未来的经营者们,每个人及每个企业单位所承担的风险性质,以及对风险的忍耐度,对决策过程起着重要的作用。如果决策不是时常根据预想现金的最大值进行的,那么在开始分析之前,就必须要确定决策的基准是什么。
哈佛商学院还教授以下两种解决问题的技术。因为实际上可选择的方案很多,只靠大脑和笔记本是解决不了问题的,因此这两种技术都要利用电子计算机进行辅助计算。
第一种技术是利用模拟实验模型。这种模型的典型事例,就是计算某年必须生产多少呼拉圈。呼拉圈是一种深受欢迎的产品,生产量相当大,解决此类问题要使用计算机进行。
模拟模型往往用于不确定因素的预测。通过模拟实验,可能对各种战略结果给出实际影响的状况,解决决策树中的很多问题。当然,对产品的新价格总是经常存在着不确定性,但基于各种实验中产生的平均利益,总能找到各种战略的预想现金值,因为用计算机能较容易地验证假设和进行敏感性分析。
第二种技术是线性规划法,一般适用于生产性资源的分配决策。经营目标通常是以最小的支出获得最大的收益。在这种情况下,就要考虑机器设备、从业人员某时期内的生产能力、营业时间、各产品的原材料数量、仓库贮藏能力等资源约束条件。
然后再通过计算机求解学生们提出的诸多联立方程式。学生们通过解释其演算结果,不仅可知全部产品中,哪种产品能达到最大收益;哪个生产部门应完全发挥生产能力;投放新产品能否获利等等,而且还能得出与决策有关的其他各种答案。线性规划模型可用于使系列投资带来最大收益的场合。
模拟实验模型和线性规划模型是经营管理中经常使用的两种定量化模型。
前面分析了各种可能的情况,下面就是怎样决策了。选择战略时,头脑中应思考以下二个问题:
第一,决策树只反映特定决策者的看法,因而判断行动时机和各种不确定事项因人而异。
第二,输入新情报时,情况变了,有时须随之变更决策树。
无论多么优异的决策树,都不过是解决问题的一种方法。
在决定行动战略时,按以下步骤做则很方便。
步骤之一,根据决策基准实行明确的决策,如目的是要获得最大限度的预想现金值?还是最小限度的经济损失?总之必须选择对战略及价值最合适的决策标准。
步骤之二,决策应在一定时间中确实地贯彻执行。在设定目标时,要考虑预计的是长期风险和利益,还是短期和结果?期限多长?要六个月、一年、二年,还是更长的时间。
步骤之三,把可能发生的主要问题都放在决策树中是很困难的,但必须认真和反复地思考各种战略中所能想到的问题和价值。必须考虑对预计行动的竞争反应和结果。为了提高决策树计算的概率的可靠性,还要看看有没有收集到更多情报的选择方案。假如将抽样技术用于结果预测,就要分析一下该结果对作了决断是否具备足够的现实性。
企业的决策多数是很复杂的,往往需要深思熟虑和调查。因此,出色的判断力是决策时不可缺少的要素。在需要考虑与找出与问题有关的各种要素,同时明确各要素问的相互关系的场合,数量分析会成为很好的决策工具。
定量分析技术可能会有意想不到的威力,但如果过于偏信,或漫不经心滥用的话,也可能出现误导决策的危险。判断和直感,是包括数量决策在内的,所有正确的经营决策所不可缺少的要素。、
2. 游戏场景管理的八叉树算法是怎样的
八叉树(octree)是三维空间划分的数据结构之一,它用于加速空间查询,例如在游戏中:
加速用于可见性判断的视锥裁剪(view frustum culling)。
加速射线投射(ray casting) ,如用作视线判断或枪击判定。
邻近查询(proximity query),如查询玩家角色某半径范围内的敌方NPC。
3. 各种类型的2D游戏里一般要用到什么复杂的算法
游戏类型(Game Genres),通常用于分类电子游戏,是一种分辨游戏之间区别的方法。世界上并没有统一的分类方法。游戏类型主要分为6类:动作、冒险、模拟、角色扮演、休闲、体育,他们各有几十种分支,形成了庞大的“游戏类型树”。 电子游戏分类 RPG=Role-playing Game:角色扮演游戏 由玩家扮演游戏中的一个或数个角色,有完整的故事情节的游戏。玩家可能会与冒险类游戏混淆,其实区分很简单,RPG游戏更强调的是剧情发展和个人体验,一般来说,RPG可分为日式和美式两种,主要区别在于文化背景和战斗方式。日式RPG多采用回合制或半即时制战斗,如《最终幻想》系列,大多国产中文 RPG也可归为日式RPG之列,如大家熟悉的《仙剑》、《剑侠》等;美式RPG如《暗黑破坏神》系列。 ACT=Action Game:动作游戏 玩家控制游戏人物用各种武器消灭敌人以过关的游戏,不追求故事情节,如熟悉的《超级玛里》、可爱的《星之卡比》、华丽的《波斯王子》等等。电脑上的动作游戏大多脱胎于早期的街机游戏和动作游戏如《魂斗罗》、《三国志》、《鬼泣》系列等,设计主旨是面向普通玩家,以纯粹的娱乐休闲为目的,一般有少部分简单的解谜成份,操作简单,易于上手,紧张刺激,属于“大众化”游戏。 AVG=Adventure Game:冒险游戏 由玩家控制游戏人物进行虚拟冒险的游戏。与RPG不同的是,AVG的特色是故事情节往往是以完成一个任务或解开某些迷题的形式出现的,而且在游戏过程中刻意强调谜题的重要性。AVG也可再细分为动作类(AAG)和解迷类两种,动作类AVG(AAG)可以包含一些格斗或射击成分如《生化危机》系列、《古墓丽影》系列、《恐龙危机》等;而解迷类AVG则纯粹依靠解谜拉动剧情的发展,难度系数较大,代表是超经典的《神秘岛》系列。 AAG=Act Adventure Game:动作冒险游戏 为冒险游戏的一个分支。但非常流行,自成一体,大有超过图形类AVG之势。故单独列出。 SLG=Simulation Game:策略游戏 玩家运用策略与电脑或其它玩家较量,以取得各种形式胜利的游戏,或统一全国,或开拓外星殖民地。策略游戏可分为回合制和即时制两种,回合制策略游戏如大家喜欢的《三国志》系列、《樱花大战》系列;即时制策略游戏如《命令与征服》系列、《帝国》系列、《沙丘》等。后来有些媒体将细分出模拟经营,即SIM(simulation)类游戏,如《模拟人生》、《模拟城市》、《过山车大亨》、《主题公园》等。TCG(养成类)游戏,比如《明星志愿》等。 SRPG=Simulation Role-playing Game:战略类角色扮演 原本角色扮演和战略应该不能结合,但是如《火焰纹章》之类的游戏,因为操控小队进行大地图回合制战斗极具战略型(还因此被称为战棋类游戏)而且对人物进行培养扮演参与剧情也是很重要的游戏内容因此被玩家划归为是SRPG,可以说喜欢玩的人不多,人气不够。 RTS=Real-Time Strategy Game:即时战略游戏 本来属于策略游戏SLG的一个分支,但由于其在世界上的迅速风靡,使之慢慢发展成了一个单独的类型,知名度甚至超过了SLG,有点像现在国际足联和国际奥委会的关系。代表作有《红色警戒》系列、《魔兽争霸》系列、《帝国时代》系列、《星际争霸》等等。后来,从其上又衍生出了所谓“即时战术游戏”,多以控制一个小队完成任务的方式,突出战术的作用,以《盟军敢死队》为代表。 FTG=Fighting Game:格斗游戏 由玩家操纵各种角色与电脑或另一玩家所控制的角色进行格斗的游戏。按呈画技术可再分为2D和3D两种,2D格斗游戏有着名的《街霸》系列、《侍魂》系列、《拳皇》系列等;3D格斗游戏如《铁拳》、《高达格斗》等。此类游戏谈不上什么剧情,最多有个简单的场景设定,或背景展示,场景、人物、操控等也比较单一,但操作难度较大,主要依靠玩家迅速的判断和微操作取胜。 STG= Shooting Game:射击类游戏 这里所说的射击类,并非是类似《VR特警》的模拟射击(枪战),而是指纯的飞机射击,由玩家控制各种飞行物(主要是飞机)完成任务或过关的游戏。此类游戏分为两种,一叫科幻飞行模拟游戏(Science-Simulation Game),非现实的,想象空间为内容,如《自由空间》、《星球大战》系列等;另一种叫真实飞行模拟游戏(Real- Simulation Game),以现实世界为基础,以真实性取胜,追求拟真,达到身临其境的感觉,如《Lockon》系列、《DCS》、《苏-27》等等。 FPS=First Personal Shooting Game:第一人称视角射击游戏 严格来说它是属于动作游戏的一个分支,但和RTS一样,由于其在世界上的迅速风靡,使之展成了一个单独的类型,典型的有使命召唤系列、DOOM系列、QUAKE系列、《虚幻》、《半条命》、《CS》……不胜枚举。 PZL=Puzzle Game:益智类游戏 Puzzle的原意是指以前用来培养儿童智力的拼图游戏,引申为各类有趣的益智游戏,总的来说适合休闲,最经典的嘛~就是大家耳熟能详的《俄罗斯方块》。 体育竞技 模拟各种体育赛事的游戏。比如《实况足球》等。 RCG=Racing Game:竞速游戏[也有称作为RAC的] 在电脑上模拟各类赛车运动的游戏,通常是在比赛场景下进行,非常讲究图像音效技术,往往是代表电脑游戏的尖端技术。惊险刺激,真实感强,深受车迷喜爱,代表作有《极品飞车》、《山脊赛车》、《摩托英豪》等。另一种说法称之为“Driving Game”。目前,RCG内涵越来越丰富,出现了另一些其他模式的竞速游戏,如赛艇的,赛马等。 CAG=Card Game:卡片游戏 玩家操纵角色通过卡片战斗模式来进行的游戏。丰富的卡片种类使得游戏富于多变化性,给玩家无限的乐趣,代表作有着名的《游戏王》系列,包括卡片中国游《武侠Online》,从广意上说《王国之心》也可以归于此类。 TAB=Table Game:桌面游戏 顾名思义,是从以前的桌面游戏脱胎到电脑上的游戏,如各类强手棋(即掷骰子决定移动格数的游戏),经典的如《大富翁》系列;棋牌类游戏也属于TAB,如《拖拉机》、《红心大战》、《麻将》等等。 MSC=Music Game∶音乐游戏 培养玩家音乐敏感性,增强音乐感知的游戏。伴随美妙的音乐,有的要求玩家翩翩起舞,有的要求玩家手指体操,例如大家都熟悉的跳舞机,就是个典型,目前的人气中国游《劲乐团》也属其列。 WAG=Wap Game:手机游戏 目前游戏随处可以玩,连手机也必带休闲游戏,中国民最喜欢手机游戏的种类,益智类比率最高,其次依次为动作类、战略类、模拟类、射击类。列举几个手机游戏例子:《金属咆哮》、《FF7 前传》等。 MUD=泥巴游戏 主要是依靠文字进行游戏的游戏,图形作为辅助。1978年,英国埃塞克斯大学的罗伊?特鲁布肖用DEC-10编写了世界上第一款MUD游戏—— “MUD1”,是第一款真正意义上的实时多人交互中国络游戏,这是一个纯文字的多人世界。(这可能就是MUD的命名来源吧)其他代表作有:《侠客行》、《子午线59》、《万王之王》
4. 俄罗斯方块游戏的编程应用了什么算法
主要是游戏基本逻辑,需要考虑一下碰撞,算法涉及不深入的
如果要考虑插空位,需要使用A*等寻路算法
如果你要实现和一个电脑对抗的tetris,则需要给电脑消行AI策略,就涉及到比较高端的决策算法了。
5. 目前比较流行的决策树算法有哪些
ID3算法,最简单的决策树
c4.5 是最经典的决策树算法,选择信息差异率最大的作为分割属性。
CART算法,适合用于回归
6. 几种常见的决策算法
动态归划算法,贪心算法法。最大流算法,最短路算法。
7. 决策树算法原理
决策树是通过一系列规则对数据进行分类的过程。它提供一种在什么条件下会得到什么值的类似规则的方法。决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树。
如果不考虑效率等,那么样本所有特征的判断级联起来终会将某一个样本分到一个类终止块上。实际上,样本所有特征中有一些特征在分类时起到决定性作用,决策树的构造过程就是找到这些具有决定性作用的特征,根据其决定性程度来构造一个倒立的树--决定性作用最大的那个特征作为根节点,然后递归找到各分支下子数据集中次大的决定性特征,直至子数据集中所有数据都属于同一类。所以,构造决策树的过程本质上就是根据数据特征将数据集分类的递归过程,我们需要解决的第一个问题就是,当前数据集上哪个特征在划分数据分类时起决定性作用。
一棵决策树的生成过程主要分为以下3个部分:
特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。
决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。
剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。
划分数据集的最大原则是:使无序的数据变的有序。如果一个训练数据中有20个特征,那么选取哪个做划分依据?这就必须采用量化的方法来判断,量化划分方法有多重,其中一项就是“信息论度量信息分类”。基于信息论的决策树算法有ID3、CART和C4.5等算法,其中C4.5和CART两种算法从ID3算法中衍生而来。
CART和C4.5支持数据特征为连续分布时的处理,主要通过使用二元切分来处理连续型变量,即求一个特定的值-分裂值:特征值大于分裂值就走左子树,或者就走右子树。这个分裂值的选取的原则是使得划分后的子树中的“混乱程度”降低,具体到C4.5和CART算法则有不同的定义方式。
ID3算法由Ross Quinlan发明,建立在“奥卡姆剃刀”的基础上:越是小型的决策树越优于大的决策树(be simple简单理论)。ID3算法中根据信息论的信息增益评估和选择特征,每次选择信息增益最大的特征做判断模块。ID3算法可用于划分标称型数据集,没有剪枝的过程,为了去除过度数据匹配的问题,可通过裁剪合并相邻的无法产生大量信息增益的叶子节点(例如设置信息增益阀值)。使用信息增益的话其实是有一个缺点,那就是它偏向于具有大量值的属性--就是说在训练集中,某个属性所取的不同值的个数越多,那么越有可能拿它来作为分裂属性,而这样做有时候是没有意义的,另外ID3不能处理连续分布的数据特征,于是就有了C4.5算法。CART算法也支持连续分布的数据特征。
C4.5是ID3的一个改进算法,继承了ID3算法的优点。C4.5算法用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足在树构造过程中进行剪枝;能够完成对连续属性的离散化处理;能够对不完整数据进行处理。C4.5算法产生的分类规则易于理解、准确率较高;但效率低,因树构造过程中,需要对数据集进行多次的顺序扫描和排序。也是因为必须多次数据集扫描,C4.5只适合于能够驻留于内存的数据集。
CART算法的全称是Classification And Regression Tree,采用的是Gini指数(选Gini指数最小的特征s)作为分裂标准,同时它也是包含后剪枝操作。ID3算法和C4.5算法虽然在对训练样本集的学习中可以尽可能多地挖掘信息,但其生成的决策树分支较大,规模较大。为了简化决策树的规模,提高生成决策树的效率,就出现了根据GINI系数来选择测试属性的决策树算法CART。
决策树算法的优点:
(1)便于理解和解释,树的结构可以可视化出来
(2)基本不需要预处理,不需要提前归一化,处理缺失值
(3)使用决策树预测的代价是O(log2m),m为样本数
(4)能够处理数值型数据和分类数据
(5)可以处理多维度输出的分类问题
(6)可以通过数值统计测试来验证该模型,这使解释验证该模型的可靠性成为可能
(7)即使该模型假设的结果与真实模型所提供的数据有些违反,其表现依旧良好
决策树算法的缺点:
(1)决策树模型容易产生一个过于复杂的模型,这样的模型对数据的泛化性能会很差。这就是所谓的过拟合.一些策略像剪枝、设置叶节点所需的最小样本数或设置数的最大深度是避免出现该问题最为有效地方法。
(2)决策树可能是不稳定的,因为数据中的微小变化可能会导致完全不同的树生成。这个问题可以通过决策树的集成来得到缓解。
(3)在多方面性能最优和简单化概念的要求下,学习一棵最优决策树通常是一个NP难问题。因此,实际的决策树学习算法是基于启发式算法,例如在每个节点进行局部最优决策的贪心算法。这样的算法不能保证返回全局最优决策树。这个问题可以通过集成学习来训练多棵决策树来缓解,这多棵决策树一般通过对特征和样本有放回的随机采样来生成。
(4)有些概念很难被决策树学习到,因为决策树很难清楚的表述这些概念。例如XOR,奇偶或者复用器的问题。
(5)如果某些类在问题中占主导地位会使得创建的决策树有偏差。因此,我们建议在拟合前先对数据集进行平衡。
(1)当数据的特征维度很高而数据量又很少的时候,这样的数据在构建决策树的时候往往会过拟合。所以我们要控制样本数量和特征的之间正确的比率;
(2)在构建决策树之前,可以考虑预先执行降维技术(如PCA,ICA或特征选择),以使我们生成的树更有可能找到具有辨别力的特征;
(3)在训练一棵树的时候,可以先设置max_depth=3来将树可视化出来,以便我们找到树是怎样拟合我们数据的感觉,然后在增加我们树的深度;
(4)树每增加一层,填充所需的样本数量是原来的2倍,比如我们设置了最小叶节点的样本数量,当我们的树层数增加一层的时候,所需的样本数量就会翻倍,所以我们要控制好树的最大深度,防止过拟合;
(5)使用min_samples_split(节点可以切分时拥有的最小样本数) 和 min_samples_leaf(最小叶节点数)来控制叶节点的样本数量。这两个值设置的很小通常意味着我们的树过拟合了,而设置的很大意味着我们树预测的精度又会降低。通常设置min_samples_leaf=5;
(6)当树的类比不平衡的时候,在训练之前一定要先平很数据集,防止一些类别大的类主宰了决策树。可以通过采样的方法将各个类别的样本数量到大致相等,或者最好是将每个类的样本权重之和(sample_weight)规范化为相同的值。另请注意,基于权重的预剪枝标准(如min_weight_fraction_leaf)将比不知道样本权重的标准(如min_samples_leaf)更少偏向主导类别。
(7)如果样本是带权重的,使用基于权重的预剪枝标准将更简单的去优化树结构,如mn_weight_fraction_leaf,这确保了叶节点至少包含了样本权值总体总和的一小部分;
(8)在sklearn中所有决策树使用的数据都是np.float32类型的内部数组。如果训练数据不是这种格式,则将复制数据集,这样会浪费计算机资源。
(9)如果输入矩阵X非常稀疏,建议在调用fit函数和稀疏csr_matrix之前转换为稀疏csc_matrix,然后再调用predict。 当特征在大多数样本中具有零值时,与密集矩阵相比,稀疏矩阵输入的训练时间可以快几个数量级。
8. 决策树算法原理是什么
决策树构造的输入是一组带有类别标记的例子,构造的结果是一棵二叉树或多叉树。二叉树的 内部节点(非 叶子节点)一般表示为一个逻辑判断,如形式为a=aj的逻辑判断,其中a是属性,aj是该属性的所有取值:树的边是逻辑判断的分支结果。
多叉树(ID3)的内部结点是属性,边是该属性的所有取值,有几个 属性值就有几条边。树的叶子节点都是类别标记。
由于数据表示不当、有噪声或者由于决策树生成时产生重复的子树等原因,都会造成产生的决策树过大。
因此,简化决策树是一个不可缺少的环节。寻找一棵最优决策树,主要应解决以下3个最优化问题:①生成最少数目的叶子节点;②生成的每个叶子节点的深度最小;③生成的决策树叶子节点最少且每个叶子节点的深度最小。
决策树算法的优点如下:
(1)分类精度高;
(2)生成的模式简单;
(3)对噪声数据有很好的健壮性。
因而是目前应用最为广泛的归纳推理算法之一,在 数据挖掘中受到研究者的广泛关注。
9. 棋类游戏的算法有哪些
棋类游戏的算法有哪些
棋类游戏通常包含三大要素:棋盘、棋子和游戏规则,其中游戏规则又包括胜负判定规则、落子的规则以及游戏的基本策略。下面我来给大家讲讲各类棋类游戏的算法。
除了棋盘和棋子的建模,棋类游戏最重要的部分就是AI算法的设计。目前棋类游戏的AI基本上就是带启发的搜索算法,那么常用的搜索算法有哪些呢?
1. 博弈与博弈树
博弈可以理解为有限参与者进行有限策略选择的竞争性活动,比如下棋、打牌、竞技、战争等。根据参与者种类和策略选择的方式可以将博弈分成很多种,比如“二人零和、全信息、非偶然”博弈,也就是我们常说的零和博弈(Zero-sum Game)。所谓“零和”,就是有赢必有输,不存在双赢的结果。所谓“全信息”,是指参与博弈的双方进行决策时能够了解的信息是公开和透明的,不存在信息不对称的情况。比如棋类游戏的棋盘和棋子状态是公开的,下棋的双方都可以看到当前所有棋子的位置,但是很多牌类游戏则不满足全信息的条件,因为牌类游戏都不会公开自己手中的牌,也看不到对手手中的牌。所谓的“非偶然”,是指参与博弈的双方的决策都是“理智”的行为,不存在失误和碰运气的情况。
在博弈过程中,任何一方都希望自己取得胜利,当某一方当前有多个行动方案可供选择时,他总是挑选对自己最为有利同时对对方最为不利的那个行动方案。当然,博弈的另一方也会从多个行动方案中选择一个对自己最有利的方案进行对抗。参与博弈的双方在对抗或博弈的过程中会遇到各种状态和移动(也可能是棋子落子)的选择,博弈双方交替选择,每一次选择都会产生一个新的棋局状态。
假设两个棋手(可能是两个人,也可能是两台计算机)MAX和MIN正在一个棋盘上进行博弈。当MAX做选择时,主动权在MAX手中,MAX可以从多个可选决策方案中任选一个行动,一旦MAX选定某个行动方案后,主动权就转移到了MIN手中。MIN也会有若干个可选决策方案,MIN可能会选择任何一个方案行动,因此MAX必须对做好应对MIN的每一种选择。如果把棋盘抽象为状态,则MAX每选择一个决策方案就会触发产生一个新状态,MIN也同样,最终这些状态就会形成一个状态树,这个附加了MAX和MIN的决策过程信息的状态树就是博弈树(Game Tree)。
2. 极大极小值搜索算法
极大极小值(Min-Max)搜索算法是各种博弈树搜索算法中最基础的搜索算法。假如MAX和MIN两个人在下棋,MAX会对所有自己可能的落子后产生的局面进行评估,选择评估值最大的局面作为自己落子的选择。这时候就该MIN落子,MIN当然也会选择对自己最有利的局面,这就是双方的博弈,即总是选择最小化对手的'最大利益(令对手的最大利益最小化)的落子方法。作为一种博弈搜索算法,极大极小值搜索算法的名字就由此而来。
3. 负极大值搜索算法
博弈树的搜索是一个递归的过程,极大极小值算法在递归搜索的过程中需要在每一步区分当前评估的是极大值节点还是极小值节点。1975年Knuth和Moore提出了一种消除MAX节点和MIN节点区别的简化的极大极小值算法,称为负极大值算法Negamax。该算法的理论基础是:
max(a,b) = -min(-a, -b)
简单地将递归函数MiniMax()返回值取负再返回,就可以将所有的MIN 节点都转化为MAX节点,对每个节点的搜索都尝试让节点值最大,这样就将每一步递归搜索过程都统一起来。
4. “α-β”剪枝算法
有很多资料将“α-β”剪枝算法称为“α-β”搜索算法,实际上,它不是一种独立的搜索算法,而是一种嫁接在极大极小值算法和负极大值算法上的一种优化算法。“α-β”剪枝算法维护了一个搜索的极大极小值窗口:[α,β]。其中α表示在搜索进行到当前状态时,博弈的MAX一方所追寻的最大值中最小的那个值(也就是MAX的最坏的情况)。在每一步的搜索中,如果MAX所获得的极大值中最小的那个值比α大,则更新α值(用这个最小值代替α),也就是提高α这个下限。
而β表示在搜索进行到当前状态时,博弈的MIN一方的最小值中最大的那个值(也就是MIN的最坏的情况)。在每一步的搜索中,如果MIN所获得的极小值中最大的那个值比β小,则更新β值(用这个最大值代替β),也就是降低β这个上限。当某个节点的α≥β时,说明该节点的所有子节点的评估值既不会对MAX更有利,也不会对MIN更有利,也就是对MAX和MIN的选择不会产生任何影响,因此就没有必要再搜索这个节点及其所有子节点了。
5. 估值函数
对于很多启发式搜索算法,其“智力”的高低基本上是由估值函数(评估函数)所决定,棋类游戏的博弈树搜索算法也不例外。
估值函数的作用是把一个棋局量化成一个可直接比较的数字,这个数字在一定程度上能反映取胜的概率。棋局的量化需要考虑很多因素,量化结果是这些因素按照各种权重组合的结果。这些因素通常包括棋子的战力(棋力)、双方棋子占领的空间、落子的机动性、威胁性(能吃掉对方的棋子)、形和势等。
6. 置换表与哈希函数
置换表(transposition table)也是各种启发式搜索算法中常用的辅助算法,它是一种以空间换时间的策略,使用置换表的目的就是提高搜索效率。一般情况下,置换表中的每一项代表者一个棋局中最好的落子方法,直接查找置换表获得这个落子方法能避免耗时的重复搜索,这就是使用置换表能大幅提高搜索效率的原理。
使用置换表最大的问题是置换表的组织和查找的效率。一般来说,置换表越大,查找的命中率就越高。但这个关系不是绝对的,当置换表大小达到一定规模后,不仅不会再提高命中率,反而会因为耗时的查找操作影响算法的效率。所以置换表不是越大越好,需要根据计算机的性能以及搜索的深度选择一个合适的大小。此外,为了查找操作更高效,通常都会用可直接访问的哈希表方式组织置换表,哈希函数的性能就成为影响置换表性能的重要因素。棋类游戏普遍采用Zobrist哈希算法。
10. 游戏场景管理的八叉树算法是怎样的
八叉树(octree)是三维空间划分的数据结构之一,它用于加速空间查询,例如在游戏中: 加速用于可见性判断的视锥裁剪(view frustum culling)。加速射线投射(ray casting),如用作视线判断或枪击判定。 邻近查询(proximity query),如查询玩家角色某半径范围内的敌方NPC。碰撞检测的粗略阶段(broad phase),找出潜在可能碰撞的物体对。总括而言,前3个应用都是加速一些形状(frustum、ray、proximity shape如球体)的相交测试(intersection test)。这种做法是adaptive的,就是说按照一定的条件(叶节点只能有一个点)来进行分割。实际上,我们可以设置其他条件去决定是否分割一个叶节点,例如节点内的点超过10个,或是最多分割4层就不再分割等等。在分割时,我们只需检查点是在每个轴的哪一方,就能知道该点应放置在哪个新的节点里。建立了一个四/八叉树之后,我们可以得出一个重要特性: 如果一个形状S与节点A的空间(正方形/立方体)不相交,那么S与A子树下的所有点都不相交。那么,在相交测试中,我们可以从根节点开始,遍历四/八叉树的节点,如节点相交就继续遍历,如不相交就放弃遍历该子树,最后在叶节点进行形状与点的相交测试。这样做,一般能剔除许多点,但注意最坏的情况是所有点集中在一起,那么就不起加速作用。因此,除了传统的四/八叉树实现,也可以参考一些更新的技术。