ও (1), ও (এন লগ এন) এবং ও (লগ এন) জটিলতা রয়েছে এমন কয়েকটি অ্যালগরিদম আমরা কীভাবে ব্যবহার করি?
ও (1), ও (এন লগ এন) এবং ও (লগ এন) জটিলতা রয়েছে এমন কয়েকটি অ্যালগরিদম আমরা কীভাবে ব্যবহার করি?
উত্তর:
আপনি যদি প্রশ্নের উত্তর অনুসারে সময় জটিলতার সাথে অ্যালগোরিদম / গ্রুপ অফ স্টেটমেন্টের উদাহরণ চান তবে এখানে একটি ছোট তালিকা রয়েছে -
O(1)
সময়O(n)
সময়সংক্ষেপে, সমস্ত ব্রুট ফোর্স অ্যালগরিদম বা Noob যা লিনিয়ারিটি প্রয়োজন, ও (এন) সময় জটিলতার উপর ভিত্তি করে
O(log n)
সময়O(n log n)
সময়'লগ এন' এর ফ্যাক্টরটি ডিভাইড এবং কনকয়ের বিবেচনায় নিয়ে এসেছিল। এর মধ্যে কিছু অ্যালগরিদম সেরা অনুকূলিত এবং প্রায়শই ব্যবহৃত হয়।
O(n^2)
সময়তাদের ও (নলন) সহকর্মীরা উপস্থিত থাকলে এইগুলি কম দক্ষ অ্যালগরিদম হওয়ার কথা। সাধারণ অ্যাপ্লিকেশনটি এখানে ব্রুট ফোর্স হতে পারে।
O(log n)
তালিকাটি তালিকার আগে O(n)
হ'ল যাতে তালিকাটি সেরা থেকে খারাপের দিকে চলে যায়। হা হা :)
একটি সাধারণ উদাহরণ O(1)
হতে পারে return 23;
- ইনপুট যাই হোক না কেন, এটি একটি নির্দিষ্ট, সীমাবদ্ধ সময়ে ফিরে আসবে।
একটি সাধারণ উদাহরণ O(N log N)
একটি ভাল অ্যালগরিদম (উদাহরণস্বরূপ মার্জোর্ট) দিয়ে ইনপুট অ্যারে বাছাই করা হবে।
একটি আদর্শ উদাহরণ যদি O(log N)
বাইসেকশন অনুসারে বাছাই করা ইনপুট অ্যারেটিতে একটি মান সন্ধান করা হয়।
ও (1) - বেশিরভাগ রান্নার পদ্ধতিগুলি হ'ল (1), এমনকি রান্না করার জন্য আরও বেশি লোক থাকার পরেও এটি একটি অবিচ্ছিন্ন সময় নেয় (একটি ডিগ্রি পর্যন্ত, কারণ আপনি নিজের পাত্র / প্যানের জায়গার বাইরে চলে যেতে পারেন) এবং রান্না বিভক্ত করা প্রয়োজন)
ও (লগইন) - আপনার টেলিফোন বইয়ে কিছু সন্ধান করা। বাইনারি অনুসন্ধান চিন্তা করুন।
ও (এন) - একটি বই পড়া, যেখানে এন পৃষ্ঠাগুলির সংখ্যা। এটি কোনও বই পড়তে সর্বনিম্ন সময় লাগে।
O (nlogn) - তাত্ক্ষণিকভাবে চিন্তা করতে পারে না যে কেউ প্রতিদিন এমন কিছু করতে পারে যা নিষ্ক্রিয় হয় ... যদি না আপনি মার্জ বা দ্রুত বাছাই করে কার্ড বাছাই করেন!
আমি আপনাকে কিছু সাধারণ অ্যালগরিদম অফার করতে পারি ...
হোমওয়ার্ক / সাক্ষাত্কারের মতো প্রশ্নের মতো এই শব্দগুলি হ্রাস পাবে ut আপনি যদি আরও কংক্রিটের জন্য সন্ধান করেন তবে এটি কিছুটা কঠিন কারণ সাধারণভাবে জনসাধারণের কাছে জনপ্রিয় অ্যাপ্লিকেশনটির অন্তর্নিহিত বাস্তবায়ন (অবশ্যই ছাড়ার মুক্ত উত্স) সম্পর্কে ধারণা থাকবে না এবং সাধারণভাবে ধারণাটি কোনও "অ্যাপ্লিকেশন" এর ক্ষেত্রেও প্রযোজ্য নয়
ও (1): দাবাতে সেরা পরবর্তী পদক্ষেপ খুঁজে পাওয়া (বা সেই বিষয়ে যান)। গেমের রাজ্যের সংখ্যা সীমাবদ্ধ হওয়ায় এটি কেবল ও (1) :-)
O(1)
ন্যানোসেকেন্ডগুলি বেঁচে থাকব এবং আপনি অবশ্যই জানেন যে O(1)
সফ্টওয়্যার অ্যাপ্লিকেশনটির জটিলতা পরিমাপ করা হয় না এবং এটি বিগ-ও স্বরলিপিতে লেখা হয় না। এটি কেবলমাত্র অ্যালগরিদম জটিলতা পরিমাপ করতে এবং একই ডোমেনে আলগোরিদিমগুলির তুলনা করতে কার্যকর। সম্ভবত আমরা যখন ও (এন) বলি তখন আমাদের অর্থ হ'ল এটি "ও (এন) তুলনা " বা "ও (এন) পাটিগণিত ক্রিয়াকলাপ"। এর অর্থ, আপনি কোনও জোড়ের অ্যালগরিদম বা অ্যাপ্লিকেশন তুলনা করতে পারবেন না।
ও (এন লগ এন) বিখ্যাতভাবে আপনি একটি নির্বিচার সেট সেট বাছাই করতে পারেন তার উপরের আবদ্ধ (একটি মান এবং অত্যন্ত সমান্তরাল কম্পিউটিং মডেল না ধরে)।
0 (লগইন) -বাইনারি সন্ধান, একটি অ্যারেতে শীর্ষ উপাদান (একাধিক শিখর থাকতে পারে) 0 (1) -অনুতথন একটি তালিকা বা একটি স্ট্রিংয়ের দৈর্ঘ্য গণনা করে। লেন () ফাংশনটি 0 (1) সময় নেয়। একটি অ্যারেতে কোনও উপাদান অ্যাক্সেস করতে 0 (1) সময় লাগে। স্ট্যাকে পুশ অপারেশনটি 0 (1) সময় নেয়। 0 (nlogn) - মার্জ সাজান। পাইথনে বাছাই করতে সময় লাগবে lo সুতরাং আপনি যখন listname.sort () ব্যবহার করেন তখন এটি অলস সময় নেয়।
একটি হ্যাশ টেবিলের মধ্যে নোট-অনুসন্ধানে কখনও কখনও সংঘর্ষের কারণে ধ্রুবক সময়ের চেয়ে বেশি সময় নেয়।
ও (2 এন )
ও (2 এন ) এমন একটি অ্যালগোরিদমকে বোঝায় যার বৃদ্ধি প্রতিটি সংযোজনের সাথে ইনপুট ডেটা সেটে দ্বিগুণ হয়। একটি ও (2 এন ) ফাংশনের বৃদ্ধির বক্ররেখাটি ক্ষণস্থায়ী - খুব অগভীর থেকে শুরু করে, তারপরে আবহাওয়াভাবে বাড়বে। ও (2 এন ) ফাংশনের উদাহরণ হ'ল ফিবোনাচি সংখ্যাগুলির পুনরাবৃত্ত গণনা:
int Fibonacci (int number)
{
if (number <= 1) return number;
return Fibonacci(number - 2) + Fibonacci(number - 1);
}
Tower of Hanoi
আরও ভাল উদাহরণ হতে পারে।