晚上好,我想知道是否有人可以为我提供一个确定性算法的简单伪代码示例......我将不胜感激,一定会给你加分!!。谢谢
问问题
25410 次
5 回答
5
对我来说,“确定性”可能意味着很多事情:
- 给定相同的输入,每次都产生相同的输出。
- 给定相同的输入,每次运行都需要相同的时间/内存/资源。
P
可以通过确定性计算机在多项式时间内解决的复杂性类问题,而不是只能NP
使用非确定性计算机在多项式时间内解决的复杂性类问题。
你是指这些中的哪一个?
最简单的确定性算法就是这个随机数生成器。
def random():
return 4 #chosen by fair dice roll, guaranteed to be random
它每次都给出相同的输出,展示已知的O(1)
时间和资源使用情况,并在PTIME
任何计算机上执行。
于 2012-04-17T13:37:59.137 回答
1
你真的是说 DETERMINISTIC 而不是 NONdeterministic,我的意思是你在任何教程/指南/入门书中看到的几乎所有东西都是确定性的,例如
for i from 1 to 9
print i
将始终打印 123456789
于 2012-04-17T12:55:46.900 回答
0
这是检查给定数字是否为奇数的确定性算法的伪代码:
function is_odd(n):
if n mod 2 = 1
then return true
else return false
于 2012-04-17T12:57:09.640 回答
0
确定性算法是一种算法,用非正式的术语来说,其行为是可预测的。给定一个特定的输入,它总是会产生相同的输出
public struct Point {
public int x;
public int y;
//other methods
public override int GetHashCode() {
return x ^ y;
}
}
Point P=new Point();
p.x=6;
p.y=3;
int res= p.GetHashCode();
于 2012-04-17T13:03:08.300 回答
0
确定性算法只是具有预定义输出的算法。例如,如果您正在对严格排序的元素(不相等元素)进行排序,则输出定义明确,因此算法是确定性的。
事实上,大多数计算机算法都是确定性的。当您有一些并行化或一些仅根据某些非完整标准相等的元素时,通常会出现不确定性。
于 2012-04-17T12:55:39.473 回答