Який алгоритм ми можемо використати для пошуку всіх цілих коренів многочлена з цілими коефіцієнтами?
Я зауважую, що мудрець може знайти коріння протягом декількох секунд, навіть коли всі коефіцієнти дуже великі. Як це можна зробити?
Який алгоритм ми можемо використати для пошуку всіх цілих коренів многочлена з цілими коефіцієнтами?
Я зауважую, що мудрець може знайти коріння протягом декількох секунд, навіть коли всі коефіцієнти дуже великі. Як це можна зробити?
Відповіді:
У будь-якому випадку документація 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).
Якщо ви хочете асимптотично ефективний метод, ви можете звернутися до методу Ленстра, Ленстра і Ловаш ( https://openaccess.leidenuniv.nl/handle/1887/3810 ).