কোন অ্যালগরিদমকে ও (লগ লগ এন) জটিলতার কারণ হতে পারে?


106

এই পূর্ববর্তী প্রশ্নটি অ্যালগরিদমকে ও (লগ এন) জটিলতার কারণ হতে পারে এমন কয়েকটি কারণকে সম্বোধন করে।

কী কারণে অ্যালগরিদমের সময় জটিলতা হে (লগ লগ এন) হতে পারে?

উত্তর:


222

ও (লগ লগ এন) পদগুলি বিভিন্ন জায়গায় বিভিন্নভাবে প্রদর্শিত হতে পারে তবে সাধারণত দুটি প্রধান রুট রয়েছে যা এই রানটাইমে পৌঁছাবে।

স্কোয়ার রুট দ্বারা সঙ্কুচিত

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

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

উদাহরণস্বরূপ, আসুন 65,536 নম্বরটি নেওয়া যাক। 1 এ নামা না হওয়া পর্যন্ত আমাদের কতবার এটি 2 দিয়ে বিভক্ত করতে হবে? আমরা যদি এটি করি তবে আমরা পাই

  • 65,536 / 2 = 32,768
  • 32,768 / 2 = 16,384
  • 16,384 / 2 = 8,192
  • 8,192 / 2 = 4,096
  • 4,096 / 2 = 2,048
  • 2,048 / 2 = 1,024
  • 1,024 / 2 = 512
  • 512/2 = 256
  • 256/2 = 128
  • 128/2 = 64
  • 64/2 = 32
  • 32/2 = 16
  • 16/2 = 8
  • 8/2 = 4
  • 4/2 = 2
  • 2/2 = 1

এই প্রক্রিয়াটি 16 টি পদক্ষেপ নেয় এবং 65,536 = 2 16 এর ক্ষেত্রেও এটি ঘটে ।

তবে, আমরা প্রতিটি স্তরে বর্গমূল নিলে আমরা পাই get

  • √65,536 = 256
  • 6256 = 16
  • √16 = 4
  • √4 = 2

লক্ষ্য করুন যে এটি সমস্ত পথে নামতে কেবল চারটি পদক্ষেপ নেয় 2 কেন এটি এটি?

প্রথমত, একটি স্বজ্ঞাত ব্যাখ্যা। N এবং numbersn সংখ্যাগুলিতে কতগুলি সংখ্যা রয়েছে? এন সংখ্যাটিতে প্রায় লগ এন সংখ্যা রয়েছে, এবং আনুমানিক লগ (√n) = লগ (এন 1/2 ) = (1/2) লগ এন অঙ্কগুলি √n। এর অর্থ হ'ল, প্রতিবার আপনি যখন বর্গক্ষেত্রটি নেবেন, আপনি সংখ্যার অঙ্কের সংখ্যা প্রায় অর্ধেক করে দিচ্ছেন। যেহেতু আপনি কেবলমাত্র একটি পরিমাণে কে (লগ কে) বার অর্ধেক করতে পারেন এটি ধীরে ধীরে নেমে যাওয়ার আগে (বলে, 2), এর অর্থ আপনি সংখ্যা হ্রাস করার আগে আপনি কেবল বর্গমূল (লগ এন) বার নিতে পারবেন কিছু ধ্রুবক (বলুন, 2)।

এখন, এই কঠোর করতে কিছু গণিত করা যাক। দুটি পাওয়ার ক্ষমতার ক্ষেত্রে উপরের ক্রমটি পুনরায় লিখুন:

  • .65,536 = 162 16 = (2 16 ) 1/2 = 2 8 = 256
  • 6256 = 82 8 = (2 8 ) 1/2 = 2 4 = 16
  • √16 = √2 4 = (2 4 ) 1/2 = 2 2 = 4
  • √4 = √2 2 = (2 2 ) 1/2 = 2 1 = 2

লক্ষ্য করুন যে আমরা 2 16 → 2 8 → 2 4 → 2 2 → 2 1 সিকোয়েন্সটি অনুসরণ করেছি । প্রতিটি পুনরাবৃত্তির উপর, আমরা অর্ধেকের শক্তির ঘনিষ্ঠটিকে কাটা করি। এটি আকর্ষণীয়, কারণ এটি আমরা ইতিমধ্যে যা জানি তার সাথে ফিরে সংযোগ স্থাপন করে - শূন্যে নেমে যাওয়ার আগে আপনি কেবল কেটিকে অর্ধ হে (লগ কে) বারে ভাগ করতে পারেন।

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

এর প্রকৃত বিশ্বের উদাহরণ ভ্যান এমডে বোস ট্রি(vEB- ট্রি) ডেটা স্ট্রাকচার। একটি ভিইবি-ট্রি হ'ল 0 ... N - 1. রেঞ্জের পূর্ণসংখ্যা সংরক্ষণ করার জন্য একটি বিশেষ ডেটা স্ট্রাকচার: এটি নিম্নরূপে কাজ করে: গাছের মূল নোডটিতে √N পয়েন্টার থাকে, 0 বিস্তৃত বিভাজক ... N - মোটামুটি inteN পূর্ণসংখ্যার ব্যাপ্তিযুক্ত প্রতিটি intoN বালতিতে। এই বালতিগুলি তখন প্রতিটি অভ্যন্তরীণভাবে √ (√ N) বালতিতে বিভক্ত হয়, যার প্রতিটি মোটামুটি √ (√ N) উপাদান ধারণ করে। গাছটি অতিক্রম করতে, আপনি মূল থেকে শুরু করুন, কোন বালতিটি আপনি তা নির্ধারণ করুন, তারপরে যথাযথ সাবট্রিতে পুনরাবৃত্তভাবে চালিয়ে যান। ভিইবি-গাছটি যেভাবে কাঠামোবদ্ধ হয়েছে তার কারণে আপনি ও (1) সময়ে নির্ধারণ করতে পারেন যে কোনটি সাব্র্রিটিতে নামবে এবং সুতরাং (লগ লগ এন) পদক্ষেপের পরে আপনি গাছের নীচে পৌঁছে যাবেন। তদনুসারে, একটি ভিইবি-ট্রিতে দেখাতে কেবল ও (লগ লগ এন) লাগে।

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

ও (লগ এন) ছোট ইনপুটগুলিতে অ্যালগরিদম

আরও কিছু অ্যালগরিদম রয়েছে যা ও (লগ এন) আকারের অবজেক্টগুলিতে বাইনারি অনুসন্ধানের মতো অ্যালগোরিদম ব্যবহার করে ও (লগ লগ এন) রানটাইম অর্জন করে। উদাহরণস্বরূপ, এক্স-ফাস্ট ট্রাই ডেটা স্ট্রাকচার উচ্চতা ও (লগ ইউ) এর গাছের স্তরগুলির উপরে বাইনারি অনুসন্ধান সম্পাদন করে, তাই এর কয়েকটি ক্রিয়াকলাপের রানটাইম হ'ল লগ ইউ (লগ ইউ)। সম্পর্কিত Y- দ্রুত ত্রি প্রতিটি ও (লগ ইউ) নোডের সুষম BSTs বজায় রেখে তার কয়েকটি (লগ লগ ইউ) রানটাইম পায়, সেই গাছগুলিতে অনুসন্ধানগুলি ও (লগ লগ ইউ) চলমান দেয়। ট্যাঙ্গো গাছ ও সংশ্লিষ্ট multisplay গাছ ডাটা স্ট্রাকচার ক্ষেত্রের একটি হে রয়েছে (লগ লগ ঢ) তাদের বিশ্লেষণ শব্দটি দিয়ে শেষ, কারণ তারা গাছ যে হে (log n) টি আইটেম প্রতিটি ধারণ বজায় রাখা।

অন্যান্য উদাহরণ

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

আশাকরি এটা সাহায্য করবে!


5
@ জোনাথনরাইনহার্ট- এটি এমন কিছু ঘটেছিল যা আমি ভেবেছিলাম (ক) সত্যই, সত্যিই দুর্দান্ত, এবং (খ) সুপরিচিত ছিল না। আমি এই জাতীয় জিনিস ভাগ করে সর্বদা আনন্দিত! :-)
টেম্পলেট


প্রশ্ন জিজ্ঞাসা পৃষ্ঠার নীচে "আপনার নিজের প্রশ্নের উত্তর দিন" কী হতে পারে তা অনুমান করেই বা প্রশ্ন পৃষ্ঠায় উত্তর পাঠ্যবাক্সটি সক্ষম করে।
Mahesha999

4
গুরুত্বপূর্ণ লাইন: অতএব, যদি এমন অ্যালগরিদম থাকে যা বার বার সমস্যাটিকে মূল সমস্যার আকারের বর্গমূলের আকারের সাব-সমস্যায় হ্রাস করে কাজ করে, তবে অ্যালগরিদম ও (লগ লগ এন) পদক্ষেপের পরে শেষ হবে termin
গান 2sh

3

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

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

  1. কিছু বাধা সহ আকারের ও (লগ এন / (লগ লগ এন)) এর অংশগুলিতে গ্রাফ ভাগ করুন।
  2. ধরা যাক উল্লিখিত অংশটির প্রতিটি নতুন গ্রাফ জি'র নোডে রয়েছে তারপর জি'র জন্য এসএসপি গণনা করুন ও (| জি '| লগ | জি' |) ==> এখানে কারণ | জি '| = ও (| জি | * লগ লগ এন / লগ এন) আমরা (লগ লগ এন) ফ্যাক্টরটি দেখতে পারি।
  3. প্রতিটি অংশের জন্য এসএসএসপি গণনা করুন: আবার আমাদের ও (| জি '|) অংশ আছে এবং আমরা সময় মতো সমস্ত অংশের জন্য এসএসএসপি গণনা করতে পারি | n / লগন | * | লগ এন / লগ লগন * লগ (লগ / লগ লগ এন)।
  4. ওজন আপডেট করুন, এই অংশটি ও (এন) এ করা যেতে পারে। আরও তথ্যের জন্য এই বক্তৃতা নোটগুলি ভাল।

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

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