আমি ভাবছি যদি কোনও অ্যারের "বাছাই" পরিমাপের কোনও মানক উপায় আছে? সম্ভাব্য বিপর্যয়ের মাঝারি সংখ্যা রয়েছে এমন একটি অ্যারে কি সর্বাধিক অব্যাহত হিসাবে বিবেচিত হবে? এর দ্বারা আমার অর্থ এটি মূলত বাছাই করা বা বিপরীত সাজানো থেকে যতটা সম্ভব সম্ভব।
আমি ভাবছি যদি কোনও অ্যারের "বাছাই" পরিমাপের কোনও মানক উপায় আছে? সম্ভাব্য বিপর্যয়ের মাঝারি সংখ্যা রয়েছে এমন একটি অ্যারে কি সর্বাধিক অব্যাহত হিসাবে বিবেচিত হবে? এর দ্বারা আমার অর্থ এটি মূলত বাছাই করা বা বিপরীত সাজানো থেকে যতটা সম্ভব সম্ভব।
উত্তর:
না, এটি আপনার আবেদনের উপর নির্ভর করে। Sortedness ব্যবস্থা প্রায়ই হিসাবে উল্লেখ করা হয় গোলযোগের ব্যবস্থা , যা থেকে ফাংশন হয় করতে আর , যেখানে এন < এন স্বতন্ত্র নন-নেগেটিভ পূর্ণসংখ্যার সব সসীম ক্রম সংগ্রহ। এস্টিভিল-কাস্ত্রো এবং উড [১] এর সমীক্ষায় অভিযোজিত বাছাইকরণ অ্যালগরিদমের প্রসঙ্গে 11 টি বিভিন্ন ব্যাধির ব্যবস্থা ও আলোচনা করা হয়েছে।
বিপর্যয়ের সংখ্যা কিছু ক্ষেত্রে কাজ করতে পারে তবে কখনও কখনও অপ্রতুল থাকে। [1] এ দেওয়া একটি উদাহরণ হ'ল ক্রম
এতে বিবর্তনের চতুর্ভুজ সংখ্যা রয়েছে তবে কেবল দুটি আরোহী রান নিয়ে গঠিত। এটি প্রায় বাছাই করা হয়েছে, তবে এটি বিপর্যয় দ্বারা ধরা পড়ে না।
ম্যানিলা [১] অক্ষরবৃত্তিকে নিম্নরূপে (তুলনা-ভিত্তিক অ্যালগরিদমগুলিতে ফোকাস সহ) নিম্নরূপ (প্যারাফ্রেসিং) করে।
যাক একটি সম্পূর্ণ আদেশ সেট। তারপর একটি ম্যাপিং মি থেকে Σ ⋆ (থেকে স্বতন্ত্র উপাদান ক্রমের Σ স্বাভাবিকভাবে করতে) একটি হল presortedness পরিমাপ যদি এটা অবস্থার নিচে সন্তুষ্ট।
যদি বাছাই করা হয় তবে মি ( এক্স ) = 0 ।
তাহলে সঙ্গে এক্স = এক্স 1 ... এক্স এন , ওয়াই = Y 1 ... Y এন এবং x আমি < এক্স আমি for all I , j ∈ [ 1 .. n ] , তারপরে মি ( এক্স ) = মি ( ওয়াই ) ।
যদি হ'ল Y ∈ Σ ⋆ এর অনুচ্ছেদ হয় তবে মি ( এক্স ) ≤ মি ( ওয়াই ) ।
তাহলে সবার জন্য আমি ∈ [ 1 .. | এক্স | ] এবং জ ∈ [ 1 .. | ওয়াই | ] কিছু এক্স , ওয়াই ∈ Σ ⋆ , তারপর মি ( এক্স ⋅ ওয়াই ) ≤ মি ( এক্স ) + + মি ( ওয়াই ) ।
সমস্ত এক্স ∈ Σ ⋆ এবং একটি ∈ ই ∖ এক্স এর জন্য + মি ( এক্স ) ।
এই ধরনের ব্যবস্থা উদাহরণ
নোট করুন যে এই ব্যবস্থাগুলি ব্যবহার করে এলোমেলো বিতরণগুলি সংজ্ঞায়িত করা হয়েছে, যেমন সিকোয়েন্সগুলি তৈরি করে যা কম / কম বাছাই করা কম বা কম সম্ভাব্য। এগুলিকে ইভেন-এর মতো বিতরণ বলা হয় [2, Ch। 4-5; 3, উদাহরণ 12; 4], যার একটি বিশেষ কেস তথাকথিত মাল্লোস বিতরণ। ওজনগুলি একটি ধ্রুবক পরিমিত হয় এবং পরিপূর্ণ হয়
।
নোট করুন যে কীভাবে ইউনিফর্ম বিতরণকে (সমস্ত মিটারের জন্য ) সংজ্ঞা দেয়।
যেহেতু এই ব্যবস্থাগুলি দক্ষতার সাথে ক্রমকে নমুনা দেওয়া সম্ভব হয়, তাই অ্যালগরিদমগুলি বাছাইয়ের সময় বেঞ্চমার্কিং করার সময় কাজের এই অংশটি অনুশীলনে কার্যকর হতে পারে।
আমার একটি ক্রম "সাজানো" এর নিজস্ব সংজ্ঞা আছে।
যে কোনও অনুক্রম দেওয়া হয়েছে [ক, খ, সি,…] আমরা এটিকে একই উপাদানগুলির সাথে বাছাই করা ক্রমের সাথে তুলনা করি, ম্যাচের সংখ্যা গণনা করি এবং ক্রমের উপাদানগুলির সংখ্যা দ্বারা এটি ভাগ করি।
উদাহরণস্বরূপ, প্রদত্ত ক্রম [5,1,2,3,4]
আমরা নিম্নরূপে অগ্রসর হই:
1) ক্রমটি বাছাই করুন: [1,2,3,4,5]
২) সাজানো ক্রমটি মূলটির সাথে একবারে এক অবস্থান নিয়ে এবং সর্বাধিক মিলের সংখ্যা গণনা করে তুলনা করুন:
[5,1,2,3,4]
[1,2,3,4,5] one match
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] 4 matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
...
[5,1,2,3,4]
[1,2,3,4,5] no matches
3) ম্যাচের সর্বাধিক সংখ্যা 4, আমরা 4/5 = 0.8 হিসাবে "বাছাই" গণনা করতে পারি।
বাছাই করা ক্রমের ক্রম বাছাই 1 হবে এবং বিপরীত ক্রমে স্থাপন করা উপাদানগুলির সাথে ক্রমটির বাছাই 1 / n হবে।
এই সংজ্ঞার পিছনে ধারণাটি হ'ল যে কোনও ক্রমকে বাছাই করা ক্রমের মধ্যে রূপান্তর করতে আমাদের ন্যূনতম কাজের দরকার হবে। উপরের উদাহরণে আমাদের কেবল একটি উপাদান সরানো দরকার, 5 (অনেকগুলি উপায় রয়েছে তবে 5 চালানো সর্বাধিক দক্ষ)। যখন উপাদানগুলি বিপরীত ক্রমে স্থাপন করা হবে, তখন আমাদের 4 টি উপাদান সরানো দরকার। এবং যখন ক্রমটি বাছাই করা হয়েছিল, কোনও কাজের দরকার নেই needed
আমি আশা করি আমার সংজ্ঞাটি বোধগম্য হয়।
আপনার যদি দ্রুত এবং নোংরা কিছু প্রয়োজন হয় (সংশ্লেষের লক্ষণগুলি আমাকে ভয় দেখায়) আমি এ্যারি নামের একটি শ্রেণীর জন্য সি ++ তে একটি সুপার ইজি ডিসঅর্ডার ফাংশন লিখেছিলাম যা এলোমেলোভাবে উত্পন্ন সংখ্যায় ভরাট অ্যারে তৈরি করে:
void Array::disorder() {
double disorderValue = 0;
int counter = this->arraySize;
for (int n = 0; n < this->arraySize; n++) {
disorderValue += abs(((n + 1) - array[n]));
// cout << "disorderValue variable test value = " << disorderValue << endl;
counter++;
}
cout << "Disorder Value = " << (disorderValue / this->arraySize) / (this->arraySize / 2) << "\n" << endl;
}
ফাংশনটি প্রতিটি উপাদানটির মানটিকে +1 উপাদানের সূচকের সাথে কেবল তুলনা করে যাতে বিপরীত ক্রমে একটি অ্যারেতে 1 এর একটি ব্যাধি মান থাকে এবং বাছাই করা অ্যারেতে 0 এর একটি ডিসঅর্ডার মান থাকে অত্যাধুনিক নয়, তবে কাজ করে।
মাইকেল