مقدمة في علوم الحاسوب النظرية › اختزالات بزمن متعدد الحدود 16 / 26 السابق التالي

الاختزال في زمن متعدد الحدود {#reductionchap }

الاختزال في زمن متعدد الحدود

  • إدخال مفهوم الاختزال في زمن متعدد الحدود بوصفه وسيلةً لربط تعقيد المسائل ببعضها. \
  • رؤية عدة أمثلة على هذا النوع من الاختزالات. \
  • 3SAT بوصفه نقطة انطلاق أساسية للاختزال.

لننظر في بعض المسائل التي صادفناها في الحساب الكفؤ: مقدمة غير رسمية:

  1. مسألة 3SAT: اتخاذ قرار ما إذا كانت لصيغة 3CNF معطاة إسناد مُشبِع.

  2. إيجاد أطول مسار في رسم بياني.

  3. إيجاد أكبر قطع في رسم بياني.

  4. حلّ المعادلات التربيعية (quadratic equations) في nn متغيّرًا x0,…,xn−1∈Rx_0,\ldots,x_{n-1} \in \R.

لدى جميع هذه المسائل الصفات التالية:

  • هذه مسائل مهمّة، وقد بذل الناس جهدًا كبيرًا في محاولة إيجاد خوارزميات أفضل لها.

  • كل واحدة منها مسألة بحث (search)، أي أنّنا نبحث عن حلّ «جيد» بمعنى يسهل تعريفه (مثل: مسار طويل، أو إسناد مُشبِع، إلخ).

  • لكلٍّ من هذه المسائل خوارزمية تافهة بزمن أسّي تتضمّن تعداد كل الحلول الممكنة.

  • في الوقت الحالي، فإنّ أفضل خوارزمية معروفة لجميع هذه المسائل ليست أسرع بكثير من الخوارزمية التافهة في الحالة الأسوأ.

في هذا الفصل وفي صنف NP والاكتمال في NP ومبرهنة كوك-ليفن سنرى أنّه، على رغم اختلافاتها الظاهرية، يمكننا ربط التعقيد الحاسوبي لهذه المسائل ولعشرات غيرها. وفي الحقيقة، اتّضح أنّ المسائل أعلاه متكافئة حاسوبيًا (computationally equivalent)، بمعنى أنّ حلّ أيٍّ منها يعني فورًا حلّ البقية. وهذه الظاهرة، المعروفة بـ_اكتمال NP\mathbf{NP}_ (NP completeness)، هي أحد الاكتشافات المفاجئة في نظريّة الحاسوب، وسنرى أنّ لها آثارًا بعيدة المدى.

يقدّم هذا الفصل مفهوم الاختزال في زمن متعدد الحدود (polynomial time reduction)، وهو مفهوم مركزي في التعقيد الحاسوبي وفي هذا الكتاب خصوصًا. الاختزال في زمن متعدد الحدود هو طريقة لـ_اختزال_ (reduce) مهمّة حلّ مسألة إلى مسألة أخرى. والطريقة التي نستعمل بها الاختزالات في التعقيد هي أن نبرهن على أنّه إذا كانت المسألة الأولى صعبة الحلّ بكفاءة، فإنّ الثانية يجب أن تكون صعبة أيضًا. سنرى في هذا الفصل عدة أمثلة على الاختزالات، وستكون الاختزالات أساسًا لنظرية اكتمال NP\mathbf{NP} التي سنطوّرها في صنف NP والاكتمال في NP ومبرهنة كوك-ليفن.

كل الشيفرة الخاصّة بالاختزالات الموصوفة في هذا الفصل متاحة على دفتر Jupyter التالي.

/images/introtcs/lec_12_NP-1.webp

سنرى في هذا الفصل أنّه لكل واحدة من مسائل إيجاد أطول مسار في رسم بياني، وحلّ المعادلات التربيعية، وإيجاد أكبر قطع، فإنّ وجود خوارزمية زمن متعدد الحدود لهذه المسألة يعني وجود خوارزمية زمن متعدد الحدود لمسألة 3SAT أيضًا. بعبارة أخرى، سنقوم بـ_اختزال_ (reduce) مهمّة حلّ 3SAT إلى كل واحدة من المهمّات أعلاه. ومن طرائق تفسير هذه النتائج أنّه إذا لم تكن هناك خوارزمية زمن متعدد الحدود لـ 3SAT، فإنّه لا توجد خوارزمية زمن متعدد الحدود لهذه المسائل الأخرى أيضًا. وسنرى في صنف NP والاكتمال في NP ومبرهنة كوك-ليفن أدلّة (لكنّه ليس برهانًا!) على أنّ جميع المسائل أعلاه ليس لها خوارزميات زمن متعدد الحدود، وبالتالي فهي غير قابلة للحلّ الجوهري (inherently intractable).

تعريفات رسمية للمسائل

لأسباب من الراحة التقنية أكثر من أيّ سبب جوهري، فإنّنا نهتم بـ_مسائل القرار_ (decision problems) (أي أسئلة بنعم/لا) أو بما يكافئها من دوال بوليانية (Boolean) (أي ذات خرج ببت واحد). نمذجة المسائل أعلاه بوصفها دوالًا تربط {0,1}∗\{0,1\}^* بـ {0,1}\{0,1\} على النحو التالي:

3SAT. يمكن صياغة مسألة 3SAT على هيئة الدالة 3SAT:{0,1}∗→{0,1}3SAT:\{0,1\}^* \rightarrow \{0,1\} التي تأخذ كمدخل صيغة 3CNF φ\varphi (أي صيغة من الشكل C0∧⋯∧Cm−1C_0 \wedge \cdots \wedge C_{m-1} حيث كل CiC_i هو OR لثلاثة متغيّرات أو نفيها) وتربط φ\varphi بـ 11 إذا وُجد إسناد للمتغيّرات في φ\varphi يجعلها تُقيَّم إلى صحيح (true)، وإلّا فإلى 00. مثلًا

3SAT("(x0∨x‾1∨x2)∧(x1∨x2∨x3‾)∧(x‾0∨x‾2∨x3)")=13SAT\left("(x_0 \vee \overline{x}_1 \vee x_2) \wedge (x_1 \vee x_2 \vee \overline{x_3}) \wedge (\overline{x}_0 \vee \overline{x}_2 \vee x_3)" \right) = 1

بما أنّ الإسناد x=1101x = 1101 يُرضي صيغة المدخل. في ما سبق نفترض تمثيلًا ما للصيغ بوصفه سلاسل نصّية، ونعرّف الدالة بحيث تُخرج 00 إذا لم يكن مدخلها تمثيلًا صالحًا؛ ونستعمل العرف نفسه لجميع الدوال الأُخرَى أدناه.

المعادلات التربيعية. تقابل مسألة المعادلات التربيعية (quadratic equations problem) الدالة QUADEQ:{0,1}∗→{0,1}QUADEQ:\{0,1\}^* \rightarrow \{0,1\} التي تربط مجموعة معادلات تربيعية EE بـ 11 إذا وُجد إسناد xx يُرضي كل المعادلات، وإلّا فبـ 00.

أطول مسار. تقابل مسألة أطول مسار الدالة LONGPATH:{0,1}∗→{0,1}LONGPATH:\{0,1\}^* \rightarrow \{0,1\} التي تربط رسمًا بيانيًا GG وعددًا kk بـ 11 إذا وُجد في GG مسار بسيط طوله kk على الأقل، وتربط (G,k)(G,k) بـ 00 وإلّا. مسألة أطول مسار هي تعميم لـمسألة مسار هاملتوني (Hamiltonian Path Problem) المعروفة جيدًا، والتي تحدّد ما إذا كان في رسم بياني معطى من nn رأسًا مسار بطول nn.

أكبر قطع. تقابل مسألة أكبر قطع الدالة MAXCUT:{0,1}∗→{0,1}MAXCUT:\{0,1\}^* \rightarrow \{0,1\} التي تربط رسمًا بيانيًا GG وعددًا kk بـ 11 إذا وُجد قطع في GG يقطع kk حافة على الأقل، وتربط (G,k)(G,k) بـ 00 وإلّا.

جميع المسائل أعلاه في EXP\mathbf{EXP}، لكن لا نعرف ما إذا كانت في P\mathbf{P} أم لا. على أيّ حال، سنرى في هذا الفصل أنّه إذا كان أيٌّ من QUADEQQUADEQ أو LONGPATHLONGPATH أو MAXCUTMAXCUT في P\mathbf{P} فإنّ 3SAT3SAT كذلك في P\mathbf{P}.

الاختزال في زمن متعدد الحدود

لنفترض أنّ F,G:{0,1}∗→{0,1}F,G:\{0,1\}^* \rightarrow \{0,1\} دالتان بوليانيتان. الاختزال في زمن متعدد الحدود (polynomial-time reduction) (أو أحيانًا "اختزال" (reduction) اختصارًا) من FF إلى GG هو طريقة لإظهار أنّ FF «لا أصعب» من GG، بمعنى أنّ وجود خوارزمية زمن متعدد الحدود لـ GG يعني وجود خوارزمية زمن متعدد الحدود لـ FF.

تعريف — الاختزال في زمن متعدد الحدود

ليكن F,G:{0,1}∗→{0,1}F,G:\{0,1\}^* \rightarrow \{0,1\}. نقول إنّ FF تختزل إلى GG، ويُرمز لذلك بـF≤pGF \leq_p G، إذا وُجدت R:{0,1}∗→{0,1}∗R:\{0,1\}^* \rightarrow \{0,1\}^* قابلة للحساب في زمن متعدد الحدود بحيث إنّ لكل x∈{0,1}∗x\in \{0,1\}^*، F(x)=G(R(x))  . F(x) = G(R(x)) \;. نقول إنّ لـ FF و GG تعقيدًا متكافئًا (equivalent complexity) إذا كان F≤pGF \leq_p G و G≤pFG \leq_p F.

/images/introtcs/lec_12_NP-2.webp

التمرين التالي يبرّر حدسنا بأنّ F≤pGF \leq_p G تعني أنّ «FF لا أصعب من GG».

تمرين محلول — الاختزال وP\mathbf{P}

برهن أنّه إذا كان F≤pGF \leq_p G و G∈PG \in \mathbf{P} فإنّ F∈PF\in \mathbf{P}.

توقّف وتأمّل

وكالمعتاد، فإنّ حلّ هذا التمرين بنفسك طريقة ممتازة للتأكّد من فهمك لـتعريف — الاختزال في زمن متعدد الحدود.

الحل

لنفترض أنّ هناك خوارزمية BB تحسب GG في زمن p(n)p(n) حيث nn هو حجم مدخلها. عندئذٍ يعطي المعادلة مباشرةً خوارزمية AA لحساب FF (انظر الشكل التوضيحي). بالفعل، على المدخل x∈{0,1}∗x\in \{0,1\}^*، تقوم الخوارزمية AA بتنفيذ الاختزال في زمن متعدد الحدود RR للحصول على y=R(x)y=R(x) ثمّ تُعيد B(y)B(y). وحسب المعادلة، لدينا G(R(x))=F(x)G(R(x)) = F(x)، وبالتالي فإنّ الخوارزمية AA تحسب فعلًا FF.

سنبيّن الآن أنّ AA تعمل في زمن متعدد الحدود. حسب الافتراض، يمكن حساب RR في زمن q(n)q(n) لمتعدد حدود ما qq. وبخاصة، فإنّ هذا يعني ∣y∣≤q(∣x∣)|y| \leq q(|x|) (بما أنّ مجرد كتابة yy تستغرق ∣y∣|y| خطوة). وحساب B(y)B(y) يستغرق p(∣y∣)≤p(q(∣x∣))p(|y|) \leq p(q(|x|)) خطوة على الأكثر. وعليه فإنّ زمن تشغيل AA الإجمالي على المدخلات ذات الطول nn لا يتجاوز زمن حساب yy، المحدود بـ q(n)q(n)، وزمن حساب B(y)B(y)، المحدود بـ p(q(n))p(q(n))، وبما أنّ تركيب متعددَي حدود هو متعدد حدود، فإنّ AA تعمل في زمن متعدد الحدود.

الاختزال (reduction) F≤pGF \leq_p G يُظهر أنّ FF «لا أصعب من GG»، أو بما يكافئ ذلك أنّ GG «لا أسهل من FF».

الخنازير الصفّارة والخيول الطايرة

يمكن استعمال اختزال من FF إلى GG لغرضين:

  • إذا كنّا نعرف خوارزمية لـ GG وكان F≤pGF \leq_p G، فيمكننا استعمال الاختزال للحصول على خوارزمية لـ FF. وهذه أداة مستعملة على نطاق واسع في تصميم الخوارزميات. فمثلًا في أصغر قطع وأقصى تدفّق والبرمجة الخطّية رأينا كيف تتيح لنا نظريّة Min-Cut Max-Flow (القطع الأدنى–التدفّق الأقصى) اختزال مهمّة حساب أصغر قطع في رسم بياني إلى مهمّة حساب أكبر تدفّق فيه.

  • إذا برهنّا (أو كانت لدينا أدلّة) على أنّه لا يوجد خوارزمية زمن متعدد الحدود لـ FF وكان F≤pGF \leq_p G، فإنّ وجود هذا الاختزال يتيح لنا أن نستنتج أنّه لا يوجد خوارزمية زمن متعدد الحدود لـ GG. وهذا هو تفسير «لو كانت الخنازير تصفّر لطارت الخيول» (if pigs could whistle then horses could fly) الذي رأيناه في الاختزال. نبيّن أنّه لو كانت هناك خوارزمية كفؤة افتراضية لـ GG (أي «خنزيرة صفّارة») فإنّنا بما أنّ F≤pGF \leq_p G كانت هناك خوارزمية كفؤة لـ FF (أي «حصان طائر»). في هذا الكتاب نستعمل الاختزالات كثيرًا لهذا الغرض الثاني، وإن كان الحدّ الفاصل بين الغرضين أحيانًا غير واضح (انظر الملاحظات الببليوغرافية في ملاحظات ببليوغرافية).

أهمّ فرق بين المفهوم في تعريف — الاختزال في زمن متعدد الحدود وبين الاختزالات التي رأيناها في سياق عدم القابلية للحساب (uncomputability) (مثلًا في الاختزال) هو أنّه، من أجل ربط التعقيد الزمني للمسائل، نحتاج أن يكون الاختزال قابلًا للحساب في زمن متعدد الحدود، لا أن يكون قابلًا للحساب فحسب. كما أنّ تعريف — الاختزال في زمن متعدد الحدود يقصر الاختزالات على صيغة محدّدة جدًّا. أي أنّنا لإظهار F≤pGF \leq_p G، بدلًا من السماح بخوارزمية عامّة لـ FF تستعمل «صندوقًا سحريًا» يحسب GG، لا نسمح إلا بخوارزمية تحسب F(x)F(x) بإخراج G(R(x))G(R(x)). وهذه الصيغة المقيّدة مريحة لنا، لكنّ الناس عرّفوا واستعملوا اختزالات أكثر عمومية أيضًا (انظر ملاحظات ببليوغرافية).

في هذا الفصل نستعمل الاختزالات لربط التعقيد الحاسوبي للمسائل المذكورة أعلاه: 3SAT، والمعادلات التربيعية، وأكبر قطع، وأطول مسار، إضافة إلى غيرها قليلًا. سنختزل 3SAT إلى المسائل الأخيرة، برهنًا على أنّ حلّ أيٍّ منها بكفاءة يؤدّي إلى خوارزمية كفؤة لـ 3SAT. وفي صنف NP والاكتمال في NP ومبرهنة كوك-ليفن نبيّن الاتجاه المعاكس: اختزال كل واحدة من هذه المسائل إلى 3SAT دفعةً واحدة.

تعدّادية الاختزالات. بما أنّنا ننظر إلى F≤pGF \leq_p G على أنّها تعني (على قدر ما يخصّ الحساب في زمن متعدد الحدود) أنّ FF «أسهل أو مساوية في الصعوبة» لـ GG، فإنّنا نتوقّع أنّه إذا كان F≤pGF \leq_p G و G≤pHG \leq_p H فإنّ F≤pHF \leq_p H. بالفعل، هذا هو الحال:

تمرين محلول — تعدّادية الاختزال في زمن متعدد الحدود

لكل F,G,H:{0,1}∗→{0,1}F,G,H :\{0,1\}^* \rightarrow \{0,1\}، إذا كان F≤pGF \leq_p G و G≤pHG \leq_p H فإنّ F≤pHF \leq_p H.

الحل

إذا كان F≤pGF \leq_p G و G≤pHG \leq_p H فإنّ هناك دالتين R1R_1 و R2R_2 قابلتين للحساب في زمن متعدد الحدود تربطان {0,1}∗\{0,1\}^* بـ {0,1}∗\{0,1\}^* بحيث إنّ لكل x∈{0,1}∗x\in \{0,1\}^*، لدينا F(x)=G(R1(x))F(x) = G(R_1(x))، ولكل y∈{0,1}∗y\in \{0,1\}^*، لدينا G(y)=H(R2(y))G(y) = H(R_2(y)). وبدمج هاتين المساواتين نرى أنّه لكل x∈{0,1}∗x\in \{0,1\}^* لدينا F(x)=H(R2(R1(x)))F(x) = H(R_2(R_1(x)))، وبالتالي فإثبات أنّ F≤pHF \leq_p H يكفي أن نُثبت أنّ الإسناد x↦R2(R1(x))x \mapsto R_2(R_1(x)) قابل للحساب في زمن متعدد الحدود. لكن إذا كان هناك ثابطان c,dc,d بحيث يُحسب R1(x)R_1(x) في زمن ∣x∣c|x|^c ويُحسب R2(y)R_2(y) في زمن ∣y∣d|y|^d، فإنّ R2(R1(x))R_2(R_1(x)) يُحسب في زمن (∣x∣c)d=∣x∣cd(|x|^c)^d = |x|^{cd} وهو متعدد حدود.

اختزال 3SAT إلى المعادلات الخطّية ذات القيم 0/1 والمعادلات التربيعية

سنعرض الآن أول مثال على اختزال. تقابل مسألة معادلات 0/1 الخطّية (Zero-One Linear Equations) الدالة 01EQ:{0,1}∗→{0,1}01EQ:\{0,1\}^* \rightarrow \{0,1\} التي يكون مدخلها مجموعة EE من معادلات خطّية في المتغيّرات x0,…,xn−1x_0,\ldots,x_{n-1}، وخرجها هو 11 إذا وفقط إذا وُجد إسناد x∈{0,1}nx\in \{0,1\}^n بقيم 0/10/1 للمتغيّرات يُرضي كل المعادلات. مثلًا، إذا كان المدخل EE سلسلة تُرمِّز مجموعة المعادلات

x0+x1+x2=2x0+x2=1x1+x2=2 \begin{aligned} x_0 + x_1 + x_2 &= 2 \\ x_0 + x_2 &= 1 \\ x_1 + x_{2} &= 2 \end{aligned}

فإنّ 01EQ(E)=101EQ(E)=1 لأنّ الإسناد x=011x = 011 يُرضي المعادلات الثلاث. ونركّز بعيننا على المعادلات الخطّية في المتغيّرات x0,…,xn−1x_0,\ldots, x_{n-1} التي كلّ معادلة فيها على الشكل ∑i∈Sxi=b\sum_{i \in S} x_i = b حيث S⊆[n]S \subseteq [n] و b∈Nb\in \N.[1]

لو طرحنا السؤال عمّا إذا كان EE له حلّ x∈Rnx \in \R^n من أعداد حقيقية، فإنّ هذا يمكن حلّه باستعمال خوارزمية الإزالة الغاوسية (Gaussian elimination) المشهورة في زمن متعدد الحدود. على أيّ حال، لا توجد خوارزمية كفؤة معروفة لحلّ 01EQ01EQ. وفي الحقيقة، إنّ مثل هذه الخوارزمية تترتّب عليها خوارزمية لـ 3SAT3SAT كما تبيّن النظريّة التالية:

مبرهنة — صعوبة 01EQ01EQ

3SAT≤p01EQ3SAT \leq_p 01EQ

يمكن كتابة القيد x2∨x‾5∨x7x_2 \vee \overline{x}_5 \vee x_7 على الصورة x2+(1−x5)+x7≥1x_2 + (1-x_5) + x_7 \geq 1. وهذا متراجح خطّي (inequality)، لكن بما أنّ المجموع في الطرف الأيسر لا يتجاوز ثلاثة، يمكننا أيضًا تحويله إلى مساواة (equality) بإضافة متغيّرين جديدين y,zy,z وكتابته على الصورة x2+(1−x5)+x7+y+z=3x_2 + (1-x_5) + x_7 + y + z =3. (سنستعمل متغيّرات جديدة y,zy,z لكل قيد.) وأخيرًا، لكل متغيّر xix_i يمكننا إضافة متغيّر xi′x'_i يقابل نفيه بإضافة المعادلة xi+xi′=1x_i + x'_i = 1، وبذلك نُربط القيد الأصلي x2∨x‾5∨x7x_2 \vee \overline{x}_5 \vee x_7 إلى x2+x5′+x7+y+z=3x_2 + x'_5 + x_7 +y + z = 3. وال__تقنية المستفادة__ (takeaway technique) من هذا الاختزال هي فكرة إضافة متغيّرات مساعِدة (auxiliary variables) لاستبدال معادلة مثل x1+x2+x3≥1x_1+x_2 +x_3 \geq 1 التي ليست تمامًا على الصورة التي نريدها بالمعادلة المكافئة لها (بالنسبة إلى المتغيّرات ذات القيم 0/10/1) وهي x1+x2+x3+u+v=3x_1+x_2+x_3+u+v=3 التي هي على الصورة التي نريدها.

يسارًا: شيفرة بايثون تنفّذ الاختزال من  إلى . يمينًا: مثالٌ على مخرجات الاختزال. الشيفرة موجودة في مستودعنا.

برهان

لإثبات النظريّة نحتاج إلى:

  1. وصف خوارزمية RR تربط مدخلًا φ\varphi لـ 3SAT3SAT بمدخل EE لـ 01EQ01EQ.

  2. إثبات أنّ الخوارزمية تعمل في زمن متعدد الحدود.

  3. إثبات أنّ 01EQ(R(φ))=3SAT(φ)01EQ(R(\varphi)) =3SAT(\varphi) لكل صيغة 3CNF φ\varphi.

وهذا ما سنفعله الآن. وبما أنّ هذا هو الاختزال الأول لنا، فسنفصّل هذا البرهان. لكنّه يتبع فكرة البرهان بوضوح تام.

خوارزمية — 3SAT3SAT إلى 01EQ01EQ

INPUT: 3CNF formula $\varphi$ with $n$ variables $x_0,\ldots,x_{n-1}$ and $m$ clauses.

OUTPUT: Set $E$ of linear equations over $0/1$ such that $3SAT(\varphi)=1$ iff $01EQ(E)=1$.

Let $E$'s variables be $x_0,\ldots,x_{n-1}$, $x'_0,\ldots,x'_{n-1}$, $y_0,\ldots,y_{m-1}$, $z_0,\ldots,z_{m-1}$.
For{$i \in [n]$}
  add to $E$ the equation $x_i + x'_i = 1$
endfor
For{$j\in [m]$}
  Let $j$-th clause be $w_0 \vee w_1 \vee w_2$ where $w_0,w_1,w_2$ are literals.
  For{$a\in[3]$}
    If{$w_a$ is variable $x_i$}
      set $t_a \leftarrow x_i$
    endif
    If{$w_a$ is negation $\neg x_i$}
      set $t_a \leftarrow x'_i$
    endif
   endfor
   Add to $E$ the equation $t_0 + t_1 + t_2 + y_j + z_j = 3$.
endfor
return $E$ 

الاختزال موصوف في خوارزمية — 3SAT إلى 01EQ، وانظر أيضًا الشكل التوضيحي. إذا كانت صيغة المدخل فيها nn متغيّرًا و mm بندًا (clause)، فإنّ خوارزمية — 3SAT إلى 01EQ ينشئ مجموعة EE من n+mn+m معادلة على 2n+2m2n+2m متغيّرًا. ويُجري خوارزمية — 3SAT إلى 01EQ حلقة أوّلى من nn خطوة (كلّ منها تأخذ زمنًا ثابتًا) ثمّ حلقة أخرى من mm خطوة (كلّ منها تأخذ زمنًا ثابتًا) لإنشاء المعادلات، وبالتالي فهو يعمل في زمن متعدد الحدود.

ولنجعل RR هي الدالة التي يحسبها خوارزمية — 3SAT إلى 01EQ. وقلب البرهان هو إظهار أنّه لكل 3CNF φ\varphi، لدينا 01EQ(R(φ))=3SAT(φ)01EQ(R(\varphi)) = 3SAT(\varphi). ونقسم البرهان إلى قسمين. القسم الأوّل، المعروف تقليديًا بخاصية اكتمال (completeness)، هو إظهار أنّه إذا كان 3SAT(φ)=13SAT(\varphi)=1 فإنّ 01EQ(R(φ))=101EQ(R(\varphi))=1. القسم الثاني، المعروف تقليديًا بخاصية سلامة (soundness)، هو إظهار أنّه إذا كان 01EQ(R(φ))=101EQ(R(\varphi))=1 فإنّ 3SAT(φ)=13SAT(\varphi)=1. (اسما «اكتمال» و«سلامة» مشتقّان من النظر إلى حلّ R(φ)R(\varphi) على أنّه «برهان» على أنّ φ\varphi مُشبِعة، وعندئذٍ تقابل هذه الشروط الاكتمال والسلامة كما عُرِّفًا في #godelproofsystemssec. على أيّ حال، إن وجدتَ الاسمين محيّرَين فيمكنك ببساطة أن تفكّر في الاكتمال على أنّه خاصية «المُدخل الذي قيمته 11 يُربط بمُدخل قيمته 11»، والسلامة على أنّها خاصية «المُدخل الذي قيمته 00 يُربط بمُدخل قيمته 00».)

ونُكمل البرهان بإظهار القسمين:

  • الاكتمال: لنفترض أنّ 3SAT(φ)=13SAT(\varphi)=1، أي أنّه وُجد إسناد x∈{0,1}nx\in \{0,1\}^n يُشبع φ\varphi. إن استعملنا الإسناد x0,…,xn−1x_0,\ldots,x_{n-1} و 1−x0,…,1−xn−11-x_0,\ldots, 1-x_{n-1} للمتغيّرات 2n2n الأولى في E=R(φ)E=R(\varphi) فإنّنا سنُرضي كل المعادلات على الشكل xi+xi′=1x_i + x'_i =1. وإلى جانب ذلك، لكل j∈[m]j\in [m]، إذا كانت t0+t1+t2+yj+zj=3(∗)t_0 + t_1 + t_2 + y_j + z_j = 3 (*) هي المعادلة الناتجة عن البند jj في φ\varphi (مع كون t0,t1,t2t_0,t_1,t_2 متغيّرات على الشكل xix_i أو xi′x'_i حسب مُثابِتات البند) فإنّ إسنادنا للمتغيّرات 2n2n الأولى يضمن أنّ t0+t1+t2≥1t_0+t_1+t_2 \geq 1 (بما أنّ xx يُشبع φ\varphi) وبالتالي يمكننا إسناد قيم إلى yjy_j و zjz_j تضمن أنّ المعادلة (∗)(*) مُرضاة. وب ية في هذه الحالة تكون E=R(φ)E = R(\varphi) مُرضاة، أي أنّ 01EQ(R(φ))=101EQ(R(\varphi))=1.

  • السلامة: لنفترض أنّ 01EQ(R(φ))=101EQ(R(\varphi))=1، أي أنّ مجموعة المعادلات E=R(φ)E=R(\varphi) لها إسناد مُشبع x0,…,xn−1x_0,\ldots,x_{n-1}، x0′,…,xn−1′x'_0,\ldots,x'_{n-1}، y0,…,ym−1y_0,\ldots,y_{m-1}، z0,…,zm−1z_0,\ldots,z_{m-1}. عندئذٍ، بما أنّ المعادلات تتضمّن الشرط xi+xi′=1x_i + x'_i = 1، فإنّ xi′x'_i هو نفي xix_i لكل i∈[n]i \in [n]، وإلى جانب ذلك، لكل j∈[m]j\in [m]، إذا كان CC على الشكل w0∨w1∨w2w_0 \vee w_1 \vee w_2 وهو البند jj في φ\varphi، فإنّ الإسناد xx المقابل يضمن أنّ w0+w1+w2≥1w_0 + w_1 + w_2 \geq 1، ما يعني أنّ CC مُشبَع. وبهذه الحالة يكون 3SAT(φ)=13SAT(\varphi)=1.

المعادلات التربيعية

والآن بعد أن اختزلنا 3SAT3SAT إلى 01EQ01EQ، يمكننا استعمال ذلك لاختزال 3SAT3SAT إلى مسألة المعادلات التربيعية. وهذه هي الدالة QUADEQQUADEQ التي يكون مدخلها قائمة متعدّدي الحدود في nn متغيّرًا p0,…,pm−1:Rn→Rp_0,\ldots,p_{m-1}:\R^n \rightarrow \R ذات رتبة لا تتجاوز اثنين (أي إنّها تربيعية) وذا معاملات صحيحة. (شرط الأخير فقط من أجل راحتنا ويمكن تحقيقه بالتحجيم.) ونعرّف QUADEQ(p0,…,pm−1)QUADEQ(p_0,\ldots,p_{m-1}) بأنه يساوي 11 إذا وفقط إذا وُجد حلّ x∈Rnx\in \R^n للمعادلات p0(x)=0p_0(x)=0، p1(x)=0p_1(x)=0، …\ldots، pm−1(x)=0p_{m-1}(x)=0.

مثلًا، ما يلي مجموعة معادلات تربيعية في المتغيّرات x0,x1,x2x_0,x_1,x_2: x02−x0=0x12−x1=0x22−x2=01−x0−x1+x0x1=0 \begin{aligned} x_0^2 - x_0 &= 0 \\ x_1^2 - x_1 &= 0 \\ x_2^2 - x_2 &= 0 \\ 1-x_0-x_1+x_0x_1 &= 0 \end{aligned} ويمكنك أن تتحقّق أنّ x∈R3x \in \R^3 يُرضي مجموعة المعادلات هذه إذا وفقط إذا كان x∈{0,1}3x \in \{0,1\}^3 و x0∨x1=1x_0 \vee x_1 = 1.

مبرهنة — صعوبة المعادلات التربيعية

3SAT≤pQUADEQ3SAT \leq_p QUADEQ

باستعمال تعدّادية الاختزال (تمرين محلول — تعدّادية الاختزال في زمن متعدد الحدود)، يكفي أن نُظهر أنّ 01EQ≤pQUADEQ01EQ \leq_p QUADEQ، وهذا يتبع لأنّ بإمكاننا صياغة المعادلة xi∈{0,1}x_i \in \{0,1\} على هيئة القيد التربيعي xi2−xi=0x_i^2 - x_i = 0. وال__تقنية المستفادة__ من هذا الاختزال هي أنّ بإمكاننا استعمال عدم الخطّية (non-linearity) لإجبار المتغيّرات المستمرة (مثل المتغيّرات التي تأخذ قيمًا في R\R) على أن تكون منفصلة (أي أن تأخذ قيمًا في {0,1}\{0,1\}).

برهان

حسب مبرهنة — صعوبة 01EQ وتمرين محلول — تعدّادية الاختزال في زمن متعدد الحدود، يكفي أن نُثبت أنّ 01EQ≤pQUADEQ01EQ \leq_p QUADEQ. ولنجعل EE مُدخلًا لـ 01EQ01EQ بالمتغيّرات x0,…,xn−1x_0,\ldots,x_{n-1}. نربط EE بمجموعة المعادلات التربيعية E′E' التي تُحصّل بالأخذ بالمعادلات الخطّية في EE وإضافة إليها nn معادلة تربيعية xi2−xi=0x_i^2 - x_i = 0 لكل i∈[n]i\in [n]. (انظر خوارزمية — 01EQ إلى QUADEQ.). والإسناد E↦E′E \mapsto E' يمكن حسابه في زمن متعدد الحدود. وندّعي أنّ 01EQ(E)=101EQ(E)=1 إذا وفقط إذا كان QUADEQ(E′)=1QUADEQ(E')=1. وفي الحقيقة، الفرق الوحيد بين المُدخلين هو أنّ:

  • في مُدخل 01EQ01EQ أي EE، المعادلات هي في متغيّرات x0,…,xn−1x_0,\ldots,x_{n-1} من {0,1}\{0,1\}.

  • في مُدخل QUADEQQUADEQ أي E′E'، المعادلات هي في متغيّرات x0,…,xn−1∈Rx_0,\ldots,x_{n-1} \in \R لكن لدينا القيود الإضافية xi2−xi=0x_i^2 - x_i = 0 لكل i∈[n]i\in [n].

وبما أنّه لكل a∈Ra\in \R، لدينا a2−a=0a^2 - a = 0 إذا وفقط إذا كان a∈{0,1}a \in \{0,1\}، فإنّ مجموعتي المعادلات متكافئتان و 01EQ(E)=QUADEQ(E′)01EQ(E)=QUADEQ(E') وهو ما أردنا إثباته.

خوارزمية — 01EQ01EQ إلى QUADEQQUADEQ

INPUT: Set $E$ of linear equations over $n$ variables $x_0,\ldots,x_{n-1}$.

OUTPUT: Set $E'$ of quadratic equations over $m$ variables $w_0,\ldots,w_{m-1}$ such that there is an $0/1$ assignment $x\in \{0,1\}^n$
satisfying the equations of $E$ iff there is an assignment $w \in \R^m$ satisfying the equations of $E'$.
That is, $01EQ(E) = QUADEQ(E')$.

Let $m \leftarrow n$.
Variables of $E'$ are set to be same variable $x_0,\ldots, x_{n-1}$ as $E$.
For{every equation $e\in E$}
  Add $e$ to $E'$
endfor
For{$i\in [n]$}
   Add to $E'$ the equation $x_i^2 - x_i = 0$.
endfor
return $E'$ 

مسألة مجموع جزئي من مجموعة

وك نتيجة أخرى لاختزال 3SAT3SAT إلى 01EQ01EQ، يمكننا أيضًا أن نُبيّن أنّ 3SAT3SAT (عبر 01EQ01EQ) يختزل إلى مسألة مجموع الجزئية (subset sum) (المعروفة أيضًا بمسألة الحقيبة (knapsack)). في مسألة مجموع الجزئية، يُعطى لنا قائمة أعداد صحيحة x0,…,xn−1∈Zx_0,\ldots,x_{n-1} \in \mathbb{Z} وعدد صحيح T∈ZT\in\mathbb{Z}. ونحتاج إلى تحديد ما إذا كانت هناك مجموعة من هذه الأعداد مجموعها TT أم لا. أي أنّه، لـ x0,…,xn−1,T∈Zx_0,\ldots,x_{n-1},T \in \mathbb{Z}، لدينا SSUM(x0,…,xn−1,T)=1SSUM(x_0,\ldots,x_{n-1},T)=1 إذا وفقط إذا وُجدت S⊆[n]S\subseteq [n] بحيث ∑i∈Sxi=T\sum_{i\in S} x_i = T. ولاحظ أنّ طول المدخل في مسألة مجموع الجزئية هو طول السلسلة اللازمة لترميز كل الأعداد، أي ما يقارب ⌈log⁡T⌉+∑i=0n⌈log⁡xi⌉\lceil \log T \rceil + \sum_{i=0}^n \lceil \log x_i \rceil، بما أنّ ترميز عدد صحيح xx بالتمثيل الثنائي يتطلّب ⌈log⁡x⌉\lceil \log x \rceil بتّ.

مبرهنة — صعوبة مجموع الجزئية

3SAT≤pSSUM3SAT \leq_p SSUM

نختزل من 01EQ01EQ. والحدس هنا هو التالي. لنفترض مُدخلًا EE لـ 01EQ01EQ بـ nn متغيّرًا x0,…,xn−1x_0,\ldots,x_{n-1} و mm معادلة e0,…,em−1e_0,\ldots,e_{m-1}. وتذكّر أنّ كل معادلة eℓe_\ell في EE لها الشكل xi+xj+xk=bx_i + x_j + x_k = b (ربّما بأكثر من ثلاثة متغيّرات أو أقلّ على الطرف الأيسر من المعادلة). ولكل متغيّر xix_i يمكننا تعريف متجه vi∈{0,1}mv^i \in \{0,1\}^m حيث vti=1v^i_t=1 إذا كان المتغيّر xix_i يظهر في المعادلة ete_t و vti=0v^i_t=0 وإلّا. ثمّ إن كانت مجموعة المعادلات لها حلّ إذا وفقط إذا كانت هناك مجموعة S⊆[n]S\subseteq [n] (المقابلة لـ ii التي بحيث xi=1x_i=1) بحيث ∑i∈Svi=b⃗\sum_{i\in S} v^i = \vec{b} حيث b⃗∈Zm\vec{b} \in \mathbb{Z}^m هو متجه الطرف الأيمن للمعادلات (أي أنّ b⃗t\vec{b}_t هو القيمة btb_t في الطرف الأيمن من المعادلة tt). والآن، لو استطعنا تفسير المتجهات v0,…,vn−1v^0,\ldots,v^{n-1} و b⃗\vec{b} على أنّها أعداد، لاستطعنا أن نتعامل مع هذا على أنّه مُدخل لمسألة مجموع الجزئية. والفكرة المفتاحية هي أنّه يمكننا فعلًا أن نعتبر المتجهات أعدادًا بأن نفكر في الإحداث jj في المتجه vv على أنّه الخانة jj-مية. وبما أنّ المتجهات في {0,1}m\{0,1\}^m، فالاختيار الطبيعي هو استعمال الأساس الثنائي، لكنّ هذا يؤدّي إلى مشكلات مع «الاحتفاظات» (carries) عند جمعها. ومن ثمّ نستعمل أساسًا أكبر BB، انظر البرهان أدناه.

برهان

لمجموعة معطاة من 01EQ01EQ على nn متغيّرًا، نلاحظ أنّ الطرف الأيمن لا يمكن أن يتجاوز nn أبدًا (بما أنّ مجموع nn متغيّرًا على الأكثر من {0,1}\{0,1\} لا يتجاوز nn). وبشكل أدقّ، إذا احتوى المُدخل على مثل هذه المعادلة، فيمكننا أن نعرف على اليقين أنّ الجواب هو 00 (وفي سياق إسناد الاختزال، نحوّله إلى مُدخل تافه لمسألة مجموع الجزئية لا يملك حلًّا مثل x0=x1=1x_0=x_1=1 و T=3T=3).

اختزالنا موصوف في zeroonetossumnalg . وعلى مُدخل E={et}t=1mE = \{ e_t \}_{t=1}^m لـ 01EQ01EQ على nn متغيّرًا x0,…,xn−1x_0,\ldots,x_{n-1}، فإنّنا نُخرج مُدخل SSUMSSUM بالشكل y0,…,yn−1,Ty_0,\ldots,y_{n-1},T المحسوب كما يلي:

  • yi=∑t=0m−1Btvtiy_i = \sum_{t=0}^{m-1} B^t v^i_t حيث vtiv^i_t يساوي 11 إذا كان المتغيّر xix_i يظهر في المعادلة ete_t ويساوي 00 وإلّا. ويُضبط العدد BB على 2n2n (أي عدد أكبر من nn سيفي بالغرض.)

  • T=∑t=0m−1BtbtT = \sum_{t=0}^{m-1} B^t b_t حيث btb_t هو العدد الصحيح في الطرف الأيمن من المعادلة ete_t.

بعبارة أخرى، y0,…,yn−1y_0,\ldots,y_{n-1} و TT هما الأعداد التي إذا كُتبت في الأساس BB، تكون الخانة tt-مية من yiy_i هي 11 إذا وفقط إذا كان xix_i يظهر في xtx_t، وتكون الخانة tt-مية من TT هي الطرف الأيمن لـ ete_t.

وستترتّب على الدعوى التالية صحّة الاختزال:

الدعوى: لكل x∈{0,1}nx\in \{0,1\}^n، إذا كان S={i∣xi=1}S = \{ i | x_i = 1 \} فإنّ xx يُرضي معادلات EE إذا وفقط إذا كان ∑i∈Syi=T\sum_{i\in S} y_i = T.

البرهان: مفتاح البرهان هي الخاصية البسيطة التالية للجمع على طريقة المدارس الابتدائية: عند جمع nn عددًا على الأكثر في الأساس BB، إذا كانت كل الخانات في جميع الأعداد إمّا 00 أو 11، و B>nB>n، فإنّ الخانة tt-مية من المجموع هي مجموع الخانات tt-مية من الأعداد. وهذا نتيجة بسيطة لانعدام «الاحتفاظ» (carry) في الجمع. وبما أنّ الأعداد y0,…,yny_0,\ldots,y_n في حالتنا تفي بهذه الخاصية في الأساس BB، و B>nB>n، نحصل على أنّه لكل S⊆[n]S \subseteq [n] ولكل خانة tt، تكون الخانة tt-مية من المجموع ∑i∈Syi\sum_{i\in S}y_i هي ببساطة مجموع الخانة tt-مية، وهو ما يقابل المجموع فوق xix_i لكل قيم xix_i التي تشارك في المعادلة tt. وهذا المجموع يساوي الخانة tt-مية من TT إذا وفقط إذا كانت تلك المعادلة مُرضاة.

وتُظهر الدعوى أنّ 01EQ(E)=SSUM(y0,…,yn−1,T)01EQ(E) = SSUM(y_0,\ldots,y_{n-1},T) وهو ما كنا نحتاج إلى إثباته.

خوارزمية — 01EQ01EQ إلى SSUMSSUM

INPUT: Set $E = \{ e_t \}_{t\in [m]}$ of $m$ linear equations over $n$ variables $x_0,\ldots,x_{n-1}$.

OUTPUT: Numbers $y_0,\ldots,y_{n-1},T \in \mathbb{Z}$ such that there is an $0/1$ assignment $x\in \{0,1\}^n$ satisfying the equations of $E$ iff there is $S \subseteq [n]$ such that $\sum_{i\in S}y_i = T$.

For{every equation $e_t\in E$}
  Let $A \subseteq [n]$ and $b\in \mathbb{Z}$ be such that $e_t$ has the form $\sum_{i\in A} x_i = b$
  Let $v_i^t \leftarrow 1$ -if $i\in A$ and $v_i^t \leftarrow  0$ otherwise.
  Let $b_t  \leftarrow  b$. 
endfor
Set $B \leftarrow 2n$
For{$i\in [n]$}
   Let $y_i \leftarrow \sum_{t=1}^m B^t v_i^t$. 
endfor
Let $T \leftarrow  \sum_{t=1}^T B^t b_t$
return $y_0,\ldots,y_{n-1},T$

مسألة المجموعة المستقلّة

بالنسبة إلى رسم بياني G=(V,E)G=(V,E)، فإنّ المجموعة المستقلّة (independent set) (المعروفة أيضًا بـ_مجموعة مستقرّة_) هي مجموعة جزئية S⊆VS \subseteq V بحيث لا توجد حواف لهِمَا طرفاه في SS (بعبارة أخرى، E(S,S)=∅E(S,S)=\emptyset). كلّ «مفرد» (singleton) (أي مجموعة تتكوّن من رأس واحد) هو بطبيعة الحال مجموعة مستقلّة، لكنّ إيجاد المجموعات المستقلّة الأكبر قد يكون صعبًا. ومسألة أكبر مجموعة مستقلّة (maximum independent set) (ونسميها من الآن فصاعدًا «مجموعة مستقلّة») هي مهمّة إيجاد أكبر مجموعة مستقلّة في الرسم البياني. والمسألة المستقلّة ترتبط طبيعيًا بـ_مسائل الجدولة_: فإذا وضعنا حافة بين مهمّتين متعارضتين، فإنّ المجموعة المستقلّة تقابل مجموعة مهمّات يمكن جدولتها جميعًا معًا دون تعارض. وقد دُرست مسألة المجموعة المستقلّة في سياقات متنوّعة، منها مثلًا حالة الخوارزميات التي تجد البنية في رسوم تفاعل البروتينات (protein-protein interaction graphs).

كما ذُكر في تعريفات رسمية للمسائل، فإنّنا ننظر إلى مسألة المجموعة المستقلّة على أنّها الدالة ISET:{0,1}∗→{0,1}ISET:\{0,1\}^* \rightarrow \{0,1\} التي، على مدخل رسم بياني GG وعدد kk، تُخرج 11 إذا وفقط إذا كان الرسم البياني GG يحوي مجموعة مستقلّة من حجم kk على الأقل. ونختزل الآن 3SAT إلى المجموعة المستقلّة.

مبرهنة — صعوبة المجموعة المستقلّة

3SAT≤pISET3SAT \leq_p ISET.

الفكرة هي أنّ إيجاد إسناد مُشبِع لصيغة 3SAT يقابل تحقيق قيدَين محليّين متعدّدين دون إحداث أيّ تعارض. ويمكن التفكير في "x17=0x_{17}=0" و "x17=1x_{17}=1" على أنّهما حدثان متعارضان، وفي القيود x17∨x‾5∨x9x_{17} \vee \overline{x}_5 \vee x_9 على أنّها تُحدث تعارضًا بين الأحداث "x17=0x_{17}=0" و "x5=1x_5=1" و "x9=0x_9=0" أي أنّ هذه الثلاثة لا يمكن أن تحدث في آنٍ واحد. وباستعمال هذه الأفكار يمكننا أن نعتبر حلّ مسألة 3SAT على أنّه محاولة لجدولة أحداث غير متعارضة، وإن كان الشيطان، كالمعتاد، في التفاصيل. وال__تقنية المستفادة__ هنا هي إسناد كل بند من الصيغة الأصلية إلى آلية (gadget) وهي رسم بياني فرعي صغير (أو، بصورة أعمّ، «مُدخل فرعي») يفي ببعض الخصائص المريحة. وسنرى هذه «الآليات» مستعملة مرارًا وتكرارًا في بناء الاختزالات في زمن متعدد الحدود.

/images/introtcs/lec_12_NP-4.webp

خوارزمية — اختزال 3SAT3SAT إلى ISIS

INPUT: $3SAT$  formula $\varphi$ with $n$ variables and $m$ clauses.

OUTPUT: Graph $G=(V,E)$ and number $k$, such that $G$ has an independent set of size $k$ iff $\varphi$ has a satisfying assignment.
That is, $3SAT(\varphi) = ISET(G,k)$, 

Initialize $V \leftarrow \emptyset, E \leftarrow \emptyset$
For {every clause $C = y \vee y' \vee y''$ of $\varphi$}
  Add three vertices $(C,y),(C,y'),(C,y'')$ to $V$
  Add edges $\{ (C,y), (C,y') \}$, $\{(C,y'),(C,y'') \}$, $\{ (C,y''), (C,y) \}$ to $E$.
endfor
for {every distinct clauses $C,C'$ in $\varphi$}
  for {every $i\in [n]$}
      if{$C$ contains literal $x_i$ and $C'$ contains literal $\overline{x}_i$}
          Add edge $\{ (C,x_i), (C',\overline{x}_i) \}$ to $E$
      endif
  endfor
endfor
return $(G=(V,E), m)$

برهان

لنفترض صيغة 3SAT φ\varphi على nn متغيّرًا و mm بندًا، سننشئ رسمًا بيانيًا GG بـ 3m3m رأسًا كما يلي. (انظر خوارزمية — اختزال 3SAT إلى IS، وانظر أيضًا الشكل التوضيحي لمثال والشكل التوضيحي للشيفرة البرمجية لـ Python.)

  • البند CC في φ\varphi له الشكل C=y∨y′∨y′′C = y \vee y' \vee y'' حيث y,y′,y′′y,y',y'' هي مُثابِتات (literals) (متغيّرات أو نفيها). ولكل بند CC من هذا النوع سنضيف ثلاثة رؤوس إلى GG، ونسمّيها (C,y)(C,y) و (C,y′)(C,y') و (C,y′′)(C,y'') على التوالي. وسنضيف أيضًا الحواف الثلاث بين كل زوج من هذه الرؤوس، بحيث تشكّل مثلّثًا (triangle). وبما أنّ في φ\varphi عددًا من البنود يساوي mm، فإنّ الرسم البياني GG سيكون له 3m3m رأسًا.

  • وإلى جانب الحواف أعلاه، فإنّنا نضيف أيضًا حافة بين كل زوج من الرؤوس على الشكل (C,y)(C,y) و (C′,y′)(C',y') حيث yy و y′y' مُثابِتَان متعارضان. أي أنّنا نضيف حافة بين (C,y)(C,y) و (C′,y′)(C',y') إذا وُجد ii بحيث y=xiy=x_i و y′=x‾iy' = \overline{x}_i أو العكس.

الخوارزمية التي تبني GG انطلاقًا من φ\varphi تعمل في زمن متعدد الحدود لأنّها تتضمن حلقتين، الأُولى تأخذ O(m)O(m) خطوة والثانية تأخذ O(m2n)O(m^2 n) خطوة (انظر خوارزمية — اختزال 3SAT إلى IS). وبذلك، لإثبات النظريّة نحتاج أن نُظهر أنّ φ\varphi مُشبَعة إذا وفقط إذا كان GG يحوي مجموعة مستقلّة من mm رأسًا. وسنعرض الآن اتجاهَي هذا التكافؤ:

القسم الأوّل: الاكتمال. اتجاه «الاكتمال» هو إظهار أنّه إذا كان ل φ\varphi إسناد مُشبِع x∗x^*، فإنّ GG له مجموعة مستقلّة S∗S^* من mm رأسًا. ولنُبيّن ذلك الآن.

بالفعل، لنفترض أنّ ل φ\varphi إسنادًا مُشبِعًا x∗∈{0,1}nx^* \in \{0,1\}^n. عندئذٍ لكل بند C=y∨y′∨y′′C = y \vee y' \vee y'' من φ\varphi، يجب أن يكون أحد المُثابِتات y,y′,y′′y,y',y'' تُقيَّم إلى صحيح (true) تحت الإسناد x∗x^* (وإلّا فإنّ φ\varphi لن تُشبع). ولنجعل SS مجموعة mm رأسًا تُحصَل باختيار رأس واحد على الشكل (C,y)(C,y) لكل بند CC بحيث يُقيَّم yy إلى صحيح تحت x∗x^*. (إذا كان هناك أكثر من رأس واحد من هذا النوع للبند CC نفسه، فإنّنا نختار واحدًا منها بشكل عشوائي.)

وندّعي أنّ SS مجموعة مستقلّة. وبالفعل، لنفترض خلاف ذلك، أي أنّه كانت هناك زوج من الرؤوس (C,y)(C,y) و (C′,y′)(C',y') في SS بينهما حافة. وبما أنّنا اخترنا رأسًا واحدًا من كل مثلّث يقابل بندًا، فلا بدّ من أنّ C≠C′C \neq C'. وبالتالي فإنّ الطريقة الوحيدة لوجود حافة بين (C,y)(C,y) و (C′,y′)(C',y') هي أن تكون yy و y′y' مُثابِتَين متعارضَين (أي y=xiy=x_i و y′=x‾iy'=\overline{x}_i لأجل ما ii). ولكن عندئذٍ لا يمكن أن تُقيََّم كلاهما إلى صحيح تحت الإسناد x∗x^*، وهو ما يناقض الطريقة التي بنينا بها المجموعة SS. وهذا يُكمل برهان شرط الاكتمال.

القسم الثاني: السلامة. اتجاه «السلامة» هو إظهار أنّه إذا كان GG له مجموعة مستقلّة S∗S^* من mm رأسًا، فإنّ ل φ\varphi إسنادًا مُشبِعًا x∗∈{0,1}nx^* \in \{0,1\}^n. ولنُبيّن ذلك الآن.

بالفعل، لنفترض أنّ GG له مجموعة مستقلّة S∗S^* بـ mm رأسًا. وسنعرّف إسنادًا x∗∈{0,1}nx^* \in \{0,1\}^n لمتغيّرات φ\varphi على النحو التالي. لكل i∈[n]i\in [n]، نضبط xi∗x^*_i وفق القواعد التالية:

  • إذا كانت S∗S^* تحوي رأسًا على الشكل (C,xi)(C,x_i) فإنّنا نضبط xi∗=1x^*_i=1.

  • إذا كانت S∗S^* تحوي رأسًا على الشكل (C,xi‾)(C,\overline{x_i}) فإنّنا نضبط xi∗=0x^*_i=0.

  • إذا كانت S∗S^* لا تحوي رأسًا من هذا الشكل ولا من الآخر، فإنّه لا يهمّ أي قيمة نعطيها لـ xi∗x^*_i، لكن من أجل التوضيح سنضبط xi∗=0x^*_i=0.

والملاحظة الأولى هي أنّ x∗x^* معرَّف فعلًا، بمعنى أنّ القواعد أعلاه لا تتنازع بعضها مع بعض ولا تطلب ضبط xi∗x^*_i على 00 وعلى 11 في آنٍ واحد. ويترتّب هذا على أنّ S∗S^* هي مجموعة مستقلّة، وبالتالي فإنّها إذا كانت تحوي رأسًا على الشكل (C,xi)(C,x_i) فلا يمكن أن تحوي رأسًا على الشكل (C′,xi‾)(C',\overline{x_i}).

وندّعي الآن أنّ x∗x^* إسناد مُشبِع لـ φ\varphi. وبالفعل، بما أنّ S∗S^* مجموعة مستقلّة، فلا يمكن أن يكون فيها أكثر من رأس واحد داخل كلّ واحدٍ من المثلّثات mm التالية (C,y),(C,y′),(C,y′′)(C,y),(C,y'),(C,y'') المقابلة لبنود φ\varphi. وبالتالي بما أنّ ∣S∗∣=m|S^*|=m، فلا بدّ أن يكون فيها رأس واحد بالضبط في كلّ مثلّث من هذه المثلّثات. وكل بند CC من φ\varphi، إذا كان (C,y)(C,y) هو الرأس في S∗S^* داخل المثلّث المقابل لـ CC، فإنّه بالطريقة التي عرّفنا بها x∗x^* يجب أن يُقيَّم المُثابِت yy إلى صحيح، ما يعني أنّ x∗x^* يُشبع هذا البند. وبالتالي فإنّ x∗x^* يُشبع كل بنود φ\varphi، وهو تعريف الإسناد المُشبِع.

وهذا يُكمل برهان مبرهنة — صعوبة المجموعة المستقلّة

/images/introtcs/lec_12_NP-5.webp

بعض التمارين وتشريح اختزال

قد يكون الاختزال محيّرًا، وحلّ التمارين طريقة ممتازة لاكتساب طمأنينة أكبر تجاهه. وهنا مثال على ذلك. وكالمعتاد، فإنّي أنصحك بأن تجرّبه بنفسك قبل النظر إلى الحل.

تمرين محلول — غطاء الرؤوس

غطاء الرؤوس (vertex cover) في رسم بياني G=(V,E)G=(V,E) هو مجموعة جزئية S⊆VS \subseteq V من الرؤوس بحيث تلمس كل حافة رأسًا واحدًا على الأقل من رؤوس SS (انظر الشكل التوضيحي). ومسألة غطاء الرؤوس (vertex cover problem) هي مهمّة تحديد ما إذا كان، على إعطائك رسمًا بيانيًا GG وعددًا kk، وُجد غطاء رؤوس في الرسم البياني بعدد رؤوس لا يتجاوز kk أم لا. وبشكل رسمي، هذه هي الدالة VC:{0,1}∗→{0,1}VC:\{0,1\}^* \rightarrow \{0,1\} بحيث لكل G=(V,E)G=(V,E) و k∈Nk\in \N، لدينا VC(G,k)=1VC(G,k)=1 إذا وفقط إذا وُجد غطاء رؤوس S⊆VS \subseteq V بحيث ∣S∣≤k|S| \leq k.

برهن أنّ 3SAT≤pVC3SAT \leq_p VC.

/images/introtcs/lec_12_NP-6.webp

الحل

الملاحظة المفتاحية هي أنّه إذا كان S⊆VS \subseteq V غطاء رؤوس يلمس كل الحواف، فإنّه لا توجد حافة ee يكون طرفاها كليهما في المجموعة S‾=V∖S\overline{S} = V \setminus S، وبالعكس. بعبارة أخرى، SS غطاء رؤوس إذا وفقط إذا كان S‾\overline{S} مجموعة مستقلّة. وبما أنّ حجم S‾\overline{S} هو ∣V∣−∣S∣|V|-|S|، فإنّنا نرى أنّ الإسناد متعدد الحدود R(G,k)=(G,n−k)R(G,k)=(G,n-k) (حيث nn عدد رؤوس GG) يحقّق أنّ VC(R(G,k))=ISET(G,k)VC(R(G,k))= ISET(G,k)، وهو ما يعني أنّه اختزال من المجموعة المستقلّة إلى غطاء الرؤوس.

تمرين محلول — الكليكة مكافئة للمجموعة المستقلّة

تقابل مسألة أكبر كليكة (maximum clique problem) الدالة CLIQUE:{0,1}∗→{0,1}CLIQUE:\{0,1\}^* \rightarrow \{0,1\} بحيث إنّ لرسم بياني GG وعدد kk، لدينا CLIQUE(G,k)=1CLIQUE(G,k)=1 إذا وفقط إذا كانت هناك مجموعة جزئية SS من kk رأسًا بحيث إنّ لكل u,v∈Su,v \in S مختلفَين تكون الحافة u,vu,v في GG. وتُعرف هذه المجموعة بـ_كليكة_ (clique).

برهن أنّ CLIQUE≤pISETCLIQUE \leq_p ISET و ISET≤pCLIQUEISET \leq_p CLIQUE.

الحل

إذا كان G=(V,E)G=(V,E) رسمًا بيانيًا، فإنّنا نرمز إلى تكملته (complement) بالرمز G‾\overline{G}، وهي الرسم البياني على الرؤوس نفسها VV بحيث إنّ لكل u,v∈Vu,v \in V مختلفَين، تكون الحافة {u,v}\{u,v\} موجودة في G‾\overline{G} إذا وفقط إذا لم تكن هذه الحافة موجودة في GG.

وهذا يعني أنّه لكل مجموعة SS، تكون SS مجموعة مستقلّة في GG إذا وفقط إذا كانت SS كليكة في G‾\overline{G}. وبالتالي فإنّ لكل kk لدينا ISET(G,k)=CLIQUE(G‾,k)ISET(G,k)=CLIQUE(\overline{G},k). وبما أنّ الإسناد G↦G‾G \mapsto \overline{G} يمكن حسابه بكفاءة، فإنّ هذا يعطي اختزالًا ISET≤pCLIQUEISET \leq_p CLIQUE. وإلى جانب ذلك، بما أنّ G‾‾=G\overline{\overline{G}}=G فإنّ هذا يعطي اختزالًا في الاتجاه الآخر أيضًا.

المجموعة المسيطرة

في المثالين أعلاه، كان الاختزال «تافهًا» تقريبًا: فالاختزال من المجموعة المستقلّة إلى غطاء الرؤوس لا يغيّر سوى العدد kk إلى n−kn-k، والاختزال من المجموعة المستقلّة إلى الكليكة يقلب الحواف إلى لاحواف وبالعكس. والتمرين التالي يتطلّب اختزالًا أكثر إثارةً للاهتمام بقليل.

تمرين محلول — المجموعة المسيطرة

المجموعة المسيطرة (dominating set) في رسم بياني G=(V,E)G=(V,E) هي مجموعة جزئية S⊆VS \subseteq V من الرؤوس بحيث إنّ كل u∈V∖Su \in V \setminus S يكون جارًا في GG لأجل ما s∈Ss \in S (انظر الشكل التوضيحي). ومسألة المجموعة المسيطرة (dominating set problem) هي مهمّة تحديد، على إعطائك رسمًا بيانيًا G=(V,E)G=(V,E) وعددًا kk، ما إذا كانت هناك مجموعة مسيطرة S⊆VS \subseteq V بـ ∣S∣≤k|S| \leq k أم لا. وبشكل رسمي، هذه هي الدالة DS:{0,1}∗→{0,1}DS:\{0,1\}^* \rightarrow \{0,1\} بحيث إنّ DS(G,k)=1DS(G,k)=1 إذا وفقط إذا كانت هناك مجموعة مسيطرة في GG بعدد رؤوس لا يتجاوز kk.

برهن أنّ ISET≤pDSISET \leq_p DS.

/images/introtcs/lec_12_NP-7.webp

الحل

بما أنّنا نعرف أنّ ISET≤pVCISET \leq_p VC، فإنّ استعمال التعدّدية يكفي أن نُظهر أنّ VC≤pDSVC \leq_p DS. وكما يبيّن الشكل التوضيحي، فإنّ المجموعة المسيطرة ليست شيئًا مطابقًا لغطاء الرؤوس. على أيّ حال، يمكننا ربط المسألتَيْن مع ذلك. والفكرة هي إسناد رسم بياني GG إلى رسم بياني HH بحيث يتحوّل غطاء رؤوس في GG إلى مجموعة مسيطرة في HH وبالعكس. ونفعل ذلك بأن نُدرج في HH كل رؤوس GG وحوافها، لكن لكل حافة {u,v}\{u ,v \} في GG نضيف أيضًا إلى HH رأسًا جديدًا wu,vw_{u,v} ونصله بكلٍّ من uu و vv. ولنجعل ℓ\ell عدد الرؤوس المعزولة في GG. والفكرة وراء البرهان هي أنّ بإمكاننا تحويل غطاء رؤوس SS من kk رأسًا في GG إلى مجموعة مسيطرة من k+ℓk+\ell رأسًا في HH بأن نضيف إلى SS كل الرؤوس المعزولة، وإلى جانب ذلك يمكننا تحويل كل مجموعة مسيطرة ذات حجم k+ℓk+\ell في HH إلى غطاء رؤوس في GG. وهنا تفاصيل ذلك.

وصف الخوارزمية. على مُدخل (G,k)(G,k) لمسألة غطاء الرؤوس، سنُسند GG إلى مُدخل (H,k′)(H,k') لمسألة المجموعة المسيطرة كما يلي (انظر الشكل التوضيحي لتنفيذ Python):

خوارزمية — اختزال VCVC إلى DSDS

INPUT: Graph $G=(V,E)$ and number $k$.

OUTPUT: Graph $H=(V',E')$ and number $k'$, such that $G$ has a vertex cover of size $k$ iff $H$ has a dominating set of size $k'$, that is, $DS(H,k') = VC(G,k)$.

Initialize $V' \leftarrow V, E' \leftarrow E$
For {every edge $\{u,v\} \in E$}
  Add vertex $w_{u,v}$ to $V'$
  Add edges $\{ u, w_{u,v} \}$, $\{ v, w_{u,v} \}$  to $E'$.
endfor
Let $\ell \leftarrow$ number of isolated vertices in $G$
return $( H=(V',E') \;,\;  k+\ell)$

يعمل خوارزمية — اختزال VC إلى DS في زمن متعدد الحدود، لأنّ الحلقة تأخذ O(m)O(m) خطوة حيث mm عدد الحواف، ويمكن تنفيذ كل خطوة في زمن ثابت أو خطّي على الأكثر (حسب تمثيل الرسم البياني HH). وعدّ عدد الرؤوس المعزولة في رسم بياني GG من nn رأسًا يمكن فعله في زمن O(n2)O(n^2) إذا كان GG ممثَّلًا بمصفوفة التجاور، وفي زمن O(n)O(n) إذا كان ممثَّلًا بقائمة التجاور. وعلى أيّ حال فإنّ الخوارزمية تعمل في زمن متعدد الحدود.

ولإكمال البرهان نحتاج أن نُثبت أنّ لكل G,kG,k، إذا كان H,k′H,k' هو الخرج الذي يعطيه خوارزمية — اختزال VC إلى DS على المدخل (G,k)(G,k)، فإنّ DS(H,k′)=VC(G,k)DS(H,k') = VC(G,k). ونقسم البرهان إلى قسمين. وقسم الاكتمال هو أنّه إذا كان VC(G,k)=1VC(G,k)=1 فإنّ DS(H,k′)=1DS(H,k')=1. وقسم السلامة هو أنّه إذا كان DS(H,k′)=1DS(H,k')=1 فإنّ VC(G,k)=1VC(G,k)=1.

الاكتمال. لنفترض أنّ VC(G,k)=1VC(G,k)=1. عندئذٍ هناك غطاء رؤوس S⊆VS \subseteq V بعدد رؤوس لا يتجاوز kk. ولنجعل II مجموعة الرؤوس المعزولة في GG و ℓ\ell عددها. عندئذٍ ∣S∪I∣≤k+ℓ|S \cup I| \leq k +\ell. وندّعي أنّ S∪IS \cup I مجموعة مسيطرة في HH. وبالفعل، لكل رأس vv في HH هناك ثلاثة أحالات:

  • الحالة 1: vv رأس معزول في GG. في هذه الحالة يكون vv في S∪IS \cup I.

  • الحالة 2: vv رأس غير معزول في GG، وبالتالي هناك حافة {u,v}\{ u,v \} في GG لأجل ما uu. في هذه الحالة بما أنّ SS غطاء رؤوس، فلا بدّ أن يكون أحد u,vu,v في SS، وبالتالي إمّا vv أو جار لـ vv يكون في S⊆S∪IS \subseteq S \cup I.

  • الحالة 3: vv على الشكل wu,u′w_{u,u'} لأجل جارين ما u,u′u,u' في GG. ولكن عندئذٍ بما أنّ SS غطاء رؤوس، فلا بدّ أن يكون أحد u,u′u,u' في SS، وبالتالي فإنّ SS تحوي جارًا لـ vv.

ونستنتج أنّ S∪IS \cup I مجموعة مسيطرة في H′H' من حجم لا يتجاوز k′=k+ℓk'=k +\ell، وبذلك، تحت الافتراض VC(G,k)=1VC(G,k)=1، لدينا DS(H′,k′)=1DS(H',k')=1.

السلامة. لنفترض أنّ DS(H,k′)=1DS(H,k')=1. عندئذٍ هناك مجموعة مسيطرة DD في HH من حجم لا يتجاوز k′=k+ℓk' = k +\ell. ولكل حافة {u,v}\{ u,v \} في الرسم البياني GG، إذا كانت DD تحوي الرأس wu,vw_{u,v} فإنّنا نزيل هذا الرأس ونضع uu مكانه. والجاران الوحيدان لـ wu,vw_{u,v} هما uu و vv، وبما أنّ uu جار لكلٍّ من wu,vw_{u,v} و vv، فإنّ استبدال wu,vw_{u,v} بـ uu يُبقي الخاصية بأنّها مجموعة مسيطرة. وإلى جانب ذلك، فإنّ هذا التغيير لا يمكن أن يزيد حجم DD. وعليه، بعد هذا التعديل، يمكننا أن نفترض أنّ DD مجموعة مسيطرة بعدد رؤوس لا يتجاوز k+ℓk+\ell ولا تحوي أيّ رؤوس من الشكل wu,vw_{u,v}.

ولنجعل II مجموعة الرؤوس المعزولة في GG. وهذه الرؤوس معزولة أيضًا في HH، وبالتالي فلا بدّ من إدراجها في DD (فالرأس المعزول لا بدّ أن يكون في أيّ مجموعة مسيطرة، إذ لا يجار له). ولنجعل S=D∖IS = D \setminus I. عندئذٍ ∣S∣≤I|S| \leq I. وندّعي أنّ SS غطاء رؤوس في GG. وبالفعل، لكل حافة {u,v}\{u,v\} في GG، إمّا الرأس wu,vw_{u,v} أو أحد جيرانه يجب أن يكون في SS بموجب خاصية المجموعة المسيطرة. لكن بما أنّنا تأكّدنا من أنّ SS لا تحوي أيًّا من الرؤوس على الشكل wu,vw_{u,v}، فلا بدّ من أن يكون إمّا uu أو vv في SS. وهذا يُظهر أنّ SS غطاء رؤوس لـ GG من حجم لا يتجاوز kk، ما يثبت أنّ VC(G,k)=1VC(G,k)=1.

نتيجة لازمة لـ خوارزمية — اختزال VC إلى DS وللاختزال الآخر الذي رأيناه حتى الآن هي أنّه إذا كان DS∈PDS \in \mathbf{P} (أي أنّ المجموعة المسيطرة لها خوارزمية زمن متعدد الحدود) فإنّ 3SAT∈P3SAT \in \mathbf{P} (أي أنّ لـ 3SAT3SAT خوارزمية زمن متعدد الحدود). ومن الجهة المعاكسة (contra positive)، إذا لم يكن لـ 3SAT3SAT خوارزمية زمن متعدد الحدود فإنّ المجموعة المسيطرة أيضًا ليس لها كذلك.

/images/introtcs/lec_12_NP-8.webp

تشريح الاختزال

/images/introtcs/lec_12_NP-9.webp

يعطي اختزال تمرين محلول — المجموعة المسيطرة تصويرًا جيّدًا لتشريح الاختزال. ويتألّف الاختزال من أربعة أجزاء:

  • وصف الخوارزمية: هذا هو الوصف لـ_كيف_ تُسند الخوارزمية مدخلًا إلى خرج. فمثلًا، في تمرين محلول — المجموعة المسيطرة هذا هو الوصف لكيفية إسنادنا مُدخل (G,k)(G,k) لمسألة غطاء الرؤوس إلى مُدخل (H,k′)(H,k') لمسألة المجموعة المسيطرة.

  • تحليل الخوارزمية: لا يكفي أن نصف كيف تعمل الخوارزمية، بل علينا أيضًا أن نشرح لماذا تعمل. وبخاصة علينا أن نقدّم تحليلًا (analysis) يشرح لماذا الاختزال كفؤ (أي يعمل في زمن متعدد الحدود) و صحيح (يحقّق G(R(x))=F(x)G(R(x))=F(x) لكل xx.)، وبخاصة، فإنّ مكوّنات تحليل الاختزال RR تتضمّن:

    • الكفاءة: نحتاج أن نُظهر أنّ RR تعمل في زمن متعدد الحدود. وفي معظم الاختزالات التي نصادفها، فهذا الجزء مباشر، إذ إنّ الاختزالات التي نستعملها عادةً تتضمّن عددًا ثابتًا من الحلقات المتداخلة، كلّ منها تتضمّن عددًا ثابتًا من العمليات. فمثلًا، لا يكاد اختزال تمرين محلول — المجموعة المسيطرة سوى تعداد حواف ورؤوس الرسم البياني المُدخل.

    • الاكتمال: في اختزال RR الذي يثبت F≤pGF \leq_p G، فإنّ شرط الاكتمال هو الشرط القائل بأنّه لكل x∈{0,1}∗x\in \{0,1\}^*، إذا كان F(x)=1F(x) = 1 فإنّ G(R(x))=1G(R(x))=1. وعادةً نبني الاختزال بحيث يتحقّق ذلك، بأن نعطي طريقة لإسناد «شهادة/حلّ» (certificate/solution) تُثبت أنّ F(x)=1F(x)=1 إلى حلّ يُثبت أنّ G(R(x))=1G(R(x))=1. فمثلًا، في تمرين محلول — المجموعة المسيطرة بنينا الرسم البياني HH بحيث إنّ لكل غطاء رؤوس SS في GG تكون المجموعة S∪IS \cup I (حيث II هي الرؤوس المعزولة) مجموعة مسيطرة في HH.

    • السلامة: هذا هو الشرط القائل بأنّه إذا كان F(x)=0F(x)=0 فإنّ G(R(x))=0G(R(x))=0 أو (بأخذ العكس) إذا كان G(R(x))=1G(R(x))=1 فإنّ F(x)=1F(x)=1 وأحيانًا ما يكون هذا مباشرًا، لكنّه غالبًا ما يكون أصعب في الإظهار من شرط الاكتمال، وفي الاختزالات الأكثر تقدّمًا (مثل اختزال 3SAT≤pISET3SAT \leq_p ISET في مبرهنة — صعوبة المجموعة المستقلّة) فإنّ إظهار السلامة هو الجزء الرئيسي من التحليل. فمثلًا، في تمرين محلول — المجموعة المسيطرة، من أجل إظهار السلامة احتجنا أن نُظهر أنّه لكل مجموعة مسيطرة DD في الرسم البياني HH، وُجد غطاء رؤوس SS في الرسم البياني GG من حجم لا يتجاوز ∣D∣−ℓ|D|-\ell (حيث ℓ\ell هو عدد الرؤوس المعزولة). وكان هذا صعبًا لأنّ المجموعة المسيطرة DD لا توجد بالضرورة أن تكون هي التي «أقصدها» في ذهننا. وبخاصة، في البرهان أعلاه احتجنا أن نعدّل DD نضمن ألّا تحوي رؤوسًا من الشكل wu,vw_{u,v}، وكان من المهمّ أن نُظهر أنّ هذا التعديل يُبقي خاصية أنّ DD مجموعة مسيطرة، وأيضًا ألّا يجعلها أكبر.

    متى ما احتجتَ أن تقدّم اختزالًا، فينبغي أن تتأكّد من أنّ وصفك يتضمّن كل هذه الأجزاء. وإن كان مداعاك أحيانًا هو نسج وصف الاختزال وتحليله معًا، فإنّ فصل الاثنين يكون عادةً أوضح، كما أنّه من المفيد أيضًا تفكيك التحليل إلى مكوّناته الثلاثة: الكفاءة والاكتمال والسلامة.

اختزال المجموعة المستقلّة إلى أكبر قطع

سنعرض الآن أنّ مسألة المجموعة المستقلّة تختزل إلى مسألة أكبر قطع (أو «أقصى قطع» (max cut))، وهي مُنمذَجة على هيئة الدالة MAXCUTMAXCUT التي، على مدخل زوج (G,k)(G,k)، تُخرج 11 إذا وفقط إذا كان GG يحوي قطعًا يقطع kk حافة على الأقل. وبما أنّ كليهما مسألة رسوم بيانية، فإنّ الاختزال من المجموعة المستقلّة إلى أقصى قطع يُسند رسمًا بيانيًا إلى آخر، لكن—كما سنرى—لا يلزم أن يكون للرسم البياني الخرج الرؤوس أو الحواف ذاتها التي في الرسم البياني المُدخل.

مبرهنة — صعوبة أقصى قطع

ISET≤pMAXCUTISET \leq_p MAXCUT

سنُسند رسمًا بيانيًا GG إلى رسم بياني HH بحيث تتحوّل مجموعة مستقلّة كبيرة في GG إلى تقسيم يقطع حواف كثيرة في HH. ويمكننا أن نفكّر في قطع في HH على أنّه تلوين لكل رأس إمّا «أزرق» أو «أحمر». وسنضيف رأس «مصدر» خاصًّا s∗s^*، ونصله بكل الرؤوس الأخرى، ونفترض دون خسارة أنّه ملوَّن بالأزرق. وبذلك، كلّما لوّنّا رؤوسًا أكثر بالأحمر، قطعنا حواف أكثر من s∗s^*. والآن، لكل حافة u,vu,v في الرسم البياني الأصلي GG سنضيف «آلية» (gadget) خاصّة، أي رسمًا بيانيًا فرعيًا صغيرًا يتضمّن uu و vv والمصدر s∗s^* ورأسين إضافيّين. ونصمّم الآلية بحيث إذا لم تكن الرؤوس الحمراء مجموعة مستقلّة في GG فإنّ القطع المقابل في HH يكون «مُعاقَبًا» بالمعنى أنّه لن يقطع حواف كثيرة. وبعد أن نضع لأنفسنا هذا الهدف، ليس من الصعب إيجاد آلية تحقّقه — انظر البرهان أدناه. وإلى ذلك، فإنّ التقنية المستفادة (takeaway technique) هي استعمال آلية (وهذه المرّة أكثر دقّة قليلًا).

في اختزال  إلى  نُطابق رسمًا بيانيًّا  ذا  رأسًا و حافةً إلى الرسم البياني  ذا  رأسًا و حافةً على النحو التالي. يحوي الرسم  رأس «مصدر» خاصًّا ، و رؤوس ، و رأسًا  يقابل كلّ زوجٍ منهم حافةً من . ونضع حافةً بين  و لكلّ ، وإذا كانت الحافة رقم  في  هي  أضفنا الحواف الخمس . والمقصود أنّنا إن قطعنا  أو  على الأكثر عن  استطعنا قطع  من هذه الحواف الخمس، بينما إن قطعنا  و كليهما عن  استطعنا قطع ثلاثةٍ منها على الأكثر.

برهان

سنحوّل رسمًا بيانيًا GG من nn رأسًا و mm حافة إلى رسم بياني HH من n+1+2mn+1+2m رأسًا و n+5mn+5m حافة على النحو التالي (انظر أيضًا الشكل التوضيحي). ويحتوي الرسم البياني HH على كل رؤوس GG (لكن ليس الحواف بينها!) وإلى جانب ذلك فإنّ HH يحتوي أيضًا على: \

  • رأس خاصّ s∗s^* متّصل بكل رؤوس GG \
  • لكل حافة e={u,v}∈E(G)e=\{u,v\} \in E(G) رأسين e0,e1e_0,e_1 بحيث إنّ e0e_0 متّصل بـ uu و e1e_1 متّصل بـ vv، وإلى جانب ذلك نضيف الحواف {e0,e1},{e0,s∗},{e1,s∗}\{e_0,e_1 \},\{ e_0,s^* \},\{e_1,s^*\} إلى HH.

وسيترتّب على مبرهنة — صعوبة أقصى قطع بإظهار أنّ GG يحتوي على مجموعة مستقلّة من حجم kk على الأقل إذا وفقط إذا كان HH يحوي قطعًا يقطع k+4mk+4m حافة على الأقل. وسنبرهن الآن على اتجاهَي هذا التكافؤ:

القسم الأوّل: الاكتمال. إذا كانت II مجموعة مستقلّة من kk عنصرًا في GG، فيمكننا أن نعرّف SS لتكون قطعًا في HH على الشكل التالي: نُسند إلى SS أن تحوي كل رؤوس II، ولكل حافة e={u,v}∈E(G)e=\{u,v \} \in E(G)، إذا كان u∈Iu\in I و v∉Iv\not\in I فإنّنا نضيف e1e_1 إلى SS؛ وإذا كان u∉Iu\not\in I و v∈Iv\in I فإنّنا نضيف e0e_0 إلى SS؛ وإذا كان u∉Iu\not\in I و v∉Iv\not\in I فإنّنا نضيف e0e_0 و e1e_1 كلاهما إلى SS. (لا نحتاج للقلقّ من الحالة التي يكون فيها uu و vv كلاهما في II لأنّ II مجموعة مستقلّة.) ويمكننا أن نتحقّق أنّه في جميع الحالات يكون عدد الحواف من SS إلى تكملتها في الآلية المقابلة لـ ee أربعة (انظر الشكل التوضيحي). وبما أنّ s∗s^* ليست في SS، ولدينا أيضًا kk حافة من s∗s^* إلى II، أي ما مجموعه k+4mk+4m حافة.

القسم الثاني: السلامة. لنفترض أنّ SS قطع في HH يقطع C=k+4mC=k+4m حافة على الأقل. يمكننا أن نفترض أنّ s∗s^* ليست في SS (وإلّا يمكننا «قلب» SS إلى تكملتها S‾\overline{S}، إذ لا يغيّر ذلك حجم القطع). والآن لتكن II مجموعة الرؤوس في SS التي تقابل رؤوس GG الأصلية. فإذا كانت II مجموعة مستقلّة من حجم kk لكنّا قد فرغنا من العمل. قد لا يكون هذا هو الحال دائمًا، لكنّنا سنرى أنّه إذا لم تكن II مجموعة مستقلّة فإنّ حجمها أيضًا أكبر من kk. وبخاصة، نعرّف min=∣E(I,I)∣m_{in}=|E(I,I)| لتكون مجموعة الحواف في GG الموجودة في II، ولنجعل mout=m−minm_{out}=m-m_{in} (أي أنّه إذا كانت II مجموعة مستقلّة فإنّ min=0m_{in}=0 و mout=mm_{out}=m). وبموجب خصائص آليتنا نعرف أنّه لكل حافة {u,v}\{u,v\} في GG، يمكننا قطع 33 حواف على الأكثر عندما يكون uu و vv كلاهما في SS، وأربع حواف على الأكثر في غير ذلك. وبالتالي فإنّ العدد CC للحواف المقطوعة بواسطة SS يحقّق C≤∣I∣+3min+4mout=∣I∣+3min+4(m−min)=∣I∣+4m−minC \leq |I| + 3m_{in}+4m_{out} = |I|+ 3m_{in} + 4(m-m_{in})=|I|+4m-m_{in}. وبما أنّ C=k+4mC = k +4m فإنّنا نحصل على ∣I∣−min≥k|I|-m_{in} \geq k. والآن يمكننا تحويل II إلى مجموعة مستقلّة I′I' بأن نمرّ على كل واحدة من الحواف minm_{in} الموجودة داخل II ونزيل أحد طرفي الحافة منها. فالمجموعة الناتجة I′I' هي مجموعة مستقلّة في الرسم البياني GG من حجم ∣I∣−min≥k|I|-m_{in} \geq k، وبهذا يُكمل البرهان على شرط السلامة.

في اختزال المجموعة المستقلّة إلى أقصى قطع، لكلّ  لدينا «آلية» (gadget) تقابل الحافة رقم  أيّ  في الرسم البياني الأصلي. وإذا اعتبرنا جانب القطع الذي يحوي رأس المصدر الخاصّ  «أبيض» والجانب الآخر «أزرق»، فيُظهر الشكلان الأيسر والأوسط أنّ  و إن لم يكونا أزرقَين معًا فيمكننا قطع أربع حوافٍ من الآلية. وعلى العكس، بسرد كلّ الاحتمالات يمكن التحقّق من أنّ  و إن كانا أزرقَين معًا، فمهما لوّنّا الرؤوس الوسيطة ، سنقطع ثلاثة حوافٍ من الآلية على الأكثر. ويحوي الشكل أعلاه حوافّ الآلية فحسب، ويتجاهل الحواف التي تصل  بالرؤوس .

اختزال المجموعة المستقلّة إلى أقصى قطع. على الجانب الأيمن شيفرة بايثون تنفّذ الاختزال. وعلى الجانب الأيسر مثالٌ على مخرجات الاختزال حين نطبّقه على مُدخل المجموعة المستقلّة الناتج عن تشغيل اختزال isetnpc على صيغة 3CNF .

اختزال 3SAT إلى أطول مسار

ملاحظة: لا يزال هذا القسم فوضويًّا بعض الشيء؛ لا تتردّد في تخطّيه أو في قراءته فقط دون الدخول في تفاصيل البرهان. يظهر البرهان في القسم 7.5 من كتاب Sipser.

ومن أهمّ الخوارزميات الأساسيّة في علوم الحاسوب خوارزمية دييسترا (Dijkstra) لإيجاد أقصر مسار (shortest path) بين رأسين. ونعرض الآن أنّه، على النقيض من ذلك، فإنّ خوارزمية كفؤة لمسألة أطول مسار كانت ستترتّب عليها خوارزمية زمن متعدد الحدود لـ 3SAT.

مبرهنة — صعوبة أطول مسار

3SAT≤pLONGPATH3SAT \leq_p LONGPATH

/images/introtcs/lec_12_NP-10.webp

/images/introtcs/lec_12_NP-11.webp

لإثبات مبرهنة — صعوبة أطول مسار نحتاج أن نُظهر كيفية تحويل صيغة 3CNF φ\varphi إلى رسم بياني GG ورأسين s,ts,t بحيث إنّ GG له مسار بطول kk على الأقل إذا وفقط إذا كانت φ\varphi مُشبِعة. وتعرض فكرة الاختزال في الشكل التوضيحي والشكل التوضيحي. وسنبني رسمًا بيانيًا يحوي مسارًا «متعرّجًا» طويلًا محتملًا يقابل كل المتغيّرات في الصيغة. وسنضيف «آلية» (gadget) مقابلة لكل بند من بنود φ\varphi بحيث لا نتمكّن من استعمال هذه الآليات إلا إذا كان لدينا إسناد مُشبِع.

def TSAT2LONGPATH(φ):
    """Reduce 3SAT to LONGPATH"""
    def var(v): # return variable and True/False depending if positive or negated
        return int(v[2:]),False if v[0]=="¬" else int(v[1:]),True
    n = numvars(φ)
    clauses = getclauses(φ)
    m = len(clauses)
    G =Graph() 
    G.edge("start","start_0")
    for i in range(n): # add 2 length-m paths per variable
        G.edge(f"start_{i}",f"v_{i}_{0}_T")
        G.edge(f"start_{i}",f"v_{i}_{0}_F")
        for j in range(m-1): 
            G.edge(f"v_{i}_{j}_T",f"v_{i}_{j+1}_T")
            G.edge(f"v_{i}_{j}_F",f"v_{i}_{j+1}_F")
        G.edge(f"v_{i}_{m-1}_T",f"end_{i}")
        G.edge(f"v_{i}_{m-1}_F",f"end_{i}")
        if i<n-1:
            G.edge(f"end_{i}",f"start_{i+1}")
    G.edge(f"end_{n-1}","start_clauses")
    for j,C in enumerate(clauses): # add gadget for each clause
        for v in enumerate(C):
            i,sign = var(v[1])
            s = "F" if sign else "T"
            G.edge(f"C_{j}_in",f"v_{i}_{j}_{s}")
            G.edge(f"v_{i}_{j}_{s}",f"C_{j}_out")
        if j<m-1:
            G.edge(f"C_{j}_out",f"C_{j+1}_in")
    G.edge("start_clauses","C_0_in")
    G.edge(f"C_{m-1}_out","end")
    return G, 1+n*(m+1)+1+2*m+1

برهان

نبني رسمًا بيانيًا GG «يتعرّج» من ss إلى tt على النحو التالي. وبعد ss نضيف سلسلة من nn حلقة طويلة. لكل حلقة «مسار علوي» و«مسار سفلي». ولا يمكن لمسار بسيط أن يأخذ المسارين العلوي والسفلي معًا، ومن ثمّ فإنّه سيحتاج إلى أخذ واحد منهما بالضبط للوصول من ss إلى tt.

وقصدنا هو أن يقابل مسار في الرسم البياني إسنادًا x∈{0,1}nx\in \{0,1\}^n، بمعنى أنّ أخذ المسار العلوي في الحلقة رقم ii يقابل إسناد xi=1x_i=1، وأخذ المسار السفلي يقابل إسناد xi=0x_i=0. وحين ننتهي من التعرّج عبر الحلقات nn كلها المقابلة للمتغيّرات للوصول إلى tt، نحتاج إلى المرور عبر mm «العوائق»: لكل بند jj سنحوي آلية صغيرة تتكوّن من زوج من الرؤوس sj,tjs_j,t_j بينهما ثلاثة مسارات. فمثلًا، إذا كان البند رقم jj على الشكل x17∨x‾55∨x72x_{17} \vee \overline{x}_{55} \vee x_{72}، فإنّ أحد المسارات سيمرّ عبر رأس في الحلقة السفلية المقابلة لـ x17x_{17}، وآخر سيمرّ عبر رأس في الحلقة العلوية المقابلة لـ x55x_{55}، والثالث سيمرّ عبر الحلقة السفلية المقابلة لـ x72x_{72}. ونرى أنّه لو ذهبنا في المرحلة الأولى متّابعة مع إسناد مُشبِع لاستطعنا إيجاد رأسٍ حرّ ننتقل من sjs_j إلى tjt_j. ونصل t1t_1 بـ s2s_2، و t2t_2 بـ s3s_3، وهكذا، ونصل tmt_m بـ tt. وعليه فإنّ الإسناد المُشبِع سيقابل مسارًا من ss إلى tt يمرّ عبر مسار واحد في كل حلقة مقابلة للمتغيّرات، وعبر مسار واحد في كل حلقة مقابلة للبنود. ويمكننا أن نجعل الحلقة المقابلة للمتغيّرات طويلة بما يكفي بحيث لا بدّ من أخذ المسار كاملًا في كل حلقة لنحصل على فرصة مقابلة على مسار طويل كالمقابل لإسناد مُشبِع. ولكن إذا فعلنا ذلك، فإنّ الطريقة الوحيدة لبلوغ tt هي أن تكون المسارات التي أخذناها قد قابلت إسنادًا مُشبِعًا، إذ إنّنا وإلّا سنكون أمام بند jj واحد لا نستطيع بلوغ tjt_j منه sjs_j دون استعمال رأس استعملناه من قبل.

/images/introtcs/lec_12_NP-12.webp

ملخّص العلاقات

لقد بيّنا أنّ هناك عددًا من الدوال FF التي يمكننا لها إثبات جملة من الشكل «إذا كان F∈PF\in \mathbf{P} فإنّ 3SAT∈P3SAT \in \mathbf{P}». وبذلك فإنّ إيجاد خوارزمية زمن متعدد الحدود لأيٍّ من هذه المسائل—ولو واحدة فقط—يستلزم خوارزمية زمن متعدد الحدود لـ 3SAT3SAT (انظر مثلًا الشكل التوضيحي). وسنبيّن في صنف NP والاكتمال في NP ومبرهنة كوك-ليفن الاتجاه المعاكس («إذا كان 3SAT∈P3SAT \in \mathbf{P} فإنّ F∈PF\in \mathbf{P}») لهذه الدوال، مما يتيح لنا أن نستنتج أنّ لها تعقيدًا متكافئًا (equivalent complexity) مع 3SAT3SAT.

/images/introtcs/lec_12_NP-13.webp

خلاصة

  • يمكن ربط التعقيد الحاسوبي لمسائل حاسوبية كثيرة تبدو غير مترابطة ببعضها باستخدام الاختزالات (reductions).

  • إذا كان F≤pGF \leq_p G فإنّ خوارزمية زمن متعدد الحدود لـ GG يمكن تحويلها إلى خوارزمية زمن متعدد الحدود لـ FF.

  • وبالمثل، إذا كان F≤pGF \leq_p G ولم يكن لـ FF خوارزمية زمن متعدد الحدود فإنّ GG ليس لها كذلك.

  • طوّرنا تقنيات عدّة لإظهار أنّ 3SAT≤pF3SAT \leq_p F لدوال FF مهمّة. وأحيانًا يمكننا فعل ذلك باستعمال تعدّادية (transitivity) الاختزالات: إذا كان 3SAT≤pG3SAT \leq_p G و G≤pFG \leq_p F فإنّ 3SAT≤pF3SAT \leq_p F.

تمارين

ملاحظات ببليوغرافية

يُعرَّف في الأدبيّات عددٌ من مفاهيم الاختزال. والمفهوم المعرَّف في تعريف — الاختزال في زمن متعدد الحدود يُعرف غالبًا بـ_اختزال الإسناد_ (mapping reduction)، أو اختزال متعدّد إلى واحد (many to one reduction)، أو اختزال كارب (Karp reduction).

أما المجموعة المستقلّة العظمى (maximal) (بخلاف أكبر) (maximum) فهي مهمّة إيجاد «عظمى محلّية» (local maximum) لمجموعة مستقلّة: أي مجموعة مستقلّة SS لا يمكن إضافة رأس إليها دون فقدان خاصية الاستقلال (وتُعرف هذه المجموعة بـ_غطاء رؤوس_). وبخلاف إيجاد مجموعة مستقلّة أكبر، يمكن إيجاد مجموعة مستقلّة عظمى بكفاءة بواسطة خوارزمية جشعة، لكنّ هذه العظمى المحلّية قد تكون أصغر بكثير من العظمى الكلّية.

اختزال المجموعة المستقلّة إلى أقصى قطع مأخوذ من هذه الملاحظات. وصورة مسار هاملتوني عبر مُجسّم الدوديكاهدرون من Christoph Sommer.

لقد ذكرنا أنّ الحدّ الفاصل بين الاختزالات المستعملة في تصميم الخوارزميات وتلك المستعملة في إظهار الصعوبة أحيانًا غير واضح. ومن أفضل الأمثلة على ذلك مجال حلّال SAT (SAT Solvers) (انظر [@gomes2008satisfiability]). وفي هذا المجال يستعمل الناس خوارزميات لـ SAT (التي تأخذ زمنًا أسّيًا في الحالة الأسوأ لكنّها أسرع بكثير عادةً على مُدخلات كثيرة عمليًا) مع اختزالات من الشكل F≤pSATF \leq_p SAT لاستخراج خوارزميات لدوال FF أخرى مهمّة.


  1. إن كنتَ ملمًّا بترميز المصفوفات (matrix notation) فيمكنك أن تلاحظ أنّ مثل هذه المعادلات يمكن كتابتها على الصورة Ax=bAx = \mathbf{b} حيث AA مصفوفة m×nm\times n مُدخَلاتها من 0/10/1 و b∈Nm\mathbf{b} \in \N^m. ↩︎