|
本帖最后由 hbghlyj 于 2021-12-30 15:11 编辑 Tarski-Seidenberg 定理: 由多项式方程和不等式的布尔组合定义的 $n+1$ 维空间中的集合投影到 $n$ 维空间得到的集合仍然可以由多项式方程和不等式的布尔组合定义。
这意味着在 $\mathbf R$ 上量词消去的可行性,也就是说,每个由多项式方程和不等式由逻辑连接词 ∨、∧、¬ 和量词 ∀、∃ 构成的公式可以等于一个不含量词的类似公式。一个重要的结果是实闭域理论的可判定性。尽管定理的原始证明是构造性的,但由此产生的算法的计算复杂度太高了。 George E. Collins 引入了柱形代数分解算法(CAD, cylindrical algebraic decomposition, paper),该算法允许在双指数时间内对实数进行量词消去。这个复杂性是最佳的,因为有一些例子显示输出具有双指数数量的胞腔1。因此,该算法是计算代数几何的基本算法。 量词消去是指从 Tarski 公式中消除量词,Tarski 公式是多项式方程和不等式的布尔组合。变量 $x_1,..., x_k$ 的Tarski 公式的原子公式的形式为 $f(x_1, ..., x_k)\ \text{s}\ g(x_1, ..., x_k)$,其中 $f$ 和 $g$ 是整系数多项式,$\text{s}$ 是关系运算符 >,<,=,≠,≥,≤ 之一。$\mathbf R^n$中的一个半代数集是由 Tarski 公式定义的集合。投影是指一个映射$π:\mathbf R^{n+1}\to\mathbf R^n$,$(x_1, ...,x_n,x_{n+1})\mapsto(x_1, ...,x_n)$.
Tarski-Seidenberg 定理是说: 集合 $X$ 是$\mathbf R^{n+1}$中的一个半代数集 ($n≥1$),则 $π(X)$ 是$\mathbf R^{n}$中的一个半代数集。 代数集是由多项式方程的布尔组合定义的集合。如果将定理中的半代数集替换为代数集则不成立,例如 $\mathbf R^2$ 中的一个代数集 $\{(x,y)|xy=1\}$ 投影到 $\mathbf R$ 上变成了 $\{x|x≠0\}$,它是一个半代数集而不是代数集。
我们可以利用软件 tarski 计算 Tarski 公式和半代数集,用 QEPCAD 计算量词消去。
扩展 Tarski 公式(ETF, Extended Tarski Formula)的范围大于简单的 Tarski 公式,它仍然准确地定义了半代数集,但它描述某些集比简单的 Tarski 公式更容易,使 QEPCAD 更有效地计算。
QEPCAD 中输入和输出公式的语言是受限 ETF 语言(Restricted ETF),它是 ETF 的一个子集,但它仍然是 Tarski 公式语言的超集。这里我们只给出一个非正式的定义。
受限 ETF 语言与 Tarski 公式相比,多了对于称为根索引表达式(indexed root expression)的原子公式的支持。根索引表达式形如$x_k \text{ s root}_jf(x_1, ..., x_k)$,其中 $f$ 是整系数多项式,$j$ 是非零整数,$\rm s$ 是关系运算符 >,<,=,≠,≥,≤ 之一,其真值定义为: 若 $n\lt k$,则该原子公式的真值由 $a_k\text{ s }b$ 给出,其中 $b$ 是 $f(x_1,...,x_{k-1},x_k)$ 的第 $|j|$ 个根,如果 $j\gt0$,则从最小到最大排序,否则从最大到最小排序; 若 $n≥k$,该原子公式在点 $(a_1,...,a_n)$ 处为假,如果多项式 $f(a_1,...,a_{k-1},x_k)$ 的不同实数根少于 $k$ 个。请记住,在 CAD 构造问题中,$x_a < x_2 < ... < x_k$ 的变量有一个假定的顺序。该顺序是此定义的一部分!
索引根表达式及其定义的集合的一些示例
[ x2 > _root_1 x1^2 + x2^2 - 1 ] |
rectangle(1,2);%0D%0A%5Cdraw%5Bred,line%20width=1.5,fill=blue!50!white%5D%20circle(1);%0D%0A%5Cdraw%5Bhelp%20lines%5D(-2,-2)rectangle(2,2);%0D%0A%5Cdraw%20(-1,-2)--(-1,2)%20(1,-2)--(1,2);%0D%0A%5Cend%7Btikzpicture%7D) |
A simple example in the extended language - the cells
colored blue are in the set defined by the formula |
[ x2 > _root_-2 (x1^2 + x2^2)^4 -
7 x1^6 x2 + 35 x1^4 x2^3 -
21 x1^2 x2^5 + x2^7 ] |
(-0.60329,%200.99091)%20(-0.48669,%200.7377)%20(-0.30467,%200.42464)%20(0,0)%7D;%0D%0A%5Cfilldraw%5Bblue!50!white%5Dplot%20%5Bsmooth%20cycle%5D%20coordinates%20%7B(0.67,%201.32812)(0.60329,%200.99091)%20(0.48669,%200.7377)%20(0.30467,%200.42464)%20(0,0)%7D;%0D%0A%5Cfilldraw%5Bblue!50!white%5Dplot%5Bcycle%5Dcoordinates%7B(0.7,%201.32812)(0,0)(-0.7,%201.32812)(-0.7,2)(0.7,2)%7D;%0D%0A%5Cfilldraw%5Bblue!50!white%5Dplot%20%5Bsmooth%20cycle%5D%20coordinates%20%7B(-1.455,.3)(-1.31785,%200.19)(-1.2,%200.14)(-0.98202,%200.09)(-0.67,0.04449)%7D;%0D%0A%5Cfilldraw%5Bblue!50!white%5Dplot%20%5Bsmooth%20cycle%5D%20coordinates%20%7B(1.455,.3)(1.31785,%200.19)(1.2,%200.14)(0.98202,%200.09)(0.67,0.04449)%7D;%0D%0A%5Cfilldraw%5Bblue!50!white%5Dplot%5Bcycle%5Dcoordinates%7B(-1.455,2)(-1.455,.3)(-0.67,0.04449)(-0.67,2)%7D;%0D%0A%5Cfilldraw%5Bblue!50!white%5Dplot%5Bcycle%5Dcoordinates%7B(1.455,2)(1.455,.3)(0.67,0.04449)(0.67,2)%7D;%0D%0A%5Cdraw%5Bsmooth,line%20width=1.5,red%5D%20plot%5Bdomain=0:180,samples=200%5D%20(%7B%5Cx%7D:%7B1.5*sin(7*%5Cx)%7D);%0D%0A%5Cdraw(-1.45,2)--(-1.45,-2)%20(1.45,2)--(1.45,-2)%20(-1.2,2)--(-1.2,-2)%20(1.2,2)--(1.2,-2)%20(-.7,2)--(-.7,-2)%20(.7,2)--(.7,-2)%20(-.12,2)--(-.12,-2)%20(.12,2)--(.12,-2);%0D%0A%5Cdraw%5Bhelp%20lines%5D(-2,-2)rectangle(2,2);%0D%0A%5Cend%7Btikzpicture%7D) |
Sometimes the sets defined by indexed root expressions
are a bit odd! |
1 CAD是将 $\mathbf R^n$ 分成若干连通的半代数集,称为胞腔,使得每个多项式在单个胞腔内的符号恒定,并且满足,对于 $1≤k\lt n$, $π$ 是从 $\mathbf R^n$ 到 $\mathbf R^{n−k}$ 的投影(即删除末尾的 $k$ 个坐标),那么对于每对单元格 $c$ 和 $d$,要么 $π(c) = π(d)$ 要么 $π( c) ∩ π(d) = ∅$(这意味着胞腔的投影是 $\mathbf R^{n-k}$ 的一个柱形分解) |
|