স্থিতিশীল সাজানোর জায়গায় সবচেয়ে খারাপ কেস ?


35

স্থিতিশীল বাছাইকরণ অ্যালগরিদম স্থলে সবচেয়ে খারাপ ক্ষেত্রে এমন ভাল সংস্থানগুলি খুঁজতে আমার সমস্যা হচ্ছে । কেউ কি কোনও ভাল সংস্থান সম্পর্কে জানেন?O(nlnn)

কেবলমাত্র একটি অনুস্মারক, স্থানটির অর্থ এটি পাস করা অ্যারে ব্যবহার করে এবং বাছাই করা অ্যালগরিদমকে কেবল ধ্রুবক অতিরিক্ত স্থান ব্যবহারের অনুমতি দেওয়া হয়। স্থির অর্থ হল যে একই কী সহ উপাদানগুলি মূল অনুসারে বাছাই করা অ্যারেতে একই ক্রমে উপস্থিত হয়।

উদাহরণস্বরূপ, নিষ্পাপ মার্জ বাছাই সবচেয়ে খারাপ ক্ষেত্রে এবং স্থিতিশীল তবে অতিরিক্ত স্থান ব্যবহার করে। স্ট্যান্ডার্ড কুইকোর্টটি স্থিতিশীল করা যায়, এটি জায়গায় থাকে তবে সবচেয়ে খারাপ ক্ষেত্রে । হিপসোর্টটি স্থানে রয়েছে, সবচেয়ে খারাপ ক্ষেত্রে তবে স্থিতিশীল নয়। উইকিপিডিয়ায় একটি অ্যালগরিদমকে বাছাই করার ক্ষেত্রে একটি দুর্দান্ত চার্ট রয়েছে যা কোন ত্রুটি রয়েছে। লক্ষ্য করুন যে কোনও স্থানে বাছাই করা অ্যালগরিদম নেই যে তারা তালিকাবদ্ধ করে যার স্থায়িত্বের তিনটি শর্ত রয়েছে, সবচেয়ে খারাপ ক্ষেত্রে এবং স্থানে রয়েছে।O(nlnn)O(n)O(n2)O(nlnn)O(nlnn)

আমি কাটাজাইনেন, প্যাসেনেন এবং টিউহোলার "প্রাকটিক্যাল ইন-প্লেস মার্জোর্ট" নামে একটি কাগজ পেয়েছি, যা স্থিতিশীল সংহতকরণের বৈকল্পিক ক্ষেত্রে সবচেয়ে খারাপ ক্ষেত্রে বলে দাবি করেছে । যদি আমি তাদের ফলাফল সঠিকভাবে বুঝতে, তারা প্রথম যাও recursively ব্যবহার করুন (নীচে আপ?) Mergesort অ্যারের এবং পরেরটির অ্যারের এবং দ্বিতীয় ব্যবহার একত্রিত করতে স্ক্র্যাচ স্থান হিসাবেআমি এখনও এই মাধ্যমে পড়ছি তাই আমি তাদের ফলাফলগুলি সঠিকভাবে ব্যাখ্যা করছি কিনা সে সম্পর্কে আরও কোনও তথ্য প্রশংসাযোগ্য।O(nlnn)141214

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

এটি নিখুঁত তাত্ত্বিক আগ্রহের এবং আমার কোনও ব্যবহারিক প্রয়োগ নেই। আমি কেবল আলগোরিদিমটি জানতে চাই যে এই তিনটি বৈশিষ্ট্যই রয়েছে।


এসও তে এখানে একটি উত্তর সহ একই প্রশ্ন রয়েছে যা আমি প্রশ্নের মধ্যে সরবরাহ করেছি। আমি বিশ্বাস করি যে এটি কোনও সদৃশ প্রশ্ন নয় কারণ আমি আরও স্পষ্টতা, আরও সাহিত্য এবং কোনও ভাগ্য সহ অ্যালগরিদমের বিবরণ চাইছি।
ব্যবহারকারী 834

1
দেখুন এই প্রশ্নের math.stackexchange.com উপর।
Tsuyoshi Ito

কেন কুইকসোর্টে একটি পাইভট নির্বাচন করার বিভিন্ন উপায় তার স্থায়িত্বকে ধ্বংস করবে?
svick

@ এসভিক, কীভাবে কুইকসোর্টকে সবচেয়ে খারাপ পরিস্থিতি বানাতে হয় তা আমি একমাত্র উপায়টি এলোমেলোভাবে পিভটটিকে আরও বুদ্ধিমানের সাথে বেছে নেওয়া হয়। আমি যেভাবে এটি করতে শিখেছি সেটি হল সিলেকশন অ্যালগরিদম ব্যবহার করে, যা মিডিয়েন-অফ-মিডিয়ান অ্যালগোরিদম ব্যবহার করে, যা স্থায়িত্বকে ধ্বংস করে। যদি আমি কিছু মিস করি তবে দয়া করে আমাকে জানান। O(nlnn)
ব্যবহারকারী 834

@ স্যুওশিআইটোতে, এটিকে একটি উত্তর হিসাবে বিবেচনা করুন। এছাড়াও, আপনি যদি অ্যালগরিদমের সংক্ষিপ্ত স্কেচ দিতে পারেন তবে আমার ধারণা এটি সত্যই সহায়ক হবে।
ব্যবহারকারী 834

উত্তর:


6

বেশ কয়েকটি অ্যালগরিদম রয়েছে যা উপরের সমস্তগুলি এবং গত 30 বছরে সেগুলির বেশ কয়েকটি আবিষ্কার হয়েছে।

সম্ভবত সবচেয়ে ভাল হ'ল ব্লক বাছাই নামক অ্যালগরিদমগুলির ক্লাস, ২০০৮ সালে কিম এবং কুটজনার দ্বারা নির্মিত সংস্করণ (উইকিওসোর্ট বলা হয়) এটি কেবল স্থিতিশীল এবং সম্পূর্ণ জায়গায় নেই (ট্রান্সডাইকোটমাস মডেলের মেমরির ওভারহেড) নয়, এটি এছাড়াও অভিযোজিত, এবং ইতিমধ্যে সাজানো তালিকার ক্ষেত্রে ও (এন) তুলনায় রূপান্তর করে প্রায় বাছাই করা তালিকাগুলি সাজানোর জন্য কয়েকটি পদক্ষেপ গ্রহণ করবে। আপনি এখানে সি, সি ++ এবং জাভাতে একটি বাস্তবায়ন পেতে পারেন: https://github.com/BonzaiThePenguin/WikiSort

হুয়াং এবং ল্যাংস্টন (1989-1992) এর গ্রেইলসোর্ট অ্যালগরিদম (এছাড়াও একটি ব্লক সাজান) হ'ল আগ্রহটি হ'ল, যা প্রকৃতপক্ষে বেশ কয়েকটি ধরণের পরীক্ষার ক্ষেত্রে উইকিসোর্টকে ছাড়িয়ে যায়। একটি সি ++ বাস্তবায়ন এখানে পাওয়া যায়: https://github.com/Mrrl/GrailSort


8

আপনি কোনও স্থানে স্থিতিশীল একত্রীকরণ লিখতে পারেন। দেখুন এই বিস্তারিত জানার জন্য। লেখকের নিজস্ব কথায়:

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

আমি কোডটি এখানে অনুলিপি করব না, তবে আপনি এটি লিঙ্কে বা সি ++ এসটিএল পরীক্ষা করে খুঁজে পেতে পারেন। আপনি আমাকে এখানে কী চলছে তার আরও বিশদ বিবরণ দেওয়ার চেষ্টা করতে চাইলে দয়া করে আমাকে জানান।


8
O(lnn)O(1)হে(Lnএন)

নোথ এটিকে টিএওসিপি-তেও সম্বোধন করে।
রাফেল

O(nln2n)

1

কিছু ব্যবহারিক চিন্তাভাবনা সম্পর্কে এটি দীর্ঘ মন্তব্য হিসাবে গ্রহণ করুন। যদিও এটি আপনার প্রশ্নের উত্তর না হলেও আমি মনে করি আপনি পাইথন আলোচনায় আগ্রহী হতে পারেন:

lg(N!)N1

[...]

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

সূত্র: bugs.python.org , লেখক: টিম পিটারস

O(nlogn)

এছাড়াও খেয়াল করুন যে টিমসোর্ট ইতিমধ্যে সাজানো অ্যারেগুলিতে ভাল সম্পাদন করে।

পাইথন টিমসোর্ট (যা কিছু টুইটের সাথে Mergesort) ব্যবহার করে এবং আমি জাভা বাস্তবায়নটি কয়েক বছর আগে দেখেছি, এটি Mergesortও ছিল (আমার মনে হয় তারা এখন টিমসোর্টও ব্যবহার করে)।

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