অ্যালগরিদমগুলি বাছাই করা যা কোনও এলোমেলো তুলনাকারী গ্রহণ করে


22

জেনেরিক বাছাই করা অ্যালগরিদমগুলি সাধারণত বাছাই করতে ডেটার একটি সেট এবং একটি তুলনামূলক ফাংশন নেয় যা দুটি পৃথক উপাদানের তুলনা করতে পারে। যদি তুলনাকারী একটি অর্ডার রিলেশন ¹, তবে অ্যালগরিদমের আউটপুটটি বাছাই করা তালিকা / অ্যারে।

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

আমার মোটামুটি মানসিক গণনা থেকে এটি প্রদর্শিত হবে যে মার্জ সাজানো এটির সাথে ঠিক থাকবে এবং একই রানটাইম ব্যয় বজায় রাখবে এবং একটি ন্যায্য র্যান্ডম ক্রম উত্পাদন করবে। আমি মনে করি যে দ্রুত সাজানোর মতো কিছু হ্রাস পাবে, সম্ভবত শেষ হবে না এবং ন্যায্য হবে না।

এলোমোরিদমগুলি বাছাইয়ের (আর একত্রীকরণের তুলনায়) কোন অন্যান্য বাছাই করা অ্যালগরিদমগুলি এলোমেলো তুলনাকারীর সাথে বর্ণিত হিসাবে কাজ করবে?


  1. রেফারেন্সের জন্য, কোনও তুলনাকারী একটি অর্ডার রিলেশন হয় যদি এটি একটি যথাযথ ফাংশন (ডিটারমিনিস্টিক) হয় এবং অর্ডার সম্পর্কের অক্ষগুলি সন্তুষ্ট করে:

    • এটি নির্বিচারক: compare(a,b)একটি নির্দিষ্ট aএবং bসর্বদা একই ফলাফল প্রদান করে।
    • এটি ট্রানজিটিভ: compare(a,b) and compare(b,c) implies compare( a,c )
    • এটি অ্যান্টিসিমমেট্রিক compare(a,b) and compare(b,a) implies a == b

(ধরে নিন যে সমস্ত ইনপুট উপাদান পৃথক, তাই প্রতিচ্ছবি কোনও সমস্যা নয়।)

একটি এলোমেলো তুলনাকারী এই সমস্ত বিধি লঙ্ঘন করে। তবে এমন তুলনাকারী রয়েছে যেগুলি সম্পর্কের আদেশ দেয় না তবে এলোমেলো নয় (উদাহরণস্বরূপ তারা সম্ভবত কেবলমাত্র একটি নিয়ম লঙ্ঘন করতে পারে এবং কেবলমাত্র সেটের নির্দিষ্ট উপাদানগুলির জন্য)।


(1) তুলনা ফাংশনটি স্থিতিশীল হওয়ার অর্থ কী? (২) "অ-স্থিতিশীল" এবং "এলোমেলো" সমার্থক?
সোসোশি ইতো

"তাদের সাধারণভাবে উদ্ধৃত সময় জটিলতায় চলুন (সবচেয়ে খারাপ অবস্থার অবনতির বিপরীতে" - সাধারণত উদ্ধৃত সময় জটিলতা সবচেয়ে খারাপ ঘটনা! "অর্ডারিং একটি নিখরচায় এলোমেলো ক্রম হবে" - বাই "ফেয়ার" মানে আপনি ইউনিফর্ম? আপনি কি ধরে নিয়েছেন যে তুলনামূলকটিও অভিন্ন,?
রাফেল

সম্ভবত আনুষ্ঠানিক তত্ত্বে নয়, তবে অনুশীলনে (প্রোগ্রামিং ল্যাঙ্গুয়েজ) মোড়িত সময়ে অনেক কিছুই উদ্ধৃত হয়। উদাহরণস্বরূপ, কুইকোর্টটি প্রায়শই হিসাবে প্রদর্শিত হয় তবে এটি আসলে ( এন 2 ) হয়O(logn)O(n2)
এডিএ-কিএ মর্ট-ওরা-y

4
@ এডিএ-কিমোর্ট-ওরা-ওয়াই: (1) আপনার অর্থ , ( লগ এন ) নয় । (২) " অ্যামোরিটাইজড টাইম " এর অর্থ এটি নয়; তুমি বলতে চাচ্ছ "O(nlogn)O(logn) প্রত্যাশিত সময় " বা আনুষ্ঠানিকভাবে কম, "সাধারণ সময়"।
জেফি

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

উত্তর:


13

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

int Compare(object a, object b) { return Random.Next(-1,1); }

... যেখানে র্যান্ডম.নেক্সট () এমন একটি পদ্ধতি যা একটি নির্দিষ্ট অন্তর্ভুক্ত নিম্ন এবং উপরের সীমানার মধ্যে এলোমেলোভাবে উত্পন্ন পূর্ণসংখ্যা উত্পাদন করে।

উত্তরটি হ'ল বেশিরভাগ মৌলিক বাছাই করা অ্যালগরিদমগুলি তাদের গড় কেস অনুসারে সম্পাদন করবে কারণ তারা নিম্নলিখিত দুটি শর্তের মধ্যে কমপক্ষে একটি মেনে চলে:

  1. দুটি অনন্য উপাদানের মধ্যে একটি তুলনা কখনও বাছাই করে দুবার করা হয় না এবং / অথবা
  2. সাজানোর প্রতিটি পুনরাবৃত্তিতে, কমপক্ষে একটি উপাদানের সঠিক অবস্থান নির্ধারিত হয় এবং সুতরাং সেই উপাদানটিকে আর কখনও তুলনা করা হয় না।

উদাহরণস্বরূপ, সিলেকশনসোর্টটি অরসোর্টড উপাদানগুলির উপ-তালিকার মাধ্যমে পুনরাবৃত্তি করে "সর্বনিম্ন" এবং / অথবা "সেরা" উপাদানটি (এখন পর্যন্ত প্রত্যেকটির সাথে সর্বকালের সাথে তুলনা করে) এটি সঠিক অবস্থানে রাখে এবং পুনরাবৃত্তি করে। ফলস্বরূপ, এমনকি একটি অ-নিরবোধক তুলনাকারীর সাথেও, প্রতিটি পুনরাবৃত্তির শেষে অ্যালগরিদম একটি মান পেয়েছে যা এটি সবচেয়ে কম বা সবচেয়ে বড় বলে মনে করে, এটি নির্ধারণ করার চেষ্টা করছে এমন অবস্থার সাথে এটিকে অদলবদল করে এবং কখনও বিবেচনা করে না যে উপাদানটি আবার, এটি শর্ত ২ মেনে চলেন। তবে, এ এবং বি এই প্রক্রিয়া চলাকালীন একাধিকবার তুলনা করা যেতে পারে (সবচেয়ে চরম উদাহরণ হিসাবে, বিপরীত ক্রমে সাজানো অ্যারেতে সিলেকশনসোর্টের কয়েকটি পাস বিবেচনা করুন) সুতরাং এটি শর্ত 1 লঙ্ঘন করে ।

MergeSort শর্ত মেনে চলেন 2 তবে 2 নয়; সাব-অ্যারেগুলি যেমন একত্রীকরণ করা হয়, একই উপ-অ্যারেতে (বাম বা ডানদিকে) উপাদানগুলি একে অপরের সাথে তুলনা করা হয় না কারণ এটি ইতিমধ্যে নির্ধারিত হয়ে গেছে যে অ্যারের যে পাশের উপাদানগুলি একে অপরের সাথে সামঞ্জস্য করা হয়েছে; কোনটি কম এবং একীভূত তালিকায় পরবর্তী হওয়া উচিত তা নির্ধারণের জন্য অ্যালগোরিদম কেবল প্রতিটি সুব্ররের ন্যূনতম নিমজ্জনকারী উপাদানটিকে অন্যের সাথে তুলনা করে। এর অর্থ হ'ল যে কোনও দুটি অনন্য বস্তু এ এবং বিকে একে অপরের সাথে সর্বাধিক এক সময়ের সাথে তুলনা করা হবে তবে পূর্ণ সংকলনে কোনও প্রদত্ত উপাদানটির "চূড়ান্ত" সূচকটি অ্যালগরিদম সম্পূর্ণ না হওয়া পর্যন্ত জানা যায় না।

যদিও এর সামগ্রিক কৌশল এবং জটিলতা সিলেকশনসোর্টের মতো দেখায় তবুও ইনসারেশনশর্ট কেবল 1 শর্ত মেনে চলে। প্রতিটি অনিবদ্ধ উপাদান সাজানো উপাদানগুলির সাথে তুলনা করা হয়, সর্বাধিক প্রথম, যতক্ষণ না দেখা পাওয়া যায় যে তদন্তের অধীনে থাকা উপাদানটির চেয়ে কম। উপাদানটি সেই বিন্দুতে sertedোকানো হয় এবং তারপরে পরবর্তী উপাদানটি বিবেচনা করা হয়। ফলাফলটি হ'ল যে কোনও এ এবং বি এর আপেক্ষিক ক্রম একটি তুলনা দ্বারা নির্ধারিত হয়, এবং এ এবং বি এর মধ্যে আরও তুলনা কখনও সম্পাদন করা হয় না, তবে সমস্ত উপাদান বিবেচনা না করা অবধি কোনও উপাদানের চূড়ান্ত অবস্থানটি জানা যায় না।

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

একমাত্র তুলনামূলক বাছাই করতে পারি যা আমি উভয় শর্ত মেনে চলব না তা হ'ল একটি অপ্টিমাইটিজড বুবলসোর্ট। যদি ক্রমটি মেনে না নেয় যে এক্স পাস করার পরে এক্স সর্বোচ্চ উপাদানগুলি তাদের যথাযথ স্থানে রয়েছে এবং / বা তালিকাটি বাছাই করা হয়েছে তা যাচাই করতে "ডাবল-চেক" পাস ব্যবহার করে, যখন সাজানোটি কেবল "সম্পন্ন" হিসাবে বিবেচিত হবে র্যান্ডম comparator ফিরে এসেছে -1 অথবা 0 একটি পাস সময় তালিকায় প্রতি দুই সন্নিহিত উপাদান এবং এইভাবে কোন অদলবদল সঞ্চালিত হয় (একটি ঘটনা যা, সত্যিই র্যান্ডম, সম্ভাব্যতা সঙ্গে ঘটবে জন্য ; অপেক্ষাকৃত জন্য 25 টি উপাদানের ছোট তালিকা, এটি 2000 সালের সুযোগের মধ্যে একটি, যখন 100 টি উপাদানের সম্ভাবনা 3.7 * 10 -18(2/3)N1)। তুলনাকারীর ফলাফলের সর্বাধিক নিখুঁত মান বাড়ার সাথে সাথে নেতিবাচক বা শূন্য ফেরতের যে কোনও একটি তুলনার সম্ভাবনা .5 এর দিকে হ্রাস পায়, ফলে অ্যালগরিদমটি শেষ হওয়ার সুযোগ তৈরি হয় যা খুব কম সম্ভাব্য হয় (99 মুদ্রার সম্ভাবনা সমস্ত অবতরণ প্রধানকে পিছলে যায়) যা মূলত এটিতে নীচে নেমে আসে, এটি 1.2 * 10 30 এ 1 )

একটি দীর্ঘ সময়ের লেটার সম্পাদনা করুন: কয়েকটি "প্রকারের" রচনাগুলি এলোমেলো তুলনাকারীকে অন্তর্ভুক্ত না করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে; সম্ভবত সর্বাধিক বিখ্যাত হ'ল বোগোসোর্ট। "একটি তালিকা দেওয়া হয়েছে, যদি তালিকাটি যথাযথ না হয় তবে তালিকাটি বদল করুন এবং আবার চেক করুন"। তাত্ত্বিকভাবে এটি উপরের "অ-অপ্টিমাইজড বুদ্বুদর্ট" এর মতই শেষ পর্যন্ত মানগুলির সঠিক অনুক্রমের উপর আঘাত হানবে, তবে গড় ক্ষেত্রেটি ফ্যাকটোরিয়াল-টাইম (এন! / 2), এবং জন্মদিনের সমস্যার কারণে (পর্যাপ্ত এলোমেলোভাবে অনুমতি পরে আপনি অনন্যগুলির তুলনায় সদৃশ ক্রিয়াকলাপগুলির মুখোমুখি হওয়ার সম্ভাবনা বেশি হয়ে যায়) অ্যালগরিদমটি আনুষ্ঠানিকভাবে অ্যালগোরিদমকে কখনই সম্পূর্ণ না করে এমন সময়সীমা অতিক্রম করে না a


শর্ত 2 কি দ্রুত বাছাই করতে পারে? অথবা এটি প্রতিটি পুনরুক্তি শেষের চেয়ে ছোট হওয়া সম্পর্কে তৃতীয় শর্তের বেশি হবে।
এডিএ-কিএ মার্ট-ওরা-y

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

দুর্দান্ত উত্তর, তবে আমি বুবলসোর্ট সম্পর্কে আপনার সাথে একমত নই। সামঞ্জস্যপূর্ণ তুলনামূলক ব্যবহার করার সময়, i-th পুনরাবৃত্তিতে বাবলসোর্ট জানে যে আই -1 শেষ উপাদানগুলি তাদের চূড়ান্ত স্থানে রয়েছে এবং বুবলসোর্টের যেকোন যুক্তিসঙ্গত প্রয়োগ প্রতিটি পুনরাবৃত্তির কম উপাদানগুলির মধ্য দিয়ে যাবে, সুতরাং এটি n পুনরাবৃত্তির পরেও থামতে হবে ।
বরিস ট্রেভাস

আরও কিছু ভাবার পরে আমি আপনার সাথে একমত হতে চাই; এক্স পাস করার পরে, সর্বাধিক এক্স মানগুলি তাদের যথাযথ স্থানে রয়েছে, সুতরাং আপনি প্রতিটি পাসের সমস্যার স্থান হ্রাস করতে পারেন এবং সুতরাং একটি দক্ষ অ্যালগরিদম শর্ত 2 মেনে চলবে I'll আমি সম্পাদনা করব
কীথস

কুইকোর্টের বাস্তবায়ন সম্পর্কে আপনাকে সতর্ক থাকতে হবে। আমরা একটি পাইভট বা পাইভটের চেয়েও বড় উপাদানটির মুখোমুখি হয়ে উঠলে পাইভটের চেয়ে কম নয় এমন উপাদানটির জন্য অনুসন্ধান শেষ হবে বলে ধারণা করা যেতে পারে; অগত্যা ক্ষেত্রে হবে না।
gnasher729

10

O(n2)

n


সম্পাদনা: সমস্যাটি প্রথম হিসাবে ভেবেছিলাম আরও আকর্ষণীয়, তাই এখানে আরও একটি মন্তব্য দেওয়া হয়েছে:

comparecompare(x,y)=tru1/2false1/2

insert x [] = [x]
insert x y:ys = if x < y then x:y:ys
                else y:insert x ys

sort_aux l e = match l with
                 [] -> e
                 x:xs -> sort_aux xs (insert x ys)

sort l = sort_aux l []

k=1nf(k)nlf(k)insertk:

compare

i=1ki2ii=1i2i=2

O(2n)O(n2)

এই ইউনিফর্ম তুলনা ফাংশনটি দেওয়া বিভিন্ন অন্যান্য অ্যালগরিদমের জন্য গড় চলমান সময়গুলি কাজ করা মজাদার হবে।


যদি একই উপাদানটিকে একাধিকবার পিভট হিসাবে বেছে নেওয়া হয় (তালিকায় এটি একাধিকবার হতে পারে) তুলনায় কুইকসোর্ট তুলনা পুনরাবৃত্তি করতে পারে।
রাফেল

2
@ রাফেল: আমার শব্দের পছন্দটি খারাপ ছিল: আমার অর্থ ছিল উপাদানগুলির উপস্থিতির মধ্যে পুনরাবৃত্ত তুলনা , যা কুইকোর্টে একাধিকবার ঘটে না।
কোডি

1
@ গিলস: আমি ভুল হতে পারি, তবে আমি বিশ্বাস করি না যে তুলনার স্থানান্তরটি সর্বাধিক বাছাই করা অ্যালগরিদমের রানটাইমের জন্য গুরুত্বপূর্ণ ; নির্ভুলতা অবশ্যই, কিন্তু এটি প্রশ্নের উদ্দেশ্য ছিল না।
কোডি

@ গিলস: ওপি আসলে অ্যালগরিদমগুলি সম্পর্কে জিজ্ঞাসা করছে না যা আসলে বাছাই করে। তিনি যখন জিজ্ঞাসা করছেন যে সমস্ত তুলনা কয়েন ফ্লিপের সাথে প্রতিস্থাপন করা হয় তখন স্ট্যান্ডার্ড বাছাই করা অ্যালগরিদমগুলির কী হয়। ফলস্বরূপ অ্যালগরিদমগুলি বাছাই করে না (ক্ষুদ্র সম্ভাবনার সম্ভাব্যতা ব্যতীত) তবে তারা এখনও সুসংজ্ঞায়িত অ্যালগরিদম're
জেফি

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

2

মোটামুটি এলোমেলো তুলনাকারীর সাথে মার্জর্টটি উপযুক্ত নয়। আমার কাছে প্রমাণ নেই, তবে আমার কাছে খুব শক্তিশালী অভিজ্ঞতামূলক প্রমাণ রয়েছে। (মেলা মানে অভিন্নভাবে বিতরণ করা হয়েছে))

module Main where

import Control.Monad
import Data.Map (Map)
import qualified Data.Map as Map
import System.Random (randomIO)

--------------------------------------------------------------------------------

main :: IO ()
main = do
  let xs = [0..9]
  xss <- replicateM 100000 (msortRand xs)
  print $ countFrequencies xss

msortRand :: [a] -> IO [a]
msortRand = msort (\_ _ -> randomIO)

countFrequencies :: (Ord a) => [[a]] -> [Map a Int]
countFrequencies [] = []
countFrequencies xss = foldr (\k m -> Map.insertWith (+) k 1 m) Map.empty ys : countFrequencies wss
  where
    ys = map head xss
    zss = map tail xss
    wss = if head zss == []
      then []
      else zss

--------------------------------------------------------------------------------

msort :: (Monad m) => (a -> a -> m Bool) -> [a] -> m [a]
msort (<) [] = return []
msort (<) [x] = return [x]
msort (<) xs = do
  ys' <- msort (<) ys
  zs' <- msort (<) zs
  merge (<) ys' zs'
  where
    (ys, zs) = split xs

merge :: (Monad m) => (a -> a -> m Bool) -> [a] -> [a] -> m [a]
merge (<) [] ys = return ys
merge (<) xs [] = return xs
merge (<) (x:xs) (y:ys) = do
  bool <- x < y
  if bool
    then liftM (x:) $ merge (<) xs (y:ys)
        else liftM (y:) $ merge (<) (x:xs) ys

split :: [a] -> ([a], [a])
split [] = ([], [])
split [x] = ([x], [])
split (x:y:zs) = (x:xs, y:ys)
  where
    (xs, ys) = split zs

হাস্কেল নাকি ক্যামেল এখন ফ্যাশনে?
ইয়েফফাহ

আমার কোন ধারণা নাই. তবে হাস্কেল আমার পছন্দের ভাষা, তাই আমি এটিতে এটি প্রোগ্রাম করেছিলাম; প্যাটার্ন ম্যাচিং এটি সহজ করে তুলেছে।
থমাস এডিং

0

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

বিমূর্ত থেকে উদ্ধৃতি:

...

এই কাগজটিতে আমরা অ-নির্ধারণবাদ এবং আলাদা আলোতে বাছাইয়ের সংমিশ্রণটি দেখি: একটি বাছাইকরণ ফাংশন প্রদত্ত, আমরা ইনপুট তালিকার ক্রমশক্তি গণনা করে এমন একটি ফাংশন অর্জনের জন্য এটি একটি অ-ডিস্ট্রিমেন্টিক প্রিডিকেটে প্রয়োগ করি। আমরা বাছাই করা অ্যালগরিদমগুলির প্রয়োজনীয় বৈশিষ্ট্যের তলানিতে পৌঁছেছি এবং খেলার পূর্বাভাস দেওয়ার পাশাপাশি মডেলিং অ-নির্ধারকতার বিভিন্নতা নিয়ে আলোচনা করব।

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

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