আমি একটি অ্যালগরিদম প্রশ্ন সমাধান করছি এবং আমার বিশ্লেষণটি হ'ল এটি ও (2 ^ স্কয়ার্ট (এন)) এ চলে। এটা কত বড়? এটি ও (2 ^ n) এর সমান? এটা কি এখনও বহু-বহির্ভূত সময়?
আমি একটি অ্যালগরিদম প্রশ্ন সমাধান করছি এবং আমার বিশ্লেষণটি হ'ল এটি ও (2 ^ স্কয়ার্ট (এন)) এ চলে। এটা কত বড়? এটি ও (2 ^ n) এর সমান? এটা কি এখনও বহু-বহির্ভূত সময়?
উত্তর:
এটা একটি মজার প্রশ্ন। ভাগ্যক্রমে, একবার আপনি কীভাবে এটি সমাধান করবেন তা জানার পরে এটি বিশেষভাবে শক্ত নয়।
ফাংশনগুলির জন্য চ : এন → আর + এবং জি : এন → আর + , আমাদের কাছে ফ ∈ ও ( জি ) থাকে এবং কেবল যদি লিম সুপার এন → ∞ ফ ( এন ) / জি ( এন ) ∈ আর থাকে ।
একটি ফাংশন এফ : এন → আর + এর সর্বাধিক বহুত্ববৃত্তীয় বৃদ্ধি রয়েছে যদি কেবলমাত্র সেখানে থাকে যখন ধ্রুবক কে ∈ এন যেমন f ∈ O ( n ↦ n কে ) থাকে। আসুন এটিকে নির্বিচারে তবে স্থির কে ∈ এন এর জন্য কাজ করি ।
লিম সুপার এন → ∞ 2 ( এন 1/2 ) / এন কে =
লিম এন ∞ ∞ 2 ( এন 1/2 ) / এন কে =
লিম এন → ∞ ই লগ (2) এন 1/2 / ই লগ ( এন ) কে =
লিমি এন → ∞ ই লগ (2) এন 1/2 - লগ ( এন ) কে = ∞ ∉ আর
প্রথম সাম্যতা সত্য কারণ মনোনীতকারী এবং ডিনোমিনেটর উভয়ই একঘেয়েভাবে দৃ stead় ক্রমবর্ধমান। দ্বিতীয় সমতাটি x y = e লগ ( x ) y পরিচয় ব্যবহার করে । সীমা সীমাবদ্ধ নয় কারণ চূড়ান্ত এক্সপ্রেশনটির এক্সপেনশনটি উপরে সীমাবদ্ধ নয়। একটি আনুষ্ঠানিক প্রমাণ না দিয়ে, এটি ধারণা করা যেতে পারে যে এন 1/2 লগ ( এন ) asyptotically প্রভাবিত । অতএব, প্রশ্নে ফাংশন বহুবর্ষীয় বৃদ্ধি ছাড়িয়ে গেছে।
যাইহোক, এর বৃদ্ধি তাত্পর্যপূর্ণ তুলনায় কঠোরভাবে কম, যেখানে সূচকীয় সংজ্ঞা দেওয়া হয়েছে (আমার দ্বারা, এই উদ্দেশ্যে) সি > ০ এর জন্য ও ( এন ↦ 2 সি এন ) হিসাবে এটি দেখানো আরও সোজা সামনের দিকে।
লিম সুপার এন → ∞ 2 সি এন / 2 ( এন 1/2 ) = লিমি এন → ∞ 2 সি এন - এন 1/2 = ∞ ∉ আর
যে কোনও নির্ধারিত সি > ০. সুতরাং, কার্যকারিতাটির জটিলতা কোথাও সত্যই বহুবর্ষীয় বা ঘনিষ্ঠর মধ্যে রয়েছে।
এটা কত বড়? ঠিক আছে, ও (2 ^ স্কয়ার্ট (এন)) এটি ঠিক কত বড় :-(
এর অর্থ কী তা বোঝার জন্য, কল্পনা করুন যে আপনার অ্যালগোরিদমটি কেবল ও (2 ^ স্কয়ার্ট (এন)) হবে না, তবে এটি আপনার কম্পিউটারে ঠিক 2 ^ স্কয়ার্ট (এন) ন্যানোসেকেন্ডগুলি নেবে:
n = 100: 2 ^ 10 = 1024 ন্যানোসেকেন্ড। কোন সময় নেই। n = 1000: 2 ^ 31.xxx = 2 বিলিয়ন ন্যানোসেকেন্ড। দুই সেকেন্ড, এটি লক্ষণীয়। n = 10,000: 2 ^ 100 ≈ 10 ^ 30 ন্যানোসেকেন্ডস = 10 ^ 21 সেকেন্ড = 30 ট্রিলিয়ন বছর।
এটি 2 ^ n ন্যানোসেকেন্ডের চেয়ে অনেক বেশি ভাল, যেখানে এন = 100 কে 30 ট্রিলিয়ন বছর লাগবে, তবে এখনও আপনি যে সমস্যার সমাধান করতে পারেন সেগুলির আকার বেশ সীমিত। যদি আপনি কোনও সমস্যাটিকে "সমাধানযোগ্য" হিসাবে বিবেচনা করেন যদি আপনার কম্পিউটার এক সপ্তাহের মধ্যে এটি সমাধান করতে পারে তবে এটি প্রায় 6 x 10 ^ 14 ন্যানোসেকেন্ড, এটি প্রায় এন = 2,400। অন্যদিকে, এন = 400 অবধি মিলিসেকেন্ডে সমাধান করা যায়।
(অনুশীলনে, এন = 10,000 এর জন্য উভয় হে (2 q স্কয়ার্ট (এন)) এবং ও (2 ^ n) ঠিক একই সময় নেয়: এর জন্য অপেক্ষা করতে খুব বেশি সময় লাগবে))
এটি কোনও বহুপদী ছাড়িয়ে যায়। N ^ 1000 সেকেন্ড সময় নিয়ে অন্য একটি অ্যালগরিদম নিন। যা এন = ২ এর জন্য কার্যত অলসযোগ্য able এই অ্যালগরিদমটি n প্রায় 885 মিলিয়ন না হওয়া পর্যন্ত বেশি সময় নেয়। তবে সত্যই, কে চিন্তা করে? এই মুহূর্তে উভয় অ্যালগরিদমগুলি যে বছরের সংখ্যা নেয় 9000 ডিজিটের সংখ্যা।