অ্যাসিম্পটোটিক ফাংশন কী কী? যাইহোক, একটি asyptote কি?
একটি ফাংশন দেওয়া চ (ঢ) যে, যখন মাপ একটি ইনপুট প্রয়োগ সম্পদগুলি (CPU- র সময়, র্যাম, ডিস্ক স্পেস, ইত্যাদি) একটি আলগোরিদিম দ্বারা ক্ষয়প্রাপ্ত পরিমাণ বর্ণনা এন , আমরা তিনটি পর্যন্ত সংজ্ঞায়িত মধ্যে asymptotic তার কর্মক্ষমতা বর্ণনা জন্য স্বরলিপি বৃহত্তর এন ।
একটি অনন্ত স্পর্শক (অথবা মধ্যে asymptotic ফাংশন) সহজভাবে হয় কিছু অন্যান্য ফাংশনটি (বা আত্মীয়তার সম্পর্ক নেই) ছ (ঢ) যে চ (ঢ) ক্রমবর্ধমান হিসাবে যাও বন্ধ পায় এন বৃহত্তর এবং বৃহত্তর বৃদ্ধি, কিন্তু কখনও বেশ ছুঁয়েছে। অ্যাসিপটোটিক ফাংশনগুলির বিষয়ে কথা বলার সুবিধাটি হ'ল এফ (এন) এর অভিব্যক্তি অত্যন্ত জটিল হলেও এগুলি সম্পর্কে সাধারণভাবে কথা বলা সহজ । এ্যাসিম্পটোটিক ফাংশনগুলি সীমানা চিহ্নিতকরণগুলির অংশ হিসাবে ব্যবহৃত হয় যা উপরের বা নীচে চ (এন) সীমাবদ্ধ করে।
(দ্রষ্টব্য: এখানে নিযুক্ত অর্থে, অ্যাসিপটোটিক ফাংশনগুলি কিছু ধ্রুবক ননজারো ফ্যাক্টরটি সংশোধন করার পরে কেবল মূল ফাংশনের নিকটেই রয়েছে, কারণ তিনটি বিগ-ও / Θ / Ω স্বীকৃতি এই ধ্রুবক কারণগুলিকে তাদের বিবেচনা থেকে উপেক্ষা করে।)
তিনটি অ্যাসিপটোটিক বাউন্ডিং নোটেশন কী কী এবং সেগুলি কীভাবে আলাদা?
তিনটি স্বরলিপি ব্যবহার করা হয়েছে:
f (n) = O (g (n))
যেখানে এফ (এন) এখানে আগ্রহের ফাংশন এবং জি (এন) হ'ল কিছু অন্যান্য অ্যাসিম্পোটোটিক ফাংশন যা আপনি আনুমানিক চ (এন) এর সাথে চেষ্টা করার চেষ্টা করছেন । এই কঠোর অর্থে একটি সমতা হিসাবে গ্রহণ করা উচিত, কিন্তু কিভাবে দ্রুত মধ্যে একটি আনুষ্ঠানিক বিবৃতি চ (ঢ) থেকে সম্মান সঙ্গে বৃদ্ধি এন তুলনায় গ্রাম (ঢ) , যেমন এন বৃহৎ হয়ে যায়। Purists প্রায়ই বিকল্প স্বরলিপি ব্যবহার করবে চ (ঢ) ∈ হে (ছ (ঢ)) যে জোর প্রতীক হে (ছ (ঢ)) সত্যিই একটি সম্পূর্ণ হয় পরিবার ফাংশন ভাগ করতে বলেছে একটি সাধারণ বৃদ্ধির হার হয়েছে।
বিগ-ϴ (থেটা) স্বরলিপিটি একটি ধ্রুবক ফ্যাক্টর পর্যন্ত চ (এন) এর বৃদ্ধির উপর সমতা বর্ণনা করে (আরও পরে এটি)। এটি বৃদ্ধির হারের জন্য অপারেটরের মতো আচরণ করে ।=
বিগ-ও স্বরলিপি এফ (এন) এর বৃদ্ধি সম্পর্কে একটি উপরের- সীমার বর্ণনা করে । এটি বৃদ্ধির হারের জন্য অপারেটরের মতো আচরণ করে ।≤
বড়-Ω (ওমেগা) স্বরলিপিটি f (n) এর বৃদ্ধির উপর নিম্ন- গন্ডির বর্ণনা দেয় । এটি বৃদ্ধির হারের জন্য অপারেটরের মতো আচরণ করে ।≥
আছে অনেক অন্যান্য asymptotic স্বরলিপি , কিন্তু তারা কম্পিউটার বিজ্ঞান সাহিত্যে প্রায় হিসাবে প্রায়ই ঘটবে না।
সময়ের জটিলতার তুলনা করার জন্য বিগ-ও স্বরলিপি এবং এর জাতীয় ঘটনাগুলি প্রায়শই একটি উপায় হিসাবে দেখা যায় ।
সময়ের জটিলতা কী?
সময় জটিলতা টি (এন) এর ইনপুট সাইজের n এর ক্রিয়াকলাপ হিসাবে কার্যকর করতে একটি অ্যালগরিদমের জন্য যে সময় নেয় তার জন্য অভিনব শব্দ । এটি বাস্তব সময়ের পরিমাণ (যেমন সেকেন্ড), সিপিইউ নির্দেশাবলীর পরিমাণ ইত্যাদিতে পরিমাপ করা যেতে পারে Usually সাধারণত এটি ধারণা করা হয় যে অ্যালগোরিদম আপনার প্রতিদিনের ভ্যান নিউমান আর্কিটেকচার কম্পিউটারে চলবে । তবে অবশ্যই আপনি আরও জটিল বিদেশী কম্পিউটিং সিস্টেম সম্পর্কে কথা বলতে সময় জটিলতা ব্যবহার করতে পারেন, যেখানে জিনিসগুলি আলাদা হতে পারে!
বিগ-ও স্বরলিপি ব্যবহার করে মহাকাশ জটিলতার বিষয়ে কথা বলাও সাধারণ। স্পেস জটিলতা হল অ্যালগরিদম সম্পূর্ণ করতে প্রয়োজনীয় মেমরির পরিমাণ (সঞ্চয়স্থান) যা র্যাম, ডিস্ক ইত্যাদি হতে পারে Space
এটি একটি ক্ষেত্রে হতে পারে যে একটি অ্যালগোরিদম ধীর হয় তবে কম মেমরি ব্যবহার করে, অন্যদিকে দ্রুত কিন্তু আরও মেমরি ব্যবহার করে। প্রতিটি বিভিন্ন পরিস্থিতিতে আরও উপযুক্ত হতে পারে, যদি সংস্থানগুলি ভিন্নভাবে সীমাবদ্ধ থাকে। উদাহরণস্বরূপ, একটি এম্বেড থাকা প্রসেসরের সীমাবদ্ধ মেমরি থাকতে পারে এবং ধীরে ধীরে অ্যালগোরিদমের পক্ষে থাকতে পারে, যখন কোনও ডাটা সেন্টারে থাকা কোনও সার্ভারে প্রচুর পরিমাণে মেমরি থাকতে পারে এবং দ্রুত অ্যালগরিদমের পক্ষে থাকতে পারে।
বিগ-Calc গণনা করা হচ্ছে ϴ
অ্যালগরিদমের বিগ-ϴ গণনা করা এমন একটি বিষয় যা একটি ছোট পাঠ্যপুস্তক বা আন্ডারগ্রাজুয়েট শ্রেণির প্রায় অর্ধ সেমিস্টার পূরণ করতে পারে: এই বিভাগটি মূল বিষয়গুলি কভার করবে।
সিউডোকোডে একটি ফাংশন এফ (এন) দেওয়া হয়েছে:
int f(n) {
int x = 0;
for (int i = 1 to n) {
for (int j = 1 to n) {
++x;
}
}
return x;
}
সময়ের জটিলতা কী?
বাইরের লুপটি n বার চালায় । প্রতিটি বারের জন্য বাইরের লুপটি চালিত হয়, অভ্যন্তরীণ লুপটি n বার চালিত হয় । এটি চলমান সময়কে টি (এন) = এন 2 এ রাখে ।
একটি দ্বিতীয় ফাংশন বিবেচনা করুন:
int g(n) {
int x = 0;
for (int k = 1 to 2) {
for (int i = 1 to n) {
for (int j = 1 to n) {
++x;
}
}
}
return x;
}
বাইরের লুপটি দু'বার চলে। মাঝের লুপটি এন বার চালায় । প্রতিটি বারের জন্য মাঝারি লুপটি চালিত হয়, অভ্যন্তরীণ লুপটি n বার চলে। এটি চলমান সময়কে টি (এন) = 2 এন 2 এ রাখে ।
এখন প্রশ্ন, উভয় ফাংশনের অ্যাসিম্পটোটিক চলমান সময়টি কী?
এটি গণনা করতে, আমরা দুটি পদক্ষেপ সম্পাদন করি:
- ধ্রুবকগুলি সরান। ইনপুটগুলির কারণে যখন অ্যালগরিদমগুলি সময় বাড়ায়, অন্য পদগুলি চলমান সময়কে প্রাধান্য দেয়, এগুলিকে গুরুত্বহীন করে তোলে।
- বৃহত্তম শব্দ বাদে সমস্ত সরান। হিসাবে এন অনন্ত যায়, এন 2 দ্রুত outpaces এন ।
তারা এখানে কী প্রভাবশালী পদগুলিতে ফোকাস করছে এবং সেই শর্তগুলিকে সরল করে ।
টি (এন) = এন 2 ∈ ϴ (এন 2 )
টি (এন) = 2 এন 2 ∈ ϴ (এন 2 )
আমাদের যদি একাধিক পদগুলির সাথে অন্য একটি অ্যালগরিদম থাকে তবে আমরা একই বিধিগুলি ব্যবহার করে এটি সরল করে দেব:
টি (এন) = 2 এন 2 + 4 এন + 7 ∈ ϴ (এন 2 )
এই সমস্ত অ্যালগরিদমের মূল কীটি হ'ল আমরা বৃহত্তম পদগুলিতে ফোকাস করি এবং ধ্রুবকগুলি অপসারণ করি । আমরা আসল চলমান সময়ের দিকে লক্ষ্য করছি না, তবে আপেক্ষিক জটিলতা ।
বিগ-Calc এবং বিগ-ও গণনা করা হচ্ছে
প্রথমে, সাবধান করে দিন যে অনানুষ্ঠানিক সাহিত্যে , "বিগ-ও" প্রায়শই বিগ- for এর প্রতিশব্দ হিসাবে বিবেচিত হয় , সম্ভবত গ্রীক অক্ষরগুলি টাইপ করা জটিল। সুতরাং যদি নীল থেকে কোনও আপনাকে অ্যালগরিদমের বিগ-ও জন্য জিজ্ঞাসা করে তবে তারা সম্ভবত এটির বিগ-ও চান Θ
এখন আপনি যদি পূর্বে সংজ্ঞায়িত আনুষ্ঠানিক ইন্দ্রিয়গুলিতে বিগ-Ω এবং বিগ-ও গণনা করতে চান তবে আপনার একটি বড় সমস্যা রয়েছে: যে কোনও প্রদত্ত ফাংশনের জন্য অসীম অনেক বিগ-Ω এবং বিগ-ও বর্ণনা রয়েছে! এটি 42 টির চেয়ে কম বা সমান সংখ্যাগুলি কি জিজ্ঞাসার মতো। আছে অনেক সম্ভাবনার।
টি (এন) ∈ ϴ (এন 2 ) সহ অ্যালগরিদমের জন্য, নীচের যে কোনওটি আনুষ্ঠানিকভাবে বৈধ বিবৃতিগুলি বানাতে হবে:
- টি (এন) ∈ ও (এন 2 )
- টি (এন) ∈ ও (এন 3 )
- টি (এন) ∈ ও (এন 5 )
- টি (এন) ∈ ও (এন 12345 × ই এন )
- টি (এন) ∈ Ω (এন 2 )
- টি (এন) ∈ Ω (এন)
- টি (এন) ∈ Ω (লগ (এন))
- টি (এন) ∈ Ω (লগ (লগ (এন)))
- টি (এন) ∈ Ω (1)
তবে এটি টি (এন) ∈ ও (এন) বা টি (এন) ∈ Ω (এন 3 ) বলা ভুল ।
আপেক্ষিক জটিলতা কী? অ্যালগরিদম কি ক্লাস আছে?
আমরা যদি দুটি ভিন্ন অ্যালগরিদম তুলনা করি, ইনপুট অনন্ত হয়ে যাওয়ার সাথে সাথে তাদের জটিলতা সাধারণত বাড়বে। আমরা যদি বিভিন্ন ধরণের অ্যালগরিদমগুলি লক্ষ্য করি তবে সেগুলি তুলনামূলকভাবে একই থাকতে পারে (বলুন, ধ্রুবক ফ্যাক্টর দ্বারা পৃথক হয়ে) বা ব্যাপকভাবে ডাইভারেজ হতে পারে। এটি বিগ-ও বিশ্লেষণ করার কারণ: কোনও অ্যালগরিদম বড় ইনপুটগুলির সাথে যুক্তিসঙ্গতভাবে সম্পাদন করবে কিনা তা নির্ধারণ করতে।
অ্যালগরিদমের ক্লাসগুলি নিম্নরূপে ভেঙে যায়:
Θ (1) - ধ্রুবক। উদাহরণস্বরূপ, তালিকায় প্রথম সংখ্যাটি বাছাই করা সর্বদা একই পরিমাণে সময় নেয়।
Θ (n) - রৈখিক উদাহরণস্বরূপ, তালিকার পুনরাবৃত্তি সর্বদা তালিকার আকারের সাথে আনুপাতিক সময় নেবে, এন ।
Log (লগ (এন)) - লগারিদমিক (বেস সাধারণত ব্যাপারটি বিবেচনা করে না)। বাইনারি অনুসন্ধানের মতো প্রতিটি পদক্ষেপে ইনপুট স্পেসকে বিভক্ত করে এমন অ্যালগরিদমগুলির উদাহরণ।
Θ (n × লগ (এন)) - রৈখিক সময় লোগারিদমিক ("লিনিয়ারিথমিক")। এই আলগোরিদিম সাধারণত ভাগ এবং জেতা ( লগ (ঢ) ) এখনও (iterating এন ) ইনপুট সব। অনেক জনপ্রিয় বাছাই অ্যালগরিদম (মার্জ সাজ্ট, টিমসোর্ট) এই বিভাগে আসে।
Θ (এন মি ) - বহুপদী ( কোনও ধ্রুবক মি পর্যন্ত এন উত্থাপিত )। এটি একটি খুব সাধারণ জটিলতা শ্রেণি, প্রায়শ নেস্টেড লুপগুলিতে পাওয়া যায়।
Θ (এম এন ) - সূচকীয় (যে কোনও ধ্রুবক মিটার এন পর্যন্ত উত্থাপিত )। অনেক পুনরাবৃত্ত এবং গ্রাফ অ্যালগরিদম এই বিভাগে পড়ে।
Θ (এন!) - ঘটনাচক্রে। নির্দিষ্ট গ্রাফ এবং সম্মিলিত অ্যালগরিদমগুলি কল্পিত জটিলতা।
সেরা / গড় / সবচেয়ে খারাপ ক্ষেত্রে এর সাথে কি কিছু করার আছে?
না। বিগ-ও এবং এর স্বরলিপিগুলির পরিবার একটি নির্দিষ্ট গাণিতিক ফাংশন সম্পর্কে কথা বলে । এগুলি গাণিতিক সরঞ্জাম যা অ্যালগরিদমের দক্ষতা চিহ্নিত করতে সহায়তা করার জন্য নিযুক্ত করা হয়, তবে সেরা / গড় / সবচেয়ে খারাপ-কেস ধারণাটি এখানে বর্ণিত বৃদ্ধির হারের তত্ত্বের সাথে সম্পর্কিত নয়।
অ্যালগরিদমের বিগ-ও সম্পর্কে কথা বলতে গেলে, অবশ্যই একটি এলগরিদমের নির্দিষ্ট গাণিতিক মডেলটির সাথে অবশ্যই একটি প্যারামিটারের সাথে প্রতিশ্রুতিবদ্ধ হতে হবে n
, যা ইনপুটটির "আকার" বর্ণনা করবে বলে মনে করা হয়, যেভাবেই তা কার্যকর। কিন্তু বাস্তব বিশ্বে ইনপুটগুলির কেবলমাত্র দৈর্ঘ্যের চেয়ে অনেক বেশি কাঠামো রয়েছে। এই একটি বাছাই আলগোরিদিম ছিল তবে আমি স্ট্রিং ভোজন পারে "abcdef"
, "fedcba"
অথবা "dbafce"
। এগুলির সবগুলি দৈর্ঘ্যের 6 টি, তবে তাদের মধ্যে একটি ইতিমধ্যে বাছাই করা হয়েছে, একটি বিপরীত হয়েছে এবং শেষটি কেবল একটি এলোমেলো ঝাঁকুনি। কিছু সাজানোর অ্যালগরিদম (টিমসোর্টের মতো) আরও ভাল কাজ করে যদি ইনপুটটি ইতিমধ্যে সাজানো থাকে। তবে কীভাবে এই গাণিতিক মডেলটির মধ্যে এই অহমিকাটি যুক্ত করা যায়?
সাধারণ পদ্ধতির মধ্যে সহজেই অনুমান করা হয় যে ইনপুটটি কিছু এলোমেলো, সম্ভাব্য বিতরণ থেকে এসেছে। তারপরে, আপনি দৈর্ঘ্য সহ সমস্ত ইনপুটগুলির তুলনায় অ্যালগরিদমের জটিলতা গড়ে তোলেন n
। এটি আপনাকে অ্যালগোরিদমের গড় কেস জটিলতার মডেল দেয় । এখান থেকে, গড় ক্ষেত্রে আচরণের বর্ণনা হিসাবে আপনি যথারীতি বিগ-ও / Θ / Ω সূচনাগুলি ব্যবহার করতে পারেন।
তবে আপনি যদি পরিষেবা অস্বীকারের বিষয়ে অস্বীকার করেন তবে আপনাকে আরও হতাশাব্যঞ্জক হতে হতে পারে। এই ক্ষেত্রে, এটি অনুমান করা আরও নিরাপদ যে কেবলমাত্র ইনপুটগুলি হ'ল যা আপনার অ্যালগরিদমকে সবচেয়ে বেশি পরিমাণে দুঃখ দেয়। এটি আপনাকে অ্যালগোরিদমের সবচেয়ে খারাপ জটিলতার মডেল দেয় । এরপরে, আপনি সবচেয়ে খারাপ- মডেলের বিগ-ও / Θ / Ω ইত্যাদি সম্পর্কে কথা বলতে পারেন ।
একইভাবে, আপনি আপনার আলগোরিদিমকে সেরা-কেস মডেলটিতে আসতে কমপক্ষে সমস্যায় অন্তর্ভুক্ত হওয়া ইনপুটগুলিতেও আপনার আগ্রহটি ফোকাস করতে পারেন , তারপরে বিগ-ও / Θ / Ω ইত্যাদি দেখুন Ω