物理复杂度为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)实现。
未完待续...
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)实现。
未完待续...
相关文章推荐
- 数学、物理算法ActionScript实现(1)
- 数学、物理算法ActionScript实现(2)
- perfect shuffle 算法的一个线性复杂度实现
- 有N个正实数(注意是实数,大小升序排列) x1 , x2 ... xN,另有一个实数M。 需要选出若干个x,使这几个x的和与 M 最接近。 请描述实现算法,并指出算法复杂度
- 计算计算机网络的可靠度---因子定理计算网络可靠度的算法C#代码实现
- Template Method 在一个方法中实现一个算法,但是推迟定义算法中的某些步骤,从而使其他的类可以重新定义这些步骤
- 9.KMP模式匹配算法实现o(n)复杂度的匹配
- 【计算机的物理实现】二极管的特性、主要参数、命名规则
- 【计算机的物理实现】PN结的电容效应
- 计算机是物理实现是多种多样的
- 每天学习一算法系列(5)(已知两个数组,数组里的元素有正有负,但是都是按照从小到大已经排好序,要求用尽可能小的时间复杂度编写一算法求出两个数组的最大交集)
- perfect shuffle 算法的一个线性复杂度实现
- perfect shuffle 算法的一个线性复杂度实现
- 计算机操作系统调度算法,C++实现FSFS,SJF,RR,多级反馈队列算法
- 【计算机的物理实现】PN结的单向导电性
- 数学、物理算法ActionScript实现(1)
- perfect shuffle 算法的一个线性复杂度实现
- 【计算机的物理实现】什么是半导体
- 请实现两棵树是否相等的比较,相等返回0,否则返回其他值,并说明算法复杂度。
- 最大子段和算法 不同复杂度方法实现