有意思的东西:多维数组、矩阵与宇宙模型

数组,在编程中一种非常有用并且非常重要的概念。一般书上在介绍数组时只介绍一维数组和二维数组的应用,一般很少讲到三维数组,因为一般书上把三维和三维以上的数组定义成为多维数组,是可以按二维数组概念的处理方式类推的,所以不会太多的介绍。二维数组容易理解,有人在理解的时候,就把它看成是一个有坚和横电子表格;三维数组也容易理解,有人就直接把它想象成一个立体的空间,就像立体解析几何一样去理解它。四维有人可以想象出模型来,有人就想象不出来了。想象不出模型来,他就学不下去了。那还有五维、六维……十维……百维呢?应该如何去理解这种空间上的模型呢?

当然想象不出这种模型空间模型,并不是说一定会影响他的使用。因为数组一层一层的嵌套方式是不会变的,所以算法也不会变,无法理解也不影响使用。就像数学公式一样,不理解概念没关系,套公式那是人人都会的。今天就想写写多维数组,因为我觉的它是一个很有意思的东西。看完这篇文章,希望多少可以让有些不理解人可以理解多维数组是个什么样的空间模型(并不是多维数组的概念,但它包含了多维数组的概念)。

有个故事,原文忘了,大概意思如下:一只甲虫在圆桌上面爬行,爬到了桌子的边沿,就认为到了世界的边沿。因为甲虫是一种二维生物,他没有上下空间感,只有前后左右空间感。于是甲虫沿着桌子的边沿开始爬行,因为桌子是圆的(就算是方的也无所谓),它怎么爬也爬不到尽头,不停的在桌子上面打转。但人不一样,人是有三维空间感的,所以人们感觉这甲虫很可笑。看过相对论的人笑了,这不就是相对论吗。是的,这就是《爱因斯坦传记》中广义相对论中的一个比方。

有些人只有三维空间感,而有些人他有四维感,可以把空间和时间结合起来思考,把空间想象成一个一个的立体矩形,又被一条时间直线所连接。也就是所有的空间都成了这条一条直线上的“点”,每一个时间线上面的“点”就是一个独立的宇宙3维空间。

重新把上面的故事整理:对于一个人来说,因为有三维空间意识,所以理解一维,二维,三维并不难,理解四维其实也不难。无非就是一系列的空间重新组成了一条直线,而这条直线上的每一个“点”,都是一个独立的静态空间。如果理解了四维,那五维和六维等也就好理解了,这样连续的空间组合成了一条直线,那么如果我有第二条这样的直线呢?这一条直线与前一条直线是平行的。这其实就是五维。

有人就想不通了,这二条时间线不是分别包含了三维空间吗。二个三维空间加起来不就成了六维了?那问二个二维数组嵌套成为三维数组呢还是四维数组呢?当然是三维数组了。有人出问题就出在这里,没有平行概念。如果还想不通,那问一个一维数组里面包含二个元素,那可以把它认为是二维吗?它当然还是一维。否则一个一维数组包含十个元素就成了十维,包含百个元素就成百维了。这些元素是并列和平行的关系,所以它还是一维。想的通的看下面,已经开始想不通的就继续看上面的故事吧。

同样,二条平行的时间线(每条时间线都是由一个独立的空间连续组成)组成了五维,那么再多的平行直线它还是五维,就算有一百条这样的平行时间线,它还是五维。这就是五维的空间模型。可以把这些平行直线想象成为横的无限长的直线条(也可以把它想象成为固定长度的,就是从宇宙开始诞生,到现在的时间条),可以只有一条,也可以有许多条,也就是一般人所说的平行宇宙了。当你把这些平行的横向的时间线看成一个点时,这样的点又可以有许多,也就是好几个平行宇宙构成了一个点,又有好几个平行宇宙构成了另一个点,又有一些平行宇宙构成了第三个点等等,这时候它就成了六维的空间模型了。

那么到了这里就可以想象出什么是七维、八维等概念了。当然我这里的只用了空间三维加时间来说明,事实上另一维不一定用时间也可以。单纯的从空间上把一个无限大的三维空间想象成为一个独立空间的“点”也可以,也可以把这个无限大的三维空间想象成为另一个无限大的三维空间上面的点,这时候其实就是直接从三维模型跳到了六维模型(是跳过了前面的四维、五维,所谓的四维五维其实就是有点转成线的过程)。就算是一个百维的无限大空间一样可以重新缩小到一个点,然后由这样同样的点,重新组成一条直线或一个平面。

二维数组,多维数组的概念其实就是来自这样的空间模型。因为人是很容易理解这种二维的平面空间和三维的立体空间,四维的立体空间的。也是和数学上的矩阵类似,一个矩阵本身是可以成为另一个矩阵的运算元素的。但是从上面开始写到这里,还是一直处在静态空间元素方式中。真实的宇宙模型远远比这个复杂。如果从一开始每一个维中的点元素重新放大,把它看成是立体空间,并且这个立体空间是动态的呢?比如一个空间可以随机改变它的重力方向,一个人一会儿掉在了地面,一会儿掉在了天花上,一会儿又掉在左边的墙上,一会儿又掉在右边的墙上,这听起来很奇怪。但事实上真正的动态空间远比这种重力方向的改变要更复杂。就像一个庞大的数组是数百维的,在建立的时候它的每个元素都是不确定的,是可以动态改变的,所以这时候的情况远比一个数百维的静态数组要复杂的多的多。

posted @ 2011-12-05 23:46  神牛  阅读(507)  评论(0编辑  收藏  举报