কেন র্যান্ডমাইজড কুইকসোর্টের ও (এন লগ এন) সবচেয়ে খারাপ ক্ষেত্রে রানটাইম ব্যয় হয়


18

র্যান্ডমাইজড কুইক বাছাই হল দ্রুত বাছাইয়ের একটি এক্সটেনশন যেখানে পিভট উপাদানটি এলোমেলোভাবে চয়ন করা হয়। এই অ্যালগরিদমের সবচেয়ে খারাপতম সময়ের জটিলতা কী হতে পারে। আমার মতে এটি O(n2) হওয়া উচিত , কারণ এলোমেলোভাবে বেছে নেওয়া পিভটটি বাছাই বা বিপরীত সাজানো ক্রমে নির্বাচন করা হলে সবচেয়ে খারাপ পরিস্থিতি ঘটে । তবে কিছু লেখায় [১] [২] এর সবচেয়ে খারাপ ক্ষেত্রে সময়ের জটিলতা ( এন লগ এন ) হিসাবে লেখা হয়েছেO(nlogn)

কি সঠিক?


3
আপনি যে "কিছু পাঠ্য" সম্পর্কে কথা বলছেন তা করা উচিত। সেখানে কিছু লুকিয়ে আছে। আপনি যদি আবার এই "পাঠ্য "টি পড়েন তবে তা
পেয়ে যাবেন

দ্রষ্টব্য: লিঙ্ক [1] মারা গেছে। লিঙ্ক [২] স্পষ্টভাবে জানিয়েছে যে অ্যালগরিদম এলোমেলোভাবে তৈরি করা হয়েছে, সুতরাং কোনও ইনপুটের জন্য আপনার কাছে "রানটাইম" নেই, তবে "একটি প্রত্যাশিত রানটাইম" রয়েছে। এবং সবচেয়ে খারাপ সম্ভাব্য ইনপুটটির জন্য প্রত্যাশিত রানটাইম হ'ল হে (এন লগ এন)।
gnasher729

উত্তর:


18

আপনার উভয় উত্সই এর "সবচেয়ে খারাপ ক্ষেত্রে প্রত্যাশিত চলমান সময়" উল্লেখ করে আমি অনুমান করছি এটি প্রত্যাশিত সময়ের প্রয়োজনকে বোঝায় যা পরম নিকৃষ্টতম ক্ষেত্রে থেকে পৃথক।O(nlogn).

Quicksort সাধারণত একটি পরম খারাপ-কেস সময় প্রয়োজন আছে । সবচেয়ে খারাপ অবস্থাটি ঘটে যখন প্রতিটি পদক্ষেপে, পার্টিশন পদ্ধতিটি একটি n- দৈর্ঘ্যের অ্যারে 1 এবং n - 1 এর আকারের মধ্যে বিভক্ত করে । পাইভট উপাদানগুলির এই "দুর্ভাগ্যজনক" নির্বাচনের জন্য ( এন ) পুনরাবৃত্ত কলগুলির প্রয়োজন হয়, যা হে ( এন 2 ) সবচেয়ে খারাপ ক্ষেত্রে পরিণত হয়।O(n2)n1n1O(n)O(n2)

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

সম্পাদনা:

ব্যাংয়ের মন্তব্য অনুসারে, আপনি সর্বদা মধ্যম উপাদানটিকে পিভট হিসাবে নির্বাচন করে সবচেয়ে খারাপ ক্ষেত্রে পাইভট নির্বাচন ক্রমটি সরিয়ে ফেলতে পারেন। মধ্যমা খোঁজার লাগে যেহেতু সময়, এই দেয় Θ ( এন লগ ইন করুন এন ) খারাপ-কেস কর্মক্ষমতা। তবে, যেহেতু এলোমেলোভাবে কুইকোর্টটি সবচেয়ে খারাপ অবস্থাতেই হোঁচট খাওয়ার সম্ভাবনা খুব কম, তাই কুইকোর্টের ডিস্ট্রিমেন্টিক মিডিয়ান-ফাইন্ডিং ভেরিয়েন্টটি খুব কমই ব্যবহৃত হয়।O(n)Θ(nlogn)


সুতরাং সাধারণভাবে আমরা বলতে পারি যে এটি সবচেয়ে খারাপ ক্ষেত্রে চতুর্ভুজ হিসাবে আচরণ করে
অতিনেশ

@Atinesh না, অন্তত আপনি কি এটি বলতে যদি যে। Θ
রাফেল

আমি র্যান্ডমাইজড কুইকোর্টের সবচেয়ে খারাপ ক্ষেত্রে পারফরম্যান্সকে বলা সঠিক বলে মনে করি O(n2).
জেমস ইভান্স

4
কুইকসোর্টটি সবচেয়ে খারাপ ক্ষেত্রে কেবলমাত্র সময় নিতে পারে যদি কেউ পিভট হিসাবে মিডিয়ানটিকে সন্ধানের জন্য একটি রৈখিক-সময় অ্যালগরিদম নিয়োগ করে। অবশ্যই, এলোমেলোভাবে কুইকসোর্টের সাধারণত কার্যকরী পারফরম্যান্স থাকে। Θ(এনলগএন)
Bangye

6

আপনি অনুপস্থিত ছিল যে এই পাঠ্যগুলি "সবচেয়ে খারাপ ক্ষেত্রে প্রত্যাশিত রান সময়" সম্পর্কে কথা বলেছে, "সবচেয়ে খারাপ ক্ষেত্রে রানটাইম" নয়।

তারা একটি কুইকসোর্ট বাস্তবায়ন নিয়ে আলোচনা করছে যা একটি এলোমেলো উপাদান জড়িত। সাধারণত আপনার একটি ডিস্ট্রিমেন্টিক অ্যালগরিদম থাকে, এটি একটি অ্যালগোরিদম যা প্রদত্ত ইনপুটটির জন্য সর্বদা একই একই ধাপ তৈরি করে। "সবচেয়ে খারাপ ক্ষেত্রে রানটাইম" নির্ধারণ করতে, আপনি সমস্ত সম্ভাব্য ইনপুট পরীক্ষা করে দেখুন এবং সবচেয়ে খারাপ রানটাইম তৈরির একটি বেছে নিন।

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

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


2

মনে রাখবেন যে আছে প্রত্যাশা / গড় ওভার নেওয়ার দুটি জিনিস রয়েছে: ইনপুট অনুচ্ছেদ এবং পিভট (পার্টিশন প্রতি এক)।

কুইকোর্টের কিছু ইনপুট এবং প্রয়োগের জন্য সমস্ত পিভট খারাপ (এনবার একই সংখ্যায় কখনও কখনও কাজ করে) তাই এলোমেলোভাবে সহায়তা দেয় না। এই জাতীয় ক্ষেত্রে প্রত্যাশিত সময় (পিভট পছন্দগুলির চেয়ে গড় গড়) চতুর্ভুজ ক্ষেত্রে (একটি খারাপ ইনপুট) চতুর্ভুজ হতে পারে। তবুও, "সামগ্রিক" প্রত্যাশিত সময় (ইনপুট এবং পিভট উভয় পছন্দগুলির চেয়ে গড়) এখনও বাকিΘ(এনলগএন) যুক্তিসঙ্গত বাস্তবায়নের জন্য।

অন্যান্য বাস্তবায়নের ক্ষেত্রে সবচেয়ে খারাপ সময়কাল রয়েছে Θ(এনলগএন), যাহারা পাইভট হিসাবে সঠিক মিডিয়েন বাছাই করে এবং ডুপ্লিকেটগুলি একটি দুর্দান্ত উপায়ে ডিল করে।

নীচের লাইনটি, আপনার উত্স (গুলি) পরীক্ষা করুন যে তারা প্রয়োগের জন্য ব্যবহার করে এবং কোন পরিমাণে তারা এলোমেলো শ্রদ্ধা বিবেচনা করে। তাদের বিশ্লেষণে স্থির।


এই প্রশ্নটি বিবেচনা করুন postimg.org/image/fiurc4z87 যা আমি পরীক্ষায় জিজ্ঞাসা করেছি। কোন উপযুক্ত উত্তর আপনি পরামর্শ দেবেন আমি মনে করি (গ)
অতীশ

1
@ অ্যাটিনেশ আমার ধারণা আমার উত্তর আপনাকে এ সম্পর্কিত পর্যাপ্ত তথ্য সরবরাহ করবে।
রাফেল

-1

হ্যাঁ আপনি কোর্ট, এটি হবে হে(এন2)

র্যান্ডমাইজড কুইকোর্টের জন্য সবচেয়ে খারাপ পরিস্থিতি হ'ল ইনপুট হিসাবে একই উপাদান। উদাঃ 2,2,2,2,2,2

এখানে যা যা লাগে তা অ্যালগরিদম হবে টি(এন)=টি(এন-1)+ +এন এবং অতঃপর হে(এন2)


যদি আপনার কাছে কুইকোর্টের অত্যধিক খসড়া বাস্তবায়ন থাকে। যে কোনও শালীন বাস্তবায়ন প্রথম পার্টিশন # 1 এবং # 6, # 2 এবং # 5, # 3 এবং # 4 এ বিনিময় করবে এবং তারপরে 3 দৈর্ঘ্যের দুটি
সাবহারিকে

আমার ধারণা, এলএইচএস এবং আরএইচএস থেকে স্ক্যান করা উভয় পয়েন্টারে আপনার <= পাশাপাশি পাশাপাশি> = রয়েছে। এই কারণেই আপনি তাই বলছেন। '=' উভয়ই পয়েন্টারের সাথে জড়িত। সেক্ষেত্রে পুনরাবৃত্তি গাছ n অবধি বৃদ্ধি পায়।
প্রয়াত

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