Đây là một cách tiếp cận sẽ làm việc cho một số đa thức, nhưng không được đảm bảo để làm việc cho tất cả chúng.
Nó được đảm bảo để làm việc cho tất cả các đa thức bậc hai đa tuyến. Nó cũng được đảm bảo hoạt động nếu có bất kỳ biến x nào sao cho p ( ⋯ , x , ⋯ ) không chứa thuật ngữ x 2 . Tuy nhiên, đối với đa thức có dạng p ( x , ⋯ , z ) = c x ⋅ x 2 + ⋯ + c z ⋅ z 2 + p ' ( x , ⋯ , z )xp(⋯,x,⋯)x2p(x,⋯,z)=cx⋅x2+⋯+cz⋅z2+p′(x,⋯,z)nơi p ' là một đa thức bậc hai đa tuyến (ví dụ, đa thức, nơi mọi biến xuất hiện bình phương), tôi chỉ là có thể trình bày một heuristic. Các heuristic thường có thể hoạt động tốt trong thực tế, nhưng tôi không có bằng chứng.p′
(Tôi cảm thấy như phải có một giải pháp sạch hơn đang ẩn nấp ở đâu đó ....)
Đặt F là một trường. Giả sử p ( x , y , z , ⋯ ) ∈ F [ x , y , z , ⋯ ] là một đa thức bậc hai đa biến với hệ số trong lĩnh vực F . Yếu tố ra các yếu tố của x , để có đượcFp ( x , y, z,⋯)∈F[x,y,z,⋯]Fx
p ( x , y , z , ⋯ ) = c ⋅ x 2 + q ( y , z , ⋯ ) ⋅ x + r ( y , z , ⋯ ) .
p(x,y,z,⋯)=c⋅x2+q(y,z,⋯)⋅x+r(y,z,⋯).
Lưu ý rằng q phải là tuyến tính / affine, r phải là bậc hai và c phải là hằng số ( c ∈ F ). Chúng tôi muốn tìm một bài tập của các giá trị cho x , y , z , ⋯ mà làm choqrcc∈Fx,y,z,⋯
c ⋅ x 2 + q ( y , z , ⋯ ) ⋅ x + r ( y , z , ⋯ ) = 0.
c⋅x2+q(y,z,⋯)⋅x+r(y,z,⋯)=0.
Bây giờ hãy Δ biểu thị biệt thức của phương trình bậc hai này (trong x ), tức là,Δx
Δ ( y , z , ⋯ ) = q ( y , z , ⋯ ) 2 - 4 c ⋅ r ( y , z , ⋯ ) .
Δ(y,z,⋯)=q(y,z,⋯)2−4c⋅r(y,z,⋯).
Các đa thức ban đầu là satisfiable khi và chỉ khi bạn có thể tìm thấy một bài tập của các giá trị cho y , z , ⋯ mà làm cho Δ ( y , z , ⋯ ) là một hình vuông (ví dụ, một dư lượng bậc hai) tại F . Chú ý rằng Δ ( y , z , ⋯ ) là chính nó là một đa thức bậc hai đa biến (kể từ q là affine và r là bậc hai).y,z,⋯Δ(y,z,⋯)FΔ(y,z,⋯)qr
Tại thời điểm này, cách tiếp cận giải pháp của chúng tôi sẽ phân nhánh, dựa trên việc c = 0 (trường hợp dễ) hay c ≠ 0 (trường hợp khó hơn).c=0c≠0
Nếu c = 0 , việc giải phương trình này rất dễ: về cơ bản nó chỉ là một phương trình tuyến tính (nó là tuyến tính theo x , một khi bạn sửa tất cả các biến khác).c=0x
Kết quả là, có một loại đa thức đặc biệt trong đó vấn đề này đặc biệt dễ giải quyết: bất kỳ đa thức p nào tồn tại một biến - để đơn giản, chúng ta sẽ gọi nó là x - sao cho x 2 không xuất hiện trong p . Đối với lớp đó, bạn sẽ có c = 0 ở trên, và sau đó thuật toán sau đủ để giải quyết vấn đề:pxx2pc=0
Kiểm tra xem q có bất kỳ giao giá trị cho y , z , ⋯ mà làm q ( y , z , ⋯ ) ≠ 0 . Vì q là tuyến tính, điều này rất dễ kiểm tra.qy,z,⋯q(y,z,⋯)≠0q
Nếu có, sau đó chọn bất kỳ chuyển nhượng như vậy giá trị y , z , ⋯ . Tiếp theo, đặt x = - r ( y , z , ⋯ ) q ( y , z , ⋯ ) - 1 . Theo định nghĩa, q ( y , z , ⋯ ) ≠ 0 , do đó q ( y , z , ⋯ ) có một nghịch đảo (kể từ khi chúng tôi đang làm việc trong một lĩnh vực), vì vậy đó là một giá trị của xy,z,⋯x=−r(y,z,⋯)q(y,z,⋯)−1q(y,z,⋯)≠0q(y,z,⋯)xtồn tại Này ngay lập tức mang lại một giao giá trị cho x , y , z , ⋯ mà làm cho p zero, và chúng tôi đang thực hiện.x,y,z,⋯p
Nếu không, thì chúng ta biết p ( x , y , z , ⋯ ) = r ( y , z , ⋯ ) cho tất cả các phép gán giá trị có thể cho các biến của p . Thực tế, p không bao giờ phụ thuộc vào x ở vị trí đầu tiên, vì vậy thật sai lầm khi nghĩ về nó như là một hàm của x . Hoặc, đặt một cách khác, chúng tôi đã loại bỏ một biến khỏi p và chúng tôi nhận được một ví dụ mới của vấn đề ban đầu. Áp dụng đệ quy các phương thức của chúng tôi cho r ( y , z ,p(x,y,z,⋯)=r(y,z,⋯)ppxxp⋯ ) . Ngoại lệ: nếu p là hàm của một biến duy nhất (nghĩa là p ( x ) ), thì trong trường hợp này bạn có thể kết luận rằng p không thỏa đáng (nó bằng 0 đối với tất cả các giá trị có thể có của các biến của nó).r(y,z,⋯)pp(x)p
Thuật toán này xử lý trường hợp dễ dàng: cụ thể là đa thức trong đó tồn tại ít nhất một biến x xuất hiện trong p nhưng trong đó x 2 không xuất hiện trong p . Trong trường hợp này, thuật toán chạy trong thời gian đa thức và xác định xem có tồn tại sự gán giá trị cho các biến làm cho đa thức bằng không.xpx2p
Bây giờ trở lại trường hợp khó khăn. Nếu nó không rơi vào trường hợp dễ dàng, thì chúng ta phải có
p ( x , ⋯ , z ) = c x ⋅ x 2 + ⋯ + c z ⋅ z 2 + p ' ( x , ⋯ , z ) .
p(x,⋯,z)=cx⋅x2+⋯+cz⋅z2+p′(x,⋯,z).
trong đó p ′ ( x , ⋯ , z ) không có số hạng bình phương (nó là đa tuyến). Chúng ta hãy xem những phương pháp nào chúng ta có thể sử dụng cho trường hợp này.p′(x,⋯,z)
Vâng, đây là một tình huống mà chúng ta có thể giải quyết điều này. Giả sử tồn tại một cặp biến x , y sao cho - c x / c y là một hình vuông (phần dư bậc hai) trong F , giả sử, - c x / c y = α 2 . Sau đó, chúng ta có thể áp dụng thay đổi các biến y ′ = y + α x . Thuận tiện, chúng tôi cóx,y−cx/cyF−cx/cy=α2y′=y+αx
(y′)2=(y+αx)2=y2+2α⋅xy+α2⋅x2=y2+2αcdotxy−cx/cy⋅x2.(y′)2=(y+αx)2=y2+2α⋅xy+α2⋅x2=y2+2αcdotxy−cx/cy⋅x2.$
Plugging this change of variables into pp, we get
p(x,y′,⋯)=cx⋅x2+cy⋅y2+2αcy⋅xy−cy⋅(cx/cy)⋅x2+…,
p(x,y′,⋯)=cx⋅x2+cy⋅y2+2αcy⋅xy−cy⋅(cx/cy)⋅x2+…,
i.e.,
p(x,y′,⋯)=cy⋅y2+2αcy⋅xy+…
p(x,y′,⋯)=cy⋅y2+2αcy⋅xy+…
where the omitted part does not contain a x2x2 term (since the cx⋅x2cx⋅x2 and α2cy⋅x2α2cy⋅x2 terms cancel). Effectively, we have eliminated the x2x2 term, so now we can apply the method above to p(x,y′,⋯)p(x,y′,⋯). Notice that p(x,y′,⋯)=0p(x,y′,⋯)=0 is satisfiable if and only if p(x,y,⋯)=0p(x,y,⋯)=0 is. When we find a solution that makes this zero, we can back-solve for yy, and we obtain an assignment to x,y,z,⋯x,y,z,⋯ that makes p(x,y,z,⋯)=0p(x,y,z,⋯)=0.
Is it possible that no pair of variables allows us to eliminate a squared-term? If −1−1 is a quadratic residue (a square) in FF, and if we have at least 3 variables, then that is not possible: −cx/cz=(−1)×(−cx/cy)×(−cy/cz)−cx/cz=(−1)×(−cx/cy)×(−cy/cz), and since the product of a quadratic non-residue and a quadratic non-residue is a quadratic residue, we are guaranteed that at least one of −cx/cz−cx/cz, −cy/cz−cy/cz, or −cx/cz−cx/cz is a quadratic residue so at least one of the squared terms can be cancelled. However, if −1−1 is a quadratic non-residue, or we have only 1 or 2 variables, then it might not be possible to eliminate a squared-term. That's the remaining difficult case. (The situation with only 1 or 2 variables is not difficult to handle, so really the difficult case is where −1−1 is a quadratic non-residue, and where each variable appears squared in pp.) I have no general solution for this difficult case.
However, I can suggest a heuristic that may often work, even for this difficult case.
In any field FF, approximately half of all field elements are squares (quadratic residues); if you pick a random field element, it will be a square with probability about 1/21/2. Therefore, if we pick values for y,z,…y,z,… randomly, we can predict that (heuristically) Δ(y,z,⋯)Δ(y,z,⋯) should be a square with probability 1/21/2, if Δ(y,z,⋯)Δ(y,z,⋯) acts like a random function. This suggests the following heuristic algorithm:
Randomly pick a variable to eliminate, say xx.
Pick values for y,z,…y,z,… randomly.
If Δ(y,z,⋯)Δ(y,z,⋯) is a square in FF, then the equation p(x,y,z,⋯)=0p(x,y,z,⋯)=0 has a solution for xx, namely x=(−q(y,z,⋯)±√Δ(y,z,⋯))/(2c)x=(−q(y,z,⋯)±Δ(y,z,⋯)−−−−−−−−−√)/(2c) (assuming FF does not have characteristic 2). This gives us an assignment to the variables x,y,z,…x,y,z,… that makes p(x,y,z,⋯)=0p(x,y,z,⋯)=0, so we're done.
If Δ(y,z,⋯)Δ(y,z,⋯) is not a square, go back to step 1.
If after many steps, you do not find any solution, then you might guess that the equation is unsatisfiable (but this is a heuristic, so your guess could be wrong).
This algorithm might work well for many of the remaining difficult polynomials, but I have no proof that it will always work. In particular, there is a risk that all the possible discriminant polynomials Δ(⋯)Δ(⋯) might have the property that their values are always non-squares (quadratic non-residues), in which case the algorithm above will fail.