Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 下一个语法的复杂性是什么_Algorithm_Parsing_Notation_Catalan - Fatal编程技术网

Algorithm 下一个语法的复杂性是什么

Algorithm 下一个语法的复杂性是什么,algorithm,parsing,notation,catalan,Algorithm,Parsing,Notation,Catalan,我正在开发一个通用解析算法,并用下一个规则对其进行测试 S ::= a | SS 这个算法向我展示了为na组成的字符串生成的所有树 例如,下表显示了由于a的数量,算法使用的时间 length trees time(ms) 1 1 1 2 1 1 3 2 2 4 5 2 5 14 2 6 42 2 7 132 5 8

我正在开发一个通用解析算法,并用下一个规则对其进行测试

S ::= a | SS
这个算法向我展示了为
na
组成的字符串生成的所有树

例如,下表显示了由于
a
的数量,算法使用的时间

length  trees   time(ms)
1           1   1
2           1   1
3           2   2
4           5   2
5           14  2
6           42  2
7           132 5
8           429 13
9           1430    28
10          4862    75
11          16796   225
12          58786   471
13          208012  1877
14          742900  10206
我不知道我的算法是什么。我如何测量它,因为时间当然取决于三件事:

  • 要分析的字符串的长度
  • 语法复杂性
  • 算法的性能

  • Big-O不是度量运行时间的问题;这就是剖析。Big-O是一个算法分析的问题,如果没有看到算法,这是不可能的


    广义地说,将算法分解为基本操作、循环和递归调用。基本操作具有定义的定时(通常为O(1))。循环的计时是迭代次数乘以循环体的计时。递归更为棘手:您必须根据递归关系定义时间,然后求解一个显式的解决方案。查看可以提供关于显式解决方案可能是什么的提示。

    S可以匹配所有a的任何字符串


    任何具有n个叶节点的二叉树都可以是解析树,此类树的数量由给出。

    我们也不知道其复杂性,因为您没有发布算法。但很明显,您有可能有一个实现,结果非常糟糕。问题不一定在于算法、思想,而在于语法本身。合适的语法预处理器可以将其改写为更自然的形式

    S ::= a | a S
    

    这将更有效地处理。

    更适合白板问题(如Big-O分析)。确保你发布了足够的算法来分析。当然!但是,通过这种方式,我改变了它的含义,并记住,我正在尝试创建一个算法,我认为这是一个非常缓慢的方法,因为它增长太多。很好,通过在许多运行中显示的图形(元素数与时间或操作数)可以了解算法的行为这个算法是指数型的,我不喜欢it@yuryeuceda:这是评测,不是Big-O,因为它只针对特定的输入,可能只代表最佳情况、平均情况或更糟的情况。大O是分析的结果,而不是测量的结果。