第42行: |
第42行: |
| * 由 <math>\div</math> 组成的分支:对于任意 <math>(a \div b)</math>,如果 <math>\nu(b) \neq 0</math>,则 <math>\nu((a \div b)) = \nu(a) / \nu(b)</math>。 | | * 由 <math>\div</math> 组成的分支:对于任意 <math>(a \div b)</math>,如果 <math>\nu(b) \neq 0</math>,则 <math>\nu((a \div b)) = \nu(a) / \nu(b)</math>。 |
| | | |
− | 我们称算术表达式 <math>a</math> 是''可求值''的(evaluable),如果 <math>\nu(a)</math> 有定义。除非另有说明,下文中我们只讨论可求值的算术表达式。 | + | 我们称算术表达式 <math>a</math> 是''可估值''的(evaluable),如果 <math>\nu(a)</math> 有定义。除非另有说明,下文中我们只讨论可估值的算术表达式。 |
| | | |
− | 给定任意算术表达式 <math>a</math>(无论是否可求值),我们都可以得到它的树形表示。若一个节点 <math>l</math> 为叶节点,它对应的子表达式 <math>s</math> 是一个数字,因此我们将其视为已经“求过值”。若一个节点 <math>b</math> 为分支节点,对应的子表达式 <math>s</math> 是一个表达式,此时我们可以对它应用 <math>\nu</math> 得到一个数 <math>\nu(s)</math>。通过一个自底向上的递归求值过程,子表达式可以一个接一个地被求值,直到得到最终的表达式估值。 | + | 给定任意算术表达式 <math>a</math>(无论是否可估值),我们都可以得到它的树形表示。若一个节点 <math>l</math> 为叶节点,它对应的子表达式 <math>s</math> 是一个数字,因此我们将其视为已经“已估值”。若一个节点 <math>b</math> 为分支节点,对应的子表达式 <math>s</math> 是一个表达式,此时我们可以对它应用 <math>\nu</math> 得到一个数 <math>\nu(s)</math>。通过一个自底向上的递归估值过程,子表达式可以一个接一个地被估值,直到得到最终的表达式估值。 |
| | | |
| 但是一般来讲,表达式的估值顺序通常并不唯一。 | | 但是一般来讲,表达式的估值顺序通常并不唯一。 |
| | | |
− | '''定义:''' 对一个算术表达式 <math>a</math> 的''求值顺序'',指的是对其树形表示中所有分支节点进行的一种排序方式,使得每个子节点(子表达式)都在其父节点之前被求值。 | + | '''定义:''' 对一个算术表达式 <math>a</math> 的''估值顺序'',指的是对其树形表示中所有分支节点进行的一种排序方式,使得每个子节点(子表达式)都在其父节点之前被估值。 |
| | | |
− | 例如,对于上图中的算术表达式,其可能的求值顺序包括:
| + | 例如,对于上图中的算术表达式,其可能的估值顺序包括: |
| | | |
| * <math>1 \times 2 \rightarrow \underline{2}; \underline{2} \times 2 \rightarrow \underline{4}; \underline{4} - 1 \rightarrow \underline{3}; 2 + 1 \rightarrow \underline{3}; \underline{3} \times \underline{3} \rightarrow \underline{9}; \underline{9} - 6 \rightarrow 3</math> | | * <math>1 \times 2 \rightarrow \underline{2}; \underline{2} \times 2 \rightarrow \underline{4}; \underline{4} - 1 \rightarrow \underline{3}; 2 + 1 \rightarrow \underline{3}; \underline{3} \times \underline{3} \rightarrow \underline{9}; \underline{9} - 6 \rightarrow 3</math> |
第56行: |
第56行: |
| * <math>1 \times 2 \rightarrow \underline{2}; 2 + 1 \rightarrow \underline{3}; \underline{2} \times 2 \rightarrow \underline{4}; \underline{4} - 1 \rightarrow \underline{3}; \underline{3} \times \underline{3} \rightarrow \underline{9}; \underline{9} - 6 \rightarrow 3</math> | | * <math>1 \times 2 \rightarrow \underline{2}; 2 + 1 \rightarrow \underline{3}; \underline{2} \times 2 \rightarrow \underline{4}; \underline{4} - 1 \rightarrow \underline{3}; \underline{3} \times \underline{3} \rightarrow \underline{9}; \underline{9} - 6 \rightarrow 3</math> |
| * <math>2 + 1 \rightarrow \underline{3}; 1 \times 2 \rightarrow \underline{2}; \underline{2} \times 2 \rightarrow \underline{4}; \underline{4} - 1 \rightarrow \underline{3}; \underline{3} \times \underline{3} \rightarrow \underline{9}; \underline{9} - 6 \rightarrow 3</math> | | * <math>2 + 1 \rightarrow \underline{3}; 1 \times 2 \rightarrow \underline{2}; \underline{2} \times 2 \rightarrow \underline{4}; \underline{4} - 1 \rightarrow \underline{3}; \underline{3} \times \underline{3} \rightarrow \underline{9}; \underline{9} - 6 \rightarrow 3</math> |
− | 其中带有下划线的数字表示在求值过程中得到的中间结果。
| + | 其中带有下划线的数字表示在估值过程中得到的中间结果。 |
| | | |
| ==参考文献== | | ==参考文献== |
| | | |
| 本节的内容主要来自苑明理的[https://github.com/mountain/aeg-paper 研究手稿]。 | | 本节的内容主要来自苑明理的[https://github.com/mountain/aeg-paper 研究手稿]。 |