पूर्णांक की सूचियों के दो उत्पादों की तुलना करना?


10

मान लीजिए कि मेरे पास बाउंडेड मैनटाइट के सकारात्मक पूर्णांक की दो सूचियां हैं, और मैं प्रत्येक सूची के सभी तत्वों का उत्पाद लेता हूं। कौन सा उत्पाद बड़ा है, यह निर्धारित करने का सबसे अच्छा तरीका क्या है?

बेशक, मैं बस प्रत्येक उत्पाद की गणना कर सकता हूं, लेकिन मैं उम्मीद कर रहा हूं कि एक अधिक कुशल दृष्टिकोण है, क्योंकि उत्पादों में अंकों की संख्या रैखिक रूप से शब्दों की संख्या के साथ बढ़ेगी, ताकि पूरी गणना द्विघात हो।

यदि मैं गुणा करने के बजाय जोड़ रहा था, तो मैं पहली सूची में से प्रविष्टियों को जोड़ने और दूसरी से घटाकर, समग्र (बड़े) समग्र योगों की आवश्यकता को दरकिनार करते हुए, "zippering रणनीति" का उपयोग कर सकता था। उत्पादों के लिए अनुरूप तकनीकों को प्रविष्टियों के लघुगणक को योग करना होगा, लेकिन अब समस्या यह है कि लॉग की गणना करने के लिए अक्षम अंकगणित के उपयोग की आवश्यकता है। जब तक संख्यात्मक त्रुटि साबित करने का कोई तरीका अप्रासंगिक नहीं है?


यदि हम अधिकतम पूर्णांक मान को जानते हैं और जो n (यानी, एक स्थिर k) से स्वतंत्र है तो हम 1 से k तक सभी संख्याओं के कारकों का एक लुकअप टेबल बना सकते हैं। अब मुझे लगता है कि यदि आप आधार [कारकों के उत्पाद] में सब कुछ लिखते हैं तो यह रैखिक हो जाता है क्योंकि आप उस आधार के साथ रैखिक समय में उत्पादों की गणना कर सकते हैं तब प्रत्येक अंक (उच्चतम क्रम अंक के साथ शुरू) की तुलना करें जब तक कि एक दूसरे से अधिक न हो। विवरण थोड़ा मुश्किल हैं, लेकिन मुझे लगता है कि अगर कश्मीर स्थिर है तो काम करना चाहिए।
फिलाईडा

मैं बल्कि यह कहना चाहूंगा कि उत्पादों के लिए अनुरूप तकनीक दूसरी सूची के पहले तत्वों द्वारा विभाजित पहली सूची के पहले तत्वों के बराबर एक तर्कसंगत संख्या रखना है (साथ ही एस को संभालना )। लेकिन यह वास्तव में उपयोगी नहीं है क्योंकि यदि सभी संख्या मैथुन है, तो यह दोनों उत्पादों की गणना करेगा। | इसके अलावा, मुझे यकीन नहीं है कि भोली एल्गोरिथ्म द्विघात है। का एक उत्पाद कम्प्यूटिंग n आकार के पूर्णांक मीटर तक लग सकते हैं सी ( मीटर , मीटर ) + सी ( मीटर , 2 मीटर ) + + C ( m , ( n)0n जहाँ C ( x , y ) एक y -bits पूर्णांक केसाथ x -बिट पूर्णांकको गुणा करने की लागत है। जब तकआप यह विचार नहीं करते कि उत्पाद प्रारूप में भी फिट हैंसी(,)+सी(,2)++सी(,(n-1))सी(एक्स,y)एक्सy
xavierm02


भोली दृष्टिकोण पर एक सुधार: प्रत्येक कारक (रैखिक समय में) की घटनाओं की संख्या की गणना करें, और एक कुशल पावरिंग एल्गोरिथ्म का उपयोग करके केवल अंत में उत्पाद की गणना करें। यह समय में काम करता है , जो O ( n) हैहे((n)) asymptotically सबसे तेजी से विधि वर्तमान का उपयोग कर। हे(nलॉगn2हे(लॉग*n))
एमिल जेबाबेक

2
मैं लॉग के लिए आवश्यक सटीकता के बारे में सोचूंगा। यह वास्तव में अधिक कुशल हो सकता है।
एमिल जेकाबेक

जवाबों:


6

(मैं समस्या के विवरण को समझता हूं ताकि इनपुट नंबर एक निरंतरता से बंधे हों, इसलिए मैं बाध्यता पर निर्भरता को ट्रैक नहीं करूंगा।)

समस्या रैखिक समय और लघुगणक अंतरिक्ष में लघुगणक के योगों का उपयोग करने में हल करने योग्य है। अधिक विवरण में, एल्गोरिथ्म इस प्रकार है:

  1. बाइनरी काउंटर्स का उपयोग करके, दोनों सूचियों में प्रत्येक संभावित इनपुट नंबर की घटनाओं की संख्या की गणना करें।

इसमें समय लगता है , और काउंटर स्पेस O ( log n ) का उपयोग करते हैं , क्योंकि प्रत्येक काउंटर n मान से घिरा होता है ।हे(n)हे(लॉगn)n

चलो नीचे अभाज्य संख्या हो हे ( 1 ) के लिए बाध्य। एक नंबर के लिए प्रत्येक काउंटर वितरण द्वारा एक के प्रधानमंत्री कारकों को एक (उचित बहुलता के साथ), और अन्य सूची में से एक सूची के लिए मायने रखता है घटाकर, हम समय में निम्नलिखित प्राप्त हे ( लॉग एन ) :पी1,...,पीहे(1)हे(लॉगn)

  1. कंप्यूट पूर्णांकों के साथ हे ( लॉग एन ) इस तरह के बिट्स है कि समस्या के हस्ताक्षर का निर्धारण करने के बराबर है Λ : = Σ k मैं = 1 β मैं लॉग ऑन पी मैंβ1,...,βहे(लॉगn)Λ: =Σमैं=1βमैंलॉगपीमैं

  2. अगर , जवाब है कि उत्पादों बराबर हैं।β1==β=0

अन्यथा । द्वारा बेकर की प्रमेय , हम बाध्य कम कर सकते हैं | Λ | > 2 - एक निश्चित स्थिर सी के लिए सी लॉग एन । इस प्रकार, निम्नलिखित सही ढंग के हस्ताक्षर की गणना करता है Λ :Λ0

|Λ|>2-सीलॉगn
सीΛ
  1. आउटपुट के हस्ताक्षर , जहां π मैं का एक अनुमान है लॉग पी मैं करने के लिए मीटर : = सी लॉग n + कश्मीर + 1 सटीकता के टुकड़े।Σमैं=1βमैंπमैंπमैंलॉगपीमैं: =सीलॉगn++1

()()=हे(लॉग2हे(लॉग*))हे(2)लॉगपीमैंहे(()लॉग)Σमैंβमैंπमैंहे(())हे(()लॉग)हे(लॉगnपीएलy(लॉगलॉगn))

हे(n)


धन्यवाद! मुझे बाद में विवरणों के माध्यम से काम करना होगा, लेकिन यह बहुत ही आशाजनक है!
user168715
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.