ดูเหมือนว่าปัญหาของคุณจะลดคำถามที่ง่ายขึ้นดังต่อไปนี้:
รับสองฟังก์ชั่น F,G ในคลาสของฟังก์ชั่นเรามี F(x)=G(x) เพื่อทุกสิ่ง x? (กล่าวอีกนัยหนึ่งพวกเขามีค่าเท่ากันทุกที่หรือไม่)
ฉันไม่รู้ว่านี่เป็นสิ่งที่ตัดสินใจได้หรือไม่สำหรับฟังก์ชั่นชั้นนี้ ถ้าเป็นเช่นนั้นปัญหาของคุณควรจะตัดสินใจได้เช่นกัน
สำหรับปัญหาของคุณวิธีการทั่วไปคือ: แตกต่างเชิงสัญลักษณ์ F(x) เพื่อรับ F′(x)จากนั้นตรวจสอบว่าเรามี F′(x)=G(x) เพื่อทุกสิ่ง x.
ดังนั้นขั้นตอนสำคัญคือความแตกต่างของสัญลักษณ์ เรามาดูวิธีการทำอย่างละเอียดกันดีกว่า เราสามารถกำหนดระดับของฟังก์ชั่นที่อนุญาตซ้ำ:
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))
เมื่ออยู่เหนือค่าคงที่และอยู่เหนือฟังก์ชันcF,F1,F2
จากนั้นเป็นไปได้ที่จะสร้างอัลกอริทึมแบบเรียกซ้ำสำหรับความแตกต่างเชิงสัญลักษณ์ของคลาสของฟังก์ชันนี้โดยใช้กฎมาตรฐานของแคลคูลัส (เช่นกฎลูกโซ่ ฯลฯ ) โดยเฉพาะอย่างยิ่งเราสามารถจัดการกับทุกกรณีข้างต้นและแสดงซ้ำว่าอนุพันธ์สามารถแสดงสัญลักษณ์เป็นฟังก์ชันภายในคลาสนี้ ตัวอย่างเช่น
ถ้า , 0F(x)=cF′(x)=0
ถ้า , 1F(x)=xF′(x)=1
ถ้า , xF(x)=exF′(x)=ex
ถ้า , xF(x)=log(x)F′(x)=1/x
ถ้า ,(x)F(x)=sin(x)F′(x)=cos(x)
ถ้า , 2F(x)=tan(x)F′(x)=1+(tan(x))2
ถ้า ,(x)F(x)=F1(x)+F2(x)F′(x)=F′1(x)+F′2(x)
ถ้า ,(x)F(x)=F1(x)×F2(x)F′(x)=F′1(x)F2(x)+F1(x)F′2(x)
หาก , (กฎลูกโซ่)F(x)=F1(F2(x))F′(x)=F′1(F2(x))F′2(x)
และอื่น ๆ ในแต่ละกรณีถ้าอยู่ในชั้นเรียนของฟังก์ชั่นที่อนุญาตแล้วเพื่อให้เป็นและคุณซ้ำสามารถทำงานออกแสดงออกสัญลักษณ์ - นี้เป็นที่รู้จักกันเป็นความแตกต่างที่เป็นสัญลักษณ์F(x)F′(x)F′(x)
สุดท้ายที่เหลือคือการตรวจสอบว่าสำหรับทุกxนั่นคือปัญหาที่ฉันพูดถึงที่ด้านบนของคำตอบของฉันF′(x)=G(x)x
มีวิธีง่าย ๆ ในการตรวจสอบว่ามีฟังก์ชันสองอย่างที่เหมือนกันซึ่งฉันคาดว่าจะทำงานได้ดีในทางปฏิบัติหรือไม่ อัลกอริทึมคือ: เลือกค่าสุ่มเป็นซ้ำ ๆและตรวจสอบว่าเก็บค่าไว้หรือไม่ ถ้ามันมีความเสมอภาคสำหรับเลือกแบบสุ่มจำนวนมากดังนั้นเอาต์พุต "พวกมันจะเท่ากัน" หากคุณพบใด ๆที่จากนั้นเอาท์พุท "พวกมันต่างกัน"xF(x)=G(x)xxxF(x)≠G(x)
ไม่มีการรับประกันว่าสิ่งนี้จะได้ผล แต่สำหรับฟังก์ชั่นหลายคลาสผลลัพธ์ของขั้นตอนนี้จะถูกต้องด้วยความน่าจะเป็นสูง โดยเฉพาะอย่างยิ่งสมมติว่าเรามีการแจกแจงบางส่วนบนแทนด้วยตัวแปรสุ่มและอย่างที่เก็บไว้สำหรับทั้งหมดในชั้นเรียน สมมติว่าคลาสของฟังก์ชั่นที่อนุญาตปิดภายใต้การลบ (เช่นคลาสของคุณ) จากนั้นก็ต่อว่ารอบของขั้นตอนข้างต้นจะช่วยให้คำตอบที่ผิดปกติกับความน่าจะเป็นที่มากที่สุด RxXϵ>0Pr[F(X)=0]≥ϵFr(1−ϵ)r
นอกจากนี้หากมีขั้นตอนการสุ่มสำหรับการทดสอบความเท่าเทียมกันของพหุนามปัญหาก็จะถูกตัดสินได้
ยังคงต้องถามว่าผลลัพธ์ดังกล่าวเก็บไว้สำหรับคลาสเฉพาะของฟังก์ชันหรือไม่ คำสั่งข้างต้นอาจจะไม่ถือ อย่างไรก็ตามหากเราโชคดีบางทีเราอาจจะสามารถพิสูจน์สิ่งต่อไปนี้:
สำหรับทั้งหมดบางทีเราสามารถหาการแจกแจงในจำนวนจริงเช่นตัวแปรสุ่มและค่าคงที่เช่นนั้นถือสำหรับทุกฟังก์ชั่ที่อยู่ในชั้นเรียนของคุณและมี "ขนาด" ที่มากที่สุดss∈NXsϵs>0Pr[F(X)=0]Fs
หากนี่เป็นเรื่องจริงมันจะตามมาว่ามีอัลกอริทึมแบบสุ่มสำหรับการทดสอบความเท่าเทียมกันของพหุนามและทำให้ปัญหาของคุณสามารถตัดสินใจได้