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


22

ও (এন লগ এন) জটিলতার সাথে কিছু বর্ণনা করতে আমি কোন শব্দটি ব্যবহার করতে পারি?

উদাহরণ স্বরূপ:

  • ও (1): ধ্রুবক

  • ও (লগ এন): লগারিদমিক

  • ও (এন): লিনিয়ার

  • ও (এন লগ এন): ??????

  • ও (এন 2 ): চতুর্ভুজ

  • ও (এন 3 ): ঘনক


5
আমি প্রায়শই এখানে বিস্তৃত শব্দ "অর্ধ-লিনিয়ার" O(n · f(n))যেখানে বোঝাতে চাইছি f(n) << n। কিন্তু এটাও ভালো জিনিস মিলে যায় O(n · log log n)এবং O(n α(n))যেখানে α(n)Ackermann ফাংশনের বিপরীত হয়।
বাকুরিউ


34
"ওহ এনএন লগ এনএন" সম্ভবত যথেষ্ট ভাল।
ব্যবহারকারী 253751

উত্তর:


60

"এন লগ এন" যতটা ভাল আপনি পেতে চলেছেন, এবং পেশাদার প্রোগ্রামারদের দ্বারা এটি ভালভাবে বোঝা উচিত। বিদ্যমান প্রতিটি জটিল শ্রেণীর বর্ণনা দেওয়ার জন্য আপনি সেখানে একটি শব্দও আশা করতে পারবেন না।


6
"প্রতিটি জটিলতা শ্রেণিকে বর্ণনা করার জন্য একটি শব্দও আছে তা আশা করতে পারি না" - অবশ্যই না। তবে 𝓞 ( n ⋅ লগ এন ) এমন একটি গুরুত্বপূর্ণ শ্রেণি যে এটি নিজের নামের একটি আইএমও প্রাপ্য; এবং স্টিভ জেসোপ বলেছিলেন, লিনিয়ারীথমিক ইতিমধ্যে বেশ সাধারণ is
বাম দিকের বাইরে

@ বামফামদিকটি আপনার পক্ষে যুক্তি করতে পারার পক্ষে এটি যথেষ্ট সাধারণ যে এটি একটি নামের জন্য প্রাপ্য। তবে "এন লগ এন" উচ্চারণের পক্ষে যথেষ্ট সংক্ষিপ্ত (কেবল তিনটি শব্দাবলীর) এটি একটি নাম হিসাবে সূক্ষ্মভাবে কাজ করে। তুলনার জন্য "লোগারিদমিক" হ'ল চারটি সিলেবল। এটি আরও আকর্ষণীয় যখন আপনি বাহ্যিক অ্যালগরিদমগুলিতে যান যেখানে বেশিরভাগ "এন লগ এন" অ্যালগরিদমগুলি জটিলতা পায় get N লগ_বি (এন / বি) $, এটি অবশ্যই একটি সংক্ষিপ্ত নামের যোগ্য একটি জটিল শ্রেণি হবে।
কাস্পার্ড

10
কম্পিউটার সায়েন্স মাস্টার্স ডিগ্রি ছাত্র হিসাবে, আমি আমার কলেজ পড়াশুনা জুড়ে "enn log enn" শুনেছি। আমি কখনই "রৈখিক" শোননি এবং এটি প্রথমে কী বোঝে তা বুঝতে পারি নি।
কেভিন - মনিকা

@ কেভিন: লোগারিদমিক চারটি সিলেবল, তবে "লগ-এনএন" কেবল দুটি। তেমনি, ও (এন ^ 2) "চতুষ্কোণ" নয়, "এন-স্কোয়ার্ড"। আমি মনে করি "কিউবিক" এর "এনএন-কিউবেড" এর চেয়ে কম ফোনমাস রয়েছে তবে আমি মনে করি যে পরবর্তী শব্দটি এখনও বেশি সাধারণ হবে।
সুপারক্যাট

51

একেবারে জারগন শব্দটি রৈখিক অর্থ যার অর্থ এটি।

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


11
এমন কি কখনও জানত না!
ডেভিড মনিকা পুনঃস্থাপন মনিকা

12

একে কখনও কখনও "লগলাইনার" বলা হয়, যদিও সেই শব্দটির অর্থ আসলে কিছু আলাদা। @ ফিলিপের উত্তর অনুসারে আমি কেবল "এন লগ এন" দিয়ে থাকব ।


1
লগ-লিনিয়ার বিকল্প অর্থ কি? আমি যদি 'এন লগ এন' ব্যতীত অন্য কোনও নাম চাইতাম, লগ-রৈখিক শব্দটি আমি ব্যবহার করব।
জোনাথন লেফলার 13

2
@ জোনাথনলফলার: আমি ধরে নিই এন.ইউইকিপিডিয়া.আর / উইকি / লোগ-লাইনার_নালাইসিস কখনও কখনও হাইফেন ছাড়াই বানান করে। অবশ্যই যথাযথ নেমস্পেসিংয়ের সাথে আপনি জটিলতার ক্লাসের জন্য একই শব্দটি আনন্দের সাথে ব্যবহার করতে পারেন।
স্টিভ জেসোপ

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

1
@ জোনাথনলফলার: আমি লিন-লগ বা লগ-লিন প্লটটি বলতে পারি তার অর্থও হতে পারে (বা, কারণ আমি অলস, আসলে আমি প্রায়শই তাদের লগ-লগ থেকে আলাদা হিসাবে লগ প্লট বলতাম)। আমরা সম্ভবত জিজ্ঞাসা করতে পারি, যার বিকল্পটির অর্থ এই উত্তরটির মনে রয়েছে :-)
স্টিভ জেসোপ

2

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

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