আমরা গনা পারি


11

আমি সমস্যার জন্য একটি দক্ষ অ্যালগরিদম চাই:

ইনপুট : কিছু পূর্ণসংখ্যা জন্য ধনাত্মক পূর্ণসংখ্যা (বিট হিসাবে সঞ্চিত) ।3nn0

আউটপুট : সংখ্যা ।n

প্রশ্ন : আমরা গনা পারি এর বিট থেকে মধ্যে সময়?n3nO(n)


এটি একটি গণিতের উত্তর থেকে উত্সাহিত একটি তাত্ত্বিক প্রশ্ন SEএসই প্রশ্ন এই দ্বিপক্ষের জন্য একটি সূত্র কীভাবে সন্ধান করবেন? । এই প্রশ্নে, লেখক এবং প্রাকৃতিক সংখ্যাগুলি থেকে একটি সন্ধান পেতে চেয়েছিলেন । সমাধান হিসাবে আমি । সেখানে আর একটি উত্তর দৃ .়ভাবে জানিয়েছিল যে "এখানে কোনও সাধারণ সূত্র নেই", যা আমার প্রস্তাবিত সমাধানটি কীভাবে (গণনার ক্ষেত্রে) সহজ তা অবাক করে দেয়।

{2n3m:n0 and m0}
N={1,2,}
2m3n2m(2n+1)

আমার প্রস্তাবিত সমাধান সঙ্গে, আমরা যদি সত্যি জানি n এবং m , আমরা সহজেই গনা করতে 2m(2n+1) (এর বাইনারি ডিজিট লিখতে n অনুসৃত দ্বারা 1 দ্বারা অনুসরণ m শূণ্যসমূহ)। এটি O(n+m) সময় নেয়।

খোঁজা m এর বিট থেকে 2m3n অন্তত গুরুত্বপূর্ণ বিট খোঁজার জন্য পরিমাণে (যা ডান বিট বদল আনতে গণনা দ্বারা নির্ণয় করা যেতে পারে, যাব 3n মেমরি)। এটি O(m) সময় নেয় ।

তবে, আমাদের খুঁজে নেওয়া দরকার যা আরও বেশি কঠিন হতে পারে। বার বার 3 দ্বারা ভাগ করে n খুঁজে পাওয়া সম্ভব হবে তবে এটি অপব্যয় বলে মনে হচ্ছে। এর জন্য n বিভাগের ক্রিয়াকলাপ প্রয়োজন , যার প্রত্যেকটিতে O ( n ) সময় লাগবে, সুতরাং এটি মোট ( এন 2 ) সময়। [প্রকৃতপক্ষে, প্রতিটি পুনরাবৃত্তির পরে অঙ্কগুলির সংখ্যা রৈখিকভাবে হ্রাস পাবে, তবে এটি এখনও ( এন 2 ) সময়ের ফলাফল resultsnn3nO(n)O(n2)O(n2)

দেখে মনে হচ্ছে আমাদের ইনপুটটি পাওয়ার হিসাবে জেনে কাজে লাগাতে সক্ষম হওয়া উচিত ।3


2
আপনার গণনার সঠিক মডেল কী? সময়ে কোন ক্রিয়াকলাপ অনুমোদিত ? (আমরা যদি লগ 2 3 সংখ্যার সাথে পাটিগণিত করতে পারি তবে এটি বেশ কার্যকর হবে ...)O(1)log23
যুবল ফিল্মাস

3
ডাউনভোটার কি ডাউনটোটকে ব্যাখ্যা করতে পারে? একেবারেই তুচ্ছ প্রশ্নের মতো মনে হচ্ছে না। কিছু যুক্তিসঙ্গত গণনার মডেলের অধীনে চলমান সেরা সময়টি কী?
যুবাল ফিল্মাস

1
আমি 0, 1 এর এবং খালি ঘর (অসীম টেপ সহ টেপগুলি) দিয়ে টেপগুলি কল্পনা করছি। আমি সময়ে চালানোর জন্য একক বিট টগলিং এবং বাম / ডান স্থানান্তর অপারেশন চাই । (যদি আমাদের কাছে একটি অসীম টেপে 0-তম বিট একটি চিহ্নিতকারী থাকে তবে মার্কার স্থানান্তরিত করে বাম / ডান স্থানান্তরিত হওয়া অর্জন করা যাবে)। টিউরিং মেশিনের বিপরীতে, আমি চাই না যে এটি কোনও পয়েন্টার সরাতে কোনও সময় নেয়। সুতরাং "0-th বিট টগল করুন" "124126-th বিট টগল করুন" হিসাবে একই সময় নেয়। O(1)
রেবেকা জে স্টোনস

এটি কোনওভাবে এই প্রশ্নের
জে.ই.

নিম্ন সীমাটি কি সুস্পষ্ট? Ω(n)
বরিস বুখ

উত্তর:


9

সুস্পষ্ট পদ্ধতি হল:

(1) জন্য একটি আনুমানিক গণনা করুন । আপনাকে দেওয়া বাইনারি প্রতিনিধিত্ব বিট সংখ্যা বেড়ে চলেছে, এবং একটি যুত ত্রুটি মধ্যে দ্বারা 1 একজন যুত ত্রুটি মধ্যে এটি অনুমান করতে পারে ε অতিরিক্ত উপরের তাকিয়ে হে ( লগ ইন করুন 1log2(3n)ϵইনপুট বিট। এটা তোলে একটি ধ্রুবক মান চয়ন করতে চলা উচিতεযাতে একজন যুত ত্রুটি মধ্যে চূড়ান্ত ফলাফল প্রান্ত আপ ((2) ধাপে ত্রুটি সহ মিশ্রন পরে),1/2সঠিক হয়।O(log1ϵ)ϵ1/2

(২) জন্য একটি আনুমানিক গণনা করুন । আমি এটির জন্য অ্যালগরিদমগুলির সাথে পরিচিত নই তবে আমি আশা করি যে তারা আপনার প্রয়োজনীয় নির্ভুলতার বিট সংখ্যায় সময় বহুপদী নেবে এবং আপনার কেবল ( লগ এন ) যথার্থতার বিট প্রয়োজন ।log2(3)O(logn)

(3) (1) এর উত্তরটি (2) এর উত্তর দিয়ে ভাগ করুন এবং নিকটতম পূর্ণসংখ্যার সাথে বৃত্তাকার করুন।

সুতরাং প্রথম পদক্ষেপটি লিনিয়ার সময় নেয় (গণনার বেশিরভাগ মডেলগুলিতে যদিও একক-হেড ট্যুরিং মেশিনের মতো কিছু বিদ্যুতচালিত লোকের জন্য নাও হতে পারে) এবং বাকি পদক্ষেপগুলি পলিওগারিদমিক হওয়া উচিত।


3
আমি বিশ্বাস করি যে কম্পিউটিং থেকে টি সঠিকতার বিট লাগে সময় হে ( এম ( টি ) লগ টি ) , যেখানে এম ( টি ) হে ( T লগ টি 2 লগ * T ) সংখ্যাবৃদ্ধি করার সময় T -বিট নম্বর। ব্রেন্ট দেখুন - জিমারম্যান, loria.fr/~zimmerma/mca/pub226.htmllog2(3)tO(M(t)logt)M(t)O(tlogt2logt)t
রায়ান ও'ডনেল

রেফারেন্সের জন্য ধন্যবাদ এবং এটিকে আমি নিজের চেয়ে দেখার জন্য খুব অলস হওয়ার জন্য ক্ষমা চাইছি।
ডেভিড এপস্টিন

9

কোন পূর্ণসংখ্যা জন্য , লেখা 3 এন বাইনারি ইন করা দরকার, ঠিক এল = লগ ইন করুন 2 ( 3 এন ) + + 1 বিট। কিছু প্রাথমিক বীজগণিত সূচিত করে যে এল - 2n>03nL=log2(3n)+1 যে কোনও বিট দৈর্ঘ্যেরL1 এর জন্য, এই ব্যাপ্তিতে সর্বাধিক একটি পূর্ণসংখ্যা থাকে। সুতরাং,3 এরএকটি অবিচ্ছেদ্য শক্তি দেওয়া হয়যাএলবিট দীর্ঘ হয়, সূচকটি অবশ্যই পূর্ণসংখ্যা n=L-1 হওয়া উচিত

L2log23nL1log23.
L13L
n=L1log23.

4

k3n3nmod10k3nmod5k35k3φ(5k)=5k1×4

nmodφ(5k)k3nnmod43n3nmod535nmod4O(1)3nmod25e25nmod20O(1)nmod45nmodφ(5k1)3nmod5k5nmodφ(5k)

kn

O(n)k=O(n)O(1)O(n)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.