আপনি জানেন কী সবচেয়ে অস্পষ্ট বাছাই করা অ্যালগরিদম? [বন্ধ]


22

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

আপনি জানেন সবচেয়ে অস্পষ্ট কোনটি?


4
ফিরে আসতে হবে।
মার্ক সি সি

এটির সাথে সুন্দর সময়, আমার ডেটা স্ট্রাকচার ক্লাসটি কেবল ধরণের প্রচ্ছদ শুরু করেছে। এখন, আমি কেবল প্রাথমিক ধরণেরই বুঝতে পারি না, তবে পাগলগুলিও।
জেসন

উত্তর:



12

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

এটি এটিকে বোগোসর্ট থেকে অফসেট করে কারণ সেরা ক্ষেত্রে বোগোসর্ট বেশ দক্ষ - যথা, অ্যারে ইতিমধ্যে সাজানো থাকলে। স্লোসর্ট এমন সেরা-আচরণের কারণে "ভোগেন না"। এমনকি তার শ্রেষ্ঠ ক্ষেত্রে, এটি এখনও রানটাইম হয়েছে $ \ ওমেগা (ঢ ^ অর্থাত \ frac {\ log_2n} {2+ \ Epsilon}) $ জন্য ε > 0।

এখানে এটির সিউডোকোড, জার্মান উইকিপিডিয়া নিবন্ধ থেকে অভিযোজিত :

function slowsort(A, i, j):
  if i >= j: return

  m = (i + j) / 2
  slowsort(A, i, m)
  slowsort(A, m + 1, j)

  if A[j] < A[m]:
    swap(A[j], A[m])

  slowsort(A, i, j - 1)

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

3
@ অ্যালেক্স: না এটি কিছুই পরিবর্তন করে না। প্রথম পদক্ষেপের পরেও বোগোসর্ট সমাপ্ত হবে কারণ সুযোগ যেমন ছিল, ততক্ষণ পরিবর্তনগুলি ক্রম অনুসারে বাছাই করত। বোগোসর্ট এখনও সবচেয়ে খারাপ ক্ষেত্রে এবং গড় ক্ষেত্রে থেকে মৌলিকভাবে পৃথক রান-টাইম (ও (এন)) এর সাথে একটি সুস্পষ্ট সেরা ক্ষেত্রে ব্যবহার করে। স্লোসোর্টে কেবল এটি থাকে না।
কনরাড রুডলফ

আহ, আমি কেবল প্রাথমিক অবস্থার কথা ভাবছিলাম, মৃত্যুদন্ড কার্যকর করার পথে নয়!
অ্যালেক্স ফেনম্যান

এটি ভালবাসুন :) নিষ্ঠুর বাহিনীর মতো কিছুই নয় ...

8

যদি অস্পষ্ট হিসাবে এই সংখ্যা, কিন্তু অধিকাংশ হাস্যকর শ্রেণীবিভাজন "আলগোরিদিম" এক আমি জানি না Bogosort । বোগোসর্ট পৃষ্ঠার লিঙ্কগুলিও মজাদার।

এবং "কোয়ান্টাম বোগো-সাজান" বিভাগ থেকে এই রত্ন রয়েছে।

তর্কযুক্তভাবে, 2 এন মহাবিশ্ব তৈরি করাও খুব স্মৃতি-নিবিড়।

হুমমম ... আপনি বলতে পারেন :-)।


আমার এটা ভাল লেগেছে. আমি বিশেষত "কোয়ান্টাম বোগোসোর্ট" ধারণাটি পছন্দ করি :-)
ডিন হার্ডিং

6

আরেকটি অস্পষ্ট "অ্যালগরিদম" হ'ল ইন্টেলিজেন্ট ডিজাইনের বাছাই - তবে কোনও অ্যালগরিদম দ্রুত হয় না বা এর স্মৃতিশক্তি কম থাকে :)


এই অ্যালগরিদমের অন্যতম সেরা বৈশিষ্ট্য হ'ল আমরা জানি এটি কাজ করে - কোন কিছুর বিশ্লেষণ বা প্রমাণ করার দরকার নেই।
কালেব


5

আমি মনে করি বুদ্বুদ সাজানোর এই পরিস্থিতিতেও ভুল উত্তর হবে

:)


3

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

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



2

আমি জানি না এটি সর্বাধিক অস্পষ্ট কিনা, তবে আপনি যে পরিস্থিতিতে এটি ব্যবহার করতে পারবেন সেই ক্ষেত্রে স্প্যাগেটি বাছাই সেরা of


এটি "ঘুমের বাছাই" হিসাবে ধারণার মতো একই এবং আকর্ষণীয়ভাবে ডিএনএ (স্যাঞ্জার সিকোয়েন্সিং) সিকোয়েন্সিংয়ের জন্য বায়োইনফরম্যাটিকসে যথেষ্ট ব্যবহৃত হয়।
কনরাড রুডল্ফ

2

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


1

আমি একবার সিআরএ এসেম্বলারের মধ্যে ভেক্টর রেজিস্ট্রি করে বুদ্বুদ সাজিয়েছি। মেশিনটির একটি ডাবল শিফট নির্দেশনা ছিল, যা আপনাকে কোনও শব্দের সাহায্যে ভেক্টর নিবন্ধের বিষয়বস্তু উপরে / ডাউন স্থানান্তর করতে দেয়। প্রতিটি অন্য পয়েন্ট দুটি ভেক্টর রেজিস্টারে রাখুন, তারপরে আপনি সম্পূর্ণ বুদ্বুদ বাছাই করতে পারবেন যতক্ষণ না আপনার কাজ শেষ না হওয়া পর্যন্ত অন্য মেমরি রেফারেন্স তৈরি না করে। বুদ্বুদ সাজানোর এন ** 2 প্রকৃতি ব্যতীত এটি দক্ষ ছিল।

আমি একবার একবারে একটি ভাসমান বিন্দু 4 দৈর্ঘ্যের ভেক্টর যত তাড়াতাড়ি একক সাজানোর জন্য দ্রুত করা প্রয়োজন। এটি কি টেবিল দেখার মাধ্যমে হয়েছে (A2-A1 এর সাইন বিটটি একটি বিট, A3-A1 এর সাইন আরেকটি বিট গঠন করে ..., তারপরে আপনি একটি সারণীতে ক্রমবিন্যাস ভেক্টরটি সন্ধান করেন actually এটি আসলে সবচেয়ে দ্রুত সমাধান যা আমি আসতে পেরেছিলাম আধুনিক স্থাপত্যগুলিতে ভাল কাজ করে না যদিও, ভাসমান এবং পূর্ণসংখ্যা ইউনিটগুলি খুব আলাদা separated


আপনার কি এখনও এর জন্য উত্স আছে? আমি এটি পরীক্ষা করতে আগ্রহী!
সোভা

কোনও উত্স নয়, এটি এমন কোনও সংস্থার জন্য একটি অপ্রচলিত মেশিনের জন্য ছিল যা শেষ পর্যন্ত আমাকে বিদায় দেয়। সারণী অনুসন্ধান শক্ত নয়: sb1 = 1 & ((a2-a1) >> 63); sb2 = 2 & ((a3-a1) >> 62); ... সূচক = এসবি 1 | এসবি 2 | এসবি 3 ... অনুসরণ করেছে অর্ডার একটি সারণী অনুসন্ধান দ্বারা।
ওমেগা সেন্টাউরি

1

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

গোরোর ৪ টি বাহু রয়েছে। গোরো খুব শক্তিশালী। আপনি গোরোর সাথে গোলযোগ করবেন না। গোরোর জন্য এন এর বিভিন্ন পূর্ণসংখ্যার অ্যারে বাছাই করা দরকার। অ্যালগরিদমগুলি গোরোর শক্তি নয়; শক্তি গোরোর শক্তি। গোরার পরিকল্পনা হ'ল অ্যারের বিভিন্ন উপাদান ধরে রাখতে তার দু'হাতে আঙ্গুলগুলি ব্যবহার করা এবং তার তৃতীয় এবং চতুর্থ মুষ্টি দিয়ে যতটা সম্ভব শক্ত করে টেবিলটিকে আঘাত করা। এটি অ্যারের অনিরাপদ উপাদানগুলিকে বাতাসে উড়ে যাবে, এলোমেলোভাবে বদলে যাবে এবং খালি অ্যারে অবস্থানে ফিরে যাবে।

http://code.google.com/codejam/contest/dashboard?c=975485#s=p3



0

শেল সাজান

সম্ভবত অ্যালগরিদম নিজেই সেই অস্পষ্ট নয়, তবে বাস্তবে অনুশীলনে ব্যবহৃত একটি প্রয়োগের নাম কে দিতে পারে? আমি পারি!

টিআইজিসিসি (টিআই-89/92 / ভি 200 গ্রাফিং ক্যালকুলেটরগুলির জন্য একটি জিসিসি ভিত্তিক সংকলক) qsortস্ট্যান্ডার্ড লাইব্রেরিতে প্রয়োগের জন্য শেল সাজ্ট ব্যবহার করে :

__ATTR_LIB_C__ void qsort(void *list, short num_items, short size, compare_t cmp_func)
{
  unsigned short gap,byte_gap,i,j;                
  char *p,*a,*b,temp;                       
  for (gap=((unsigned short)num_items)>>1; gap>0; gap>>=1)    // Yes, this is not a quicksort,
    {                                                         // but works fast enough...    
      byte_gap=gap*(unsigned short)size;
      for(i=byte_gap; i<((unsigned short)num_items)*(unsigned short)size; i+=size)
        for(p=(char*)list+i-byte_gap; p>=(char*)list; p-= byte_gap)
          {
            a=p; b=p+byte_gap;
            if(cmp_func(a,b)<=0) break;
            for(j=size;j;j--)
              temp=*a, *a++=*b, *b++=temp;
          }
    }
}

কোডের আকার কম রাখার জন্য শিক বাছাইটি কুইকোর্টের পক্ষে বেছে নেওয়া হয়েছিল। যদিও এটি অ্যাসিপটোটিক জটিলতা আরও খারাপ, টিআই -৯৯ এর পুরো প্রচুর র‌্যাম নেই (১৯০ কে, বিয়োগক্রমের আকার এবং কোনও সংরক্ষণাগারভুক্ত ভেরিয়েবলের মোট আকার) নেই, তাই আইটেমের সংখ্যাটি হবে বলে ধরে নেওয়া কিছুটা নিরাপদ নিচে.

আমি যে প্রোগ্রামটি লিখছিলাম তাতে এটি খুব ধীর হয়ে গেছে বলে অভিযোগ করার পরে একটি দ্রুত বাস্তবায়ন লেখা হয়েছিল। এটি সমাবেশ অপ্টিমাইজেশনের পাশাপাশি আরও ভাল ব্যবধানের মাপ ব্যবহার করে। এটি এখানে পাওয়া যাবে: qsort.c

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