যে চক্রগুলি একসাথে, একটি নির্দেশিত গ্রাফের সাথে ভাগ না করা প্রান্তের সর্বাধিক সংখ্যক জড়িত তা কীভাবে আবিষ্কার করবেন?


26

আমি কম্পিউটার বিজ্ঞানের তাত্ত্বিক নই, তবে মনে করি এই আসল বিশ্বের সমস্যাটি এখানে।

সমস্যাটি

আমার সংস্থার দেশজুড়ে বেশ কয়েকটি ইউনিট রয়েছে।

আমরা কর্মীদের অন্য ইউনিটে কাজ করার সম্ভাবনা দিয়েছিলাম। তবে একটি শর্ত রয়েছে: ইউনিটে মোট শ্রমিকের সংখ্যা পরিবর্তন করতে পারে না।

এর অর্থ: কেউ যদি তার জায়গা চায় তবে আমরা কোনও কর্মচারীকে তার ইউনিট ছাড়তে দেব।

উদাহরণ (কল্পিত) অনুরোধ ডেটা:

Name            Origin    Destination
Maria              1  ->  2
Marcos             2  ->  3
Jones              3  ->  4
Terry              4  ->  5
Joe                5  ->  6
Rodrigo            6  ->  1
Barbara            6  ->  1
Marylin            1  ->  4
Brown              4  ->  6
Benjamin           1  ->  3
Lucas              4  ->  1

উপরোক্ত, চক্রান্ত করা: উপরের ডেটা ভিজ্যুয়ালাইজেশন

লাল, নীল বা কালো বিকল্পগুলির মধ্যে আমাদের কীভাবে চয়ন করতে হবে তা দেখুন?

আসল সমস্যাটি আরও জটিল, কারণ আমাদের কাছে 27 টি ইউনিট এবং 751 টি অনুরোধ রয়েছে। অনুগ্রহ করে দেখুন

লক্ষ

সমস্ত অনুরোধ সংগ্রহ করে, তাদের বেশিরভাগকে কীভাবে সন্তুষ্ট করা যায়?

তত্ত্ব (?) অ্যাপ্লিকেশন

G(V,E)VE

EV

প্রশ্নটি

যদি এই সমস্যা হিসাবে প্রকাশ করা হয়

"চক্রগুলি কীভাবে সন্ধান করতে হবে যা একসাথে, নির্দেশিত গ্রাফের সাথে ভাগ না করা প্রান্তের সর্বাধিক সংখ্যক জড়িত"?

আমরা কি বেশিরভাগ অনুরোধকারীকে সন্তুষ্ট করব?

এটি সত্য হচ্ছে, চক্রের সর্বোত্তম সেটটি খুঁজে পেতে একটি অ্যালগরিদম আছে?

এই গ্রিডি পদ্ধতির সমস্যার সমাধান হবে?

  1. G
  2. G
  3. G

আপনি কি আমাকে সাহায্য করতে পারেন?

আপনি কি আসল সমস্যাটি বর্ণনা করার আরও একটি উপায় জানেন (বেশিরভাগ অনুরোধকারীকে খুশি করছেন)?

সম্পাদনা করুন : সমস্যাটি আরও ভালভাবে বর্ণনা করার জন্য বিভাগকে ইউনিটে পরিবর্তন করা হয়েছে।


3
আপনি কি নিশ্চিত যে আপনি একই প্রান্তটি একবারের বেশি ব্যবহার করা এড়াতে চান ? অ্যাপ্লিকেশনটির আপনার বিবরণ থেকে, আমার কাছে মনে হচ্ছে যে আপনি একই ভার্টেক্সটি একাধিকবার ব্যবহার করা এড়ানো উচিত, এটি আরও শক্তিশালী শর্ত।
সোসোশি ইটো

3
@ শুয়োশিআইটো: বর্ণনাটি থেকে আমি যেমন বুঝতে পেরেছি, শর্তটি হ'ল প্রতিটি শীর্ষে অনিচ্ছুককে ছাড়পত্রের সমান হতে হবে। সুতরাং, ভার্টেক্স-বিচ্ছিন্নতার প্রয়োজন নেই।
ইয়োশিও ওকামোতো

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

3
এই পোস্টটিতে আপনার সমস্যার জেনারাইজেশন নিয়ে আলোচনা করা হয়েছে Okasaki.blogspot.co.uk/2008/03/ কি-heck-is-math-trade.html (প্রতিটি ব্যক্তিকে ব্যবসায়ের জন্য একটি আইটেম আছে, যেমন তাদের চাকরির স্থান হিসাবে ভাবেন)।
রাদু গ্রেগোর

4
দুর্দান্ত প্রশ্ন, আমরা যা করি তা বাস্তব জীবনে সত্যই ব্যবহার করা যায় বলে আমাদের মনে করে তোলে।
গোপি

উত্তর:


9

ঠিক আছে, আমি ট্রেডম্যাক্সিমাইজারের কোডটি পড়েছি এবং আমি বিশ্বাস করি এটি নীচের এবং আরও সাধারণ সমস্যা সমাধান করে।

সমস্যা: প্রদত্ত হ'ল একটি নির্দেশিত গ্রাফ যার আরসগুলির দাম থাকে। শীর্ষস্থানীয় বিচ্ছিন্ন চক্রগুলির একটি সেট সন্ধান করুন যা প্রথমে আচ্ছাদিত শীর্ষগুলির সংখ্যাকে সর্বাধিক করে তোলে এবং মোট ব্যয়কে দ্বিতীয় বার করে তোলে।

xyxyyz

সমাধান:

  1. xxLxRxLxRxyxLyR

  2. দ্বিপক্ষীয় গ্রাফে ন্যূনতম ব্যয়ের নিখুঁত মিল খুঁজে পান।

>1

(প্রকৃতপক্ষে, ট্রেডম্যাক্সিমাইজারটি সর্বোত্তম চক্রের দৈর্ঘ্যের মতো অন্যান্য বিষয়কে উচ্চতরভাবে অনুকূলিত করার জন্য উপরের দুটি মানদণ্ড অনুসারে সমস্ত অনুকূল সমাধানগুলিতে পুনরাবৃত্তি করে Big বড় চক্র "চুক্তি" না করার সুযোগ বাড়ায় কারণ একটি ব্যক্তি তাদের মন পরিবর্তন করে।)

পিএস: লেখক, ক্রিস ওকাসাকি নিশ্চিত করেছেন যে এই কোডটি ব্লগ পোস্টে ফিরে এসেছে ।


আমি ট্রেডম্যাক্সিমাইজার ব্যবহার করে মূল সমস্যার সমাধান পেতে সক্ষম হয়েছি। আমি আগামীকাল ডিটাশ পোস্ট করব।
motobói

@ মোটোবি, তবে আপনাকে যা করতে হবে তা হ'ল আমি দ্বিতীয় অনুচ্ছেদে যা লিখেছি ...
রাদু গ্রেগোর

: আমি অ্যালগরিদম সম্পর্কে এই ব্যাখ্যা পাওয়া boardgamegeek.com/wiki/page/TradeMaximizer
motobói

স্ট্রং সংযুক্ত উপাদানগুলির মধ্যে অর্কগুলি অপসারণ করার জন্য কেন প্রয়োজনীয় তা আপনি ব্যাখ্যা করতে বা ব্যাখ্যা করতে পারেন?
মোটোবি

@ মোটোবি, এটি একটি অপ্টিমাইজেশন (গড় ক্ষেত্রে)। পদক্ষেপ (1) এবং (2) পর্যাপ্ত হতে হবে।
রাদু গ্রিগোর

22

11

যেহেতু সমস্ত ব্যয় এবং সামর্থ্যগুলি ধ্রুবক দ্বারা আবদ্ধ, একটি সাধারণ চক্র-বাতিলকরণ অ্যালগরিদম বহু-কালীন সময়ে প্রয়োজনীয় সংবহন খুঁজে পাবে। এটি সুস্পষ্ট লোভী অ্যালগরিদমের মতো প্রায় :

while G has any negative-cost directed cycles
    γ = arbitrary negative-cost directed cycle
    reverse every edge in γ
    negate the cost of every edge in γ
return the subgraph of reversed edges

O(VE)0EEO(VE2)

এটি সবচেয়ে দ্রুতগতিযুক্ত অ্যালগরিদম নয়।


মনে হয় এটি যতক্ষণ কাজ করে না যতক্ষণ না কোনও ব্যক্তি একাধিক "ইউনিটে" কাজ করতে চায় না, তাই না? মূল প্রশ্নের ফ্রেসিং ব্যবহার করে। তবে লোকেরা যদি একাধিক ইউনিটে কাজ করতে চায় তবে সন্দেহ হয় যে এই বিমূর্তিটি ভেঙে গেছে। ওপি কেবলমাত্র একটি ইউনিটের ক্ষেত্রে সমস্যা বর্ণনা করেছে, তবে এটি আমার কাছে কৃত্রিমভাবে জটিল করে তুলেছে। [মানুষের কী একটাই পছন্দ ...?]
vzn

1
"ব্যক্তি" এবং "ইউনিট" কী? এটি গ্রাফ সম্পর্কে একটি প্রশ্ন।
জেফি

আমি বিস্মিত: আমার উদাহরণটি কি এই অ্যালগরিদমের পক্ষে পাল্টা উদাহরণ নয়? সি বাছাই করার পরে, C_1 এবং C_2 চক্রগুলি আর কোনও চক্র নয় (কারণ প্রতিটি চক্রের একটি বিপরীত প্রান্ত থাকে); সি আবার ব্যবহার করা হবে না কারণ এর প্রান্তগুলি বিপরীত করার পরে এটির ইতিবাচক ব্যয় রয়েছে এবং কোনও নতুন চক্র চালু করা হয়নি। আমরা কি একই সমস্যার কথা বলছি? সমস্যার গাণিতিক সূচনা করতে পছন্দ করবেন।
ফাইবি

3
CCC1C2CCC1C2C=C1+C2C

দৃশ্যত একটি "ইউনিট" একটি "বিভাগ" এর মতো কিছু এবং ব্যবহারকারীরা বিভাগগুলির মধ্যে স্থানান্তরগুলির জন্য অনুরোধগুলি রেকর্ড করছেন [বিভাগগুলিতে ঠিক নির্দিষ্ট অবস্থান নয়]? এফআইবিগুলির চিত্রটি ইউনিটগুলির মধ্যে এমপ্লিট অনুরোধ হিসাবে শীর্ষক এবং প্রান্ত হিসাবে ইউনিট রয়েছে বলে মনে হয়। ফাইবি-- "সমস্যার গাণিতিক সূত্রপাত করতে পছন্দ করবে" .. একটি সুনির্দিষ্ট সূত্র সরবরাহ করা আপনার পক্ষে
অবলম্বন

4

এই লোভী দৃষ্টিভঙ্গি সর্বদা সর্বোত্তম সমাধান দেয় না।

Cn{(v1,v2),,(vn,v1)}C1C2n1C

CnC1C2

C1C22(n1)=2n2

পাশে: উপরের উদাহরণে দুটি চক্র যুক্ত করার পরিবর্তে আপনি যুক্ত করতে পারেনn2


-3

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

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

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

পেশাদার রেফারেন্সের জন্য [1] এবং শ্রেণি অনুশীলনের জন্য [2] দেখুন। "পায়রাহোল সমস্যা" নামে পরিচিত এমন কিছু কাঠামোগত মিল রয়েছে যা স্যাট সার্কেলগুলিতে কবুতরকে কবুতরকে দেওয়া হয়েছিল এবং কবুতরের তুলনায় আপনার কম-বেশি গর্ত রয়েছে well সেক্ষেত্রে কবুতরগুলি সাধারণত বিনিময়যোগ্য হিসাবে দেখা যায়। অন্য কথায় রাতের খাবারের টেবিলের সমস্যাটি শক্তিশালী প্রতিবন্ধকতাগুলির সাথে পায়রাহোল সমস্যার মতো এবং অতিথি / কবুতরগুলির পছন্দগুলির প্রয়োজনীয়তা রয়েছে।

অবশ্যই নোট করুন / মনে রাখবেন যে এই ধরণের সমস্যার জন্য, সীমাবদ্ধতার উপর নির্ভর করে উত্তরটি "এই জাতীয় কোনও সীমাবদ্ধ সমাধানের অস্তিত্ব নেই" হতে পারে।

[1] ক্রেটো দ্বারা ডিনার টেবিল অ্যালগরিদম

[2] CS402 প্রিন্সটন এইচডাব্লু স্যাট

[3] সন্তুষ্টি সমস্যা, উইকিপিডিয়া


আমি ট্রেডম্যাক্সিমাইজার ব্যবহার করে ক্রোমোটেশনটি চেষ্টা করেছি। কোনও কর্মচারীকে এমন এক ব্যবহারকারী হিসাবে সেট করুন যা তার একক ওয়াইয়ের জন্য এক্স ইউনিট বাণিজ্য করতে চায় । তবে সফ্টওয়্যারটি একাধিক ব্যবহারকারীর একই আইটেম (তার ইউনিট) ট্রেড করার অনুমতি দেবে না। প্রতিটি আইটেম অনন্য হতে হবে। এটিকে সামঞ্জস্য করার জন্য আমার বলতে হবে, [[জোন্স) ইউনিট-ডি-লৌরা বা ইউনিট-ডি-সার্জিও বা ইউনিট-ডি-মেরি] এর জন্য ইউনিট-সি-জেমস ব্যবসা করতে চায়
মোটোবিটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.