একটি অনুকূল অর্ডার সন্ধান করুন


9

আমি এই সমস্যাটি পেরিয়ে এসেছি এবং এটির কাছে যাওয়ার উপায় খুঁজতে লড়াই করছি। যেকোনো বুদ্ধিই চমৎকারভাবে গ্রহন করা হবে!

ধরা যাক, আমাদের একটি ম্যাট্রিক্স are , উদাহরণস্বরূপ,{1,0,1}n × k

[1010110001011011101110001]

প্রতিটি একক ক্রমান্বয়ে চেষ্টা না করে, কলামের ক্রম সন্ধান করুন যা সারিগুলির সংখ্যা সর্বাধিক করে যার জন্য প্রথম অ-শূন্য উপাদানটি ।ci1

উপরের উদাহরণের জন্য, এই জাতীয় একটি অর্ডার দেওয়া (এটি অনন্য নয়!) হ'ল (c3,c4,c1,c2,c5) , অর্থাৎ,

[1010100101100110111100101]

এখানে, জন্য 4 থেকে বের 5 সারি প্রথম নন-জিরো উপাদান 1


আপনি কোন অ্যালগরিদমিক পদ্ধতির চেষ্টা করেছেন? আপনি কোথায় এই সমস্যা সম্মুখীন? আপনি কি মূল উত্স জমা দিতে পারেন? আপনি প্রসঙ্গ বা অনুপ্রেরণা সম্পর্কে কিছু ভাগ করতে পারেন? আপনি এই প্রশ্নটি আপনার প্রশ্নের উন্নতিতে সহায়ক বলে মনে করতে পারেন।
DW

1
আমি একটি প্রাক-প্রসেসিং পদক্ষেপটি বলতে চাই: একটি আধা-ধনাত্মক কলাম (শ্রদ্ধা সারি) কেবলমাত্র 0 এবং 1 এর সাথে একটি কলাম (সম্মান সারি) হওয়া যাক। পরামর্শটি হ'ল সমস্ত আধা-পজিটিভ কলামগুলি এবং একটি আধা-পজিটিভ কলামে 1 দিয়ে সারিগুলি remove আপনার উদাহরণে, এটি 1, 3 এবং 4 সারিগুলি সরিয়ে ফেলবে Now এখন আপনার সারি এবং কলামগুলিতে বাকি রয়েছে যা সমস্ত -1 রয়েছে। সাহায্য নাও করতে পারে, তবে এটির পক্ষে যুক্তি দেওয়া সহজ হতে পারে।
পল জিডি

আমরা কি ধরে নিতে পারি যে কলামগুলির সংখ্যার তুলনায় সারিগুলির সংখ্যা অনেক ছোট? এটি সমস্যাটি আরও সহজ করে তুলতে পারে।
অ্যাঞ্জেলা প্রিটোরিয়াস

1
@ পোল, সারি এবং কলামগুলিতে কোনও 1 নেই এমন একই প্রিপ্রোসেসিং সম্ভব। তবে, আমি মনে করি না যে এটি সম্পর্কে যুক্তিযুক্ত করা সহজ করে তোলে: কেবলমাত্র ছোট।
পিটার টেলর

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

উত্তর:


4

এই সমস্যাটি, যা আমি কলকে অর্ডার করার জন্য সিও ডাকব, এটি এনপি-হার্ড । এখানে এনপি-হার্ড সমস্যা ভার্টেক্স কভার (ভিসি) থেকে এটি হ্রাস পেয়েছে :

ভিসি এবং সিও এর সিদ্ধান্ত সমস্যার ফর্ম

ইনপুট ভিসি উদাহরণটি । এটি এই প্রশ্নের প্রতিনিধিত্ব করে: "গ্রাফটি , কি থেকে সর্বাধিক উল্লম্বের একটি সেট নির্বাচন করা সম্ভব যে প্রতিটি প্রান্তটি কমপক্ষে একটি নির্বাচিত শীর্ষবিন্দুর উপর ঘটনা?" আমরা একটি দৃষ্টান্ত গঠন করা হবে সিও এর যে প্রশ্ন প্রতিনিধিত্ব করে: "দেওয়া ম্যাট্রিক্স উপাদান সঙ্গে তা কলাম পরস্পর বিনিময় করা সম্ভব করে একটি 1 যেমন কমপক্ষে সারিতে একটি -1 এর আগে উপস্থিত হবে ? " এই দুটি সমস্যা সিদ্ধান্ত সমস্যার বিবরণ দেওয়া হয়(V,E,k)(V,E)kVE(A,k)A{1,0,1}Akফর্ম, যার মাধ্যমে প্রত্যেকের উত্তর হয় হ্যাঁ বা কোনও হয়: আনুষ্ঠানিকভাবে বলতে গেলে, এটি এমন একটি সমস্যার এই রূপ যা এনপি-সম্পূর্ণ (বা না)। ওপি-র প্রশ্নের বর্ণিত আরও প্রাকৃতিক অপ্টিমাইজেশন সমস্যা ফর্মটি জটিলতার ক্ষেত্রে প্রায় সমতুল্য তা দেখতে খুব অসুবিধা হয় না : থ্রেশহোল্ড প্যারামিটারে বাইনারি অনুসন্ধান কোনও সিদ্ধান্ত সমস্যার সমাধানকারী ব্যবহার করে অপ্টিমাইজেশান সমস্যা সমাধানের জন্য ব্যবহার করা যেতে পারে, তবে একক একটি অপ্টিমাইজেশন সমস্যা সমাধানকারী, একটি একক তুলনা দ্বারা অনুসরণ অনুরোধ, সিদ্ধান্ত সমস্যা সমাধানের জন্য যথেষ্ট।

ভিসির একটি উদাহরণ থেকে সিওর উদাহরণ তৈরি করা

যাকএবং। আমরা সারি এবং কলাম সহ একটি ম্যাট্রিক্স তৈরি করব । উপরের সারিগুলি প্রতিটি সারিগুলির ব্লকগুলি নিয়ে গঠিত হবে , প্রতিটি ব্লককে একটি প্রান্ত উপস্থাপন করা হবে যা আবরণ করা প্রয়োজন । নীচের সারিগুলিতে ভার্টেক্স "পতাকা" রয়েছে, যা সিও সমাধানের বাম দিকে অন্তর্ভুক্ত করা হলে একটি কলাম (একটি প্রান্তের সাথে সামঞ্জস্যপূর্ণ) একটি নির্দিষ্ট ব্যয় ঘটাবে (ভার্টেক্সের সাথে একটি ভার্টেক্স অন্তর্ভুক্ত রয়েছে) ভিসি সমাধানের কভার)।n=|V|m=|E|A(n+1)m+nn+1(n+1)mmn+1n

প্রতিটি জন্য একটি কলাম তৈরি করুন যাতে:vi

  • শীর্ষ মধ্যে সারি, এর -th ব্লক সারি সব একটি +1 ধারণ যখন প্রান্ত উপর ঘটনা , এবং 0 অন্যথায়, এবং(n+1)mjn+1ejvi
  • নীচের সারিগুলি -th ব্যতীত সমস্ত 0 , যা -1 হয়।ni

আরও একটি "বেড়া" কলাম তৈরি করুন যা -1 এর কপি রয়েছে, তার পরে +1 এর কপি করবে।(n+1)mn

অবশেষে, নির্মিত CO উদাহরণের জন্য প্রান্তিক সেট করুন : । অন্য কথায়, আমরা সর্বাধিক সারিগুলিতে অনুমতি দিই যেখানে +1 এর আগে a -1 প্রদর্শিত হয়। আসুন এই সংখ্যার লঙ্ঘনকারী সারিগুলিকে কোনও সিও সমাধানের "ব্যয়" বলি।k(n+1)m+nkk

প্রমাণ

মূল উপাচার্য দৃষ্টান্তে সিও উদাহরণের সাথে সমাধান এবং একটি শীর্ষ সূত্রের মধ্যে চিঠিপত্রটি হ'ল: বেড়াটির বাম দিকে প্রতিটি কলাম একটি উল্লম্ব অনুরূপ যা বেলে রয়েছে এবং বেড়ার ডানদিকে প্রতিটি কলামের সাথে মিল রয়েছে একটি ভার্টেক্স যেটি নয়।

স্বজ্ঞাতভাবে, "বেড়া" কলামের শীর্ষে -1 গুলি কলামগুলির একটি উপসেট নির্বাচন করে তার বামে স্থাপন করতে বাধ্য করে যা একসাথে এই সমস্ত পজিশনে + 1 থাকে - প্রতিটির উপর উল্লম্ব একটি উপসেটের সাথে সম্পর্কিত যা প্রতিটি ঘটনাই ঘটে প্রান্ত। "বেড়া" এর বামে প্রদর্শিত এই কলামগুলির প্রত্যেকটির নীচের সারিতে কোথাও একটি স্বতন্ত্র সারিতে একটি -1 রয়েছে , যার ব্যয় 1 ব্যয় হয়; "বেড়া" এর নীচে থাকা +1 গুলি নিশ্চিত করে যে ডানদিকে স্থাপন করা সমস্ত কলামগুলি এ জাতীয় কোনও ব্যয় করতে পারে না।n

স্পষ্টত সর্বাধিক ব্যবহার করে একটি ভিসি সমাধান ছেদচিহ্ন সর্বাধিক খরচ দিয়ে নির্মাণ সিও উদাহরণস্বরূপ একটি সমাধান উৎপাদ : শুধু অর্ডার কলাম ইচ্ছামত প্রান্তবিন্দু কভার মধ্যে ছেদচিহ্ন সংশ্লিষ্ট, বেড়া কলামের পরে, কোনো অনুক্রমে সমস্ত অবশিষ্ট কলাম অনুসরণ ।kk

এটা তোলে দেখানোর জন্য রয়ে যায় যে একজন সহযোগী ক্ষেত্রটিকেই খরচ ছাড়া সর্বাধিক সমাধান অনুরূপ একটি প্রান্তবিন্দু কভার সঙ্গে সর্বাধিক ছেদচিহ্ন।kk

মনে করুন বিপরীতে যে সিও দৃষ্টান্তের সলিউশন রয়েছে সেখানে সর্বাধিক দিয়ে ব্যয় হয়েছে যা শীর্ষে সারিতে কিছু সারি +1 এর আগে -1 রেখে দেয়। এই সারিটি একটি নির্দিষ্ট প্রান্ত সাথে সম্পর্কিত সারিগুলির একটি ব্লকের অন্তর্ভুক্ত । মূল উদাহরণ ব্লকের প্রতিটি সারি নির্মাণের সাথে একরকম; অনুমতি দেওয়া কলামগুলি এই সারিগুলিকে পরিবর্তন করতে পারে তবে এগুলি একইরূপে প্রভাবিত করে না। সুতরাং এই প্রতিটি অভিন্ন সারিগুলির কমপক্ষে দাম বোঝায় সমাধানটিতে একটি +1 এর আগে -1 থাকে । তবে : বৈপরীত্য।k(n+1)m(n+1)uvAn+1n+1kn<n+1

যেহেতু উপরের সারিগুলির প্রতিটি ব্লকগুলির a -1 এর আগে একটি +1 থাকে, তাই প্রতিটি প্রান্তের বেড়াটির বামে একটি কলামের সাথে সমান্তরিত একটি শীর্ষটি দ্বারা আবৃত থাকে: এটি হ'ল , উল্লম্বের এই উপসেটটি একটি শিরোনাম কভার গঠন করে। যেহেতু শীর্ষের সারিগুলির কোনওটিরই +1 এর আগে -1 নেই, কেবলমাত্র সমাধান যেখানে ব্যয় উপার্জন করতে পারে কেবল সেই জায়গাটি নীচের অংশে সারিতে, বেড়াটির বাম দিকে রেখে দেওয়া হয়। এই জাতীয় প্রতিটি কলামের দাম হ'ল 1, সুতরাং ব্যয় সর্বাধিক , সেখানে মতো কলাম থাকতে হবে এবং তাই প্রচ্ছদে সর্বাধিক শীর্ষে থাকা উচিত।m(n+1)m(n+1)mnkkk

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


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

আপনি কীভাবে উত্তরটি খুঁজে পেতে পারেন তাতে কিছুটা আলোকপাত করতে পারেন? উত্তরটি উত্তরের চেয়ে এটি আরও আলোকিত হওয়া উচিত।
জন এল।

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

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

1
আমার জবাব হ্রাস করার জন্য, আমরা এমন একটি সমস্যার একটি উদাহরণ এনকোড করতে চাই যেখানে দুটি "বাহিনী" রয়েছে: সমস্ত প্রান্তটি coverেকে দেওয়ার চেষ্টা করুন, এবং যতটা সম্ভব কয়েকটি শীর্ষে ব্যবহার করার চেষ্টা করুন। প্রথমটি এখানে আরও গুরুত্বপূর্ণ, তাই আমি প্রান্তগুলি অনুসারে সারিগুলিকে "গুণিত" করেছি: এখন একক প্রান্ত লঙ্ঘনের জন্য ব্যয় হয় , যার অর্থ সমস্ত অনুভূমিককে অন্তর্ভুক্ত করার চেয়ে একক প্রান্তটি মিস করা আরও খারাপ। এবং আমি এখনই বুঝতে পেরেছি যে এই দুটি সমস্যার সমাধান সমস্যা সংস্করণগুলির সাথে আমরা কাজ করছি, তা স্পষ্ট করে জানাতে আমার উত্তরটি সম্পাদন করা উচিত , যার মধ্যে থ্রেশহোল্ড প্যারামিটারগুলি সমস্যার উদাহরণ হিসাবে রয়েছে ...n+1
j_random_hacker

2

আমি জানি না আসলে কোন বহুপদী সমাধান আছে কিনা। তবুও পল জিডির মন্তব্যের ভিত্তিতে আপনি একটি সরলীকরণ ফাংশন তৈরি করতে পারেন। আপনি আউটপুট সিকোয়েন্স তৈরি করার সাথে সাথে প্রাথমিক ম্যাট্রিক্স সরল করা হয়েছে ।S

function simplification:
while(true)
    if any row i$ has no 1 or no -1 left, remove it
    if any column j has no -1 then,
       remove it and put j on the leftmost available position in S,
       remove all rows where column j has 1.
    if any column j has no 1 then, 
       remove it and put j on the rightmost available position in S.
    if no modification has been done on this loop, break

তারপরে আপনাকে পুনরুক্তিযুক্ত ফাংশন পিকটি ব্যবহার করে সংযুক্তিগুলির একটি সম্পূর্ণ অনুসন্ধান করতে হবে:

function pick(k):
    put column k on the leftmost available position in S
    remove any row where column k is -1 or 1

প্রতিটি বাছাইয়ের পরে আপনি অন্বেষণের সম্ভাবনার সংখ্যা হ্রাস করতে একটি সরলীকরণ করতে পারেন। কম -1 কম থাকা কলামটি দিয়ে লোভের সাথে শুরু করে অন্বেষণ করার পরামর্শ দিচ্ছি, সুতরাং আপনি স্টপ মাপদণ্ড তৈরি করে নীচের দিকে যেতে পারেন।

প্রদত্ত উদাহরণে, প্রথম সরলীকরণ দেয় (যেমনটি পল জিডি মন্তব্যে ব্যাখ্যা করেছেন)

  • S[0]=c3 , আর 1, আর 3 সরান
  • S[1]=c4 , আর 4 সরান
  • S[2]=c2 এটি অন্বেষণ করার জন্য আপনাকে একটি সাধারণ ম্যাট্রিক্স দিয়ে দেয়।
    [1111]

আমি মনে করি যে এই পদ্ধতিটিকে বেশ অযোগ্য করে তোলা একটি ম্যাট্রিক্সের প্রতি সারি / কলামে ঠিক 1, এবং 1 -1 থাকবে,

[110000110000001100001100000011000011]

তবুও, সরলকরণ এখনও অনুসন্ধানের প্রায় অর্ধেক পদক্ষেপকে ছাড়িয়ে যায়। এবং এই জাতীয় ম্যাট্রিক্সকে বেশ কয়েকটি স্বতন্ত্র সাব-ম্যাট্রিক্সে বিভক্ত করা যায়।


1
@ অ্যাপাস.জ্যাক আমি আরও সুনির্দিষ্ট হওয়ার জন্য সম্পাদনা করেছি। হ্যাঁ আমি আউটপুট অনুক্রমের কলাম অবস্থান বলতে চাইছিলাম।
অপটিডাদ

সরলকরণ পদক্ষেপ হিসাবে আপোভেট করা ব্যবহারিক উদ্দেশ্যে (যেমন অনলাইন প্রোগ্রামিং অনুশীলনগুলির মতো?) যথেষ্ট যথেষ্ট হতে পারে।
জন এল

ধন্যবাদ, আসলে আমি amorised সময় ব্যয় অনুমান করতে আগ্রহী কিন্তু আমি কীভাবে করব তা সত্যি জানি না not এটা কি সম্ভব ? নাকি এটি অনেকটা সমস্যার উপর নির্ভরশীল?
অপটিডাদ

2
আমি amorised- সময় বিশ্লেষণ চেষ্টা করেছি, যা কঠিন বলে মনে হচ্ছে। আমি এনপি- কমপ্লিটনেস সন্দেহ করি । অন্যদিকে, সরলীকরণের পদক্ষেপটি আরও সাধারণ হতে পারে। কলামের জন্য এবং যেমন যে তাদের ভাগ অশূন্য অংশ অশূন্য অংশ , কলাম যদি অতিরিক্ত অশূন্য অংশ মুছে ফেলা হতে পারে 1 ধারণ করে না, এবং কলাম মুছে ফেলা হতে পারে যদি অতিরিক্ত অশূন্য অংশ -1 থাকে না। ijijjij
জন এল।

1
আরেকটি আধিপত্য নিয়ম হল: আপনি যখনই দুটি কলাম আছে এবং ধরনের যে অন্তত 1 টি সারি যেখানে -1 এবং + 1 আছে, এবং সেখানে কোন সারি কোথায় +1 টি এবং হয়েছে -1, নেই প্রথমে রাখার কোন লাভ নেই । যাক যে এই ক্ষেত্রে আধিপত্য । আপনি ইতিমধ্যে স্থাপন করা কলামগুলিতে কোনও আধিপত্য বিস্তার করছে কিনা তা পরীক্ষা করে আপনি এই অভ্যন্তরীণ চয়নটি ( ) প্রয়োগ করতে পারেন : যদি তাই হয় তবে আপনি অনুসন্ধান গাছের এই শাখা ছাঁটাই করতে পারেন। ijijijijikk
j_random_hacker
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.