আপনি কেবল তালিকার বিপরীতে সংখ্যা গণনা করতে পারেন।
বিপর্যয়
টাইপের উপাদানগুলির ক্রমের একটি বিপর্যয় T
হ'ল ক্রম উপাদানগুলির একটি জুড়ি যা সেগুলির সেটগুলির কিছু ক্রম অনুযায়ী ক্রম <
থেকে বেরিয়ে আসে T
।
উইকিপিডিয়া থেকে :
আনুষ্ঠানিকভাবে, সংখ্যার A(1), A(2), ..., A(n)
ক্রম হতে দিন n
।
যদি i < j
এবং A(i) > A(j)
, তবে এই জুটিটিকে(i,j)
একটি বিপরীতমুখী বলা হয় A
।
বিপর্যয় সংখ্যা একটি ক্রম তার sortedness এক সাধারণ পরিমাপ।
আনুষ্ঠানিকভাবে, বিপর্যয় সংখ্যাটি বিবর্তনের সংখ্যা হিসাবে সংজ্ঞায়িত করা হয়,
এই সংজ্ঞাগুলি আরও পরিষ্কার করার জন্য, উদাহরণ ক্রমটি বিবেচনা করুন 9, 5, 7, 6
। এই ক্রম হয়েছে inversions (0,1), (0,2), (0,3), (2,3)
এবং বিপর্যয় সংখ্যা 4
।
যদি আপনি 0
এবং এর মধ্যে একটি মান চান তবে আপনি 1
উল্টোটি নম্বরটি ভাগ করে নিতে পারেন N choose 2
।
তালিকাটি কীভাবে সাজানো হয়েছে তার জন্য এই স্কোরটি গণনা করতে আসলে একটি অ্যালগরিদম তৈরি করতে আপনার কাছে দুটি পন্থা রয়েছে:
পন্থা 1 (নির্ধারক)
এটি চলমান হিসাবে কতটি বিপর্যয় সংশোধন করছে তা ট্র্যাক রাখতে আপনার প্রিয় বাছাই করা অ্যালগরিদমটি সংশোধন করুন। যদিও এটি অযৌক্তিক এবং আপনার পছন্দ অনুসারে বাছাই করা অ্যালগরিদমের উপর নির্ভর করে বিভিন্ন রূপায়ণ রয়েছে, আপনি একটি আলগোরিদমটি শেষ করবেন যা আপনি শুরু করেছেন বাছাই করা অ্যালগরিদমের চেয়ে বেশি ব্যয়বহুল (জটিলতার নিরিখে) নয়।
আপনি যদি এই রুটটি নিয়ে যান তবে সচেতন হন যে এটি "অদলবদল" গণনার মতো সহজ নয়। Mergesort, উদাহরণস্বরূপ, সবচেয়ে খারাপ পরিস্থিতি O(N log N)
, তবুও যদি এটি সাজানো ক্রম অনুসারে সাজানো তালিকায় চালানো হয় তবে এটি সমস্ত N choose 2
বিপর্যয় সংশোধন করবে । এটা O(N^2)
সংশোধন inversions O(N log N)
অপারেশন। সুতরাং কিছু ক্রিয়াকলাপ অবশ্যই একযোগে একাধিক বিপরীতকে সংশোধন করবে। আপনার প্রয়োগের ক্ষেত্রে আপনাকে যত্নবান হতে হবে। দ্রষ্টব্য: আপনি O(N log N)
জটিলতার সাথে এটি করতে পারেন , এটি কেবল কৌশল।
সম্পর্কিত: একটি অনুচ্ছেদে "বিপর্যয়" সংখ্যা গণনা করা
পন্থা 2 (স্টোকাস্টিক)
- এলোমেলোভাবে নমুনা জোড়া
(i,j)
, যেখানেi != j
- প্রতিটি জোড়ার জন্য, নির্ধারণ করুন
list[min(i,j)] < list[max(i,j)]
(0 বা 1)
- এই তুলনাগুলির গড় গণনা করুন এবং তারপরে স্বাভাবিক করুন
N choose 2
আপনার ব্যক্তিগততার প্রয়োজন না থাকলে আমি ব্যক্তিগতভাবে স্টোকাস্টিক পদ্ধতির সাথে যাব - কেবলমাত্র যদি এটি প্রয়োগ করা এত সহজ।
আপনি যা চান তা যদি (সাজানো অবতরণ) থেকে (সাজানো বাছাই z'
) এর মধ্যে একটি মান ( ) হয় তবে আপনি কেবল এই সূত্রটি ব্যবহার করে এই সীমাটিতে (সাজানো বাছাই করা ) এবং (সাজানো অবতরণ) এর মধ্যে থাকা উপরের মানটিকে মানচিত্র করতে পারেন which :-1
1
z
0
1
z' = -2 * z + 1