Vấn đề của bạn dường như làm giảm câu hỏi đơn giản sau:
Cho hai hàm trong lớp hàm, chúng ta có cho tất cả không? (Nói cách khác, chúng có cùng giá trị ở mọi nơi không?)F ( x ) = G ( x ) xF,GF(x)=G(x)x
Tôi không biết liệu điều này có thể quyết định được không, đối với lớp chức năng này. Nếu có, thì vấn đề của bạn cũng có thể quyết định được.
Đối với vấn đề của bạn, một cách tiếp cận chung là: phân biệt tượng trưng để lấy , sau đó kiểm tra xem chúng ta có cho tất cả .F ′ ( x ) F ′ ( x ) = G ( x ) xF(x)F′(x)F′(x)=G(x)x
Vì vậy, bước quan trọng là sự khác biệt tượng trưng. Chúng ta hãy tìm hiểu làm thế nào để làm điều đó chi tiết hơn. Chúng ta có thể định nghĩa lớp các hàm cho phép theo cách đệ quy:
F(x)::=c|x|ex|log(x)|sin(x)|cos(x)|tan(x)|F1(x)+F2(x)|F1(x)×F2(x)|F1(x)/F2(x)|F1(F2(x))
trong đó phạm vi trên các hằng số và phạm vi trên các hàm.cF,F1,F2
Sau đó, có thể đưa ra một thuật toán đệ quy để phân biệt một cách tượng trưng lớp chức năng này, sử dụng các quy tắc tính toán tiêu chuẩn (ví dụ: quy tắc chuỗi, v.v.). Cụ thể, chúng ta có thể xử lý mọi trường hợp ở trên và hiển thị đệ quy rằng đạo hàm có thể được biểu thị một cách tượng trưng như một hàm trong lớp này. Ví dụ:
Nếu , .F(x)=cF′(x)=0
Nếu , .F(x)=xF′(x)=1
Nếu , .F(x)=exF′(x)=ex
Nếu , .F(x)=log(x)F′(x)=1/x
Nếu , .F(x)=sin(x)F′(x)=cos(x)
Nếu , .F(x)=tan(x)F′(x)=1+(tan(x))2
Nếu , .F(x)=F1(x)+F2(x)F′(x)=F′1(x)+F′2(x)
Nếu , .F(x)=F1(x)×F2(x)F′(x)=F′1(x)F2(x)+F1(x)F′2(x)
Nếu , (quy tắc chuỗi).F(x)=F1(F2(x))F′(x)=F′1(F2(x))F′2(x)
Và như thế. Trong mỗi trường hợp, nếu nằm trong lớp các hàm cho phép, thì vậy và bạn có thể đệ quy một biểu thức tượng trưng cho - đây được gọi là phân biệt biểu tượng .F(x)F′(x)F′(x)
Cuối cùng, tất cả những gì còn lại là kiểm tra xem cho tất cả . Đó là vấn đề tôi đề cập ở đầu câu trả lời của tôi.F′(x)=G(x)x
Có một phương pháp đơn giản để kiểm tra xem hai hàm có bằng nhau không mà tôi mong đợi sẽ hoạt động khá tốt trong thực tế. Thuật toán là thế này: liên tục chọn một giá trị ngẫu nhiên là và kiểm tra xem có giữ giá trị đó của . Nếu nó giữ bằng với nhiều được chọn ngẫu nhiên , thì đầu ra "chúng bằng nhau". Nếu bạn tìm thấy bất kỳ nào mà , thì hãy xuất ra "chúng khác nhau".xF(x)=G(x)xxxF(x)≠G(x)
Không có gì đảm bảo rằng điều này sẽ hoạt động, nhưng đối với nhiều lớp chức năng, đầu ra của quy trình này sẽ chính xác với xác suất cao. Cụ thể, giả sử chúng ta có một số phân phối trên đại diện bởi biến ngẫu nhiên và một số sao cho giữ cho tất cả trong lớp. Giả sử hơn nữa là lớp các hàm cho phép được đóng dưới phép trừ (như lớp của bạn). Sau đó, các vòng của quy trình trên đưa ra câu trả lời sai với xác suất nhiều nhất .xXϵ>0Pr[F(X)=0]≥ϵFr(1−ϵ)r
Ngoài ra, nếu có một thủ tục ngẫu nhiên để kiểm tra đẳng thức đa thức, thì vấn đề là có thể quyết định.
Vẫn còn phải hỏi liệu một kết quả như vậy có đúng với lớp chức năng cụ thể của bạn không. Tuyên bố trên có lẽ sẽ không giữ được. Tuy nhiên, nếu chúng ta may mắn, có lẽ chúng ta có thể chứng minh điều gì đó như sau:
Đối với tất cả , có thể chúng ta có thể tìm thấy phân phối trên các số thực, nghĩa là một biến ngẫu nhiên và hằng số , sao cho giữ cho tất cả các hàm có trong lớp của bạn và có "kích thước" tối đa .s∈NXsϵs>0Pr[F(X)=0]Fs
Nếu điều này là đúng, thì nó sẽ theo sau rằng có một thuật toán ngẫu nhiên để kiểm tra đẳng thức đa thức và do đó vấn đề của bạn là có thể giải quyết được.