সংখ্যার জোড়া বাছাই করতে অ্যালগরিদম


14

আমি ইতিমধ্যে স্ট্যাকওভারফ্লোতে এই প্রশ্নটি জিজ্ঞাসা করেছি , তবে এটি সম্ভবত এই সাইটের জন্য আরও উপযুক্ত।

সমস্যা হল:

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

উদাহরণ:

in pairs:
1 5
7 1
3 8
5 6

out pairs:
1 7     <-- swapped
1 5     
6 5     <-- swapped
8 3     <-- swapped

Pairs জোড়া বদলানো ছাড়া সমাধানটি তৈরি করা অসম্ভব। সুতরাং আমরা জোড়া (7, 1), (3, 8) এবং (5, 6) অদলবদল করি এবং ফলাফলটি তৈরি করি। অথবা

in pairs:
1 5
6 9

out:
not possible

ধন্যবাদ

সম্পাদনা:

টম সিরগেদাস এসও-তে সেরা সমাধানের প্রস্তাব দিয়েছিলেন । এটি বাস্তবায়ন করা সত্যিই সহজ এবং ও (লগ (এন) * এন) এ কাজ করে। উত্তর এবং আগ্রহের জন্য আপনাকে ধন্যবাদ। আমি সত্যিই mjqxxxx বিশ্লেষণ উপভোগ করেছি।


6
আকর্ষণীয় সমস্যা। অদলবদল করা ছাড়া এটি সোজা, তবে অদলবদলের সাথে এটি পরিষ্কার নয় যে একটি অনন্য সমাধান রয়েছে।
ডেভ ক্লার্ক

2
অনন্য সমাধানটি সর্বদা নিশ্চিতভাবে উপস্থিত থাকে না। অর্থাত (1, 10), (5, 6)। (1, 10), (5, 6) এবং (1, 10), (6, 5) উভয়ই সঠিক।
ক্লার্ক

4
পরবর্তী সময় একটি লিঙ্ক অন্তর্ভুক্ত করুন। stackoverflow.com/questions/5323941/…
Tsuyoshi Ito

2
আমার এক বন্ধু এটি পেপার-টেস্ট-সাক্ষাত্কারের প্রশ্ন হিসাবে পেয়েছে। সুতরাং আমি অনুমান করি এটি কৌতূহলের
বাইরেই রয়েছে

3
(1) ক্লার্ক, উত্তরের জন্য আপনাকে ধন্যবাদ। (২) আমি মনে করি না যে এই প্রশ্নটি একটি গবেষণা-স্তরীয় প্রশ্ন, তবে আমি অনুমান করি যে এটি সুযোগটি পরিবর্তিত হওয়া উচিত। আমি মেটা নিয়ে আলোচনা শুরু করলাম ।
Tsuyoshi Ito

উত্তর:


8

p1=(a1,b1)p2=(a2,b2)(a1a2b1b2)(a2a1b2b1)p1p2p1p2p2p1p1p2p1p2p1p2

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

অ্যালগরিদমের প্রতিটি পদক্ষেপ এবং সেইজন্য পুরো অ্যালগরিদম সময়ে সঞ্চালিত হতে পারে ।O(N2)


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


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

3

এক্স (ক, খ) জোড় (ক, খ) অদলবদল করা উচিত কিনা তা নির্দেশ করে বাইনারি ভেরিয়েবলটি চিহ্নিত করুন। কোনও স্বতন্ত্র জোড়া (ক, খ) এবং (সি, ডি) বিবেচনা করুন এবং এক্স (ক, খ) এবং এক্স (সি, ডি) ভেরিয়েবলগুলিতে একটি বাইনারি সীমাবদ্ধতা লিখুন যা সন্তুষ্ট হয় এবং কেবলমাত্র দুটি জোড় থাকলে যথাক্রমে X (a, b) এবং X (c, d) দ্বারা নির্দেশিত অদলবদল সম্পাদন করার পরে সঠিক ক্রম। এ জাতীয় সমস্ত বাইনারি সীমাবদ্ধতার সংমিশ্রণ হ'ল এন ভেরিয়েবল এবং ও (এন ^ 2) ধারাগুলিতে 2-স্যাট সূত্র যা মূল সমস্যার সমাধান থাকলে কেবলমাত্র এবং যদি সন্তুষ্ট হয়। এটি সময় ও (এন ^ 2) এ চেক করা যায়।


মূল সমাধান হিসাবে, কেবলমাত্র লক্ষ্য করুন যে সমস্ত সীমাবদ্ধতাগুলি X (a, b) = X (c, d) বা X (a, b)! = X (c, d) (বা অন্য X (a, খ) = ধ্রুবক), সুতরাং একটি সাধারণ "দ্বিপাক্ষিকতার জন্য সংযুক্তি এবং পরীক্ষা করুন" অ্যালগরিদম কাজ করে:

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


1
X(a,b)=X(c,d)

তাই? এখানে সমতা সম্পর্ক হ'ল যদি (ক, খ) আর (সি, ডি) iff a <সি এবং বি> ডি বা বিপরীতমুখী সংস্থার ট্রানজিটিভ বন্ধ হয়। সম্ভবত আমি সম্পূর্ণরূপে সুস্পষ্ট ছিল না, তবে এটি আমার উত্তর থেকে সুস্পষ্ট হওয়া উচিত।
ডেভিড

1
a<cb>dX(a,b)X(c,d)(1,10)(2,5)(3,7)

1
XYX¬Y

1
তুমি কি মজা করছ? প্রথমত, মাত্র দুটি ভেরিয়েবলের মধ্যে যে কোনও সম্পর্ক 2-স্যাট সূত্র হিসাবে প্রকাশ করা যেতে পারে। উদাহরণস্বরূপ, এক্স = ওয়াই হ'ল (এক্স বোঝায় Y) এবং (এক্স দ্বারা Y বোঝায় না)। অন্যদিকে, যদি সমস্ত বাধা প্রকৃতপক্ষে X = Y বা X = ফর্মের হয় তবে 2SAT অ্যালগরিদম মোটেও চালানোর দরকার নেই: সরল "মার্জ এবং দ্বিদলীয়তার জন্য পরীক্ষা করুন" অ্যালগরিদম আমি পূর্ববর্তী কাজগুলি বর্ণনা করেছি।
ডেভিড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.