您的位置:首页 > 理论基础

物理复杂度为O(1),但是计算机没法实现的算法

2015-03-24 10:19 113 查看
本文收集一些物理复杂度是O(1),但是计算没法在此复杂度下实现的某些有趣的算法。

1、珠排序

首先了解下基本概念:



图1
图1的两个数据3和2,分别用两颗珠子表示,每个珠子叫做bead,如此,N可以用N个bead来表示之。



图2
图2中(a)表示了2个数据4和3,现在将这两个数字的珠子连成串,就像算盘一样,垂直方向的线可以想象成算盘上链接算盘珠的细杆,珠排序的思想就是让这样的物理结构作垂直落体运动,(a)中4的最后一个珠子会落到数字3最后一个珠子的后面,即(b),这样就得到了一个排序,同样的,(c)排序3,2,4,2,得到的结构如(d)。理想情况下,这种算法的复杂度为O(1),因为每个珠子都是独立的,能不能下落取决于下方有没有空间,整个算法过程需要重力支持,是在物理层面上的。
O(1)的复杂度在计算机上是没法实现的,依个人之见,是因为计算机是没法根据重力来判断,计算机解决的模型一定是某种数学模型,类似这样的物理模型是没法转换到某种数学模型上,因此计算机没法实现之。

2、最短路径算法
最短路径算法也是古老的算法问题,几乎每本算法书都有讲解之,这里也不多说。这里我们在物理上能不能有一种复杂度为O(1)的算法。假设把每个节点想成一个球,节点之间的权值想成球与球之间用线连接的线长,找到两点的最短路径,我们只要把头节点(source)和尾节点(sink)用力拉直,那么处在直线上的球就是最短路径经过的节点。
这很符合物理规律,不过在计算机上却没法用O(1)实现。

未完待续...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐