จำนวนเต็มของพหุนาม


10

อัลกอริทึมใดที่เราสามารถใช้เพื่อค้นหารากจำนวนเต็มทั้งหมดของพหุนามด้วยสัมประสิทธิ์จำนวนเต็ม?f(x)

ฉันสังเกตว่า Sage สามารถค้นหารากภายในไม่กี่วินาทีแม้ว่าค่าสัมประสิทธิ์ทั้งหมดจะมีขนาดใหญ่มาก จะทำเช่นนั้นได้อย่างไรf(x)


1
คุณกำลังมองหาอัลกอริทึมเพื่อคืนค่าจำนวนเต็มของพหุนามที่กำหนดหรือไม่? ถ้าใช่นั่นไม่สามารถบอกได้และคำถามอยู่นอกหัวข้อที่นี่ คุณสามารถถามได้ทางวิทยาศาสตร์คอมพิวเตอร์ซึ่งมีขอบเขตที่กว้างขึ้น
Kaveh

7
ยึดมั่นใน เหตุใดการไม่สามารถตัดสินใจได้ทำให้เกิดคำถามนอกหัวข้อ นี่เป็นคำถามระดับการวิจัยที่ถูกต้อง
Jeffε

2
ดังนั้นแล้ว Sage จะทำอย่างไร การตัดสินใจไม่ได้ - แม้จะเป็นที่รู้จักกันดีว่าการตัดสินใจไม่ได้ - ไม่ทำให้เกิดปัญหาที่ไม่น่าสนใจในทางทฤษฎี นักวิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎีแก้ปัญหาที่ไม่อาจตัดสินใจได้ตลอดเวลา - ดูตัวอย่างเช่นการตรวจสอบโดยใช้คอมพิวเตอร์ทั้งหมด
Jeffε

11
Kaveh สิ่งที่คุณพูดไม่เป็นความจริง สิ่งที่ไม่สามารถตัดสินใจได้คือการแก้สมการไดโอแฟนไทน์ที่มีตัวแปรมากมาย (เพื่อให้มีวิธีแก้ปัญหาที่แท้จริงจำนวนมากอย่างไม่ จำกัด และหนึ่งคือการค้นหาจำนวนเต็ม / เหตุผลหนึ่ง) แต่คำถามนี้เกี่ยวกับพหุนาม uni-variateซึ่งแน่นอนว่า decidable (ถ้ามีระดับมีรากถึงและหนึ่งสามารถตรวจสอบได้ว่าเป็นจำนวนเต็ม) f ( x ) d df(x)f(x)dd
Mahdi Cheraghchi

1
@Pratik คุณไม่จำเป็นต้องมีฐานGröbnerในกรณีที่ไม่มีการเปลี่ยนแปลง
Yuval Filmus

คำตอบ:


10

สมมติว่าสัมประสิทธิ์ของเป็นจำนวนเต็มหรือ rationals และคุณต้องการรากจำนวนเต็มวิธีที่ง่ายที่สุดคือการใช้ทฤษฎีบทเลขจำนวนเต็มหรือเหตุผลแบบราก ดูhttp://en.wikipedia.org/wiki/Rational_root_theorem ตามที่ระบุไว้โดย DW นี่อาจเป็นปัญหาหากค่าสัมประสิทธิ์คงที่นั้นยากที่จะแยกปัจจัย (ดู/math/123018/polynomial- และจำนวนเต็ม )f

ไม่ว่าในกรณีใดเอกสาร Sage อธิบายอย่างชัดเจนว่าพวกเขาทำการค้นหารูทอย่างไร: "วิธีการถัดไปซึ่งใช้ถ้า K เป็นโดเมนที่สำคัญคือพยายามที่จะแยกตัวประกอบพหุนามหากทำได้สำเร็จทุกระดับหนึ่ง ตัวคูณ a * x + b เราเพิ่ม -b / a เป็นรูท (ตราบใดที่ความฉลาดนี้อยู่ในวงแหวนที่ต้องการ) " ดูhttp://www.sagemath.org/doc/reference/polynomial_rings/sage/rings/polynomial/polynomial_element.html

ดังนั้นคำถามของคุณจะกลายเป็นอย่างไรพวกเขาทำการแยกพหุนามกับสัมประสิทธิ์จำนวนเต็มอย่างมีประสิทธิภาพได้อย่างไร เห็นได้ชัดว่า Sage กำลังเรียก NTL ให้ทำเช่นนั้น (ดูhttp://www.shoup.net/ntl/doc/ZZXFactoring.txtสำหรับรายละเอียดของ NTL)

หากคุณต้องการวิธีที่มีประสิทธิภาพแบบ asymptotically คุณสามารถอ้างถึงวิธีของ Lenstra, Lenstra และ Lovasz ( https://openaccess.leidenuniv.nl/handle/1887/3810 )


1
ขอบคุณสำหรับคำแนะนำที่เป็นประโยชน์! มโนหร คุณอาจยินดีที่จะแก้ไขคำตอบของคุณเพื่ออธิบายวิธีแปลงให้เป็นอัลกอริทึมอย่างละเอียดและใช้เวลานานเท่าไร? เป็นกรณีที่เลวร้ายที่สุดเวลาทำงานชี้แจง (เพราะมันสามารถใช้เวลา subexponential เพื่อปัจจัยและจากนั้นอาจมีตัวหารจำนวนมากของสัมประสิทธิ์ชั้นนำและต่อท้าย)? ถ้าเป็นเช่นนั้นมีอัลกอริธึมที่ดีกว่าหรือสิ่งนี้เกี่ยวกับสิ่งที่ดีที่สุดสามารถทำได้หรือไม่? ยิ่งไปกว่านั้นวิธีการนี้ไม่เพียง แต่ค้นหารากที่มีเหตุผลเท่านั้น
DW

อ่านคำถามอีกครั้งและเห็นว่าคุณตีความมันแตกต่างกันฉันไม่แน่ใจอีกต่อไป แต่ฉันและผู้วิจารณ์บางคนเห็นว่าคำถามนั้นถามเกี่ยวกับรากจำนวนเต็ม คุณไม่อ่านอย่างนั้นเหรอ?
Minar

@minar คุณพูดถูก ตอนนี้ฉันอ่านคำถามอีกครั้งดูเหมือนจะเป็นอย่างนั้น ฉันต้องอ่านคำถามเร็วเกินไป (ผมเริ่มตีความคำถามเป็นหมายความว่าเราต้องการทุกรากของพหุนามที่มีสัมประสิทธิ์จำนวนเต็ม แต่ในเรื่องการอ่านคำถามที่ดูเหมือนว่าเข้าใจผิดได้.)
ใบสำคัญแสดงสิทธิอนุพันธ์

2
สำหรับวิธีการเชิง asymptotically และมีประสิทธิภาพ, อัลกอริทึมที่รู้จักกันดีที่สุดคือโดย Van Hoeij (ดูที่นี่ ) ที่จริงแล้ว NTL ดูเหมือนว่าจะใช้มัน
บรูโน่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.