代数几何:Affine Variety 和 Groebner Basis

本文参考书籍:Ideals, Varieties, and Algorithms (4th ed.) [Cox, Little & O’Shea 2015-06-14]

Affine Sapce

给定域 k k k,正整数 n n n,定义 k k k上的 n n n仿射空间为:
k n = { ( a 1 , ⋯   , a n ) ∣ a 1 , ⋯   , a n ∈ k } k^n = \{ (a_1,\cdots,a_n) | a_1,\cdots,a_n \in k \} kn={(a1,,an)a1,,ank}

特别地, k 1 k^1 k1叫做 affine line k 2 k^2 k2叫做 affine plane

Affine Variety

给定域 k k k,令 f 1 , ⋯   , f s f_1,\cdots,f_s f1,,fs是多元多项式环 k [ x 1 , ⋯   , x n ] k[x_1,\cdots,x_n] k[x1,,xn]上的元素,定义仿射簇
V ( f 1 , ⋯   , f s ) : = { ( a 1 , ⋯   , a n ) ∈ k n ∣ f i ( a 1 , ⋯   , a n ) = 0 , ∀ 1 ≤ i ≤ s } V(f_1,\cdots,f_s):=\{(a_1,\cdots,a_n) \in k^n | f_i(a_1,\cdots,a_n)=0,\forall 1\le i \le s\} V(f1,,fs):={(a1,,an)knfi(a1,,an)=0,∀1is}
仿射簇就是方程 f 1 = ⋯ = f s = 0 f_1=\cdots=f_s=0 f1==fs=0的所有解的集合。如果 k = R k=R k=R,那么仿射簇可以在 R n R^n Rn中绘画出来;比如圆锥截线(椭圆曲线、抛物线、双曲线)

如果给定方程组 f 1 = 0 , ⋯   , f s = 0 f_1=0,\cdots,f_s=0 f1=0,,fs=0,容易知道 h 1 f 1 + ⋯ + h s f s = 0 , h i ∈ k [ x 1 , ⋯   , x n ] h_1f_1+\cdots+h_sf_s=0,h_i\in k[x_1,\cdots,x_n] h1f1++hsfs=0,hik[x1,,xn]。也就是说,理想 < f 1 , ⋯   , f s > <f_1,\cdots,f_s> <f1,,fs>中的所有元素都在 V ( f 1 , ⋯   , f s ) V(f_1,\cdots,f_s) V(f1,,fs)上“消失”了。

根据Hilbert Basis Theorem,仿射簇仅与理想有关(与方程组无关),即如果 < f 1 , ⋯   , f s > = < g 1 , ⋯   , g t > = I <f_1,\cdots,f_s>=<g_1,\cdots,g_t>=I <f1,,fs>=<g1,,gt>=I,那么 V ( f 1 , ⋯   , f s ) = V ( g 1 , ⋯   , g t ) = V ( I ) V(f_1,\cdots,f_s)=V(g_1,\cdots,g_t)=V(I) V(f1,,fs)=V(g1,,gt)=V(I)

Ideal of V

V V V是仿射簇,定义仿射簇的理想
I ( V ) = { f ∈ k [ x 1 , ⋯   , x n ] ∣ f ( a 1 , ⋯   , a n ) = 0 , ∀ ( a 1 , ⋯   , a n ) ∈ V } I(V)=\{f\in k[x_1,\cdots,x_n] | f(a_1,\cdots,a_n)=0,\forall (a_1,\cdots,a_n) \in V\} I(V)={fk[x1,,xn]f(a1,,an)=0,(a1,,an)V}
易知, I ( V ) ⊆ k [ x 1 , ⋯   , x n ] I(V) \subseteq k[x_1,\cdots,x_n] I(V)k[x1,,xn]是理想。

V , W V,W V,W都是 k n k^n kn中的仿射簇,那么

  1. V ⊆ W V \subseteq W VW当仅当 I ( V ) ⊇ I ( W ) I(V) \supseteq I(W) I(V)I(W)
  2. V = W V = W V=W当仅当 I ( V ) = I ( W ) I(V) = I(W) I(V)=I(W)

如果域 k k k是无限的,那么 I ( k n ) = { 0 } I(k^n)=\{0\} I(kn)={0},只包含零多项式。

Orderings on the Monomials in k [ x 1 , ⋯   , x n ] k[x_1,\cdots,x_n] k[x1,,xn]

指数(Exponent,形如 α = ( α 1 , ⋯   , α n ) ∈ Z ≥ 0 n \alpha=(\alpha_1,\cdots,\alpha_n)\in Z_{\ge0}^n α=(α1,,αn)Z0n),单项式(Monomial,形如 x α x^\alpha xα),系数(Coefficient,形如 c ∈ k c \in k ck),项(Terms,形如 c ⋅ x α c \cdot x^\alpha cxα

单项式顺序(monomial ordering)是 Z ≥ 0 n Z_{\ge0}^n Z0n上的关系 > > >,它满足如下条件:

  1. 是全序关系,任意的一对 x α , x β x^\alpha,x^\beta xα,xβ,都一定有 > , = , < >,=,< >,=,<关系之一。良序关系自然导致了传递性。
  2. 如果 α > β \alpha>\beta α>β,对于 ∀ γ ∈ Z ≥ 0 n \forall \gamma\in Z_{\ge0}^n γZ0n,都有 α + γ > β + γ \alpha+\gamma>\beta+\gamma α+γ>β+γ
  3. 是良序关系,如果 A ⊆ Z ≥ 0 n A \subseteq Z_{\ge0}^n AZ0n是非空子集,那么 ∃ α ∈ A \exist\alpha \in A αA,使得 ∀ β ∈ A \ { α } \forall \beta \in A \backslash \{\alpha\} βA\{α},都有 β > α \beta>\alpha β>α

字典序:令 α , β ∈ Z ≥ 0 n \alpha,\beta\in Z_{\ge0}^n α,βZ0n,当向量差 α − β \alpha-\beta αβ的最左边的非零分量为正数,记做 α > l e x β \alpha >_{lex} \beta α>lexβ

反字典序:令 α , β ∈ Z ≥ 0 n \alpha,\beta\in Z_{\ge0}^n α,βZ0n,当向量差 α − β \alpha-\beta αβ的最右边的非零分量为负数,记做 α > r e v l e x β \alpha >_{revlex} \beta α>revlexβ

分级字典序:令 α , β ∈ Z ≥ 0 n \alpha,\beta\in Z_{\ge0}^n α,βZ0n,记 α > g r l e x β \alpha >_{grlex} \beta α>grlexβ,如果满足 ∣ α ∣ = ∑ α i > ∣ β ∣ = ∑ β i |\alpha|=\sum\alpha_i > |\beta|=\sum\beta_i α=αi>β=βi或者 ∣ α ∣ = ∣ β ∣ , α > l e x β |\alpha|=|\beta|,\alpha >_{lex} \beta α=β,α>lexβ

分级反字典序:令 α , β ∈ Z ≥ 0 n \alpha,\beta\in Z_{\ge0}^n α,βZ0n,记 α > g r e v l e x β \alpha >_{grevlex} \beta α>grevlexβ,如果满足 ∣ α ∣ = ∑ α i > ∣ β ∣ = ∑ β i |\alpha|=\sum\alpha_i > |\beta|=\sum\beta_i α=αi>β=βi或者 ∣ α ∣ = ∣ β ∣ , α > r e v l e x β |\alpha|=|\beta|,\alpha >_{revlex} \beta α=β,α>revlexβ

在固定单项式顺序 > > >下,给定 f = ∑ α c α ⋅ x α f=\sum_\alpha c_\alpha \cdot x^\alpha f=αcαxα,定义:

  1. m u l t i d e g ( f ) : = m a x { α ∈ Z ≥ 0 n ∣ c α ≠ 0 } multideg(f):=max\{\alpha\in Z_{\ge0}^n | c_\alpha \neq 0\} multideg(f):=max{αZ0ncα=0},简写为 d e g ( f ) deg(f) deg(f)
  2. L C ( f ) : = c d e g ( f ) ∈ k LC(f):=c_{deg(f)} \in k LC(f):=cdeg(f)k,前导系数
  3. L M ( f ) : = x d e g ( f ) LM(f):=x^{deg(f)} LM(f):=xdeg(f),前导单项式
  4. L T ( f ) : = L C ( f ) ⋅ L M ( f ) LT(f):=LC(f)\cdot LM(f) LT(f):=LC(f)LM(f),前导项

易知, d e g ( f g ) = d e g ( f ) + d e g ( g ) deg(fg)=deg(f)+deg(g) deg(fg)=deg(f)+deg(g) d e g ( f + g ) ≤ m a x ( d e g ( f ) , d e g ( g ) ) deg(f+g)\le max(deg(f),deg(g)) deg(f+g)max(deg(f),deg(g));若 d e g ( f ) ≠ d e g ( g ) deg(f)\neq deg(g) deg(f)=deg(g) d e g ( f + g ) = m a x ( d e g ( f ) , d e g ( g ) ) deg(f+g) = max(deg(f),deg(g)) deg(f+g)=max(deg(f),deg(g))

Division Algorithm

> > > Z ≥ 0 n Z_{\ge0}^n Z0n上的单项式顺序,令有序 s s s元组 F = ( f 1 , ⋯   , f s ) ∈ ( k [ x 1 , ⋯   , x n ] ) s F=(f_1,\cdots,f_s) \in (k[x_1,\cdots,x_n])^s F=(f1,,fs)(k[x1,,xn])s,对于任意 f ∈ k [ x 1 , ⋯   , x n ] f \in k[x_1,\cdots,x_n] fk[x1,,xn],都可以写成

f = q 1 f 1 + ⋯ + q s f s + r f=q_1f_1+\cdots+q_sf_s+r f=q1f1++qsfs+r

这种表示不唯一。交换 F F F元素的顺序,商 q i q_i qi会改变,余数 r r r也可能不同。对于有序 s s s元组 F F F f f f除以 F F F的余数记做 f ‾ F \overline f^F fF
在这里插入图片描述
上述的除法算法直到最近50年才被明确给出!

monomial ideal

单项理想:给定(可能无限大)子集 A ⊆ Z ≥ 0 n A\subseteq Z_{\ge0}^n AZ0n,令 I = < x α ∣ α ∈ A > I=<x^\alpha | \alpha \in A> I=<xααA>,它包含所有的有限和 ∑ α ∈ A h α x α \sum_{\alpha\in A}h_\alpha x^\alpha αAhαxα h α ∈ k [ x 1 , ⋯   , x n ] h_\alpha \in k[x_1,\cdots,x_n] hαk[x1,,xn]

若单项式 x β ∈ I x^\beta \in I xβI,那么 ∃ α ∈ A , x α ∣ x β \exist \alpha \in A,x^\alpha|x^\beta αA,xαxβ,易知 β ∈ α + Z ≥ 0 n \beta \in \alpha+Z_{\ge0}^n βα+Z0n

关于单项理想的三个等价表述:

  1. f ∈ I f \in I fI
  2. f f f的每一项都属于 I I I
  3. f f f I I I中单项式的 k k k上线性组合

Dickson’s Lemma:令 I = < x α ∣ α ∈ A > ⊆ k [ x 1 , ⋯   , x n ] I=<x^\alpha | \alpha \in A> \subseteq k[x_1,\cdots,x_n] I=<xααA>⊆k[x1,,xn]是单项理想,那么可以写成 I = < x α 1 , ⋯   , x α s > I=<x^{\alpha_1},\cdots,x^{\alpha_s}> I=<xα1,,xαs>,其中 α 1 , ⋯   , α s ∈ A \alpha_1,\cdots,\alpha_s \in A α1,,αsA,即 I I I是由有限个单项式生成的。

最小基:单项理想 I I I存在唯一的一组基 { x α 1 , ⋯   , x α s } \{x^{\alpha_1},\cdots,x^{\alpha_s}\} {xα1,,xαs},满足 x α i ∤ x α j , ∀ i ≠ j x^{\alpha_i} \nmid x^{\alpha_j},\forall i \neq j xαixαj,i=j

Hilbert Basis Theorem

I ⊆ k [ x 1 , ⋯   , x n ] I \subseteq k[x_1,\cdots,x_n] Ik[x1,,xn]是任意的非零理想,确定单项顺序,可以定义:

  1. L T ( I ) : = { c x α ∣ ∃ f ∈ I \ { 0 } , L T ( f ) = c x α } LT(I):=\{cx^\alpha | \exist f \in I \backslash \{0\},LT(f)=cx^\alpha \} LT(I):={cxα∣∃fI\{0},LT(f)=cxα}
  2. < L T ( I ) > : = < t ∣ t ∈ L T ( I ) > <LT(I)>:=<t|t \in LT(I)> <LT(I)>:=<ttLT(I)>

如果 I = < f 1 , ⋯   , f s > I=<f_1,\cdots,f_s> I=<f1,,fs>,那么 < L T ( f 1 ) , ⋯   , L T ( f s ) > ⊆ < L T ( I ) > <LT(f_1),\cdots,LT(f_s)> \subseteq <LT(I)> <LT(f1),,LT(fs)>⊆<LT(I)>,并且可以是严格大。

< L T ( I ) > <LT(I)> <LT(I)>是单项理想,根据Dickson’s Lemma它是有限生成的。如果 < L T ( I ) > = < L T ( g 1 ) , ⋯   , L T ( g t ) > <LT(I)>=<LT(g_1),\cdots,LT(g_t)> <LT(I)>=<LT(g1),,LT(gt)>,其中 g 1 , ⋯   , g t ∈ I g_1,\cdots,g_t \in I g1,,gtI,那么可以声明 I = < g 1 , ⋯   , g t > I=<g_1,\cdots,g_t> I=<g1,,gt>:令 ∀ f ∈ I \forall f \in I fI,做除法 f = q 1 g 1 , ⋯   , q t g t + r f=q_1g_1,\cdots,q_tg_t+r f=q1g1,,qtgt+r,则 r r r必定是零(因为 L T ( r ) ∈ < L T ( I ) > LT(r)\in<LT(I)> LT(r)∈<LT(I)>,但是 d e g ( L T ( r ) ) < d e g ( T L ( g i ) ) deg(LT(r))<deg(TL(g_i)) deg(LT(r))<deg(TL(gi))

Hilbert Basis Theorem k [ x 1 , ⋯   , x n ] k[x_1,\cdots,x_n] k[x1,,xn]的任意理想 I I I,都拥有有限的生成集,即 I = < g 1 , ⋯   , g t > I=<g_1,\cdots,g_t> I=<g1,,gt>,其中 g 1 , ⋯   , g t ∈ I g_1,\cdots,g_t\in I g1,,gtI是有限个多项式。

Groebner Basis

固定单项式顺序,对于理想 I I I的有限子集 G = { g 1 , ⋯   , g t } G=\{g_1,\cdots,g_t\} G={g1,,gt},如果满足
< L T ( g 1 ) , ⋯   , L T ( g t ) > = < L T ( I ) > <LT(g_1),\cdots,LT(g_t)> = <LT(I)> <LT(g1),,LT(gt)>=<LT(I)>
那么集合 G G G叫做 I I IGroebner Basis或者standard basis

K [ x 1 , ⋯   , x n ] K[x_1,\cdots,x_n] K[x1,,xn]的任意理想 I I I都拥有很多的Groebner基,并且它们都是 I I I的一组基, I = < g ∣ g ∈ G > I=<g|g \in G> I=<ggG>

The Ascending Chain Condition

理想的上升链 I 1 ⊆ I 2 ⊆ I 3 ⊆ ⋯ I_1 \subseteq I_2 \subseteq I_3 \subseteq \cdots I1I2I3

上升链条件(ACC):令 I 1 ⊆ I 2 ⊆ I 3 ⊆ ⋯ I_1 \subseteq I_2 \subseteq I_3 \subseteq \cdots I1I2I3 k [ x 1 , ⋯   , x n ] k[x_1,\cdots,x_n] k[x1,,xn]中理想的上升链,那么存在一个 N ≥ 1 N\ge1 N1,使得 I N = I N + 1 = ⋯ I_N=I_{N+1}=\cdots IN=IN+1=

ACC等价于Hilbert Basis Theorem.

Groebner基的性质

理想 I I I的子集 G = { g 1 , ⋯   , g t } G=\{g_1,\cdots,g_t\} G={g1,,gt}是Groebner基,任意给定 f ∈ k [ x 1 , ⋯   , x n ] f \in k[x_1,\cdots,x_n] fk[x1,,xn],那么存在一个 r ∈ k [ x 1 , ⋯   , x n ] r \in k[x_1,\cdots,x_n] rk[x1,,xn],使得 r r r的每一项都不被 L T ( g i ) LT(g_i) LT(gi)整除,且 f − r = g ∈ I f-r=g \in I fr=gI

实际上, r r r就是 f f f除以 G G G唯一余数 r = f ‾ G r=\overline f^G r=fG,无论如何改变 G G G中元素的除法顺序(但商 q i q_i qi可能会改变)。这里,余数 r r r叫做 f f f的标准型(normal form)

理想的隶属问题:令 G G G是理想 I I I的Grobner基,那么 f ∈ I f \in I fI当仅当 f ‾ G = 0 \overline f^G=0 fG=0

冗余:如果 G G G是理想 I I I的Grobner基,令 p ∈ G p \in G pG L T ( p ) ∈ < L T ( G \ { p } ) > LT(p) \in <LT(G \backslash\{p\})> LT(p)∈<LT(G\{p})>,那么 G \ { p } G \backslash\{p\} G\{p}依然是理想 I I I的Grobner基。

约简Groebner基:任意的理想 I I I,都存在唯一的一组Grobner基 G G G,满足:

  1. L C ( p ) = 1 , ∀ p ∈ G LC(p)=1,\forall p \in G LC(p)=1,pG
  2. ∀ p ∈ G \forall p \in G pG,它的任意单项式都不属于 < L T ( G \ { p } ) > <LT(G\backslash\{p\})> <LT(G\{p})>

相等理想:固定单项式顺序,如果理想 < f 1 , ⋯   , f s > <f_1,\cdots,f_s> <f1,,fs>和理想 < g 1 , ⋯   , g t > <g_1,\cdots,g_t> <g1,,gt>拥有相同的约简Groebner基,那么它们是同一个理想。

求解方程组:设置单项顺序为字典序,那么Groebner基 G G G可以写成行阶梯矩阵的形式,矩阵的第 i i i行是 g i ∈ G g_i \in G giG k k k上系数。可以用来消元,求解方程组:通过方程组 E q Eq Eq可以确定一个仿射簇 V ( E q ) V(Eq) V(Eq),令 I = < E q > I=<Eq> I=<Eq>,计算 I I I的Groebner基 G G G,那么 V ( E q ) = V ( I ) = V ( G ) V(Eq)=V(I)=V(G) V(Eq)=V(I)=V(G)。由于 G G G是行阶梯矩阵,最后一行仅包含少量的变元,求解后回代计算倒数第二行,最终可求得 V ( E q ) V(Eq) V(Eq)

Buchberger’s Criterion

对于 f , g ∈ k [ x 1 ⋯   , x n ] f,g \in k[x_1\cdots,x_n] f,gk[x1,xn],记 x γ = l c m ( L M ( f ) , L M ( g ) ) x^\gamma = lcm(LM(f),LM(g)) xγ=lcm(LM(f),LM(g)),定义S多项式(syzygy-polynomial)为:
S ( f , g ) : = x γ L T ( f ) ⋅ f − x γ L T ( g ) ⋅ g S(f,g) := \dfrac{x^\gamma}{LT(f)} \cdot f - \dfrac{x^\gamma}{LT(g)} \cdot g S(f,g):=LT(f)xγfLT(g)xγg
如果 d e g ( p i ) = δ , ∀ i deg(p_i)=\delta,\forall i deg(pi)=δ,i,且 d e g ( ∑ i p i ) < δ deg(\sum_i p_i)<\delta deg(ipi)<δ,那么 ∑ i p i \sum_i p_i ipi可以表示成S多项式的线性组合: ∑ i p i = ∑ c j l S ( p j , p l ) \sum_i p_i = \sum c_{jl}S(p_j,p_l) ipi=cjlS(pj,pl),其中 c i j ∈ k c_{ij} \in k cijk

Buchberger’s Criterion:理想 I I I的子集 G = { g 1 , ⋯   , g t } G=\{g_1,\cdots,g_t\} G={g1,,gt} G G G是Groebner基当仅当 S ( g i , g j ) ‾ G = 0 , ∀ i ≠ j \overline{S(g_i,g_j)}^G = 0,\forall i \neq j S(gi,gj)G=0,i=j

Buchberger’s Criterion也被叫做S-pair criterion,可以用来判断 G G G是否是Groebner基,也用来自然地引出计算Groebner基的算法。

Buchberger’s Algorithm

初始版本:
在这里插入图片描述
改进版本:
在这里插入图片描述
但是在实践中,Buchberger’s Algorithm的效率过低,实际上使用的是更高效的F4算法F5算法来计算Groebner基。

Nullstellensatz

弱零点定理:令 k k k是代数封闭域, I ∈ k [ x 1 , ⋯   , x n ] I \in k[x_1,\cdots,x_n] Ik[x1,,xn]是理想,它满足 V ( I ) = ∅ V(I)=\empty V(I)=,那么 I = k [ x 1 , ⋯   , x n ] I=k[x_1,\cdots,x_n] I=k[x1,,xn]

Hilbert零点定理:令 k k k是代数封闭域,对于 f , f 1 , ⋯   , f s ∈ k [ x 1 , ⋯   , x n ] f,f_1,\cdots,f_s \in k[x_1,\cdots,x_n] f,f1,,fsk[x1,,xn],那么 f ∈ I ( V ( f 1 , ⋯   , f s ) ) f \in I(V(f_1,\cdots,f_s)) fI(V(f1,,fs))当仅当 f m ∈ < f 1 , ⋯   , f s > f^m \in <f_1,\cdots,f_s> fm∈<f1,,fs> ∃ m ≥ 1 \exist m \ge 1 m1

根理想:理想 I I I叫做根理想,它满足如果 ∃ m ≥ 1 , f m ∈ I \exist m\ge 1,f^m \in I m1,fmI则导致 f ∈ I f \in I fI。一个簇 V V V I ( V ) I(V) I(V)是根理想。

理想的根:令 I ⊆ k [ x 1 , ⋯   , x n ] I \subseteq k[x_1,\cdots,x_n] Ik[x1,,xn]是理想,定义:
I : = { f ∣ f m ∈ I , ∃ m ≥ 1 } \sqrt I := \{f | f^m \in I,\exist m \ge 1\} I :={ffmI,m1}
I ⊆ I ⊆ k [ x 1 , ⋯   , x n ] I \subseteq \sqrt I \subseteq k[x_1,\cdots,x_n] II k[x1,,xn]是根理想。

强零点定理:令 k k k是代数封闭域, I ∈ k [ x 1 , ⋯   , x n ] I \in k[x_1,\cdots,x_n] Ik[x1,,xn]是理想,那么 I ( V ( I ) ) = I I(V(I))=\sqrt I I(V(I))=I

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`Eigen::Affine3f::Identity()` 是一个函数,用于创建一个单位矩阵,即一个没有进行任何平移、旋转和缩放变换的变换矩阵。在 PCL 中,它通常用于定义一个初始的变换矩阵,然后根据需要进行修改,例如进行平移、旋转等变换。 `Eigen::Affine3f` 是 Eigen 库中的一个类,用于表示三维仿射变换矩阵。它包含了一个 4x4 的矩阵,可以表示平移、旋转、缩放等几何变换。`Eigen::Affine3f::Identity()` 返回的是一个单位矩阵,表示没有进行任何几何变换。 下面是一个示例代码,用于创建一个初始的变换矩阵: ```c++ #include <pcl/common/transforms.h> // 创建一个单位矩阵 Eigen::Affine3f transform = Eigen::Affine3f::Identity(); // 对变换矩阵进行平移和旋转 transform.translation() << 1.0, 2.0, 3.0; transform.rotate(Eigen::AngleAxisf(M_PI / 4, Eigen::Vector3f::UnitY())); // 使用变换矩阵对点云进行变换 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>); // 加载点云数据到 cloud 中 // ... pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_transformed (new pcl::PointCloud<pcl::PointXYZ>); pcl::transformPointCloud(*cloud, *cloud_transformed, transform); // cloud_transformed 中保存了变换后的点云数据 ``` 在这个示例中,我们首先创建一个单位矩阵 `transform`,然后对它进行了平移和旋转变换。最后,使用 `pcl::transformPointCloud()` 函数对点云进行变换,并将变换后的点云保存到 `cloud_transformed` 中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值