সর্বোচ্চ-কাটা অ্যালগরিদম যা কাজ করা উচিত নয়, কেন তা অস্পষ্ট


21

ঠিক আছে, এটি কোনও হোমওয়ার্ক প্রশ্নের মতো মনে হতে পারে এবং এক অর্থে এটি। একটি স্নাতক অ্যালগরিদম ক্লাসে হোমওয়ার্ক অ্যাসাইনমেন্ট হিসাবে আমি নিম্নলিখিত ক্লাসিকটি দিয়েছি:

একটি অ-নির্দেশিত গ্রাফ দেওয়া হয়েছে জি = ( ভি , )G=(V,E) , এমন একটি অ্যালগরিদম দিন যা একটি কাটা ( এস , ˉ এস ) খুঁজে পায় (S,S¯)যেমন δ ( এস , ˉ এস ) | E | / 2δ(S,S¯)|E|/2 , যেখানে δ ( এস , ˉ এস )δ(S,S¯) হ'ল কাটা পার হওয়ার প্রান্ত। সময়ের জটিলতা অবশ্যই ( ভি + ) হতে হবেO(V+E)

কোন কারণে, আমি নিম্নলিখিত সমাধান অনেক পেয়েছি। এখন, এটি খুব বেশি সময় ব্যবহার করে, সুতরাং এটি গ্রেডিংয়ের বিষয় নয়, তবে আমি কৌতূহল পেয়েছি। এটি "সঠিক" বলে মনে হচ্ছে না, তবে আমার পাল্টা উদাহরণগুলিতে সমস্ত প্রচেষ্টা ব্যর্থ হয়েছে। এটা এখানে:

  1. এস সেট করুন S
  2. যাক বনামv গ্রাফ একটি সর্বোচ্চ ডিগ্রী প্রান্তবিন্দু হতে
  3. যোগ বনামv করার এসS
  4. V এর সাথে সংলগ্ন সমস্ত প্রান্ত মুছুনv
  5. যদি δ ( এস , ˉ এস ) < | E | / 2δ(S,S¯)<|E|/2 ফিরে 2

নোট করুন যে 5 ধাপে E আসল গ্রাফকে বোঝায়। এছাড়াও মনে রাখবেন যে আমরা যদি পদক্ষেপ 4 এড়িয়ে গেছি তবে এটি অবশ্যই ভুল হবে (উদাহরণস্বরূপ দুটি বিচ্ছিন্ন প্রান্তযুক্ত ত্রিভুজের মিলন)।

এখন, যে কোনও সাধারণ প্রমাণের নিম্নলিখিত সমস্যা রয়েছে - এটি এমন হতে পারে যে যখন আমরা একটি নতুন ভার্টেক্স ভি যুক্তv করি তখন আমরা আসলে সরিয়ে ফেলি | এস | d ( v ) নতুন প্রান্ত |S|যুক্ত করার সময় কাটা থেকে প্রান্তগুলি (যেখানে d ( v ) প্রান্তগুলি মুছে ফেলা সহ গ্রাফকে বোঝায়)। বিষয়টি হ'ল এটি যদি আমাদের কারণের পক্ষে ক্ষতিকারক হয় তবে এর অর্থ হ'ল এই ভার্টেক্স ভি "" সর্বদা উচ্চতর ডিগ্রি অর্জন করত, সুতরাং এটি "আগে" নির্বাচিত হওয়া উচিত ছিল।d(v)d(v)v

এটি কি সুপরিচিত অ্যালগরিদম? এটির জন্য কি কোনও সাধারণ পাল্টা নমুনা আছে?


2
এটি ভার্টেক্স কভারের জন্য 2-সান্নিধ্যের মতো দেখায়। সঠিক লোভী অ্যালগরিদম আমি মনে করি যে অংশটি আরও প্রতিবেশীদের সাথে ভার্টেক্সটি বেছে নেবে এটি অন্য অংশে এবং এমন কোনও শীর্ষবিন্দু না হওয়া পর্যন্ত এটিকে সরিয়ে নিয়ে যায় এবং সেই সময়ে উত্তরটি অন্ততপক্ষে কিনা তা দেখাতে অসুবিধা হয় না | E | / 2|E|/2 । তবে সেই অ্যালগরিদমের যথার্থতা এই সত্যের উপর নির্ভর করে: আমরা কেবল দুটি ডিগ্রি কাটতে পার্শ্বটির জন্য প্রতিবেশীর সংখ্যার মধ্যে পার্থক্যটি দেখছি, কেবল সর্বোচ্চ ডিগ্রি নয়। এছাড়াও সঠিক অ্যালগরিদম কেবল direction এসS¯ থেকে এস তে নয়, উভয় দিকেই উল্লম্ব স্থানান্তরিত করে S
কাভেহ

3
@ কাভেঃ আমার ধারণা ওপি আপনার বর্ণিত অ্যালগরিদম জানেন (তিনি এটিকে হোমওয়ার্ক হিসাবে নিযুক্ত করেছেন)। তাঁর প্রশ্নটি হল যে অ্যালগরিদম তিনি বর্ণনা করেছেন তাতে কোনও অনুমান হয় কি না।
সাশো নিকোলভ

2
@ মোহাম্মদআল-তুর্কিস্তিনি নিকোলভের মন্তব্য দেখুন।
ভিবি লে

1
এছাড়াও, নোট করুন যে 16/17 আনুমানিকটি এনপি-হার্ড, 1/2 নয়। জিডব্লু তাদের সেমিনাল পেপারে এসডিপি ব্যবহার করে 8 0.878 প্রায় দেয় appro
যোনাতন

উত্তর:


13

আমার আগের দাবী 2+ + 6 একাউন্টে আকারের কাটা নেয়নিএন2/4ইতিমধ্যে গ্রাফ উপস্থিত রয়েছে। নিম্নলিখিত নির্মাণ ফল মনে হচ্ছে (emperically - আমি একটি কঠোর প্রমাণ জন্য math.stackexchange.com এ একটি প্রশ্ন তৈরি করেছেন) একটিহে(12c+6n2/4লগ )ভগ্নাংশ।O(1logc)

বিভিন্ন সংযোগ বিচ্ছিন্ন, ভিন্ন আকারের সম্পূর্ণ গ্রাফগুলির ইউনিয়নগুলিতে অ্যালগরিদম খারাপভাবে সম্পাদন করে। আমরা সম্পূর্ণ গ্রাফ বোঝাতে এন যেমন ছেদচিহ্ন কে এনকে এন- তে অ্যালগরিদমের আচরণটি বিবেচনা করুন : এটি বার বার একটি স্বেচ্ছাসেবী প্রান্ত যোগ করে যা এস তে এস - তে এখনও নেই - এই জাতীয় সমস্ত অনুভূমিকগুলি অভিন্ন এবং সুতরাং আদেশটি কোনও ব্যাপার নয়। অ্যালগরিদম | দ্বারা এসের সাথে এখনও যোগ করা হয়নি এমন শীর্ষের সংখ্যা নির্ধারণ করা এস | = কে , এই মুহুর্তে কাটার আকার কে ( এন - কে )nKnKnSSS|S¯|=kk(nk)

যদি আমরা 0 এবং 1 এর মধ্যে x 1 ধ্রুবক সহ কয়েকটি সংযোগ বিচ্ছিন্ন কে x i এন গ্রাফগুলিতে অ্যালগরিদমটি চালিত করি তবে কী ঘটবে তা বিবেচনা করুন, যদি k i i তম পূর্ণ গ্রাফে এস তে এখনও উপাদানগুলির সংখ্যা নয় , তবে অ্যালগোরিদম বারবার যুক্ত হবে সর্বাধিক কে i সহ সম্পূর্ণ গ্রাফ থেকে এস-এর একটি বিন্দু, নির্বিচারে বন্ধনগুলি ভেঙে। এটি এসকে শীর্ষবৃত্তগুলিকে 'বৃত্তাকার' ভিত্তিক সংযোজন প্ররোচিত করবে : অ্যালগরিদম সর্বোচ্চ k = k i সহ সমস্ত সম্পূর্ণ গ্রাফ থেকে একটি শীর্ষবিন্দু যুক্ত করবে , তারপরে i সহ সমস্ত সম্পূর্ণ গ্রাফ থেকেKxinxikiSiSkiSk=ki কে = k - 1 ( k দিয়ে আমি পূর্ববর্তী রাউন্ডের পরে আপডেট করেছি), এবং আরও অনেক কিছু। একবার একটি সম্পূর্ণ গ্রাফেরএকটি রাউন্ডে এসের সাথে একটি ভার্টেক্স যুক্ত হয়ে যায়, এটি তখন থেকে প্রতিটি রাউন্ডের জন্য এটি করবে।ki=k1kiS

আসুন c সম্পূর্ণ গ্রাফ সংখ্যা হতে হবে। যাক 0 < এক্স আমি1 সঙ্গে 0 আমি - 1 আকার জন্য পরিবর্তক হতে আমি -th সম্পূর্ণ গ্রাফ। আমরা বড় থেকে ছোট এবং সেট এইসব আকার সংশোধনকারীদের অর্ডার এক্স 0 = 1 । আমাদের কাছে এখন যদি এস- তে ঠিক k উপাদান যুক্ত না করে সি গ্রাফ থাকে , তবে সেই সময় কাটার আকার c - 1 i = 0 k হয় (c0<xi10ic1ix0=1ckS x হয় i n - k ) = k n c - 1 i = 0 ( x i ) - c k 2 । প্রান্তের মোট সংখ্যা | E | = সি - আই = এক্স আই এন ( এক্স আই এন - )c1i=0k(xink)=knc1i=0(xi)ck22এন22 সি - 1 আই = 0 এক্স 2 আই|E|=c1i=0xin(xin1)2n22c1i=0x2i

লক্ষ্য করুন এন Σ ' - 1 আমি = 0 এক্স আমি - ' 2 একটি দ্বিঘাত ফাংশন তাই সর্বোচ্চ হয়েছে। আমাদের তাই স্থানীয়ভাবে বেশিরভাগ সর্বাধিক কাট থাকবে। উদাহরণস্বরূপ, সি = 1 হলে আমাদের সর্বাধিক কাটা কে = এন হয়knc1i=0xick2kc=12 আকারেরএন2k=n2 । আমরা বাছাই করতে যাচ্ছিএক্স1, যাতেএক্স1=1/2-ε, যা দ্বিতীয় সম্পূর্ণ গ্রাফ মানে এই স্থানীয়ভাবে সর্বোচ্চ কাটা আকার পরিবর্তন করা হবে না=n24x1x1=1/2ε । আমরা তখন একটি নতুন স্থানীয়ভাবে সর্বোচ্চ কাটা পেতে=3/8এন-ε'এবং তাই আমরা বাছাইএক্স2=3/8এন-ε"(সঙ্গেε,ε',ε"ছোট ধ্রুবক)। আমরা উপেক্ষা করা হবেεমুহূর্ত জন্য গুলি এবং মাত্র অনুমান আমরা বাছাই করতে পারেনএক্স1=1/2- আমরা নিশ্চিত করা উচিতএক্স1এন=k=n2k=3/8nεx2=3/8nε′′ε,ε,ε′′εx1=1/221x1n=n21, but this will not affect the final results if nn is large enough.

We wish to find the local maxima of our cuts. We differentiate knc1i=0(xi)ck2knc1i=0(xi)ck2 to kk, yielding nc1i=0(xi)2cknc1i=0(xi)2ck. Equating to 00 gives k=n2cc1i=0xik=n2cc1i=0xi, which gives a cut of size n24c(c1i=0xi)2n24c(c1i=0xi)2.

Let kiki be the kk determined in the previous paragraph if c=ic=i. We will ensure that the formula holds by demanding that xin<kixin<ki - all complete graphs ii with i>ii>i are then smaller than the kiki of this locally maximal cut and hence do not increase the size of the cut. This means we have cc cuts at these kiki that are larger than all other cuts found by the algorithm.

Filling in xin<kixin<ki, we get the recurrence xi=12cc1i=0xixi=12cc1i=0xi (plus some small εε) with x0=1x0=1. Solving this yields xi=(2ii)4ixi=(2ii)4i: see my question on math.stackexchange.com for the derivation by @Daniel Fisher. Plugging this into n24c(c1i=0xi)2n24c(c1i=0xi)2 and using our insight into the recurrence gives us cuts of size n24c(2c(2cc)4c)2=n2c((2cc)4c)2n24c(2c(2cc)4c)2=n2c((2cc)4c)2. Using properties of this central binomial coefficient, we have limcc((2cc)4c)2=1πlimcc((2cc)4c)2=1π (also see my question on math.stackexchange.com).

The number of edges is approximately n22c1i=0x2i=n22c1i=0((2ii)4i)2n22c1i=0x2i=n22c1i=0((2ii)4i)2. By known properties we have 14i(2ii)4i14i(2ii)4i. Filing in gives at least n22c1i=0(14i)2=n28c1i=01in22c1i=0(14i)2=n28c1i=01i which is asymptotically n28logcn28logc as cc goes to infinity.

We therefore have δ(S,ˉS)|E|δ(S,S¯)|E| is asymptotically equal to 8πlogc8πlogc as cc goes to infinity, showing that the algorithm can return cuts that are arbitrarily low fractions of |E||E|.


3
With a slight modification, your construction gives 1/41/4. Fix εε and chose a sufficiently large NN. Let V={1,,N}V={1,,N}. Connect every two vertices in {1,,εN}{1,,εN} with an edge; then additionally connect every two vertices in VV w.p. ε2ε2. The total number of edges is approximately (εn)2/2+ε2(n2/2)=ε2n2(εn)2/2+ε2(n2/2)=ε2n2. The algorithm finds a cut that cuts approximately ε2n2/4ε2n2/4 edges (up to lower order terms in εε).
Yury

I think I'll rewrite my answer to just include the final results (with more detail) soon, as it's a bit of a mess right now.
Alex ten Brink

1
Regarding the sum n22c1i=0((2ii)4i)2, since each term is Θ(1/(i+1)), the sum is a harmonic series which sums to Θ(logc), and in total we get Θ(n2logc).
Yuval Filmus

12

After a while of thinking and asking around, here's a counter-example, courtesy of Ami Paz:

Let n be even and G be a graph which is the union of Kn with a matching of n+2 vertices (that is, a matching with n/2+1 edges).

How does the algorithm run on this graph? It just takes vertices from the clique part in arbitrary order. After having taken k vertices from the clique, the cut is of size k(nk). This is maximal for k=n/2, which gives a cut of size n24, while the number of edges in the graph is n22+1.

The algorithm as prescribed will continue adding vertices from the clique, reducing the number of edges crossing the cut, until what remains from the clique is just a single edge. At this point it cannot obtain anything better than n2+2.


1
Nice counterexample.
Kaveh

this still gets very close to |E|/2 though. it would be nice to see an example where the algorithm does worse
Sasho Nikolov
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.