एक छोटे से अज्ञात बहुपद द्वारा विभाजित होने पर एक बड़ी नियत बहुपद का शेष भाग ज्ञात कीजिए


9

मान लें कि हम एक परिमित क्षेत्र में काम करते हैं। हमें इस क्षेत्र में एक बड़ी नियत बहुपद p (x) (का, कहना, डिग्री 1000) दी जाती है। यह बहुपद पहले से जाना जाता है और हमें "प्रारंभिक चरण" में बहुत सारे संसाधनों का उपयोग करके गणना करने की अनुमति है। ये परिणाम यथोचित छोटे लुक-अप तालिकाओं में संग्रहीत किए जा सकते हैं।

"प्रारंभिक चरण" के अंत में, हमें एक छोटी अज्ञात बहुपद क्यू (एक्स) (में, कहें, डिग्री 5 या उससे कम) दी जाएगी।

क्या p (x) mod q (x) की गणना करने का एक तेज़ तरीका है जो हमें "प्रारंभिक चरण" में कुछ जटिल गणना करने की अनुमति देता है? एक स्पष्ट तरीका q (x) के सभी संभावित मूल्यों के लिए p (x) mod q (x) की गणना करना है। क्या ऐसा करने के लिए इससे अच्छा तरीका है?

जवाबों:


3

निम्नलिखित एल्गोरिदम काम करता है अच्छी तरह से अगर अंतर्निहित क्षेत्र एक बहुत छोटे से आदेश है ।s

मान लीजिए कि हम जानते हैं कि एक निश्चित डिग्री का irreducible है । फिर, mod , हम होल्ड को जानते हैं । इसलिए यह गणना करने के लिए पर्याप्त है ।qdqxsd=xp(x)modxsdx

सामान्य तौर पर, irreducible polynomials उत्पाद में विघटित हो सकता है । इस स्थिति में, एक समान तर्क प्रत्येक अलग से लागू करता है, और फिर परिणाम को एक साथ जोड़कर लागू करता है। इसलिए हमें वास्तव में गणना करने की आवश्यकता है प्रत्येक लिए ।q(x)q=q1qrpq1,,qrp(x)modxsdxdd


2

मुझे लगता है कि ऐसा करने का एक बहुत तेज़ तरीका है। अभी तक अज्ञात बहुपद के गुणांकों करते हो , तो जहां कुछ छोटी संख्या है। अब हम कंप्यूटिंग शुरू करते हैं जहां , जहां बड़ा है और जाना जाता है। यह हम रूप में समानता का उपयोग करके डिग्री को कम करके करते हैं । आखिरकार हमें जो मिलता है वह एक डिग्री है बहुपद, जिसके गुणांक बहुपद हैं ( बाद से)qbiq=i=0dbixidp(modq)p=i=0DaixiDaiaDxD=aDbdi=1d1bdixDi<d1biaiजाने जाते हैं)। एक बार जब हम प्राप्त करते हैं तो ये बहुपद हम तेजी से गणना कर सकते हैं ।q


-1

नीचे इस पोस्ट के बारे में उत्कृष्ट टिप्पणियाँ देखें। :)


preprocessing; इनपुट: p(x)

  1. फैक्टर रूप में ।p(x)p(x)=i=01000(xiri)

  2. इसे अलग जड़ों और उनके संबंधित गुणकों तालिका के रूप में ।Trjmj

ऑनलाइन चरण; इनपुट: q(x)

  1. फैक्टर के रूप में ।q(x)q(x)=i=05(xiri)

  2. के रूप में एक सूची इस स्टोर अलग जड़ों की और उनके संबंधित multiplicities ।Lrjmj

  3. जबकि खाली नहीं है, से अगली जड़ / गुणन निकालें और में किसी भी तरह की शर्तें ।LLT

  4. संशोधित तालिका और आउटपुट से को पढ़ें ।p(x)modq(x)T


अन्य टिप्पणी:

  • जाहिर है आप टेबल को सॉर्ट करना चाहते हैं और इसे बाइनरी सर्च (या ट्री) के साथ एक्सेस करना चाहते हैं ।T
  • (Let की डिग्री होना ।) आप उत्पादन चाहते हैं गुणांक प्रतिनिधित्व में होना करने के लिए, तो आप सिर्फ अंत पाने के लिए पर FFTs का एक समूह कर सकते हैं समय।dp(x)p(x)modq(x)O~(d)
  • इस बात पर निर्भर करता है कि आप इसे कैसे औपचारिक रूप देते हैं, आप शायद पहले से (पहले की प्रोग्रामिंग प्रोग्रामिंग शैली) की शर्तों को फिर से परिभाषित करने के लिए कई तरीकों से पूर्व-गणना कर सकते हैं , ताकि गुणा के अधिकांश (या सभी) सिर्फ लुक-अप हों। वर्चस्व की लागत तब लुक-अप या मोटे तौर पर । यदि , तो यह केवल मुट्ठी भर ठोस, अंकगणित संचालन है।TO(logd)d=1000

2
आप किस क्षेत्र में फैक्टरिंग कर रहे हैं? मूल क्षेत्र के संदर्भ में आप इस प्रतिनिधित्व की कितनी बड़ी उम्मीद करते हैं? और जब आप संशोधित तालिका और आउटपुट से पढ़ना कहते हैं, तो आपका क्या मतलब है?
डेविड एप्पस्टीन

2
यह केवल तभी काम करेगा जब आप एक ऐसे क्षेत्र में काम कर रहे हों जहां और दोनों विभाजित हों। लेकिन यह पर निर्भर लगता है ; विशेष रूप से, आप केवल लिए जड़ों को पूर्वनिर्मित नहीं कर सकते । इसके अलावा, इतने बड़े क्षेत्र पर की जड़ों की गणना करने में समय लगेगा (कम से कम); यह भोली एल्गोरिथ्म से बेहतर नहीं है। pqqpq|p|
डेविड हैरिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.