বাছাইকরণ অ্যালগরিদমের জন্য ট্রানজিটিভিটি দরকার


14

একটি অ-ট্রান্সজিটিভ তুলনা সহ বাছাই করা অ্যালগরিদম ব্যবহার করা কি সম্ভব এবং যদি হ্যাঁ, তবে তুলনামূলককে বাছাইয়ের জন্য প্রয়োজনীয়তা হিসাবে কেন স্থানান্তরকে তালিকাভুক্ত করা হয়?

পটভূমি:

  • একটি বাছাই করা অ্যালগরিদম সাধারণত একটি তুলনামূলক ফাংশন সি (x, y) অনুযায়ী তালিকার উপাদানগুলিকে সাজায়

    সি(এক্স,Y)={-1যদি এক্সY0যদি এক্স~Y+ +1যদি এক্সY

    এই তুলনাকারীর প্রয়োজনীয়তা হ'ল আমি যতদূর তাদের বুঝতে পারি:

    • প্রতিচ্ছবি: এক্স:সি(এক্স,এক্স)=0
    • অ্যান্টিসিমমেট্রিক: এক্স,Y:সি(এক্স,Y)=-সি(Y,এক্স)
    • ট্রানজিটিভ: এক্স,Y,z- র,একটি:সি(এক্স,Y)=একটিসি(Y,z- র)=একটিসি(এক্স,z- র)=একটি
    • সি (x, y) সমস্ত x এবং y এর জন্য সংজ্ঞায়িত করা হয় এবং ফলাফলগুলি কেবল x এবং y এর উপর নির্ভর করে

    (এই প্রয়োজনীয়তাগুলি সর্বদা পৃথক পৃথক বাস্তবায়নকে পৃথকভাবে তালিকাভুক্ত করা হয়, তাই আমি নিশ্চিত না যে আমি সেগুলি ঠিকঠাক পেয়েছি)

এখন আমি এমন একটি "সহনশীল" তুলনামূলক ফাংশন সম্পর্কে ভাবছি, যেটি x, y সংখ্যাটিকে অনুরূপ হিসাবে গ্রহণ করে যদি : |এক্স-Y|1

সি(এক্স,Y)={-1যদি এক্স<Y-10যদি |এক্স-Y|1+ +1যদি এক্স>Y+ +1

উদাহরণস্বরূপ: উভয় [ 1, 2, 3, 4, 5]এবং [1, 4, 3, 2, 5]সহনশীল তুলনামূলক ( অনুসারে আরোহণের ক্রমে সঠিকভাবে সাজানো হয়েছে যদি x তালিকায় y এর আগে আসে) তবে তা সি নয় (4,2) = 1সি(এক্স,Y)0
[1, 4, 2, 3, 5]

এই সহনশীল তুলনামূলকটি প্রতিচ্ছবি এবং অ্যান্টিসিমমেট্রিক তবে ট্রানসিটিভ নয়।

উদাহরণস্বরূপ সি (1,2) = 0, সি (2,3) = 0, তবে সি (1,3) = -1, ট্রানজিটিভিটি লঙ্ঘন করছে

তবুও আমি এই ধরণের তুলনাকারী এবং একটি এলোমেলো তালিকার দেওয়া হলে "সঠিকভাবে সাজানো" আউটপুট উত্পাদন করতে ব্যর্থ হবে এমন কোনও বাছাই করা অ্যালগরিদম সম্পর্কে ভাবতে পারি না।

এই ক্ষেত্রে ট্রানজিটিভিটি কি প্রয়োজনীয় নয়? আর যে transitivity একটি কম কঠোর সংস্করণ হয় কাজ সাজানোর জন্য প্রয়োজনীয়?

সম্পর্কিত প্রশ্নাবলী:


আমি মনে করি পিভটটির জন্য "সর্বদা মধ্যম চয়ন করুন" এর সাথে কুইকোর্টটি [3, 2, 1] এ এই তুলনামূলকটি ব্যবহার করতে ব্যর্থ হবে।
জি। বাচ

2
আমার সন্দেহ হয় যে কিছু বাছাই করা অ্যালগরিদমে ব্যবহৃত কিছু অ-ট্রান্সজিটিভ তুলনামূলক একটি অসীম লুপের কারণ হতে পারে।
ক্যারোলিস জুডেলė

1
একটিআমিএকটিআমি+ +1একটিআমিএকটিআমি

@ জি.বাচ আমার কাছে মনে হয় কুইকোর্টটি আসলে সম্পূর্ণরূপে ব্যর্থ হবে যদি আপনার অ্যারেতে n গুণ 3, এক সময় 2, n বার 1 হয় এবং মাঝের 2টি প্রথম পাইভট হিসাবে ব্যবহৃত হয় তবে এর পরে যা ঘটুক না কেন।
gnasher729

উত্তর:


12

আপনি জিজ্ঞাসা করেছিলেন: আমরা কি একটি বাছাই করা অ্যালগরিদম চালাতে পারি, এটিকে একটি অ-ট্রান্সজিটিভ তুলনামূলক খাওয়াতে পারি?

উত্তর: অবশ্যই। আপনি যে কোনও ইনপুট দিয়ে যে কোনও অ্যালগরিদম চালাতে পারেন।

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

[3,2,1]


1
আমার প্রথম চিন্তা ছিল যে তালিকা [3,2,1] হয় , আমার comparator অনুযায়ী সাজানো ক্রম তাই অবশ্যই সাজানোর আপাতত অপরিবর্তিত রেখে করা উচিত; তবে আমি বাছাই করার ভুল সংজ্ঞাটি ব্যবহার করছিলাম। আমি কেবল প্রতিটি উপাদানকে এর প্রত্যক্ষ প্রতিবেশীদের সাথে তুলনা করি, তবে এটি বাছাই করা তালিকার বিবেচনার জন্য একটি বিধিনিষেধটি খুব দুর্বল হতে পারে
হুগোউরুন

4
@ হুগুরুন ভাল, এটি একটি আকর্ষণীয় বিষয়। আপনি বাছাই বলতে কি বোঝাতে চান ? যদি আপনি কোনও বাছাই করা অ্যালগরিদমকে কোনও অ-ট্রান্সজিটিভ তুলনা করে দেওয়া বন্ধ করে দেয় এবং যখনই অ্যালগরিদম শেষ হয় তখন কিছু শর্ত সত্য হয় এবং সেই শর্তটিই আপনি সাজানোর জন্য যা গ্রহণ করেন ... অবশ্যই অবশ্যই সেই তালিকাটি অ্যালগরিদম আপনার তালিকাটিকে বাছাই করবে প্রতিবার, বাছাইয়ের সংজ্ঞা জন্য । যদি তুলনাকারীটি ট্রানজিটিভ না হয় তবে বাছাই করা সংজ্ঞাটি গ্রহণ করা বুদ্ধিমান হতে পারে যার জন্য সাজানো তালিকার সমস্ত উপাদানগুলির যুগলতর তুলনা প্রয়োজন।
প্যাট্রিক 87

3
@ হুগুরুন, "কেবল প্রতিবেশীদের সাথে তুলনা করা হয়েছে" এর সাথে আপনার সম্ভবত একটি কাস্টম ধরণের প্রয়োজন হবে। অপ্রয়োজনীয় তুলনা এড়াতে স্ট্যান্ডার্ড অ্যালগরিদমগুলি ট্রানজিটিভিটি ধরে নেয়। অথবা আপনি আপনার অ-ট্রান্সজিটিভ অর্ডারটিকে একটি ট্রান্সজিটিভ এম্বেড করতে পারেন। অথবা সম্ভবত আপনি টপোলজিকাল বাছাইয়ের লাইনে কিছু খুঁজছেন ?
ভনব্র্যান্ড

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

4

উপাদানগুলির একটি সেট এবং একটি বাইনারি ক্রম সম্পর্কিত সম্পর্ক দেওয়া, উপাদানগুলি সম্পূর্ণরূপে অর্ডার করার জন্য ট্রানজিটিভিটি প্রয়োজন। প্রকৃতপক্ষে, উপাদানগুলির উপর একটি আংশিক ক্রম সংজ্ঞায়িত করার জন্যও ট্রানজিটিভিটি প্রয়োজন। http://en.m.wikipedia.org/wiki/Total_order

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

একটি<<<একটি


1
আমি আংশিক ক্রমগুলি ব্যবহার করে বাছাইয়ের বিষয়ে জিজ্ঞাসা করার প্রশ্নটি ব্যাখ্যা করেছি (যেমন একটি তুলনা যা বলে যে জিনিসগুলি অসম হয় তা ট্রানজিটিভ, তবে যা আইটেমগুলি অনিবার্য নয় সেগুলি নয়)। আংশিক অর্ডারের ভিত্তিতে বাছাই করা কখনও কখনও দরকারী, তবে সবচেয়ে খারাপ ক্ষেত্রে N (N-1) / 2 তুলনা প্রয়োজন। যে কোনও বাছাই করা অ্যালগরিদম যা নিকৃষ্টতম ক্ষেত্রে N (N-1) / 2 এর তুলনায় কম করে তা আমার উত্তরে বর্ণিত কারণে আংশিক অর্ডারযুক্ত আইটেমগুলি সঠিকভাবে র‌্যাঙ্ক করতে সক্ষম হবে না।
সুপারক্যাট

2

দেখে মনে হচ্ছে আপনি যা চান তা হ'ল আইটেমগুলি এমনভাবে সাজানো যাতে সমস্ত বোধগম্য র‌্যাঙ্কিং সঠিক হয় তবে যে আইটেমগুলি নিকটে থাকে এটি "অবিচ্ছেদ্য" হিসাবে বিবেচিত হতে পারে। সাজানো অ্যালগরিদমগুলি ডিজাইন করা সম্ভব যা এই ধরনের তুলনাগুলির সাথে কাজ করবে তবে কতগুলি তুলনা যদি বিষয়গুলি পারস্পরিক তুলনামূলকভাবে রিপোর্ট করতে পারে তার সীমা না থাকে, সেগুলি এন (এন -1) / 2 তুলনা করার প্রয়োজন এড়ানোর কোনও উপায় নেই। কেন তা বুঝতে, কিছু নম্বর এন এবং যে কোনও বাছাই করা অ্যালগরিদম নির্বাচন করুন যা এন (এন -1) / 2 তুলনার চেয়ে কম করে। তারপরে একটি তালিকা এল [0..N-1] তৈরি করুন, প্রতিটি উপাদান এল [I] I / N এ সেট করে এবং আপনার তুলনামূলক ব্যবহার করে এটি "সাজান" (ন্যূনতম মান 0 এবং সর্বোচ্চ (এন -1) / এন হবে , সুতরাং পার্থক্যটি হবে (এন -১) / এন, যা 1 এর চেয়ে কম)।

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


0

N, n-1, n-2, ..., 2, 1 মান সহ এন উপাদানগুলির একটি অ্যারে পূরণ করুন Then আপনি দেখতে পাবেন যে প্রতিটি উপাদান উপাদানটির ঠিক আগে আগে সমান হিসাবে বিবেচিত হয় এবং তাই সরানো হয়নি। "সাজানোর" ফলাফল একই অ্যারে।

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