(যেহেতু এটি দীর্ঘতর উত্তর, একটি সংক্ষিপ্তসার জন্য বোল্ডস পড়ুন )
আসুন আপনার উদাহরণটি ধরুন এবং আমরা কী করছি তার পিছনের উদ্দেশ্যটি বুঝতে পেরে ধাপে ধাপে এর মধ্য দিয়ে চলুন। আমরা আপনার ফাংশন এবং এর বড় ওহ স্বরলিপি সন্ধানের লক্ষ্য দিয়ে শুরু করি:
f(n) = 6n+4
প্রথমে, আমরা O(g(n))
যে বিগ ওহ চিহ্নটি সন্ধানের চেষ্টা করছি তা হোনf(n)
। বিগ ওহ সংজ্ঞা থেকে, আমরা একটি বের করতে হবে সরলীকৃত g(n)
যেখানে কিছু ধ্রুবক অস্তিত্ব আছে c
এবং n0
যেখানে c*g(n) >= f(n)
সবার জন্য সত্য n
গুলি তার চেয়ে অনেক বেশী ' n0
।
প্রথমে, আসুন চয়ন করুন g(n) = 6n + 4
(যা O(6n+4)
বিগ ওহে উপার্জন করবে )। এক্ষেত্রে আমরা দেখতে পাই যে c = 1
এবং n0
বিগ ওহের আমাদের সংজ্ঞা থেকে যে কোনও মান গণিতের প্রয়োজনীয়তা পূরণ করবে, যেহেতু g(n)
সর্বদা সমান f(n)
:
c*g(n) >= f(n)
1*(6n + 4) >= 6n + 4 //True for all n's, so we don't need to pick an n0
এই সময়ে আমরা গাণিতিক প্রয়োজনীয়তা পূরণ করেছি। আমরা যদি থামতে থাকি তবেO(6n+4)
এটি স্পষ্ট যে এটি লেখার চেয়ে বেশি সহায়ক নয় f(n)
, সুতরাং এটি বিগ ওহ স্বরলিপিটির আসল উদ্দেশ্যটি হারাবে: একটি অ্যালগরিদমের সাধারণ সময়-জটিলতা বুঝতে! সুতরাং, আসুন পরবর্তী পদক্ষেপে সরানো: সরলীকরণ।
প্রথমত, বিগ ওহ এতটা সহজ করে কি আমরা সরল করতে পারি ? না! 6n
O(4)
(পাঠকের জন্য অনুশীলন যদি তারা বুঝতে না পারে তবে)
দ্বিতীয়ত, আমরা কী 4
এত সহজ করতে পারি যাতে বিগ ওহ হয় O(6n)
? হ্যাঁ! সেক্ষেত্রে g(n) = 6n
, তাই:
c*g(n) >= f(n)
c*6n >= 6n + 4
এই মুহুর্তে, আসুন c = 2
তারপর থেকে বেছে নেওয়া যাক বাম দিকটি প্রতিটি বৃদ্ধির জন্য ডান পাশের (6 দ্বারা) তুলনায় দ্রুত (12 দ্বারা) বাড়বে n
।
2*6n >= 6n + 4
এখন আমাদের একটি ইতিবাচক সন্ধান করতে হবে n0
যেখানে উপরের সমীকরণটি n
মানটির চেয়ে বড়গুলির জন্য সত্য । যেহেতু আমরা ইতিমধ্যে জানি যে বাম দিকটি ডানের চেয়ে দ্রুত বাড়ছে, তাই আমাদের কেবলমাত্র একটি ইতিবাচক সমাধান খুঁজে পাওয়া উচিত। সুতরাং, যেহেতু n0 = 2
উপরেরটি সত্য করে তোলে, আমরা এটি জানি g(n)=6n
বা O(6n)
এটি সম্ভাব্য বিগ ওহ স্বরলিপি f(n)
।
এখন, আমরা কী 6
এত সহজ করতে পারি যাতে বিগ ওহ হয় O(n)
? হ্যাঁ! সেক্ষেত্রে g(n) = n
, তাই:
c*g(n) >= f(n)
c*n >= 6n + 4
c = 7
বাম থেকে ডান তুলনায় দ্রুত বৃদ্ধি পাবে তাই চয়ন করা যাক ।
7*n >= 6n + 4
আমরা দেখতে পাচ্ছি যে উপরেরটি সকলের n
চেয়ে বড় বা সমান এর জন্য সত্য হবে n0 = 4
। সুতরাং, O(n)
এটি একটি সম্ভাব্য বিগ ওহ স্বরলিপি f(n)
। আমরা কি আরও সহজ করতে পারি g(n)
? নাঃ!
পরিশেষে, আমরা পেয়েছি জন্য সবচেয়ে সহজ বিগ ওহ স্বরলিপি f(n)
হয় O(n)
। কেন আমরা এত কিছুর মধ্য দিয়ে গেলাম? কারণ এখন আমরা জানি যে f(n)
এটি লিনিয়ার , যেহেতু এটি বিগ ওহ স্বরলিপিটি লিনিয়ার জটিলতার O(n)
। সুন্দর জিনিসটি এখন আমরা f(n)
অন্যান্য অ্যালগরিদমের সাথে সময়ের জটিলতা তুলনা করতে পারি ! উদাহরণস্বরূপ, আমরা এখন জানি যে f(n)
ফাংশন সঙ্গে তুলনীয় সময় জটিলতা হয় h(n) = 123n + 72
, i(n) = n
, j(n) = .0002n + 1234
, ইত্যাদি; কারণ উপরে বর্ণিত একই সরলকরণ প্রক্রিয়াটি ব্যবহার করে তাদের সকলের রৈখিক সময়-জটিলতা রয়েছে O(n)
।
মিষ্টি !!!