বোগোসোর্ট (ওরফে বানর বাছাই) এর চেয়ে আরও খারাপ বাছাই করা অ্যালগরিদমগুলি কি আছে? [বন্ধ]


178

আমার সহকর্মীরা আজ সকালে আমার অ্যালগরিদমগুলি বাছাইয়ের আলোচনার সাথে আমার বিশ্ববিদ্যালয়ের দিনগুলিতে ফিরে এসেছিলেন। আমরা স্টুপিডসোর্টের মতো আমাদের পছন্দসইগুলির কথা স্মরণ করিয়ে দিয়েছিলাম , এবং আমাদের একজন নিশ্চিত ছিল যে আমরা একটি ধরণের অ্যালগোরিদম দেখেছি O(n!)। এটি আমাকে খুঁজে পেতে পারে এমন "সবচেয়ে খারাপ" বাছাই করা অ্যালগরিদমগুলির সন্ধান করতে শুরু করল।

আমরা পোস্টুল্যুলেটেড করেছিলাম যে একটি সম্পূর্ণ এলোমেলোভাবে বাছাই করা বেশ খারাপ হবে (যেমন উপাদানগুলি এলোমেলো করে দেওয়া - এটি কি ক্রমানুসারে? না? আবার এলোমেলো আকারে ), এবং আমি চারপাশে তাকিয়ে দেখলাম যে এটি দৃশ্যত বোগোসোর্ট, বা বানর বাছাই, বা কখনও কখনও কেবল এলোমেলো বাছাই করা হয় called

বানর বাছাইয়ের ক্ষেত্রে সবচেয়ে খারাপ কেস পারফরম্যান্স O(∞), একটি সেরা কেস পারফরম্যান্স O(n)এবং এর গড় পারফরম্যান্স রয়েছে বলে মনে হয় O(n·n!)

সবচেয়ে খারাপ গড় বাছাইয়ের কর্মক্ষমতা (এবং এর চেয়ে খারাপের চেয়ে আরও খারাপ কী আছে) দিয়ে বর্তমানে সরকারী অনুসারে বাছাই করা অ্যালগরিদম কী O(n·n!)?


10
বোগোসর্টে কয়টি বোগোমিপ? জিজ্ঞাসাবাদী মন জানতে চায়।
জুমব্যাট

13
স্পষ্ট করে বলতে গেলে, আপনি কি তুচ্ছ ঘটনা বাদ দিচ্ছেন যেখানে সেরা কেস পারফরম্যান্স ও (∞)?
tloflin


6
আমি শুনেছি যে বানরের বাছাইটি "মাতাল ম্যান সাজ" হিসাবেও পরিচিত, এটি একটি নাম যা আমি আরও উস্কানিমূলক মনে করি।
মাত্তেও ইটালিয়া

6
@ মাত্তিও ইটালিয়া - বা এটি "টডলারের বাছাই" বলা যেতে পারে কারণ 2 বছর বয়সী যে কেউ এটি প্রমাণ করতে পারে।
মার্টিন ক্যাপোডিসি

উত্তর:


442

থেকে ডেভিড মর্গান-মার্চ 'র গুপ্ত আলগোরিদিম পৃষ্ঠা: ইন্টেলিজেন্ট ডিজাইন সাজান

ভূমিকা

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

অ্যালগরিদমের বিবরণ

মূল ইনপুট তালিকার সঠিক ক্রমে থাকার সম্ভাবনাটি হ'ল 1 / (এন!)। এর এত ছোট একটি সম্ভাবনা রয়েছে যে এটি স্পষ্টতই অবাস্তব বলা উচিত যে এটি ঘটনাক্রমে ঘটেছিল, তাই এটি অবশ্যই বুদ্ধিমান सॉર્টার দ্বারা সচেতনভাবে সেই আদেশে রাখা হয়েছিল by সুতরাং এটি ধরে নেওয়া নিরাপদ যে এটি ইতিমধ্যে সর্বোত্তমভাবে কিছু উপায়ে সাজানো হয়েছে যা "স্রোত ক্রম" সম্পর্কে আমাদের ভীরু মারাত্মক বোঝা ছাড়িয়ে যায়। আমাদের নিজস্ব পূর্বনির্ধারার সাথে সামঞ্জস্য করার জন্য সেই আদেশটি পরিবর্তনের যে কোনও প্রচেষ্টা আসলে এটিকে কম বাছাই করবে।

বিশ্লেষণ

এই অ্যালগরিদম সময়ে ধ্রুবক এবং জায়গাটিতে তালিকাই সাজান, অতিরিক্ত কোনও মেমরির প্রয়োজন হয় না। আসলে, এটি এমনকি সন্দেহজনক প্রযুক্তিগত কম্পিউটার স্টাফগুলির কোনও প্রয়োজন হয় না। সর্টারের প্রশংসা করুন!

প্রতিক্রিয়া

গ্যারি রজারস লিখেছেন:

যথাসময়ে বাছাই স্থির করা সর্টারের ক্ষমতা অস্বীকার করে। বাছাইকারী সময়ের বাইরে উপস্থিত থাকে, সুতরাং এই বাছাই সময়হীন। বাছাইয়ের বৈধতা পাওয়ার জন্য সময় প্রয়োজন সর্টারের ভূমিকা হ্রাস করে। এইভাবে ... এই নির্দিষ্ট ধরণের ত্রুটিযুক্ত এবং 'দ্য সোর্টার' হিসাবে দায়ী করা যায় না।

বৈধর্ম্য!


94
"অনুমানের বাছাই" নামেও পরিচিত: ধরে নিন তালিকাটি সাজানো হয়েছে, ফিরে আসুন!
বায়োজিক

42
+100 - এই উত্তরটি 100% খাঁটি জয়ের বাইরে তৈরি করা হয়েছে।
womp

11
হে! "নির্বিচারে বাছাই করা" ("স্ক্রোডিংগারস বাছাই করুন" বা "কোয়ান্টাম বাছাই" হিসাবেও জেনে থাকুন), যেখানে তালিকাটি বাছাই করা যেতে পারে বা নাও করা যাবে না, তবে এটি যাচাই করলে তা প্রকাশিত হবে কি না তা প্রকাশিত হবে। এখানে আমার নমুনা বাস্তবায়ন হল: void quantum_sort (void *b, size_t n, size_t s, int (*c)(const void *, const void*)) { if (rand () % 2) qsort (b, n, s, c); }
জো ডি

6
আমাদের এই ক্যান্ডিডের বাছাই করা ডাব করা উচিত :"This is the best of all posibble worlds because it is the world that is, and so in the best possible world the array would already be sorted!"
ইকোচাম্বার

2
আমি, এক জন্য, আমাদের নতুন বাছাই ওভারলর্ড স্বাগত জানাই। সকলেই শিলার শিলাবৃষ্টি!
ব্রায়সন

299

বহু বছর আগে, আমি মিরাকলসর্ট আবিষ্কার করেছি (তবে বাস্তবে কখনই প্রয়োগ করা হয়নি)।

Start with an array in memory.
loop:
    Check to see whether it's sorted.
    Yes? We're done.
    No? Wait a while and check again.
end loop

অবশেষে, মেমরি চিপগুলিতে বিট উল্টানো আলফা কণাগুলির সফল সাজাতে হবে।

বৃহত্তর নির্ভরযোগ্যতার জন্য, অ্যারেটি ঝালিত স্থানে অনুলিপি করুন এবং মূলটির বিপরীতে সম্ভাব্যভাবে সাজানো অ্যারেগুলি পরীক্ষা করুন।

সুতরাং আপনি কীভাবে আসলটির বিপরীতে সম্ভাব্যভাবে সাজানো অ্যারে চেক করবেন? আপনি কেবল প্রতিটি অ্যারে বাছাই করুন এবং মিলছেন কিনা তা পরীক্ষা করুন। এই পদক্ষেপের জন্য ব্যবহার করার জন্য মিরাকলসোর্ট হ'ল স্পষ্ট অ্যালগরিদম।

সম্পাদনা: কড়া কথা বলতে গেলে এটি কোনও অ্যালগরিদম নয়, যেহেতু এটি সমাপ্তির নিশ্চয়তা নেই। "একটি অ্যালগোরিদম নয়" কি "আরও খারাপ অ্যালগরিদম" হিসাবে যোগ্যতা অর্জন করে?


39
আমি ধরে নিয়েছি যে কেউ এই অ্যালগরিদমের যথার্থতা প্রমাণ করতে মহাজাগতিক রশ্মি ব্যবহার করতে পারেন।
ঘোর্ড

1
এর বড় ওটি কী? O(2^N)?
হাঁস

12
@ মুভিংডাক: আমার মনে হয় না এটির আসলে কোনও বড় ও আছে
কেইথ থম্পসন

5
@ মুভিংডাক: কঠোরভাবে বলতে গেলে, যদি তারা কলেজ এবং উইকিপিডিয়া নিবন্ধে আমাকে যা শিখিয়েছিল, উভয় অনুসারে এটি যদি একটি অ্যালগরিদম নয় তবে এটি অ্যালগরিদম নয় ।
কিথ থম্পসন

7
@ ওলাথ: দ্য হ্যালটিং প্রব্লেম বলছে যে সমস্ত প্রোগ্রাম বন্ধ রয়েছে কিনা তা আমরা নির্ধারণ করতে পারি না , তবে প্রচুর প্রোগ্রাম রয়েছে যার জন্য আমরা সেই দৃ determination়সংকল্পবদ্ধ করতে পারি। আমরা জানি Quicksort এবং Bubblesoft স্থগিত, এবং আমরা তারা আলগোরিদিম জানি।
কিথ থমসন 15

133

কোয়ান্টাম বোগোসর্ট

একটি বাছাই করা অ্যালগরিদম যা ধরে নিয়েছে যে কোয়ান্টাম মেকানিক্সের বহুবিশ্বের ব্যাখ্যাটি সঠিক:

  1. তালিকাটি বাছাই করা আছে তা পরীক্ষা করুন। তা না হলে মহাবিশ্বকে ধ্বংস করুন।

অ্যালগরিদমের সমাপ্তিতে, তালিকাটি কেবল একমাত্র মহাবিশ্বের বাম স্থলে সাজানো হবে। এই অ্যালগরিদমটি সবচেয়ে খারাপ ক্ষেত্রে O (N) এবং গড়-কেস ও (1) সময় নেয়। প্রকৃতপক্ষে, তুলনা করার গড় সংখ্যার সংখ্যা 2: মহাবিশ্বের দ্বিতীয় উপাদানটির উপর ধ্বংস হওয়ার 50% সম্ভাবনা রয়েছে, এটি তৃতীয় স্থানে ধ্বংস হয়ে যাওয়ার 25% সম্ভাবনা রয়েছে এবং আরও অনেক কিছু।


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

12
হ্যাঁ, একমাত্র মহাবিশ্বে যে তালিকাটি সাজানো হয়েছে তা পর্যবেক্ষণ করতে ও (এন) কে কার্যকর করতে সময় লেগেছে - অন্যান্য মহাবিশ্বে এটি কতটা সময় নিয়েছে তা অপ্রাসঙ্গিক।
নিক জনসন

19
তবে এই অ্যালগরিদমের অনেক বড় সমস্যা রয়েছে। ধরে নিন যে 10 বিলিয়ন বারের মধ্যে একটি আপনি ভুল করে সিদ্ধান্তে নেবেন যে তালিকাটি যখন তা নয় তখন তা সাজানো হয়েছে। 20 আছে! একটি 20 উপাদান তালিকা বাছাই উপায়। বাছাইয়ের পরে, অবশিষ্ট মহাবিশ্বগুলি সেই তালিকা হবে যেখানে তালিকাটি সঠিকভাবে বাছাই করা হয়েছিল, এবং ২.৪ মিলিয়ন ইউনিভার্স যেখানে অ্যালগোরিদম ভুলভাবে তালিকাটি সঠিকভাবে বাছাই করা হয়েছিল। সুতরাং আপনার কাছে যা আছে তা হল একটি যন্ত্রের একটি অংশের ত্রুটি হারকে ব্যাপকভাবে বাড়ানোর জন্য একটি অ্যালগরিদম।
নিক জনসন

10
এটি অবশ্যই সবচেয়ে ভাল বাছাই অ্যালগরিদম, সবচেয়ে খারাপ নয়।
বোয়ান

11
বিটলের পরামর্শকে ব্যর্থ করার ফলে সমস্ত মহাবিশ্ব ধ্বংস হতে পারে।
ক্র্যাশকোডস

60

আমি অবাক হয়েছি এখনও কেউ স্লিপসোর্টের কথা উল্লেখ করেনি ... নাকি আমি তা লক্ষ্য করিনি? যাই হোক:

#!/bin/bash
function f() {
    sleep "$1"
    echo "$1"
}
while [ -n "$1" ]
do
    f "$1" &
    shift
done
wait

উদাহরণস্বরূপ ব্যবহার:

./sleepsort.sh 5 3 6 3 6 3 1 4 7
./sleepsort.sh 8864569 7

পারফরম্যান্সের ক্ষেত্রে এটি ভয়ানক (বিশেষত দ্বিতীয় উদাহরণ)। 2 টি সংখ্যা বাছাই করতে প্রায় 3.5 মাস অপেক্ষা করা খুব খারাপ।


3
এটি একটি সাজানোর হিসাবে উপস্থিত বলে মনে হচ্ছেO(N) , তবে সত্যিকার অর্থে ওএস টাইমার প্রয়োগ করে ra
মুগিং হাঁস

7
আপনি যেভাবেই এটি কেটে ফেলেন এটি সম্ভবত বোগোসর্টের চেয়ে আরও ভাল বৃদ্ধি growth
মাকিং হাঁস

8
আমি সেখানে একটি জাতি অবস্থা দেখতে।

5
আপনি পরিবর্তন করতে পারেন sleep "$1"থেকে sleep "0.$(printf "%010d" $1)"লক্ষণীয়ভাবে পারফরম্যান্সের উন্নতি করতে। time ./sleepsort.sh 8864569 7তারপরে আমার ল্যাপটপে 0.009 এর মধ্যে চলে runs
স্যাম কেললেট

1
এটি ও (এন) জটিলতায় চলেছে (টাইমার প্রয়োগের উপর অবশ্যই নির্ভরশীল), এটি বিভিন্ন আকারে একটি সাধারণ বালতি সাজান।
কিওয়ারটি

60

জিংল বাছাই, এখানে বর্ণিত হিসাবে ।

আপনি ক্রিসমাসে আপনার তালিকার প্রতিটি মান একটি আলাদা সন্তানের কাছে দেন। বাচ্চারা, ভয়ঙ্কর মানুষ হওয়ায় তাদের উপহারগুলির মূল্য তুলনা করবে এবং সে অনুযায়ী নিজেকে সাজিয়ে তুলবে।


50

আমার একজন প্রভাষক ছিলেন যিনি একবার এলোমেলো অ্যারে তৈরির পরামর্শ দিয়েছিলেন, এটি বাছাই করা হয়েছে কিনা তা পরীক্ষা করে এবং তারপরে ডেটা বাছাই করার জন্য অ্যারের সমান ডেটা একই কিনা তা পরীক্ষা করে দেখুন।

সেরা কেস হে (এন) (প্রথমবারের শিশুর!) সবচেয়ে খারাপ ক্ষেত্রে ও (কখনই নয়)


4
বিশ্লেষণ করা আরও আকর্ষণীয় গড় কেস , যা হয় ...?
মুগিং হাঁস

4
সমস্ত সেরা পাঠ্য বই যেমন বলে, এটি পাঠকের জন্য অনুশীলন হিসাবে ছেড়ে গেছে!
ড্যানিয়েল

40
মূকিং হাঁস: ও (কখনও কখনও)
ইলিয়া ও

1
@ মুভিংডাক এর পরে এলোমেলো অ্যারেগুলিতে এলোমেলো উপাদান তৈরি করতে ব্যবহৃত উপাদানের প্রকার এবং বিতরণের কার্ডিনালিটি জানতে হবে।
নাম

5
জটিলতা হে (এন! * জেড ^ এন) যেখানে জেড সম্ভাব্য মানগুলির সেটের আকার এবং এন অ্যারের দৈর্ঘ্য।
জাকুবিসন

30

আপনি যদি কোনওভাবেই অ্যালগরিদমকে অর্থবহ রাখেন O(n!)তবে এটি আপনি অর্জন করতে পারেন এটি সবচেয়ে খারাপ upperর্ধ্বমুখী bound

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

আপনি যদি এর চেয়ে আরও বেশি পদক্ষেপগুলি করেন তবে অ্যালগরিদমের কোনও কার্যকর কার্যকর উদ্দেশ্য নেই। নিম্নলিখিত সাধারণ বাছাই করা অ্যালগরিদমের সাথে উল্লেখ না করা O(infinity):

list = someList
while (list not sorted):
    doNothing

14
তবে এটি বাছাই হয়েছে কিনা তা যাচাই করতে ও (এন) লাগে, সুতরাং আপনি ও (এন * এন!) পেতে পারেন
এরিক্কল্লান

3
@ এরিক্কাল্লেন: অবশ্যই আমরা ওগো (এন) এর চেয়েও খারাপ যা বাছাই করে তা নিশ্চিত করার জন্য একটি অ্যালগরিদম নিয়ে আসতে পারি can উদাহরণস্বরূপ, অ্যারের প্রতিটি উপাদানগুলির জন্য, যাচাই করুন যা এটি পূর্ববর্তী সমস্তগুলির চেয়ে অনেক বড়, যেমন সন্নিবেশ সাজানোর কাজ করে। এটি একটি ও (এন ^ 2) অ্যালগরিদম, এবং আমি নিশ্চিত যে আমি একটু চিন্তাভাবনা করে খারাপের সাথে আসতে পারব।
ডেভিড থর্নলি

7
@ ডেভিড থর্নলি: নিম্নলিখিত চেকিং অ্যালগরিদম সম্ভবত বোগোসর্টের মতো একই মনোভাব দেখাবে: দুটি এলোমেলো উপাদান বেছে নিন, পরীক্ষা করুন যে ছোট সূচকের সাথে একটি বৃহত্তর সূচকের সাথে একটির সমান বা তার সমান, তারপরে পুনরাবৃত্তি করুন। কোন সমন্বয়গুলি ইতিমধ্যে চেক করা হয়েছে তা দেখতে একটি বর্গ বিট ম্যাট্রিক্স রাখুন। অবশ্যই, এই ম্যাট্রিক্সটি পরীক্ষা করে এলোমেলো হাঁটাচলাও করা যেতে পারে ...
সান্তে

19

Bogobogosort। হ্যাঁ, এটি একটি জিনিস। বোগোবোগোসর্টে, আপনি প্রথম উপাদান বোগোসর্ট। সেই একটি উপাদান বাছাই করা হয়েছে কিনা তা পরীক্ষা করে দেখুন। একটি উপাদান হচ্ছে, এটি হবে। তারপরে আপনি দ্বিতীয় উপাদানটি যুক্ত করুন এবং স্রোটিং না হওয়া পর্যন্ত এই দুজনকে বোগোসর্ট করুন। তারপরে আপনি আরও একটি উপাদান যুক্ত করুন, তারপরে বোগোসর্ট। অবশেষে প্রতিটি উপাদান না করা পর্যন্ত উপাদান যোগ করা এবং বোগোসর্টিং চালিয়ে যান। মহাবিশ্বের তাপের মৃত্যুর আগে এটি কোনও বৃহত তালিকাতে সফল হওয়ার জন্য কখনও ডিজাইন করা হয়েছিল।


5
পবিত্র জননী। আমি মনে করি আমরা এমনকি একটি বোগলপ্লেক্স সংক্ষিপ্ত করতে পারি।
মিঃ কেকসন

19

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


19

একটি ধরণের আছে যার নাম বোগোবোগোসর্ট। প্রথমত, এটি প্রথম 2 টি উপাদান চেক করে এবং তাদের বোগোসর্ট করে। এরপরে এটি প্রথম 3 টি পরীক্ষা করে, এগুলিকে বোগোসর্ট করে ইত্যাদি।

তালিকাটি যে কোনও সময়ে বাইরে চলে যাওয়া উচিত, এটি প্রথম ২ টি আবার বোগোসর্ট করে পুনরায় চালু হয়। নিয়মিত বোগোসর্টের গড় জটিলতা রয়েছে O(N!), এই অ্যালগরিদমের গড় জটিলতা রয়েছেO(N!1!2!3!...N!)

সম্পাদনা করুন : 20উপাদানগুলির জন্য এই সংখ্যাটি কত বড়, আপনাকে একটি ধারণা দেওয়ার জন্য এই অ্যালগরিদমটি গড়ে গড়ে কয়েক 3.930093*10^158 বছর সময় নেয় , মহাবিশ্বের প্রস্তাবিত তাপ মৃত্যুর (এমনকি যদি এটি ঘটে) কয়েক 10^100 বছরের উপরে ,

যেখানে মার্জ সাজানোর ক্ষেত্রে প্রায় .0000004 সেকেন্ড সময় লাগে , বুদ্বুদ সাজানোর .0000016 সেকেন্ডে এবং বোগোসর্টে 308 কয়েক বছর সময় লাগে ,139 দিন ,19 ঘন্টা ,35 মিনিট ,22.306 সেকেন্ড সময়,এক বছর ধরে 365.242 দিন এবং কম্পিউটার প্রতি সেকেন্ডে 250,000,000 32 বিট পূর্ণসংখ্যার কাজ করে।

সম্পাদনা 2 : এই অ্যালগরিদম "অ্যালগরিদম" অলৌকিক বাছুর মতো ধীর নয়, সম্ভবত এই ধরণের মতই কম্পিউটারটি সফলভাবে 20 টি এলিমেন্ট বাছাই করার আগে ব্ল্যাকহোলে চুষে ফেলবে, তবে যদি এটি হয় তবে আমি গড় জটিলতা অনুমান করব এর 2^(32(the number of bits in a 32 bit integer)*N)(the number of elements)*(a number <=10^40) বছর ,

যেহেতু মাধ্যাকর্ষণটি চিপস আলফার গতি বাড়িয়ে তোলে, এবং 2 ^ N রাজ্য রয়েছে, যা 2^640*10^40প্রায় বা 5.783*10^216.762162762 কয়েক বছর পরেও , যদি তালিকাটি সাজানো শুরু হয় তবে এর জটিলতা কেবল O(N)মেশিন সাজানোর চেয়ে দ্রুত হবে , যা কেবলমাত্র এন লগ এনও সবচেয়ে খারাপ ক্ষেত্রে।

সম্পাদনা 3 : আকারটি খুব বড় হওয়ায় এই অ্যালগরিদমটি অলৌকিক ধরণের চেয়ে আসলে ধীরে ধীরে, 1000 বলুন, যেহেতু আমার অ্যালগরিদমের রান সময় হবে2.83*10^1175546 বছর , যখন অলৌকিক ঘটনা সাজানোর আলগোরিদিম একটি রান টাইম হবে1.156*10^9657 বছর


1
দুর্দান্ত কাজের উত্তর। দুঃখের এটির দৃশ্যমানতা নেই
শুক্র

16

এখানে 2 ধরণের আমি কলেজে আমার রুমমেট সাথে এসেছি

1) আদেশটি পরীক্ষা করুন 2) সম্ভবত কোনও অলৌকিক ঘটনা ঘটেছে, 1 এ যান

এবং

1) এটি ক্রমযুক্ত কিনা তা পরীক্ষা করুন, না হলে ২) প্রতিটি উপাদানকে একটি প্যাকেটে রাখুন এবং কোনও দূরবর্তী সার্ভারটি এটিকে আবার নিজের কাছে ফিরিয়ে আনুন। এই প্যাকেটগুলির কয়েকটি পৃথক ক্রমে ফিরে আসবে, তাই 1 এ যান


দ্বিতীয়টি প্রায় একটি বোজো সাজানোর সমতুল্য। প্রথম যদিও চালাক।
হাঁস

1
প্রথমটি মিরাকল সাজান।
চার্লস

14

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

for (int n=1; n<sizeof(list); ++n) {
  while (!isInOrder(list, 0, n)) {
    shuffle(list, 0, n);
  }
  if (!isInOrder(list, 0, n+1)) { n=0; }
}

5
আমি এই ধারণাটি পছন্দ করি যে এই অ্যালগরিদমটি "কোনও আকারের তালিকার জন্য মহাবিশ্বের তাপের মৃত্যুর আগে" কখনই শেষ না করার জন্য ডিজাইন করা হয়েছে
গ্রেড

10

1 আপনার আইটেমগুলি সূচক কার্ডগুলিতে বাছাই করতে রাখুন
2 আপনার বাসা থেকে বাতাসের দিনে বাতাসে ফেলে দিন, আপনার বাড়ি থেকে এক মাইল দূরে।
2 এগুলি একটি অগ্নিকাণ্ডে ফেলে দিন এবং নিশ্চিত করুন যে সেগুলি সম্পূর্ণরূপে ধ্বংস হয়ে গেছে।
3 সঠিক ক্রম জন্য আপনার রান্নাঘর মেঝে পরীক্ষা করুন।
4 যদি এটি সঠিক ক্রম না হয় তবে পুনরাবৃত্তি করুন।

সেরা কেস সিনেরিয়ো হ'ল ও (∞)

KennyTM দ্বারা চমত্কার পর্যবেক্ষণ উপর ভিত্তি করে উপরে সম্পাদনা করুন


9
না, এটি আরও খারাপ কারণ এটির সফল হওয়ার কোনও সুযোগ নেই। সূচক কার্ডগুলি কীভাবে আপনার রান্নাঘরে প্রবেশ করবে? তারা বাইরে ঘুরে বেড়াচ্ছে। একে বলে, আহ, বাটহেডসোর্ট।
প্যাট্রিক কারচার 18

আমি মনে করি তিনি মানে বাতাসে কার্ড তোলা বাহিরে , এবং তারপর আপনার মেঝে পরীক্ষা ভিতরে , যেখানে কোনো কার্ড হতে সেখানে নিশ্চিত করা হয়। যদিও "নামযুক্ত" অ্যালগরিদম না ... এটি অবশ্যই খারাপ!
womp

10
@ পেট্রিক কোয়ান্টাম টানেলিং।
কেনেটিএম

8
@KennyTM। যা আসলে আমার কাছে ঘটেছিল। একটি অত্যন্ত ছোট কিন্তু অ-শূন্য সম্ভাবনা রয়েছে যে কোনও বস্তু মহাবিশ্বের অন্য কোনও স্থানে অদৃশ্য হয়ে যেতে পারে এবং আবার উপস্থিত হতে পারে। আমি অনুমান এটা পারে এক হাজার সূচক কার্ড ঘটতে। । । Oi থেকে। ডাঙিত, আমার অ্যালগরিদম ত্রুটিযুক্ত । আমি এটা ঠিক করব . । ।
প্যাট্রিক কারচার

3
এটি এক সাথে চা এবং চা না খাওয়ার মতো। অথবা একটি অসীম অসম্ভব ড্রাইভ ব্যবহার করে মহাকাশ ভ্রমণ।
ব্যারি ব্রাউন

9

"আপনি এটি হতে চান?" সাজান

  1. সিস্টেম সময় নোট করুন।
  2. খুব শেষ সোয়াপ বাদ দিয়ে কুইকসোর্ট (বা অন্য কিছু যুক্তিসঙ্গত বুদ্ধিমান) ব্যবহার করে বাছাই করুন।
  3. সিস্টেম সময় নোট করুন।
  4. প্রয়োজনীয় সময় গণনা করুন। বর্ধিত নির্ভুলতা পাটিগণিতের প্রয়োজন।
  5. প্রয়োজনীয় সময় অপেক্ষা করুন।
  6. শেষ অদলবদল করুন।

এটি অনন্তের কোনও কল্পিত ও (এক্স) সংক্ষিপ্ত মানকেই কার্যকর করতে পারে তা নয়, নেওয়া সময়টি যথাযথভাবে সঠিক হয় (যদি আপনি সেই দীর্ঘ সময়ের জন্য অপেক্ষা করতে পারেন)।


8

অনন্তের চেয়ে খারাপ আর কিছু হতে পারে না।


38
ইনফিনিটি + ১. জিনক্স, কোনও রিটার্ন নেই।
জুমব্যাট

24
1% এর অত্যন্ত বড় মানের জন্য নয়)
জুমব্যাট

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

4
@ জম্বাট: আপনি কার্ডিনালিটির কথা বলছেন, সত্যিকারের লাইন / জটিল প্লেনে কোনও প্রবণতা নির্দেশ করে প্রতীক হিসাবে অনন্ত নয়।
কেনেটিএম

18
@zombat। সমান সংখ্যার সেটের আকারের সমানগুলির আকারের সমান, আপনি এগুলিকে এক-এক-পত্রের মধ্যে রেখে দিতে পারেন তা দেখানো হয়েছে। প্রথমত ক্যান্টরের দেখানো অনুসারে, পূর্ণসংখ্যার চেয়ে আরও বেশি আসল সংখ্যা রয়েছে।
ডেভিড থর্নলি

5

বোজো বাছাই একটি সম্পর্কিত অ্যালগরিদম যা তালিকাটি বাছাই করা হয়েছে কিনা তা পরীক্ষা করে এবং যদি না হয় তবে এলোমেলোভাবে দুটি আইটেম অদলবদল করে। এটির ক্ষেত্রে একই সেরা এবং সবচেয়ে খারাপ ক্ষেত্রে পারফরম্যান্স রয়েছে তবে আমি স্বজ্ঞাতভাবে প্রত্যাশা করব যে গড় কেসটি বোগোসোর্টের চেয়ে দীর্ঘ হবে। এই অ্যালগরিদমের পারফরম্যান্সের কোনও ডেটা (বা উত্পাদন) পাওয়া শক্ত hard


5

Se এর বিভাগসমূহ π

অনুমান π এ সমস্ত সম্ভাব্য সীমাবদ্ধ সংখ্যার সমন্বয় রয়েছে। গণিত.স্ট্যাকেক্সচেঞ্জ প্রশ্নটি দেখুন

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

4

একটি লক কর্মক্ষমতা হে (∞) এমনকি এটি অনুযায়ী একটি আলগোরিদিম করতে না পারে কিছু

একটি অ্যালগরিদম হ'ল ধাপগুলির একটি সিরিজ এবং আপনি সর্বদা গ্রহণের চেয়ে বেশি পদক্ষেপে কাঙ্ক্ষিত আউটপুট পেতে সামান্য কিছু টুইট করে সর্বদা আরও খারাপ করতে পারেন। অ্যালগরিদমে নেওয়া পদক্ষেপের সংখ্যার জ্ঞানকে কেউ উদ্দেশ্যমূলক জ্ঞান রাখতে পারে এবং এটিকে শেষ করে এবং সঠিক Xপদক্ষেপের সংখ্যা তৈরি করার পরে কেবল সঠিক পদক্ষেপের সংখ্যা তৈরি করতে পারে। এটি Xখুব ভাল O (n 2 ) বা O (n n ) ক্রম হতে পারে ! ) বা অ্যালগরিদম যা করতে ইচ্ছুক। এটি কার্যকরভাবে তার সেরা কেসের পাশাপাশি গড় মামলার সীমাও বাড়িয়ে তুলবে।

তবে আপনার সবচেয়ে খারাপ পরিস্থিতি শীর্ষে থাকা যায় না :)


3

আমার প্রিয় ধীরে ধীরে বাছাই করা অ্যালগরিদম হ'ল মজাদার বাছাই:

void stooges(long *begin, long *end) {
   if( (end-begin) <= 1 ) return;
   if( begin[0] < end[-1] ) swap(begin, end-1);
   if( (end-begin) > 1 ) {
      int one_third = (end-begin)/3;
      stooges(begin, end-one_third);
      stooges(begin+one_third, end);
      stooges(begin, end-one_third);
   }
}

সবচেয়ে খারাপ ক্ষেত্রে জটিলতা O(n^(log(3) / log(1.5))) = O(n^2.7095...)

আর একটি ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে চলতে হয়?

void slow(long *start, long *end) {
   if( (end-start) <= 1 ) return;
   long *middle = start + (end-start)/2;
   slow(start, middle);
   slow(middle, end);
   if( middle[-1] > end[-1] ) swap(middle-1, end-1);
   slow(start, end-1);
}

এটি O(n ^ (log n))সর্বোত্তম ক্ষেত্রে গ্রহণ করে ... স্টুজেসোর্টের চেয়েও ধীর।


3
Recursive Bogosort (probably still O(n!){
if (list not sorted)
list1 = first half of list.
list 2 = second half of list.
Recursive bogosort (list1);
Recursive bogosort (list2);
list = list1 + list2
while(list not sorted)
    shuffle(list);
}

2

এই পৃষ্ঠাটি এই বিষয়টিতে একটি আকর্ষণীয় পঠনযোগ্য: http://home.tiac.net/~cri_d/cri/2001/badsort.html

আমার ব্যক্তিগত প্রিয় টম ডাফের মূর্খতা:

/*
 * The time complexity of this thing is O(n^(a log n))
 * for some constant a. This is a multiply and surrender
 * algorithm: one that continues multiplying subproblems
 * as long as possible until their solution can no longer
 * be postponed.
 */
void sillysort(int a[], int i, int j){
        int t, m;
        for(;i!=j;--j){
                m=(i+j)/2;
                sillysort(a, i, m);
                sillysort(a, m+1, j);
                if(a[m]>a[j]){ t=a[m]; a[m]=a[j]; a[j]=t; }
        }
}

2

ডাবল বোগোসর্ট

বোগোসর্ট দু'বার এবং ফলাফলগুলি তুলনা করুন (এটির পুনরায় সাজানো হয়েছে তা নিশ্চিত হওয়ার জন্য) যদি এটি আবার না করে


1

আপনার "এটি সাজানো" পদক্ষেপ এলোমেলোভাবে চালিয়ে আপনি যে কোনও ধরণের অ্যালগরিদমকে ধীর করতে পারেন। কিছুটা এইরকম:

  1. আপনি যে অ্যারে বাছাই করছেন তার সমান আকারের বুলিয়ানগুলির একটি অ্যারে তৈরি করুন। এগুলি সব মিথ্যাতে সেট করুন।
  2. বোগোসর্টের একটি পুনরাবৃত্তি চালান
  3. দুটি এলোমেলো উপাদান বাছুন।
  4. যদি দুটি উপাদান প্রতিটিের (i <j&& অ্যারে [i] <অ্যারে [জে) এর সাথে সংগৃহীত হয় তবে বুলিয়ান অ্যারেতে উভয়ের সূচকগুলি চিহ্নিত করুন। উপরের দিকে, আবার শুরু করুন।
  5. অ্যারের সমস্ত বুলিয়ান সত্য কিনা তা পরীক্ষা করে দেখুন। যদি না হয় তবে 3 এ ফিরে যান।
  6. সম্পন্ন.

1

হ্যাঁ, সিম্পলসোর্ট, তাত্ত্বিকভাবে এটি চালিত হয় O(-1)তবে এটি সমানO(...9999) যা ঘুরে ফিরে ও (∞ - 1) এর সমতুল্য, যা ঘটে তা ও (∞) এর সমতুল্য। এখানে আমার নমুনা বাস্তবায়ন:

/* element sizes are uneeded, they are assumed */
void
simplesort (const void* begin, const void* end)
{
  for (;;);
}

1

আমি কেবল যার উপর কাজ করছিলাম তার মধ্যে দুটি এলোমেলো পয়েন্ট বাছাই করা জড়িত, এবং যদি সেগুলি ভুল ক্রমে থাকে তবে তাদের মধ্যে পুরো সাবরিঞ্জটি উল্টে দেয়। আমি http://richardhartersworld.com/cri_d/cri/2001/badsort.html এ অ্যালগরিদমটি পেয়েছি , যা বলে যে গড় ক্ষেত্রে সম্ভবত O (n ^ 3) বা O (n ^ 2 লগ এন) এর আশেপাশের কোথাও রয়েছে ( সে আসলে নিশ্চিত নয়)।

আমি মনে করি এটি আরও দক্ষতার সাথে করা সম্ভব হতে পারে, কারণ আমি মনে করি যে ও (1) সময়ে বিপরীতমুখী অপারেশন করা সম্ভব হতে পারে।

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


1

Randomsubsetsort।

এন উপাদানগুলির একটি অ্যারে দেওয়া, সম্ভাব্যতা 1 / n সহ প্রতিটি উপাদান চয়ন করুন, এই উপাদানগুলিকে এলোমেলো করুন এবং অ্যারেটি বাছাই করা হয়েছে কিনা তা পরীক্ষা করুন। সাজানো না হওয়া পর্যন্ত পুনরাবৃত্তি করুন।

প্রত্যাশিত সময়টি পাঠকের অনুশীলন হিসাবে ছেড়ে যায়।

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