大贤者
精华
|
战斗力 鹅
|
回帖 0
注册时间 2007-6-5
|
引用第16楼mhfdt于2013-06-29 10:35发表的 :
简单的用人文一点的语言来概括吧,就是计算机它归根结底只认得1和0,你扔一块橡皮,9.8m/s^2掉地上了理所当然但是电脑它无法理解——它唯一能做的就是把1变成0,或者把0变成1,而通过计算机语言,将这种1和0的变化多样化,复杂化,然后你可以让电脑明白,好的,一个物体自由落体是这么回事,那么以此类推举一反三。所谓“模拟地球”,所做的就是这么一个多样化,复杂化的工作。但是这个工作并不是想当然的。你想让电脑完全的模拟现实物理,就得让它明白现实中的物理到底是怎么运作的。就现实而言,但凡是物理现象往细里分肯定是要研究到分子层面的,那么同样的,你就得先从分子间的作用教起。当电脑明白这是怎么一回事的时候,它就会开始模拟——从分子级别开始,一个分子,两个分子,三个分子……一直到结束。一个物体有多少个分子,就这么从头到尾模拟多少次,如果这么搞,再厉害的电脑也没法做出及时的响应。
当然,上面这个例子是一种只会被拿来做反面教材的蠢方法,而且事实上商业用的物理引擎也绝不会从这个角度出发来编写。在算法学中,有着“复杂度”这么一个概念,简单的说,就是为求得一个结果,需要计算多少次。一般来说对于一个程序,最优结果是复杂度为1,而最差结果复杂度为n的n次方——当这个n的值相当大时,即使是如今的超级电脑也是没有能力承受的。
而现在物理引擎一方面就是算法的设计,如何让计算更为简便快速,并且统一化(不同的材质表现就不同算法自然不同);另一方面就是概念上的创新——如果只是追求表现上的逼真,自然是根本没必要去纠结分子什么的,直接告诉电脑,遇到这种东西发生这种情况会变成怎么样就行了——或者直接等那个传说中的量子计算机登台亮相,就不用像现在这么头疼了。
.......  计算机不是只能理解0,1。0,1只是计算机识别的基础罢了,计算机的识别力等价于递归可枚举语言的描述力,这个还是相当强大的,人文一点就是你能给个公式算的,计算机都能理解。
你举的自由落体例子不好,自由落体的数学公式计算机是完全可以理解的。可计算的问题计算机都可以理解,和物理模拟有关的理论上计算机都可以搞(抛开物理自己都搞不清楚的部分,比如量子力学,模拟下大尺度的确定性规则没什么问题),只是复杂度问题,主要的瓶颈在这里。复杂度是没有上限的,n的n次幂之上还有n的n次幂的n次幂等等……不过一旦变成多项式搞不定的NP问题,基本上没啥差别了反正做不出来……
计算机不能理解是“美丽”、“强壮”、“头发稀疏”这类模糊的东西,现在也没啥好的解决方案,提取几个特征值,然后像训练宠物一样反复对机器训练,比如把人的体重、身高、臂展等输入计算机,根据一个公式算,算出来结果是瘦还是胖。更进一步如果计算机给的答案是错的,那就反馈给它,他自动调整结果,反复N次以后识别率就会好一点。是我看这方面文献时候的主流做法,现在搞成啥样了不清楚。 |
|