ট্রানজিটিভ প্রতিক্রিয়া তোরণ সেট (টিএফএএস): এনপি-সম্পূর্ণ?


13

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

একটি টুর্নামেন্ট দেওয়া , একটি প্রতিক্রিয়া চাপ সেট এফ মধ্যে জি করে একটি সকর্মক সম্পর্ক সংজ্ঞায়িত?G=(V,E)FEG

প্রমাণের জন্য চেষ্টা করার জন্য আমার কাছে একটি নির্মাণ আছে, তবে মনে হচ্ছে এটি একটি শেষের দিকে চলে যাবে, তাই আমি ভেবেছিলাম যে আমি এখানে স্পষ্ট কিছু মিস করছি কিনা তা জানতে এখানে জিজ্ঞাসা করতে পারি। আপনার সৃজনশীলতাকে আমি যেমন ব্যবহার করেছি ঠিক তেমন চিন্তার ধারায় সীমাবদ্ধ না রাখার জন্য, আমি আমার প্রচেষ্টা এখানে পোস্ট করব না।

এই সমস্যাটি কি এনপি-হার্ড? যদি তা হয় তবে কীভাবে প্রমাণ করবেন?


1
নিখুঁত, ধন্যবাদ! (আমি মন্তব্যটি মুছে ফেলেছি কারণ আমি স্ট্যান্ডার্ড জি = (ভি, ই) এর পরিবর্তে জি = (ই, ভি) লিখেছি :-)
মারজিও দে বিয়াসি

6
যদি আমি সঠিকভাবে বুঝতে পারি তবে এটি কোনও টুর্নামেন্টের প্রান্তগুলি দুটি ডিএজিতে বিভক্ত করা যেতে পারে কিনা তা জিজ্ঞাসার সমতুল্য, যার মধ্যে একটি ট্রান্সজিটিভ বন্ধ রয়েছে।
dspyz

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

5
@ ইগোরশিংকার যে কোনও ডিজিটরের আরাকসকে তুচ্ছভাবে দুটি ডিএজি-তে বিভক্ত করা যেতে পারে: শীর্ষে বিন্যাসে অর্ডার করুন; একটি ডিএজি হ'ল ফরোয়ার্ড প্রান্ত, অন্য ডিএজি হ'ল পিছনের প্রান্তগুলি।
সাশো নিকোলভ

1
অবশ্যই সাশোনিকোলভ!
ইগোর শিংকার

উত্তর:


4

কিছুটা প্রসঙ্গ যুক্ত করতে এখানে এমন একটি গ্রাফের জন্য একটি নির্মাণের ব্যবস্থা রয়েছে যাতে একটি ট্রানজিটিভ প্রতিক্রিয়া তোরণ সেট নেই। এই নির্মাণের জন্য, আমি নিম্নলিখিত গ্যাজেট গ্রাফটি ব্যবহার করব:

গ্যাজেট গ্রাফ নিহিতকরণ জোর করতে ব্যবহৃত

এই টুর্নামেন্টে নিম্নলিখিত বৈশিষ্ট্য রয়েছে (যা আমি একটি প্রোগ্রাম ব্যবহার করে যাচাই করেছি, আমি এটি আনুষ্ঠানিকভাবে প্রমাণ করি নি):

  • যদি (2,7) প্রদত্ত টিএফএজে না থাকে, তবে (1,3) হয়
  • যদি (5,1) প্রদত্ত টিএফএএসে থাকে, তবে এটিও (3,6)
  • যদি (7,3) প্রদত্ত টিএফএজে থাকে তবে (5,1) হয় না

বা কিছুটা আপত্তিজনক যুক্তিযুক্ত স্বরলিপি:

  • ¬(2,7)(1,3)
  • (5,1)(3,6)
  • (7,3)¬(5,1)

আপনি লক্ষ্য করবেন যে প্রতিটি জড়িত হওয়ার জন্য দুটি প্রান্ত দুটি করেই পৃথক পৃথক করা হয়েছে, সুতরাং নিম্নলিখিত নির্মাণ কাজ করে:

TFAS নেই এমন গ্রাফের জন্য নির্মাণ

A


আমি দুঃখিত, আমি অনুসরণ করি না। এমন কোনও কারণ আছে যা আপনি কেবল প্রান্তগুলির একটি তালিকা পোস্ট করতে পারবেন না যাতে এটি এএসপি সলভারের মাধ্যমে চালাতে পারি এবং এটি যাচাই করার চেষ্টা করতে পারি? ক্লিঙ্গো অনুসারে, আপনার গ্যাজেটের গ্রাফটিতে 8 টি আলাদা টিএফএএস রয়েছে। এখানে সবচেয়ে ছোটটি রয়েছে: টিফাস (প্রান্ত (5,0)) টিফাস (প্রান্ত (6,0)) টিফাস (প্রান্ত (7,0)) টিফাস (প্রান্ত (6,2)) টিফাস (প্রান্ত (7,3)) tfas (প্রান্ত (1,2)) tfas (প্রান্ত (1,3)) tfas (প্রান্ত (7,5%)
dspyz

আমি কেবল লক্ষ্য করেছি যে আপনি গ্যাজেট গ্রাফটিতে প্রান্তটি (6,3) উল্লেখ করেছেন তবে আপনি যে চিত্র সরবরাহ করেছেন তাতে প্রান্তটি রয়েছে (3,6)
dspyz

আমি এটি সন্ধান করেছি, আমার আপডেট হওয়া উত্তরটি দেখুন: cstheory.stackexchange.com/a/20778/13643
dspyz

@ ডিএসপাইজ আমি ভেবেছিলাম নির্মাণটি কেবল প্রান্তগুলির তালিকার চেয়ে পরিষ্কার ছিল, যেহেতু আমার যুক্তিটি ভুল না হয়, যা যাচাই করার জন্য যা প্রয়োজন তা হ'ল নির্মাণের উপরের টুর্নামেন্টটি আসলে এই বিচ্ছিন্ন বৈশিষ্ট্যগুলি আছে কি না। প্রান্ত সম্পর্কে ভুল নির্দেশ করার জন্য ধন্যবাদ (3,6)! সেই গ্যাজেটের জন্য আমি 8 টিএফএএস পেয়েছি, আপনি যে তালিকাভুক্ত করেছেন সেগুলির মধ্যে একটি।
জি। বাচ

আমি দুঃখিত. আমি গ্রাফটি ভুলভাবে নির্মাণ করেছি। আমি এটি স্থির করে রেখেছি এবং ক্লিঙ্গো এখন কোনও টিএফএএস-এর খবর দেয় না।
dspyz

1

আমি একটি সংক্ষিপ্ত ক্লিঙ্গো প্রোগ্রাম চালিয়েছি যা কোনও টিএফএএস ছাড়াই কোনও গ্রাফের প্রতিবেদন করেনি, তবে একটি বাগ রয়েছে। আমি এটি স্থির করেছি এবং এখন এটি এনফায়ার করে নেই যে কোনও টিএফএএস ছাড়া এন = 8 বা তারও কম কোনও গ্রাফ নেই। এন = 9 এর জন্য এটি এটি খুঁজে পেয়েছে:

is_edge(edge(2,3)) is_edge(edge(1,4)) is_edge(edge(2,4)) is_edge(edge(3,5)) is_edge(edge(4,5)) is_edge(edge(1,6)) is_edge(edge(2,6)) is_edge(edge(3,6)) is_edge(edge(5,6)) is_edge(edge(1,7)) is_edge(edge(4,7)) is_edge(edge(5,7)) is_edge(edge(6,7)) is_edge(edge(1,8)) is_edge(edge(3,8)) is_edge(edge(4,8)) is_edge(edge(5,9)) is_edge(edge(6,9)) is_edge(edge(7,9)) is_edge(edge(2,1)) is_edge(edge(3,1)) is_edge(edge(4,3)) is_edge(edge(5,1)) is_edge(edge(5,2)) is_edge(edge(6,4)) is_edge(edge(7,2)) is_edge(edge(7,3)) is_edge(edge(8,2)) is_edge(edge(8,5)) is_edge(edge(8,6)) is_edge(edge(8,7)) is_edge(edge(9,1)) is_edge(edge(9,2)) is_edge(edge(9,3)) is_edge(edge(9,4)) is_edge(edge(9,8))

এখানে (স্থির) এনকোডিং রয়েছে

% tfas.asp
#show is_edge/1.
vertex(1..n).

opp_edges(edge(A,B),edge(B,A)) :- vertex(A), vertex(B), A < B.
possible_edge(E1;E2) :- opp_edges(E1,E2).

{is_edge(E1); is_edge(E2)} = 1 :- opp_edges(E1, E2).
ntfas(E) :- possible_edge(E), not is_edge(E).
ntfas(edge(X, X)) :- vertex(X).

tfas(E) | fs(E) :- is_edge(E).
ntfas(E) :- fs(E).

broken :- ntfas(edge(A,C)), tfas(edge(A, B)), tfas(edge(B,C)).

reachable(X, Y) :- fs(edge(X, Y)), is_edge(edge(X, Y)).
reachable(X, Z) :- reachable(X, Y), fs(edge(Y, Z)), is_edge(edge(Y, Z)).
broken :- reachable(X, X).

tfas(E) :- broken, possible_edge(E).
fs(E) :- broken, possible_edge(E).
:- not broken.

এটি দিয়ে চালান clingo -c n=7 tfas.asp(ক্লিঙ্গো ৪.২.১ ব্যবহার করে)

(n = 7 হ'ল 7 টি শীর্ষ কোণের চিত্রগুলি নির্দেশ করে)

এটি কেবলমাত্র 7 টি শীর্ষে কোনও টিএফএএসবিহীন কোনও গ্রাফ উপস্থিত থাকলে এবং এটি সন্তুষ্ট ফিরতে হবে।


ঠিক আছে, আমি বুঝতে পারলাম @ জি.বাচ কোন গ্রাফটি বর্ণনা করছে এবং এটি ক্লিঙ্গোতে কোড করেছে (নীচের ক্লিঙ্গো বর্ণনাটি দেখুন It এটি গ্যাজেট গ্রাফের একটি বিবরণ দিয়ে শুরু হয় এবং সম্পূর্ণরূপে এটির অনুলিপিগুলিতে কীভাবে যোগদান করতে হয় তা বর্ণনা করতে এগিয়ে যায়) 34-ভার্টেক্স টুর্নামেন্টের গ্রাফ জি.বাচ বর্ণনা করছেন I've আমি গ্রাউন্ডেড গ্রাফের বিবরণটিও সংযুক্ত করেছি)।

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

একটি গ্রাফে টিএফএএস এর সন্ধানের জন্য এখানে প্রোগ্রাম

{tfas(E)} :- is_edge(E).
:- not tfas(edge(A,C)), tfas(edge(A, B)), tfas(edge(B,C)).

reachable(X, Y) :- not tfas(edge(X, Y)), is_edge(edge(X, Y)).
reachable(X, Z) :- reachable(X, Y), not tfas(edge(Y, Z)), is_edge(edge(Y, Z)).
:- reachable(X, X).

tfas_count(N) :- N = #count{tfas(E) : tfas(E)}.

#show tfas/1.
#show tfas_count/1.

জি.বাচের গ্রাফ তৈরির জন্য এখানে (আপডেট করা) প্রোগ্রামটি রয়েছে's গ্রাফটি একটি সুগঠিত টুর্নামেন্টের গ্রাফ কিনা তা পরীক্ষা করতে আমি শেষে সূচকগুলি যুক্ত করেছি:

gadget_vertex(0..7).

gadget_edge(0,1).
gadget_edge(0,2).
gadget_edge(0,3).
gadget_edge(0,4).
gadget_edge(1,2).
gadget_edge(1,3).
gadget_edge(1,6).
gadget_edge(1,7).
gadget_edge(2,3).
gadget_edge(2,4).
gadget_edge(2,5).
gadget_edge(2,7).
gadget_edge(3,4).
gadget_edge(3,5).
gadget_edge(3,6).
gadget_edge(4,1).
gadget_edge(4,5).
gadget_edge(4,6).
gadget_edge(4,7).
gadget_edge(5,0).
gadget_edge(5,1).
gadget_edge(5,6).
gadget_edge(6,0).
gadget_edge(6,2).
gadget_edge(6,7).
gadget_edge(7,0).
gadget_edge(7,3).
gadget_edge(7,5).

special_edge(a;b;c;d;e).

forces(a,b).
forces(b,c).
forcesn(c,a).
nforces(a,d).
forces(d,e).
forces(e,a).

relates(A,B) :- forces(A,B).
relates(A,B) :- nforces(A,B).
relates(A,B) :- forcesn(A,B).

is_se_pair(se_pair(A,B)) :- relates(A,B).
vertex_name(v(V,P)) :- gadget_vertex(V), is_se_pair(P).

matches(from(A), v(5, se_pair(A,B))) :- forces(A,B).
matches(to(A), v(1, se_pair(A,B))) :- forces(A,B).
matches(from(B), v(3, se_pair(A,B))) :- forces(A,B).
matches(to(B), v(6, se_pair(A,B))) :- forces(A,B).

matches(from(A), v(2, se_pair(A,B))) :- nforces(A,B).
matches(to(A), v(7, se_pair(A,B))) :- nforces(A,B).
matches(from(B), v(1, se_pair(A,B))) :- nforces(A,B).
matches(to(B), v(3, se_pair(A,B))) :- nforces(A,B).

matches(from(A), v(7, se_pair(A,B))) :- forcesn(A,B).
matches(to(A), v(3, se_pair(A,B))) :- forcesn(A,B).
matches(from(B), v(5, se_pair(A,B))) :- forcesn(A,B).
matches(to(B), v(1, se_pair(A,B))) :- forcesn(A,B).

same_vertex(V, V) :- vertex_name(V).
same_vertex(M, N; N, M) :- matches(X, M), matches(X, N).

already_found(v(Y,N2)) :- vertex_name(v(X,N1)), same_vertex(v(X,N1),v(Y,N2)), N1 < N2.
vertex(V) :- vertex_name(V), not already_found(V).

named_gadget_edge(edge(v(X,SE),v(Y,SE))) :- gadget_edge(X,Y), is_se_pair(SE).
from_gadget_edge_named(edge(A, B), edge(C,D)) :- named_gadget_edge(edge(C,D)), same_vertex(A,C), same_vertex(B,D), vertex(A), vertex(B).
from_gadget_edge(edge(A,B)) :- from_gadget_edge_named(edge(A,B),edge(C,D)).
is_edge(E) :- from_gadget_edge(E).
is_edge(edge(A,B)) :- vertex(A), vertex(B), A < B, not from_gadget_edge(edge(B,A)).

vertex_count(VN) :- VN = #count{vertex(V) : vertex(V)}.
edge_count(EN) :- EN = #count{is_edge(E) : is_edge(E)}.

#show vertex_count/1.
#show edge_count/1.

bidirectional :- is_edge(edge(A,B)), is_edge(edge(B,A)).
phantom_vertex :- is_edge(edge(A,B)), not vertex(A).
phantom_vertex :- is_edge(edge(A,B)), not vertex(B).
incomplete :- vertex(A), vertex(B), not is_edge(edge(A,B)), not is_edge(edge(B,A)), A != B.

#show bidirectional/0.
#show phantom_vertex/0.
#show incomplete/0.

আমি ইতিবাচক সেখানে 18 টি শীর্ষে একটি টুর্নামেন্ট রয়েছে যাতে টিএফএএস নেই।
জি। বাখ

আপনি এটি একটি উদাহরণ হিসাবে দিতে পারেন? প্রান্তটি তালিকাভুক্ত প্রান্তের সাথে কেবল একটি ফাইল সংযুক্ত করুন
dspyz

আমি কীভাবে একটি ফাইল সংযুক্ত করব? এটি কয়েক ঘন্টা সময় নিতে পারে, এই মুহূর্তে আমার হাতে টুর্নামেন্টটি হাতে নেই। আমিও ভুলভাবে গণনা করেছি, এটির 34 টি শীর্ষচিহ্ন থাকা উচিত। টুর্নামেন্টের বিল্ডিং ব্লকগুলি দিচ্ছি কিনা তা যাচাই করা সম্ভবত সহজ easier
জি। বাখ

যে কোনও ফাইল হোস্টে আপলোড করুন এবং এর সাথে লিঙ্ক করুন (দেখুন meta.stackexchange.com/a/4643/185877 ), বা এটির যদি নিয়মিত কাঠামো থাকে তবে কেবল এটি বর্ণনা করুন (বিল্ডিং ব্লকগুলি দিন)
dspyz

n

0

সোয়াগএজি অনুমান [কোনও কিছুর চেয়ে ভাল কিছু?]:

G=(V,E)FEGO(1)

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


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

@vzn আপনি কি এলোমেলো টুর্নামেন্টের অনুমান প্রমাণ করতে পারবেন?
ইগর শিংকার

মাত্র 5 টি শীর্ষ কোণের প্রতিরূপ: a-> খ, a-> c, b-> c, d-> a, b-> d, c-> d, e-> a, e-> b, c-> e , d-> ই। যে কোনও চারটি শীর্ষকে জন্য, উত্সাহিত গ্রাফটিতে একটি চক্র থাকে, সুতরাং একটি ট্রানজিটিভ ডিএএজে গ্রাফের 3 টি শীর্ষের মধ্যে প্রায় 3 টি প্রান্ত থাকতে পারে। কেবলমাত্র 5 টি সম্ভাবনা রয়েছে (অন্যান্য সমস্ত ট্রিপলটি চক্র হয়): এবিসি, ইএবি, ডিইএ, বিসিডি, সিডিএই পরীক্ষা করা সহজ যে পাঁচটি ক্ষেত্রে প্রতিটি ক্ষেত্রে অন্য 7 প্রান্তের মধ্যে একটি চক্র রয়েছে
ডিএসপিজ

1
হ্যাঁ,
এনভিআর

1
@ ডিএসপাইজ আমি 8 টি শীর্ষে সমস্ত টুর্নামেন্টে একটি নিষ্ঠুর শক্তি চেক চালিয়েছি। তাদের সকলের ট্রানজিটিভ প্রতিক্রিয়া তোরণ সেট রয়েছে, তবে এমন কিছু টুর্নামেন্ট তৈরি করতে আপনি ব্যবহার করতে পারেন যা তা নয় doesn't
জি। বাখ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.