কীভাবে ও ও worst সবচেয়ে খারাপ এবং সেরা ক্ষেত্রে সম্পর্কিত?


33

বাইনারি অনুসন্ধান ব্যবহার করে বাছাই করা অ্যারেতে উপাদান খুঁজে পাওয়ার জন্য আমরা আজ একটি লেকচারে খুব সাধারণ অ্যালগরিদম নিয়ে আলোচনা করেছি । আমাদের উপাদানগুলির একটি অ্যারের জন্য এর অ্যাসিম্পোটিক জটিলতা নির্ধারণ করতে বলা হয়েছিল ।n

আমার ধারণাটি ছিল, এটি সবিস্তারে , বা আরও নির্দিষ্ট হওয়া উচিত কারণ সবচেয়ে খারাপ ক্ষেত্রে ক্রিয়াকলাপের সংখ্যা। তবে আমি আরও ভাল করতে পারি, উদাহরণস্বরূপ যদি আমি প্রথমবার অনুসন্ধান করা উপাদানটিকে আঘাত করি - তবে নীচের গণ্ডিটি হ'ল ।O(logn)O(log2n)log2nΩ(1)

প্রভাষক সমাধানটিকে হিসাবে উপস্থাপন করেন যেহেতু আমরা সাধারণত অ্যালগরিদমের জন্য সবচেয়ে খারাপ ক্ষেত্রে তথ্য বিবেচনা করি।Θ(logn)

তবে যখন কেবলমাত্র সবচেয়ে খারাপ ক্ষেত্রে বিবেচনা করা হয়, যখন প্রদত্ত সমস্যার সব থেকে খারাপ সমস্যাগুলির ক্ষেত্রে একই জটিলতা থাকে তখন এবং নোটেশনের বিষয়টি কী? ( সমস্ত প্রয়োজন, ঠিক আছে?)।OΩΘ

আমি এখানে কি মিস করছি?


@ স্মাজি: "তবে কেবলমাত্র সবচেয়ে খারাপ ক্ষেত্রে বিবেচনা করার সময়, বড় ও ও বড় ওমেগা স্বরলিপি থাকার বিষয়টি কী, যখন সমস্ত খারাপের ক্ষেত্রে + - একই জটিলতা রয়েছে (থেটা আমাদের যা দরকার তাই হবে, তাই না?") দয়া করে এটি পরিষ্কার করুন
টানময়

@ স্মাজাল: আমি আপনার প্রশ্নটি মনে করি: অ্যালগরিদম বিশ্লেষণে বিগ ও ও বিগ ওমেগা স্বরলিপিটির প্রয়োজনীয়তা কী? আমি কি সঠিক?
টানময়

5
O(log2n) চেয়ে বেশি নির্দিষ্ট নয় , তারা একই শ্রেণির ক্রিয়াকে বোঝায়। O(logn)
রাফেল

log2(n) হিসাবে একই অতএব 2 মাত্র একটি ফ্যাক্টর ইঙ্গিত, (বড় হে মধ্যে অন্যান্য বিষয় পছন্দ তুলে হতে পারে।log(b)/log(2)×logb(n)
Ctrl-Alt-delor

উত্তর:


39

ল্যান্ডউ নোটেশন ফাংশনগুলিতে অ্যাসিম্পটোটিক সীমা বোঝায় । , এবং মধ্যে পার্থক্যগুলির ব্যাখ্যা জন্য এখানে দেখুন ।Ω ΘOΩΘ

সবচেয়ে খারাপ-, সেরা-, আপনি বা নাম-এটি-সময়ের সময়টি পৃথক রানটাইম ফাংশন বর্ণনা করে: যে কোনও এর সর্বোচ্চ রানটাইম ক্রমের জন্য একটি, সর্বনিম্নের জন্য একটি এবং আরও কিছু ..n

তবে, দুজনের একে অপরের সাথে কিছু করার নেই। সংজ্ঞাগুলি স্বাধীন। এখন আমরা এগিয়ে যেতে এবং রানটাইম ফাংশনগুলিতে অ্যাসিম্পটোটিক সীমানা তৈরি করতে পারি: উপরের ( ), নিম্ন ( ) বা উভয় ( )। আমরা খারাপ-, সেরা- বা অন্য কোনও ক্ষেত্রে হয়রান করতে পারি।Ω ΘOΩΘ

উদাহরণস্বরূপ, বাইনারি অনুসন্ধানে আমরা এর একটি সেরা-কেস রানটাইম অ্যাসিম্পটোটিক এবং সবচেয়ে খারাপ ক্ষেত্রে অ্যাসিম্পটোটিক পাই ।Θ ( লগ এন )Θ(1)Θ(logn)


আমার কাছে মূল অবলম্বন হ'ল আমরা অ্যাসিম্পটোটিক সীমানা ফাংশনগুলির যে কোনও বিষয়ে সবচেয়ে খারাপ-সেরা - বিশ্লেষণ করতে পারি। আমার কাছে এটি বিগ ও বনাম সবচেয়ে খারাপ ক্ষেত্রে বিশ্লেষণের স্বাধীনতা দেখায়। ধন্যবাদ!
প্যাট্রিক

1
@ পেট্রিক যথেষ্ট নয় প্রথমত, আপনি সিদ্ধান্ত নিচ্ছেন যে আপনি সবচেয়ে খারাপ-, গড়- বা সেরা-কেস বিশ্লেষণ করতে চান। তারপরে আপনি ব্যয় ফাংশনটি নিয়ে আসেন (বা আপনি যতটা পারেন প্রাকৃতিক পরিমাণে)। শুধু তারপর আপনি, asymptotics নিতে এ যদি সব না।
রাফায়েল

17

নিম্নলিখিত অ্যালগরিদম (বা পদ্ধতি, বা কোড টুকরা, বা যাই হোক না কেন) বিবেচনা করুন:

Contrive(n)
1. if n = 0 then do something Theta(n^3)
2. else if n is even then
3.    flip a coin
4.    if heads, do something Theta(n)
5.    else if tails, do something Theta(n^2)
6. else if n is odd then
7.    flip a coin
8.    if heads, do something Theta(n^4)
9.    else if tails, do something Theta(n^5)

এই ফাংশনটির asympotic আচরণ কি?

সেরা ক্ষেত্রে (যেখানে সমান), রানটাইমটি হ'ল এবং , তবে কোনও কিছুর নয় ।Ω ( n ) ( এন 2 ) ΘnΩ(n)O(n2)Θ

সবচেয়ে খারাপ ক্ষেত্রে (যেখানে বিজোড়), রানটাইমটি হ'ল এবং তবে কোনও কিছুর নয় ।Ω ( n 4 ) ( এন 5 ) ΘnΩ(n4)O(n5)Θ

ক্ষেত্রে , রানটাইমটি হ'ল ।Θ ( n 3 )n=0Θ(n3)

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


1
এই করতে, ক্ষেত্রে বিভক্ত করুন । nmod4
ভনব্র্যান্ড

4

অগত্যা। এই ক্ষেত্রে, বাছাই করা অ্যারেতে বাইনারি অনুসন্ধান, আপনি দেখতে পারেন: (ক) বাইনারি অনুসন্ধান সর্বাধিক পদক্ষেপ নেয়; (খ) এমন ইনপুট রয়েছে যা বাস্তবে এটি অনেকগুলি পদক্ষেপ জোর করে। সুতরাং যদি বাইনারি অনুসন্ধানের জন্য সবচেয়ে খারাপ ক্ষেত্রে ইনপুট চলমান সময় হয় তবে আপনি বলতে পারেন যে ।[logn+1]T(n)T(n)=Θ(logn)

অন্যদিকে, অন্যান্য অ্যালগরিদমের জন্য, আপনি ঠিক ঠিক কাজ করতে সক্ষম না হতে পারেন, সেক্ষেত্রে আপনার নিকৃষ্টতম ইনপুটটিতে চলমান সময়ের জন্য উপরের এবং নীচের সীমার মধ্যে একটি ফাঁক থাকতে পারে।T(n)

এখন, বাছাই করা অ্যারে অনুসন্ধানের জন্য আরও কিছু সত্য, এটি যা একটি সাজানো অ্যারে অনুসন্ধানের জন্য যে কোনও অ্যালগরিদমকে পরীক্ষা করতে হবে । এই ধরণের নিম্ন সীমাবদ্ধতার জন্য, আপনার নিজের সমস্যাটি নিজেই বিশ্লেষণ করা উচিত। (এখানে ধারণা: যে কোন সময়ে, একটি অনুসন্ধান আলগোরিদিম কিছু সেট শাসিত আউট করেননি যেখানে উপাদান এটা খুজছে হতে পারে অবস্থানের সাবধানে পেরেছিলেন ইনপুট তারপর যে নিশ্চিত করতে পারে না। হয় সর্বাধিক গুণক দ্বারা হ্রাস পেয়েছে ))[logn+1]S[n]|S|2


1

আপনি ঠিক বলেছেন, people ব্যবহার করার সময় অনেক লোক আলস্যভাবে ব্যবহার করে । উদাহরণস্বরূপ, একটি অ্যালগরিদম বিশ্লেষক সাথে শেষ হতে পারে এবং তাত্ক্ষণিকভাবে উপসংহারে পৌঁছে যে , যা প্রযুক্তিগতভাবে সঠিক , তবে একটি তীব্র জোর দেওয়া । আমি এই অসতর্ক আচরণকে দুটি কারণে দায়ী করি। প্রথমত, অনেকে চেয়ে বেশি জনপ্রিয় এবং গ্রহণযোগ্য হতে দেখেন সম্ভবত এটির দীর্ঘ ইতিহাসের কারণে। মনে রাখবেন এটি এক শতাব্দীরও বেশি আগে চালু হয়েছিল, যেখানে (এবং ) কেবল 1976 সালে (ডোনাল্ড নুথ দ্বারা) চালু হয়েছিল। দ্বিতীয়ত, এটা হতে পারে কারণOΘT(n)=n2+n+2T(n)=O(n2)T(n)=Θ(n2)OΘΩOকীবোর্ডে সহজেই উপলব্ধ, যেখানে নেই!Θ

একটি দেখুন প্রযুক্তিগত বিন্দু থেকে, তবে প্রধান কারণ সাবধান বিশ্লেষক ব্যবহার করতে পছন্দ উপর যে সাবেক কভার "বৃহত্তর অঞ্চল" আধুনিক নয়। যদি আমরা বাইনারি অনুসন্ধানের উদাহরণ নিই এবং ব্যবহার করতে চাই , তবে আমাদের দুটি মতামত দিতে হবে: case একটি সেরা কেস হিসাবে, , এবং অন্যটি সবচেয়ে খারাপ ক্ষেত্রে, । আমরা কেবলমাত্র একটি যেমন জোর দিয়ে থাকি । গাণিতিকভাবে, দ্বারা আচ্ছাদিত ফাংশন এছাড়াও দ্বারা আচ্ছাদিত করা হয় , যেহেতু বিপরীতটি অগত্যা সত্য নয়।OΘΘΘ(1)Θ(logn)OO(logn)ΘO


স্বাগতম, এবং উত্তর পোস্ট করতে সময় দেওয়ার জন্য ধন্যবাদ! তবে আপনার বক্তব্যটি এখানে কী তা আমি বলতে পারি না। প্রথম অনুচ্ছেদে আপনি কিছু জল্পনা কল্পনা করেছেন। দ্বিতীয়টিতে, আপনি এমন একটি দৃষ্টিভঙ্গির প্রস্তাব দেন যা নিজেই "slালু" "" এটি গড় কেস " saying বলা ভাল মানের ক্ষেত্রে কিছু বলতে পারে না, এটি একই শ্রেণীর ক্ষেত্রে বাদে। "এটি গড় কেস" বললে একই উপরের বাউন্ডটি বোঝায় ! আপনি যদি সর্বোত্তম কেস সম্পর্কে অতিরিক্ত তথ্য সরবরাহ করতে চান তবে আপনাকে এটি কোনওভাবেই দিতে হবে। অতএব, আমি দেখতে পাচ্ছি না আপনি কীভাবে ওভার Θ ব্যবহারের জন্য একটি বিন্দু তৈরি করছেন Θ O(logn)Θ(logn)
রাফেল

@ রাফেল আমি আপনাকে দুটি স্বরলিখনের সংজ্ঞা দিয়েছি। তদতিরিক্ত, বুঝতে পারেন যে এগুলি চলমান সময়ের অ্যাসিম্পটোটিক "বৃদ্ধির হার" শ্রেণিবদ্ধ করতে ব্যবহৃত হয়, আপনার বিভিন্ন উত্তর এবং মন্তব্য দ্বারা প্রচারিত সময় হিসাবে চলমান সময় নয়।
হামেদ নাসার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.