সময়ের জটিলতা অ্যালগরিদমের বৈশিষ্ট্যগুলি কী কী ?


19

কখনও কখনও এটি সতর্কতার সাথে আমার পরীক্ষা করে অ্যালগরিদমের সময়ের জটিলতা সনাক্ত করা সহজ। এর দুটি নেস্টেড লুপ সহ অ্যালগরিদমগুলি অবশ্যই । অ্যালগরিদমগুলি যে দুটি মানগুলির গ্রুপগুলির সমস্ত সম্ভাব্য সংমিশ্রণ অন্বেষণ করে তা অবশ্যই ।এন 2 এন 2 এনNN2N2N

তবে আমি কীভাবে জটিলতার সাথে একটি অ্যালগরিদমকে "স্পট" করব তা জানি না । একটি পুনরাবৃত্তিমূলক একত্রীকরণ বাস্তবায়ন, উদাহরণস্বরূপ is সংযুক্তি বা অন্যান্য অ্যালগরিদমগুলির সাধারণ বৈশিষ্ট্যগুলি কী কী যা যদি আমি একটি বিশ্লেষণ করছিলাম তবে আমাকে একটি সূত্র দেবে?Θ ( এন লগ এন )Θ(NlogN)Θ(NlogN)

আমি নিশ্চিত যে অ্যালগরিদম জটিলতার একাধিক উপায় হতে পারে , সুতরাং যে কোনও এবং সমস্ত উত্তর প্রশংসাযোগ্য। বিটিডাব্লু আমি কঠোর প্রমাণ নয়, সাধারণ বৈশিষ্ট্য এবং টিপস চাইছি।Θ(NlogN)


6
O(logn) অর্থ গাছ।
প্রতীক দেওঘরে


2
@ প্রতীকদেওঘরে: অগত্যা নয়।
রাফেল

3
@ রাফেল মানে আমি বেশিরভাগই! :)
প্রতীক দেওঘরে

উত্তর:


17

আপনার প্রত্নতাত্ত্বিক হল একটি বিভাজন এবং বিজয়ী অ্যালগরিদম, যা রৈখিক সময়ে কাজকে বিভক্ত করে (এবং পুনঃনির্মাণ) করে এবং টুকরোগুলির উপরে পুনরাবৃত্তি করে। মার্জ সাজানোর পদ্ধতিটি সেভাবে কাজ করে: সময়কে ইনপুটকে মোটামুটি সমান দুটি টুকরো টুকরো টুকরো করে কাটান, প্রতিটি টুকরোকে পুনরাবৃত্তভাবে বাছাই করুন এবং সময়টি দুটি সাজানো অর্ধেকের সংমিশ্রণে ব্যয় করুন ।( এন ) Θ ( এন )Θ(nlogn)O(n)Θ(n)

স্বজ্ঞাতভাবে, বিভাজন এবং বিজয়ী ধারণাটি অব্যাহত রেখে প্রতিটি বিভাগ পর্যায় মোট রৈখিক সময় নেয়, কারণ বিভাজনের জন্য টুকরো সংখ্যার বৃদ্ধি ঠিক টুকরো আকারের হ্রাসের সাথে মেলে, যেহেতু বিভাগ দ্বারা নেওয়া সময়টি লিনিয়ার হয়। মোট চলমান সময় বিভাগ বিভাগের সংখ্যার দ্বারা গুণিত বিভাগ বিভাগের মোট ব্যয়ের পণ্য is যেহেতু প্রতিটি সময় এই টুকরোগুলির আকার অর্ধেক হয়ে যায়, সেখানে বিভাগের স্তর রয়েছে, সুতরাং মোট চলমান সময় । (একটি গুণক ধ্রুবক পর্যন্ত, লগারিদমের ভিত্তি অপ্রাসঙ্গিক)n লগ ( এন )log2(n)nlog(n)

এটিকে সমীকরণে () স্থাপন করা, এই জাতীয় অ্যালগরিদমের চলমান সময় অনুমান করার একটি উপায় এটিকে পুনরাবৃত্তভাবে প্রকাশ করা হয়: । এটি পরিষ্কার যে এই অ্যালগরিদমটি লিনিয়ার সময়ের চেয়ে বেশি সময় নেয় এবং আমরা : দ্বারা ভাগ করে আরও কত দেখতে পারি যখন দ্বিগুণ হয়, তখন স্থির পরিমাণে বৃদ্ধি পায়: লোগারিথ্মিকভাবে বা অন্য কথায়, ।টি ( এন ) = 2 টি ( এন / 2 ) + Θ ( এন ) এন টি ( এন )T(n)T(n)=2T(n/2)+Θ(n)nnটি(এন)/এনটি(এন)/এনটি(এন)=Θ(এনলগএন)

T(n)n=T(n/2)n/2+Θ(1)
nT(n)/nT(n)/nT(n)=Θ(nlogn)

এটি আরও সাধারণ প্যাটার্নের একটি উদাহরণ: মাস্টার উপপাদ্য । কোনো রিকার্সিভ অ্যালগরিদম যে ভাগ আকার তার ইনপুট মধ্যে আকারের টুকরা এবং একটি সময় লাগে বিভাগ এবং পুনর্সমম্বয় সম্পাদন করতে, দৌড়ানো সময় সন্তুষ্ট । এটি একটি বদ্ধ ফর্ম নিয়ে যায় যা এবং এর মান এবং এর আকারের উপর নির্ভর করে । যদি এবং , তবে মাস্টার উপপাদ্যটি ।a n / b f ( n ) T ( n ) = a T ( n / b ) + f ( n ) a b f a = b f ( n ) = Θ ( n ) T ( n ) = Θ ( n ) লগ এন )nan/bf(n)T(n)=aT(n/b)+f(n)abfa=bf(n)=Θ(n)T(n)=Θ(nlogn)


1
সংক্ষিপ্তসার হিসাবে: অ্যালগরিদমগুলি যা একবারে অনুসন্ধানের জায়গার ধ্রুবক ভগ্নাংশের সাথে দূরে থাকে লোগারিদমিক পদগুলিকে প্রদর্শন করবে। অন্যান্য কারণগুলি এটি সম্পাদন করতে কতক্ষণ সময় নেয় তার উপর নির্ভর করে।
রাফেল

1
উদাহরণস্বরূপ: কুইকোর্টে গড় গড় কেসO(nlogn)
ভিজেএন

11

অন্যান্য দুটি বিভাগের অ্যালগরিদম যা সময় নেয়:Θ(nlogn)

অ্যালগরিদম যেখানে প্রতিটি আইটেম পরিবর্তে প্রক্রিয়াভুক্ত হয় এবং প্রতিটি আইটেমকে প্রক্রিয়া করতে লোগারিথমিক সময় লাগে (যেমন হিপসোর্ট বা বিমানের অনেকগুলি সুইপ কম্পিউটেশনাল জ্যামিতি অ্যালগোরিদম)।

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


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

@ রাফেল আমি জানি যে বাছাই করা সময়গুলি ইতিমধ্যে প্রদত্ত সময়ের বিভাগগুলির সাথে বাড়াবাড়ি red মুল বক্তব্যটি হ'ল বাছাই করা কখনও কখনও "বাধা" এবং অ্যালগরিদম যেখানে প্রথম ব্লাশ করার সময় প্রশ্নটি বাছাইয়ের বিষয়ে নয় তবে এখনও রানটাইম থাকতে পারে কারণ বাছাই করা প্রয়োজনীয়।
জো

9

অন্য বিভাগ: অ্যালগরিদমগুলি যাতে আউটপুটটির আকার এবং তাই চলমান সময় আউটপুট আকারে রৈখিক হয় ।Θ ( এন লগ এন )Θ(nlogn)Θ(nlogn)

যদিও এই জাতীয় অ্যালগরিদমের বিবরণ প্রায়শই বিভাজন এবং বিজয়ের কৌশলগুলি ব্যবহার করে তবে অগত্যা তাদের তা করার দরকার নেই। রান-টাইম মৌলিকভাবে জিজ্ঞাসা করা প্রশ্ন থেকে আসে এবং তাই আমি মনে করি এটি আলাদাভাবে উল্লেখ করার মতো worth

এটি ডেটা স্ট্রাকচারে উঠে আসে যা একটি বর্ধিত বাইনারি অনুসন্ধান গাছের উপর ভিত্তি করে যেখানে প্রতিটি নোড সেই নোডের সাবট্রির পাতাগুলি অনুসন্ধান করার জন্য একটি রৈখিক আকারের ডেটা স্ট্রাকচার সঞ্চয় করে। এই জাতীয় ডেটা স্ট্রাকচারগুলি প্রায়শই জ্যামিতিক পরিসীমা অনুসন্ধানে উঠে আসে এবং প্রায়শই পচে যাওয়া পরিকল্পনার উপর ভিত্তি করে থাকে । দেখুন আগরওয়াল জরিপ

একটি সুনির্দিষ্ট উদাহরণের জন্য, দুটি মাত্রিক অরথোগোনাল রেঞ্জের প্রশ্নের উত্তর দেওয়ার জন্য নির্মিত পরিসর-বৃক্ষটি বিবেচনা করুন । যদিও একক শব্দের মধ্যে একাধিক বস্তু প্যাক করার জন্য কিছু সংক্ষেপণ কৌশল ব্যবহার করে স্থানটি হ্রাস করা হয়েছে, তথ্যের কাঠামোর পাঠ্যপুস্তক (এবং সর্বাধিক স্বজ্ঞাত) সংস্করণে স্থানের প্রয়োজন (প্রতিটি পাতা একটি সহায়ক কাঠামোতে সংরক্ষণ করা হয়) পাতা থেকে মূলের, বা জায়গাগুলির পথে প্রতিটি নোড , এবং নির্মাণের অ্যালগরিদম স্থানের প্রয়োজনে সময় লিনিয়ার লাগে ।( লগ এন )O(nlogn)O(logn)


একটি উদাহরণ একটি চালনী ব্যবহার করে এন-থাই প্রাইম সন্ধান করা হবে, কারণ আপনার আকারের একটি চালনী প্রয়োজন θ(nlogn)
gnasher729


5

এগুলি সাধারণত "বিভাজন এবং বিজয়" জাতের অ্যালগরিদম, যেখানে সাবোলিউশনগুলি বিভক্তকরণ এবং একত্রিত করার ব্যয় "খুব বেশি বড়" নয়। কি ধরণের পুনরাবৃত্তিগুলি এই আচরণের জন্ম দেয় তা দেখতে এই FAQ এ একবার দেখুন ।



-1

O(nlogn)

for (i = 0; i < constant; i++){
    for(j = 0; j < n; j++){
        // Do some O(1) stuff on the input
    }
}

// Alternative Variant:
for (i = 0; i < constant; i++){
    for(j = n; j < constant; j++){
        // Do some O(1) stuff on the input
    }
}

O(n2)

আমি এই লুপটি ব্যবহার করে এমন একটি অ্যালগরিদমের একটি দৃ concrete় উদাহরণ দিতে পারি না, তবে কাস্টম অ্যালগরিদমগুলি কোডিং করার সময় এটি প্রায়শই আসে।


O(nlogn)Θ(n)Θ(1)Θ(|n|)n

O(nlogn)

অতিরিক্ত হিসাবে, মূল প্রশ্নটি বিগ-থিটা জিজ্ঞাসা করে না।
নিকোলাস মিয়ারি

1
O(nlogn)O(22n)O(almost anything else)Θ(nlogn)O(nlogn)
ডেভিড রিচার্বি

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