2012-04-17 98 views
1

晚上好,我想知道如果有人能给我提供一个确定性算法的简单伪代码示例...我将非常感谢它,并肯定给你点!谢谢确定性算法的示例?

+0

你为什么要伪代码? – 2012-04-17 13:39:39

回答

0

确定性算法只是一个具有预定义输出的算法。例如,如果您对严格排序的元素进行排序(不包含相同的元素),则输出定义良好,因此算法是确定性的。

实际上大部分计算机算法都是确定性的。根据某些非完整标准,不确定性通常会随着某种并行化或某些相等的元素而变化。

1

你真的是指DETERMINISTIC而不是NONdeterministic,我的意思几乎你在任何教程/指南/起始书中看到的东西都是确定性的,例如,

for i from 1 to 9 
    print i 

将始终打印123456789

0

下面是一个确定性的算法来检查一个给定的数是否为奇数伪代码:

function is_odd(n): 
    if n mod 2 = 1 
    then return true 
    else return false 
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(); 
5

对我来说,“确定性”可能意味着很多东西:

  • 给出相同的输入,产生相同的输出每次。
  • 给定相同的输入,每次运行时都需要相同数量的时间/内存/资源。复杂类P
  • 问题能够在多项式时间内通过一个确定性计算机来解决,而不是其可在多项式时间内使用非确定性计算机仅解决了复杂性类NP的问题。

你是指哪一个?

最简单的确定性算法是random number generator

def random(): 
    return 4 #chosen by fair dice roll, guaranteed to be random 

它每次给出相同的输出,显示出公知的O(1)时间和资源使用,并且在PTIME任何计算机上执行。