বিগ ওহ স্বরলিপি (ও, থেটা, ওমেগা) কার্যকারণের বৃদ্ধির হার সম্পর্কে।
আপনি যখন একটি অ্যালগরিদম বাস্তবায়ন করেন, এটিতে একটি নির্দিষ্ট বৈশিষ্ট্য রয়েছে যখন আপনি ডেটাসেট পরিচালনা করে তখন রানটাইম কীভাবে পরিবর্তন হয়। এখন, আপনি অ্যালগরিদমটি অনুকূল করতে পারেন তাই এটি 100 এর ফ্যাক্টর দ্বারা দ্রুত চলে Sure অবশ্যই, এটি দুর্দান্ত তবে মূলত এটি এখনও একই অ্যালগরিদম। একইভাবে, কয়েক বছরে, কম্পিউটারগুলি আজকের চেয়ে দ্বিগুণ দ্রুত হতে পারে।
ল্যান্ডাউ স্বরলিপি এই ধ্রুবক কারণগুলি দূরে সরিয়ে দেয়। কোনও অ্যালগোরিদম f
সর্বদা অন্য অ্যালগরিদমের তুলনায় দ্বিগুণ দ্রুত হয় কিনা সে সম্পর্কে এটি গুরুত্ব দেয় না g
: সম্ভবত g
4 গুণ দ্রুত চালানোর জন্য অনুকূলিত করা যেতে পারে, বা আপনি তার পরিবর্তে দ্রুত হার্ডওয়্যার কিনতে সক্ষম হতে পারেন। আপনি যদি এই দৃষ্টিকোণ থেকে এটি দেখুন, আপনি বলতে পারেন যে তারা "একই"। (এটি বলে না যে আপনি (সর্বদা) অনুশীলনে ধ্রুবক কারণগুলি উপেক্ষা করতে পারেন))
বড় ওহ একটি উপরের সীমা নির্দিষ্ট করে, এটি সম্পর্কের মতো <=
।
আপনি 1 < 2
সত্য যে একমত হবে । তার মানে কি 1
অন্য কোনও সংখ্যার চেয়ে কম হতে পারে না? অবশ্যই না. এর চেয়ে আরও বেশি সংখ্যক সংখ্যা রয়েছে 1
।
বৃদ্ধির হারের সাথে, এটি একই রকম। O(n)
লাইনারি (বা আরও ধীরে ধীরে) বড় হওয়া সমস্ত ফাংশনের সেটকে বোঝায়। O(n^2)
অন্যদিকে, সেই সমস্ত ফাংশন বোঝায় যা চতুর্ভুজীয় সামঞ্জস্য (বা ধীর) দিয়ে বৃদ্ধি পায়। আমি নিশ্চিত যে আপনি সম্মত হবেন যে একটি লিনিয়ার ফাংশন চতুর্ভুজ ফাংশনের চেয়ে আরও ধীরে ধীরে বৃদ্ধি পায়।
একারণে একটি ফাংশন একাধিক "বিগ-ওহ" শ্রেণিতে থাকতে পারে।
এখানে বিভিন্ন কার্যের সাথে তুলনা করা হচ্ছে : (নুথের কংক্রিট গণিত থেকে)
বাম থেকে ডানে, ফাংশনগুলি দ্রুত বৃদ্ধি পায়।
এছাড়াও, অর্থ n ^ 2 n ^ 1 এর চেয়ে দ্রুত বৃদ্ধি পায় কারণ 2> 1।
সংজ্ঞা
"এফ দ্রুত বা সমান দ্রুত গ হিসাবে বৃদ্ধি পায়"
"f ধীর গতিতে বা সমান দ্রুত গের আকারে বৃদ্ধি পায়"
উপরোক্ত দুটিয়ের সংমিশ্রণ। এটি বলে যে ফাংশনটি f
"সমান দ্রুত" বাড়ছে g
। এটি একটি সমতুল্য সম্পর্ক।
ব্যাখ্যা
ধরা যাক আপনার দুটি অ্যালগরিদম রয়েছে f
এবং g
।
অন্ত
ধরে নেওয়া , এর অর্থ হ'ল আপনার বাজেট নির্বিশেষে, আপনার সিস্টেমে আপনি যুক্ত করতে পারেন এমন কোনও ধরণের গণনা শক্তি নেই, যা f
সর্বদা দ্রুত গতিতে চলে g
।
বড় ওহ
ধরে নেওয়া , এর অর্থ হ'ল যদি আপনার কাছে পর্যাপ্ত ডেটা থাকে f
তবে সর্বদা তার চেয়ে দ্রুত চলবে g
, আপনি আপনার সিস্টেমে যতটা কম্পিউটিং শক্তি যুক্ত করেন তা বিবেচনা করে না।
প্রমাণ
আপনি যদি সত্যই এটি প্রমাণ করার চেষ্টা করছেন, আপনাকে ল্যান্ডউ নোটেশনের সংজ্ঞাগুলি ব্যবহার করে দেখাতে হবে যে আপনার ফাংশন প্রয়োজনীয় শর্তগুলি সন্তুষ্ট করে।
তাই আপনি যদি মান বের করতে হবে c
, d
, n_0
যেমন যে শর্ত ঝুলিতে।
নিম্ন সীমাবদ্ধতার জন্য আপনি কীভাবে এটি করতে পারেন তা এখানে c
:
এটি উপলব্ধি করা গুরুত্বপূর্ণ, যে আমি নির্বিচারে সংজ্ঞা দিচ্ছি c
তার চেয়ে ছোট হিসাবে a-1
পুরোপুরি ঠিক আছে। থেইটা (ছ) এর সংজ্ঞা বলে যে "সেখানে একটি আছে c
"। এটি ০ এর চেয়ে বড় হিসাবে এটি কোনও মান হতে পারে ((যদি a
ইতিবাচক আসল সংখ্যা হয় তবে আপনাকে প্রুফটি কিছুটা পরিবর্তন করতে হবে, কারণ এটি a - 1
সম্ভবত নেতিবাচক হতে পারে)
(আমি a
ধনাত্মক বলে ধরে নিচ্ছি , অন্যথায় ফাংশনটি সর্বদা বড় মূল্যবোধের জন্য সর্বদা নেতিবাচক থাকবে n
, যা রানটাইম চিহ্নিতকরণের জন্য কোনও অর্থবোধ করে না))
আপনি উপরের সীমানার জন্য এটি করার চেষ্টা করতে পারেন, এটি বেশ অনুরূপ। আপনি যদি না জানেন তবে আমি আপনার জন্য একটি প্রমাণ সরবরাহ করতে পারি।
ইঙ্গিত: দিয়ে শুরু d > a + 1
মনোযোগ
এটি গুরুত্বপূর্ণ যে আপনি এটি চারপাশে ভুল উপায়ে প্রমাণ করবেন না। যদি আপনি ধরে নেন যে (একটি + বি) ও (এন) এ আছে এবং সেখান থেকে যান, আপনি যা চেয়েছিলেন তা প্রমাণ করেননি। আপনি যে আপনার ধাপের সব উভয় পথ যেতে, পরিবর্তে অর্থাত্ যাচাই করতে হবে =>
আপনি <=>
।