অ্যালগরিদমের উদাহরণ যা ও (1), ও (এন লগ এন) এবং ও (লগ এন) জটিলতা রয়েছে


114

ও (1), ও (এন লগ এন) এবং ও (লগ এন) জটিলতা রয়েছে এমন কয়েকটি অ্যালগরিদম আমরা কীভাবে ব্যবহার করি?


6
উইকি কেন? এটি কোনও সমীক্ষা বা বিষয়ভিত্তিক নয়। তিনি বিগ-ও বৈশিষ্ট্যের নির্দিষ্ট উদাহরণ চান।
paxdiablo

4
উইকি কারণ এর কোনও একক সঠিক উত্তর নেই, এর একাধিক উত্তর রয়েছে।
জেসন এস

2
উইকিপিডিয়ায় একটি ভাল তালিকাও রয়েছে। en.wikipedia.org/wiki/Time_complexity
Homer6

উত্তর:


234

আপনি যদি প্রশ্নের উত্তর অনুসারে সময় জটিলতার সাথে অ্যালগোরিদম / গ্রুপ অফ স্টেটমেন্টের উদাহরণ চান তবে এখানে একটি ছোট তালিকা রয়েছে -

O(1) সময়

  • অ্যারে সূচক অ্যাক্সেস করা হচ্ছে (int a = ARR [5];)
  • লিঙ্কযুক্ত তালিকায় একটি নোড .োকানো
  • স্ট্যাকে পুশিং এবং পপিং করা হচ্ছে
  • সারি থেকে সন্নিবেশ এবং অপসারণ
  • অ্যারেতে সংরক্ষিত গাছে নোডের পিতামাতার বা বাম / ডান সন্তানের সন্ধান করা
  • দ্বৈত লিঙ্কযুক্ত তালিকায় পরবর্তী / পূর্ববর্তী উপাদানটিতে জাম্পিং

O(n) সময়

সংক্ষেপে, সমস্ত ব্রুট ফোর্স অ্যালগরিদম বা Noob যা লিনিয়ারিটি প্রয়োজন, ও (এন) সময় জটিলতার উপর ভিত্তি করে

  • একটি অ্যারে অনুসরণ করে
  • কোনও লিঙ্কযুক্ত তালিকার সন্ধান করা হচ্ছে
  • লিনিয়ার অনুসন্ধান
  • একটি লিঙ্কযুক্ত তালিকায় একটি নির্দিষ্ট উপাদান মুছে ফেলা (সাজানো নয়)
  • দুটি স্ট্রিং তুলনা করা
  • প্যালিনড্রোমের জন্য চেক করা হচ্ছে
  • গণনা / বালতি বাছাই করুন এবং এখানেও আপনি আরও লক্ষ লক্ষ উদাহরণ খুঁজে পেতে পারেন ....

O(log n) সময়

  • বাইনারি অনুসন্ধান
  • বাইনারি অনুসন্ধান গাছে সবচেয়ে বড় / ক্ষুদ্রতম সংখ্যা সন্ধান করা
  • লিনিয়ার কার্যকারিতার উপর ভিত্তি করে কিছু বিভাজন এবং বিজয়ী অ্যালগরিদম
  • ফিবোনাচি নাম্বার গণনা করা - সেরা পদ্ধতি এখানে মৌলিক ভিত্তি সম্পূর্ণ ডেটা ব্যবহার করে না, এবং প্রতিটি পুনরাবৃত্তির সাথে সমস্যার আকার হ্রাস করে না

O(n log n) সময়

'লগ এন' এর ফ্যাক্টরটি ডিভাইড এবং কনকয়ের বিবেচনায় নিয়ে এসেছিল। এর মধ্যে কিছু অ্যালগরিদম সেরা অনুকূলিত এবং প্রায়শই ব্যবহৃত হয়।

  • বাছাই বাছাই করুন
  • গাদা সাজান
  • দ্রুত বাছাই করুন
  • হে (এন ^ 2) অ্যালগরিদমকে অনুকূলকরণের উপর ভিত্তি করে কিছু বিভাজন এবং বিজয়ী অ্যালগরিদম

O(n^2) সময়

তাদের ও (নলন) সহকর্মীরা উপস্থিত থাকলে এইগুলি কম দক্ষ অ্যালগরিদম হওয়ার কথা। সাধারণ অ্যাপ্লিকেশনটি এখানে ব্রুট ফোর্স হতে পারে।

  • বাবল বাছাই
  • সন্নিবেশ সাজান
  • বাছাই বাছাই করুন
  • একটি সাধারণ 2D অ্যারে অনুসরণ করে ing

5
এন কী !? আমি ভাবছিলাম যে সাধারণ অ্যালগরিদম n কী ব্যবহার করে?
Y_Y

একটি হ্যাশম্যাপ মান অ্যাক্সেস করার সাথে সাথে আরও জটিল অ্যালগরিদমে যেমন এলআরইউ বাস্তবায়ন যা হ্যাশম্যাপ এবং দ্বিগুণ-সংযুক্ত-তালিকা ব্যবহার করে বা পুশ / পিওপি / এমআইএন কার্যকারিতা সহ স্ট্যাক প্রয়োগ করে achieve এছাড়াও ফিবোনাকির পুনরাবৃত্তিমূলক বাস্তবায়ন এন এর আওতায় পড়ে।
গ্রামীণকোডার

11
আমার ওসিডি চাইছে আপনি O(log n)তালিকাটি তালিকার আগে O(n)হ'ল যাতে তালিকাটি সেরা থেকে খারাপের দিকে চলে যায়। হা হা :)
স্যাম ইটন

4
একটি 2 ডি অ্যারে অনুসরণ করা আসলে ও (এনএক্সএম) হয় যদি না এটি বর্গ ম্যাট্রিক্স হয়।
সাইমন পেক

1
'ভ্রমণ বিক্রয়কর্মী' সমস্যাটি এন এর একটি উদাহরণ! (এন ফ্যাক্টরিয়াল) পাশাপাশি
জুল 66ernaut

28

একটি সাধারণ উদাহরণ O(1)হতে পারে return 23;- ইনপুট যাই হোক না কেন, এটি একটি নির্দিষ্ট, সীমাবদ্ধ সময়ে ফিরে আসবে।

একটি সাধারণ উদাহরণ O(N log N)একটি ভাল অ্যালগরিদম (উদাহরণস্বরূপ মার্জোর্ট) দিয়ে ইনপুট অ্যারে বাছাই করা হবে।

একটি আদর্শ উদাহরণ যদি O(log N)বাইসেকশন অনুসারে বাছাই করা ইনপুট অ্যারেটিতে একটি মান সন্ধান করা হয়।


28

ও (1) - বেশিরভাগ রান্নার পদ্ধতিগুলি হ'ল (1), এমনকি রান্না করার জন্য আরও বেশি লোক থাকার পরেও এটি একটি অবিচ্ছিন্ন সময় নেয় (একটি ডিগ্রি পর্যন্ত, কারণ আপনি নিজের পাত্র / প্যানের জায়গার বাইরে চলে যেতে পারেন) এবং রান্না বিভক্ত করা প্রয়োজন)

ও (লগইন) - আপনার টেলিফোন বইয়ে কিছু সন্ধান করা। বাইনারি অনুসন্ধান চিন্তা করুন।

ও (এন) - একটি বই পড়া, যেখানে এন পৃষ্ঠাগুলির সংখ্যা। এটি কোনও বই পড়তে সর্বনিম্ন সময় লাগে।

O (nlogn) - তাত্ক্ষণিকভাবে চিন্তা করতে পারে না যে কেউ প্রতিদিন এমন কিছু করতে পারে যা নিষ্ক্রিয় হয় ... যদি না আপনি মার্জ বা দ্রুত বাছাই করে কার্ড বাছাই করেন!


2
মিনি-রোস্টের চেয়ে রোস্ট রান্না করতে এটি অনেক বেশি সময় নেয় :-)
প্যাক্সিডিয়াবল

4
তবে সাধারণত দুটি মিনি রোস্ট বনাম একটি মিনি রোস্ট রান্না করতে একই সময় লাগে, তবে আপনার চুলা এটি ফিট করার পক্ষে যথেষ্ট বড় হয়!
চিআই

1
খুব অন্তর্দৃষ্টিপূর্ণ! আমি মনে করি নাম / সংখ্যাগুলির তালিকা থেকে একটি টেলিফোন বা ঠিকানা বই সংকলনের কাজটি হ'ল (এন লগ এন) হতে পারে
স্কোয়াশেড.বাগাবু

10

আমি আপনাকে কিছু সাধারণ অ্যালগরিদম অফার করতে পারি ...

  • ও (1): একটি অ্যারেতে কোনও উপাদান অ্যাক্সেস করা হচ্ছে (যেমন int i = a [9])
  • ও (এন লগ এন): দ্রুত বা একত্রীকরণ (গড়)
  • ও (লগ এন): বাইনারি অনুসন্ধান

হোমওয়ার্ক / সাক্ষাত্কারের মতো প্রশ্নের মতো এই শব্দগুলি হ্রাস পাবে ut আপনি যদি আরও কংক্রিটের জন্য সন্ধান করেন তবে এটি কিছুটা কঠিন কারণ সাধারণভাবে জনসাধারণের কাছে জনপ্রিয় অ্যাপ্লিকেশনটির অন্তর্নিহিত বাস্তবায়ন (অবশ্যই ছাড়ার মুক্ত উত্স) সম্পর্কে ধারণা থাকবে না এবং সাধারণভাবে ধারণাটি কোনও "অ্যাপ্লিকেশন" এর ক্ষেত্রেও প্রযোজ্য নয়


4

ও (1): দাবাতে সেরা পরবর্তী পদক্ষেপ খুঁজে পাওয়া (বা সেই বিষয়ে যান)। গেমের রাজ্যের সংখ্যা সীমাবদ্ধ হওয়ায় এটি কেবল ও (1) :-)


5
হ্যাঁ, আপনি সাধারণত স্থানের জন্য সময়ের বাইরে বাণিজ্য করতে পারেন। টিকিট-টো-টো গেমের জন্য আমি আসলে এটি করেছি যেহেতু কেবলমাত্র 3 ^ 9 স্টেট রয়েছে (আপনি বুদ্ধিমানভাবে ঘূর্ণন পরিচালনা করেন তবে কম)। দাবা, তবে কিছুটা বড় সংখ্যক রাজ্য রয়েছে :-)
প্যাক্সিডিয়াবলো

1
সমস্যাটি হ'ল আমি কেবল O(1)ন্যানোসেকেন্ডগুলি বেঁচে থাকব এবং আপনি অবশ্যই জানেন যে O(1)
কোনটি

3

সফ্টওয়্যার অ্যাপ্লিকেশনটির জটিলতা পরিমাপ করা হয় না এবং এটি বিগ-ও স্বরলিপিতে লেখা হয় না। এটি কেবলমাত্র অ্যালগরিদম জটিলতা পরিমাপ করতে এবং একই ডোমেনে আলগোরিদিমগুলির তুলনা করতে কার্যকর। সম্ভবত আমরা যখন ও (এন) বলি তখন আমাদের অর্থ হ'ল এটি "ও (এন) তুলনা " বা "ও (এন) পাটিগণিত ক্রিয়াকলাপ"। এর অর্থ, আপনি কোনও জোড়ের অ্যালগরিদম বা অ্যাপ্লিকেশন তুলনা করতে পারবেন না।


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

উল্লেখ করার দরকার নেই যে অনেক ব্যবহারিক ক্ষেত্রে ও (লগএন) অ্যালগরিদমের "সি" এটিকে সাধারণ ও (এন) অ্যালগরিদমের চেয়ে খারাপ করে তোলে।
জেড

হাহা, হ্যাঁ, এবং এন দ্বারা আমরা তারপরে একটি টিউরিং মেশিন টেপটিতে ইনপুটটির দৈর্ঘ্য বোঝাচ্ছি - যা বিভাগের উল্লম্ব রূপটিকে কার্যকর করতে ব্যয়কারী সময় লাগে। :-) প্রতিটি ডোমেনের নিজস্ব প্রয়োজনীয়তা এবং বিমূর্তকরণের নিজস্ব প্রিন্ট থাকে।
পি

3

ও (1) - দ্বিগুণ সংযুক্ত তালিকা থেকে একটি উপাদান মোছা। যেমন

typedef struct _node {
    struct _node *next;
    struct _node *prev;
    int data;
} node;


void delete(node **head, node *to_delete)
{
    .
    .
    .
}

2

আপনি আপনার তালিকায় নিম্নলিখিত আলগোরিদিমগুলি যুক্ত করতে পারেন:

O(1)- সংখ্যার সমান বা বিজোড় কিনা তা নির্ধারণ করা; হাশম্যাপের সাথে কাজ করা

O(logN) - x ^ N গণনা,

O(N Log N) - দীর্ঘতম বর্ধমান অনুচ্ছেদ qu


1

ও (এন লগ এন) বিখ্যাতভাবে আপনি একটি নির্বিচার সেট সেট বাছাই করতে পারেন তার উপরের আবদ্ধ (একটি মান এবং অত্যন্ত সমান্তরাল কম্পিউটিং মডেল না ধরে)।


0

0 (লগইন) -বাইনারি সন্ধান, একটি অ্যারেতে শীর্ষ উপাদান (একাধিক শিখর থাকতে পারে) 0 (1) -অনুতথন একটি তালিকা বা একটি স্ট্রিংয়ের দৈর্ঘ্য গণনা করে। লেন () ফাংশনটি 0 (1) সময় নেয়। একটি অ্যারেতে কোনও উপাদান অ্যাক্সেস করতে 0 (1) সময় লাগে। স্ট্যাকে পুশ অপারেশনটি 0 (1) সময় নেয়। 0 (nlogn) - মার্জ সাজান। পাইথনে বাছাই করতে সময় লাগবে lo সুতরাং আপনি যখন listname.sort () ব্যবহার করেন তখন এটি অলস সময় নেয়।

একটি হ্যাশ টেবিলের মধ্যে নোট-অনুসন্ধানে কখনও কখনও সংঘর্ষের কারণে ধ্রুবক সময়ের চেয়ে বেশি সময় নেয়।


0

ও (2 এন )

ও (2 এন ) এমন একটি অ্যালগোরিদমকে বোঝায় যার বৃদ্ধি প্রতিটি সংযোজনের সাথে ইনপুট ডেটা সেটে দ্বিগুণ হয়। একটি ও (2 এন ) ফাংশনের বৃদ্ধির বক্ররেখাটি ক্ষণস্থায়ী - খুব অগভীর থেকে শুরু করে, তারপরে আবহাওয়াভাবে বাড়বে। ও (2 এন ) ফাংশনের উদাহরণ হ'ল ফিবোনাচি সংখ্যাগুলির পুনরাবৃত্ত গণনা:

int Fibonacci (int number)
{
if (number <= 1) return number;
return Fibonacci(number - 2) + Fibonacci(number - 1);
}

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