বাবল সাজানোর চেয়ে বাছাই বাছাই কেন দ্রুত?


28

উইকিপিডিয়ায় এটি লেখা আছে যে "... নির্বাচন সাজানোর প্রায় সবসময়ই বুদ্বুদ সাজানোর এবং জিনোম সাজানকে ছাপিয়ে যায়" " কেউ দয়া করে আমাকে ব্যাখ্যা করতে পারেন কেন বাছাই বাছাইকে বুদ্বুদ সাজানোর চেয়ে দ্রুত বিবেচনা করা হয় যদিও তাদের দুজনেরই রয়েছে:

  1. সবচেয়ে খারাপ সময়ের জটিলতা :O(n2)

  2. তুলনার সংখ্যা : O(n2)

  3. সেরা কেস সময় জটিলতা :

    • বুদ্বুদ সাজান:O(n)
    • নির্বাচনের ধরণ:O(n2)
  4. গড় ক্ষেত্রে সময় জটিলতা :

    • বুদ্বুদ সাজান:O(n2)
    • নির্বাচনের ধরণ:O(n2)

উত্তর:


32

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

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

তুলনার গড় সংখ্যা:

  • বুদ্বুদ সাজান :12(N2NlnN(γ+ln21)N)+O(N)
  • সন্নিবেশ সাজান :14(N2N)+NHN
  • নির্বাচনের ধরণ :(N+1)HN2N

এখন, আপনি যদি এই ফাংশনগুলি প্লট করেন তবে আপনি এরকম কিছু পাবেন: চক্রান্ত plot2

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

এই বিশ্লেষণটি ইনপুটটি এলোমেলো এই অনুমানের ভিত্তিতে তৈরি - যা সর্বদা সত্য নাও হতে পারে। তবে, বাছাই শুরু করার আগে আমরা গড় কেসটি পেতে এলোমেলোভাবে ইনপুট সিকোয়েন্সটিকে (যে কোনও পদ্ধতি ব্যবহার করে) অনুমতি দিতে পারি।

আমি সময় জটিলতা বিশ্লেষণ বাদ দিয়েছি কারণ এটি বাস্তবায়নের উপর নির্ভর করে, তবে অনুরূপ পদ্ধতি ব্যবহার করা যেতে পারে।


"অ্যাভারেজ কেস পাওয়ার জন্য আমরা এলোমেলোভাবে ইনপুট ক্রমটি অনুমতি দিতে পারি" এ নিয়ে আমার একটি সমস্যা রয়েছে have কেন তা বাছাই করার জন্য প্রয়োজনীয় সময়ের চেয়ে দ্রুততর করা যায়?
সাশো নিকোলভ

1
আপনি যে কোনও সংখ্যার ক্রমকে ক্রম করতে পারেন এটিতে সময় লাগবে যেখানে সিকোয়েন্স দৈর্ঘ্য। এটি সুস্পষ্ট যে কোনও তুলনা ভিত্তিক বাছাইকরণ অ্যালগরিদমের কমপক্ষে জটিলতা থাকতে হবে তাই আপনি যদি তার জটিলতায় যুক্ত করেন তবে এতটা পরিবর্তন হবে না। যাইহোক আমরা তুলনার কথা বলছি সময় সম্পর্কে নয়, সময়ের জটিলতা বাস্তবায়ন এবং মেশিন চালনার উপর নির্ভর করে, যেমনটি আমি উত্তরে উল্লেখ করেছি। NNO(NlogN)N
বার্তোসজ প্রিজিবিস্কি

আমার ধারণা আমি ঘুমে ছিলাম, আপনি ঠিক বলেছেন, রৈখিক সময়ে ক্রমটি অনুমতি দেওয়া যেতে পারে।
সাশো নিকোলভ

যেহেতু , আপনার তুলনাটি বাছাই বাছাইয়ের জন্য সঠিক? দেখে মনে হচ্ছে আপনি বোঝাচ্ছেন যে এটি গড়ে ও (এন লগ এন) তুলনা করে। HN=Θ(logN)
টেমপ্লেটপীফটিফ

গামা = 0.577216 হলেন ইউলার-মাশেরোনি ধ্রুবক। সম্পর্কিত অধ্যায়টি হ'ল "আর্ট অফ প্রোগ্রামিং" খণ্ড 3 বিভাগ 5.2.2 pg। 109 এবং 129. আপনি বুদ্বুদ সাজানোর কেসটি কীভাবে বিশেষ করে ও (স্কয়ার্ট (এন)) শব্দটিকে প্লট করেছিলেন? আপনি কি এটিকে অবহেলা করেছেন?
এমএক্সএমএনএনএনএন

11

অ্যাসিপটোটিক ব্যয় বা নোটেশন কোনও ক্রমের সীমিত আচরণের বর্ণনা দেয় কারণ এটির যুক্তি অসীম, অর্থাৎ তার বৃদ্ধির হারকে বোঝায়।O

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

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

তুলনার সংখ্যার বিচারে, বুদ্বুদ সাজানোর জন্য তুলনা প্রয়োজন, যেখানে একটি প্রবেশিকার প্রাথমিক অবস্থান এবং এর চূড়ান্ত অবস্থানের মধ্যে সর্বাধিক দূরত্ব, যা অভিন্ন বিতরণ করা প্রাথমিক মানগুলির জন্য সাধারণত চেয়ে বড় হয় । বাছাই বাছাই করার জন্য, সর্বদা প্রয়োজন তুলনা।কে এন / 2 ( এন - 1 ) × ( এন - 2 ) / 2k×nkn/2(n1)×(n2)/2

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


1
এটি এমনকি খুব ভাল উত্তর
গ্রিজেশ চৌহান

আপনি কোন বই পছন্দ করেন?
গ্রিজেশ চৌহান

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

আমার জন্য, আপনার উত্তরের তৃতীয় প্যারা হ'ল আসল উত্তর। অন্যান্য উত্তরে প্রদত্ত বৃহত ইনপুটগুলির জন্য গ্রাফগুলি নয়।
overexchange

3

বুদ্বুদ সাজানোর সময় আরও অদলবদল ব্যবহৃত হয়, যখন নির্বাচনের ধরণটি এড়ানো হয়।

বাছাই বাছাই করার সময় এটি nবেশিরভাগ সময়ে অদলবদল করে । তবে বুদ্বুদ বাছাই করার সময় এটি প্রায় অদলবদল হয় n*(n-1)। এবং স্পষ্টতই পড়ার সময়টি স্মৃতিতে এমনকি সময় লেখার চেয়েও কম। তুলনার সময় এবং অন্যান্য চলমান সময় উপেক্ষা করা যেতে পারে। সুতরাং অদলবদল সমস্যা সমস্যার সমালোচনা।


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

আপনি কেবল তুলনা সংখ্যাকে উপেক্ষা করতে পারবেন না, কারণ এমন দুটি ক্ষেত্রে ব্যবহারের ক্ষেত্রে দুটি আইটেমের তুলনা করতে ব্যয় করা সময় দুটি আইটেমের অদলবদল করতে ব্যয় করা সময়ের চেয়ে বেশি হতে পারে। অত্যন্ত দীর্ঘ স্ট্রিংগুলির একটি লিঙ্কযুক্ত তালিকা বিবেচনা করুন (প্রতিটি 100k অক্ষর বলুন)। প্রতিটি স্ট্রিংয়ে পড়া পয়েন্টার পুনরায় নিয়োগের চেয়ে অনেক বেশি সময় নেয়।
ইরভিন লিম

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