مقدمة في علوم الحاسوب النظرية › NP وNP-كامل ومبرهنة كوك-ليفين 17 / 26 السابق التالي

صنف NP والاكتمال في NP ومبرهنة كوك-ليفن {#cooklevinchap }

صنف NP والاكتمال في NP ومبرهنة كوك-ليفن

  • تقديم الصنف NP\mathbf{NP} الذي يضمّ عددًا كبيرًا من المسائل الحاسوبية المهمة \
  • الاكتمال في NP\mathbf{NP} (NP-completeness): دليل على أنّ مسألة ما قد تكون باهظة الحوسبة. \
  • مسألة P\mathbf{P} مقابل NP\mathbf{NP}.

"في هذه الورقة نقدّم مبرهنات تُشير، لكنّها لا تُفيد، إلى أنّ هذه المسائل،وكثير غيرها، ستظلّ باهظة الحوسبة إلى الأبد", ريتشارد كارب، 1972

"من المُحزن أن نقول، لكنّ ذلك قد يستغرق سنواتٍ كثيرة أخرى، إن وُجد أصلًا، قبل أن نفهم حقًّا «القدرة السّريّة للاثنين»... 2-SAT سهل، و3-SAT صعب، والمطابقة ثنائية الأبعاد سهلة، والمطابقة ثلاثية الأبعاد صعبة. لماذا؟ آه، لماذا؟" يوجين لوغلر

حتى الآن بيّنا أنّ 3SAT ليس أصعب من المعادلات التربيعية، ولا المجموعة المستقلّة (Independent Set)، ولا القطع الأقصى (Maximum Cut)، ولا أطول مسار (Longest Path). ولكنّ بيّان أنّ هذه المسائل متكافئة حاسوبيًّا (computationally equivalent) يتطلّب إعطاء اختزالات في الاتجاه المعاكس أيضًا، أي اختزال كلٍّ من هذه المسائل إلى 3SAT كذلك. وي تبيّن أنّه يمكن اختزال هذه المسائل كلّها إلى 3SAT في ضربة واحدة.

وفي الحقيقة تمتدّ هذه النتيجة إلى ما هو أبعد بكثير من هذه المسائل بعينها. فجميع المسائل التي ناقشناها في الاختزال في زمن متعدد الحدود، وعدد كبير جدًا من المسائل الأخرى، تتشارك صفةً مشتركة واحدة: إنّها جميعًا مسائل بحث (search)، أي أنّ الهدف هو أن نقرّر، بالنظر إلى مدخل xx، ما إذا كان ثمّة حلّ yy (solution) يحقّق شرطًا يمكن التحقّق منه في وقت متعدد الحدود. على سبيل المثال، في 3SAT يكون المدخل صيغةً والحلّ إسنادًا (assignment) للمتغيّرات؛ وفي Max-Cut يكون المدخل رسمًا بيانيًا (graph) والحلّ قطعًا (cut) في الرسم البياني؛ وهكذا دواليك. وي تبيّن أنّ كلّ مسألة بحث من هذا النوع يمكن اختزالها إلى 3SAT.

في هذا الفصل سنرى تعريف صنف التعقيد NP\mathbf{NP} - وهو من أهم التعريفات في هذا الكتاب، ومبرهنة كوك-ليفن - وهي من أهم البرهنات فيه. حدسيًا، يقابل الصنف NP\mathbf{NP} صنف المسائل التي يكون فيها التحقّق من حلّ سهلًا (أي إنّ التحقّق يمكن أن يتمّ بخوارزمية تعمل في وقت متعدد الحدود). على سبيل المثال، إيجاد إسناد مُرضٍ (satisfying) لصيغة 2SAT أو 3SAT مسألة من هذا النوع، لأننا إذا أعطِينا إسنادًا لقيم المتغيّرات في صيغة 2SAT أو 3SAT أمكَنّا التحقّق بكفاءة من أنه يحقّق كل القيود. وبدقّة أكثر، NP\mathbf{NP} هو صنف مسائل القرار (أي الدوال المنطقية أو اللغات) الموافقة لتحديد وجود حلّ من هذا النوع، وإنّنا سنرى في ماذا لو كان P=NP؟ أنّ مسائل القرار ومسائل البحث مترابطة إلى حدّ كبير.

وكما تبيّن أمثلة 2SAT و3SAT، فإنّ هناك بعض المسائل الحاسوبية (أي الدوال) الموجودة في NP\mathbf{NP} لدينا لها خوارزمية تعمل في وقت متعدد الحدود، وبعضها الآخر لا نعرف له خوارزمية من هذا النوع. ومن الأسئلة المفتوحة الجوهرية ما إذا كانت كلّ الدوال في NP\mathbf{NP} لها خوارزمية تعمل في وقت متعدد الحدود، أو بمعنى آخر (لنستعمل قدرًا يسيرًا من الرياضيات) ما إذا كان P=NP\mathbf{P}=\mathbf{NP}. في هذا الفصل سنرى أنّ هناك بعض الدوال في NP\mathbf{NP} التي هي، بمعنى معيّن، «الأصعب ضمن NP\mathbf{NP} كلّه»، بالمعنى أنّه إذا كانت لدى إحدى هذه الدوال خوارزمية تعمل في وقت متعدد الحدود فإنّ كلّ دوال NP\mathbf{NP} لها خوارزمية من هذا النوع. وتُعرَف هذه الدوال بأنّها NP\mathbf{NP}-كاملة (NP complete). وتنصّ مبرهنة كوك-ليفن على أنّ 3SAT هي NP\mathbf{NP}-كاملة. وباستعمال شبكة معقّدة من الاختزال في وقت متعدد الحدود، استنتج الباحثون من مبرهنة كوك-ليفن أنّ آلاف المسائل الحاسوبية من مختلف مجالات الرياضيات والعلوم الطبيعية والاجتماعية والهندسة وغيرها هي NP\mathbf{NP}-كاملة. وتوفّر هذه النتائج دليلًا قويًّا على أنّه يتعذّر على خوارزمية تعمل في وقت متعدد الحدود أن تحلّ كلّ هذه المسائل في الحالة الأسوأ.

نظرة عامة على نتائج هذا الفصل. نُعرِّف  بأنها تحتوي كلّ مسائل القرار التي يمكن التحقّق من حلّها بكفاءة. ونتيجة هذا الفصل الرئيسية هي مبرهنة كوك-لفين (cook-levin-thm) التي تنصّ على أنّ  لديها خوارزميةٌ متعدّد الحدود إذاً وفقط إذاً كان لكلّ مشكلةٍ في  خوارزميةٌ متعدّد الحدود. ويمكن صياغة هذه المبرهنة أيضًا بأنّ  مكتملةٌ بالنسبة إلى . سنُثبت مبرهنة كوك-لفين بتعريف المسألتين الوسيطيتين  و، وإثبات أنّ  مكتملة ، ثمّ إثبات أنّ .

صنف NP\mathbf{NP}

لنجعل ما سبق دقيقًا، سنقدّم التعريف الرياضي التالي. نعرّف الصنف NP\mathbf{NP} على أنّه يضمّ كلّ الدوال المنطقية الموافقة لمسألة بحث من الشكل المذكور أعلاه. أي إنّ الدالة المنطقية FF تنتمي إلى NP\mathbf{NP} إذا كان FF من الشكل الذي، على مدخل سلسلة xx، تكون F(x)=1F(x)=1 إذا وفقط إذا وُجدت سلسلة «حلّ» ww بحيث يحقّق الزوج (x,w)(x,w) شرطًا يمكن التحقّق منه في وقت متعدد الحدود. وبصياغة رسمية، يُعرَّف NP\mathbf{NP} على النحو التالي:

/images/introtcs/lec_13_Cook_Levin-1.webp

تعريف — NP

نقول إنّ F:{0,1}∗→{0,1}F:\{0,1\}^* \rightarrow \{0,1\} تنتمي إلى NP\mathbf{NP} إذا وُجد عدد صحيح a>0a>0 ودالة V:{0,1}∗→{0,1}V:\{0,1\}^* \rightarrow \{0,1\} بحيث V∈PV\in \mathbf{P} ولكلّ x∈{0,1}nx\in \{0,1\}^n، F(x)=1⇔∃w∈{0,1}na s.t. V(xw)=1  . F(x)=1 \Leftrightarrow \exists_{w \in \{0,1\}^{n^a}} \text{ s.t. } V(xw)=1 \;.

بعبارة أخرى، كي تنتمي FF إلى NP\mathbf{NP}، يجب أن توجد دالة تحقّق VV قابلة للحساب في وقت متعدد الحدود، بحيث إذا كان F(x)=1F(x)=1 فيجب أن توجد ww (بطول متعدد الحدود في ∣x∣|x|) بحيث V(xw)=1V(xw)=1، وإذا كان F(x)=0F(x)=0 فإنّ ذلك يعني أنّ لكلّ ww من هذا النوع يكون V(xw)=0V(xw)=0. ولأنّ وجود هذه السلسلة ww يشهد بأنّ F(x)=1F(x)=1، فإنّ ww يُشار إليها غالبًا بأنّها شهادة (certificate) أو شاهد (witness) أو برهان (proof) على أنّ F(x)=1F(x)=1.

انظر أيضًا الشكل التوضيحي لتجد رسمًا توضيحيًّا لـ تعريف — NP. واسم NP\mathbf{NP} اختصار لعبارة «زمن متعدد الحدود غير الحتميّ (non-deterministic polynomial time)»، وهو اسم استُعمل لأسباب تاريخية؛ انظر الملاحظات الببليوغرافية. وأحيانًا ما تُسمّى السلسلة ww في المعادلة حلًّا (solution) أو شهادة (certificate) أو شاهدًا (witness) للمدخل xx.

تمرين محلول — تعريف بديل لـ NP\mathbf{NP}

بيّن أنّ الشرط ∣w∣=∣x∣a|w|=|x|^a في تعريف — NP يمكن استبداله بالشرط ∣w∣≤p(∣x∣)|w| \leq p(|x|) بالنسبة إلى متعدّدي حدود pp ما. أي، اثبت أنّه لكلّ F:{0,1}∗→{0,1}F:\{0,1\}^* \rightarrow \{0,1\}، لدينا F∈NPF \in \mathbf{NP} إذا وفقط إذا كانت هناك آلة تورينج (Turing machine) تعمل في وقت متعدد الحدود VV ومتعدّد حدود p:N→Np:\N \rightarrow \N بحيث لكلّ x∈{0,1}∗x\in \{0,1\}^* يكون F(x)=1F(x)=1 إذا وفقط إذا وُجدت w∈{0,1}∗w\in \{0,1\}^* بحيث ∣w∣≤p(∣x∣)|w| \leq p(|x|) بحيث V(x,w)=1V(x,w)=1.

الحل

اتجاه «فقط إذا» (أي أنّه إذا كان F∈NPF\in \mathbf{NP} فإنّ هناك خوارزمية VV ومتعدّد حدود pp كما سبق) يتبع فورًا من تعريف — NP بت اختيار p(n)=nap(n)=n^a. أمّا اتجاه «إذا» فالفكرة فيه أنّه إذا كانت سلسلة ww بحجم لا يتجاوز p(n)p(n) حيث pp متعدّد حدود من الدرجة dd، فإنّ هناك قيمة n0n_0 بحيث لكلّ n>n0n > n_0 يكون w∣<nd+1w| < n^{d+1}. وعليه يمكننا ترميز ww بسلسلة طولها بالضبط nd+1n^{d+1} عبر حشوها (padding) بالرمز 11 وبعدد مناسب من الأصفار. وعليه إذا كانت هناك خوارزمية VV ومتعدّد حدود pp كما سبق، فيمكننا تعريف خوارزمية V′V' تفعل الآتي على المدخل x,w′x,w' مع ∣x∣=n|x|=n و ∣w′∣=na|w'|=n^a:

  • إذا كان n≤n0n \leq n_0 فإنّ V′(x,w′)V'(x,w') يتجاهل w′w' ويعدّ على كلّ ww التي طولها لا يتجاوز p(n)p(n) ويُخرج 11 إذا وُجدت ww بحيث V(x,w)=1V(x,w)=1. (ولأنّ n<n0n < n_0 فإنّ هذا يستغرق عددًا ثابتًا من الخطوات فقط.)

  • إذا كان n>n0n> n_0 فإنّ V′(x,w′)V'(x,w') «يزيل الحشو» (strips out) بإسقاط كلّ الأصفار الموجودة في أقصى اليمين من ww حتى يصل إلى أوّل 11 (ويُسقطه هو أيضًا) فيحصل على سلسلة ww. إذا كان ∣w∣≤p(n)|w| \leq p(n) فإنّ V′V' يُخرج V(x,w)V(x,w).

ولأنّ VV يعمل في وقت متعدد الحدود، فإنّ V′V' يعمل في وقت متعدد الحدود أيضًا، وبحسب التعريف، لكلّ xx توجد w′∈{0,1}∣x∣aw' \in \{0,1\}^{|x|^a} بحيث V′(xw′)=1V'(xw')=1 إذا وفقط إذا وُجدت w∈{0,1}∗w \in \{0,1\}^* بحيث ∣w∣≤p(∣x∣)|w| \leq p(|x|) بحيث V(xw)=1V(xw)=1.

تعريف NP\mathbf{NP} يعني أنّه لكلّ F∈NPF\in \mathbf{NP} وسلسلة x∈{0,1}∗x\in \{0,1\}^*، يكون F(x)=1F(x)=1 إذا وفقط إذا وُجد برهان قصير وقابل للتحقّق منه بكفاءة لهذه الحقيقة. أي يمكننا التفكير في الدالة VV في تعريف — NP على أنّها خوارزمية مُتحقِّقة (verifier)، على نحو ما رأينا في برنامج هيلبرت ومبرهنة غودل في عدم الاكتمال. تتحقّق المُتحقِّقة ممّا إذا كانت سلسلة معطاة w∈{0,1}∗w\in \{0,1\}^* برهانًا صالحًا للعبارة «F(x)=1F(x)=1». وتتضمّن كلّ أنظمة البرهنة التي تُنظر في الرياضيات عمليًا فحوصًا سطرًا بسطر يمكن إنجازها في وقت متعدد الحدود. وعليه فإنّ جوهر NP\mathbf{NP} هو طلب العبارات التي تمتلك براهين قصيرة (أي متعدّدة الحدود في حجم العبارات). وفي الحقيقة، كما سنرى في #chappvsnp، صاغ كورت غودل (Kurt Gödel) السؤال عمّا إذا كان NP=P\mathbf{NP}=\mathbf{P} على أنّه السؤال عمّا إذا كان «الجهد الذهني لرياضيّ [في إثبات البرهنات] يمكن استبداله تمامًا بآلة».

ملاحظة — NP\mathbf{NP} ليست (بالضرورة) مغلقة تحت التكامل

التعريف تعريف — NP غير متماثل (asymmetric) بالمعنى أنّ هناك فرقًا بين الخرج 11 والخرج 00. وينبغي أن تتأكّد من فهمك لماذا لا يضمن هذا التعريف أنّه إذا كان F∈NPF \in \mathbf{NP} فإنّ الدالة 1−F1-F (أي التحويل x↦1−F(x)x \mapsto 1-F(x)) تنتمي هي أيضًا إلى NP\mathbf{NP}.

وفي الواقع، يُعتقد بوجود دوال FF بحيث F∈NPF\in \mathbf{NP} ولكن 1−F∉NP1-F \not\in \mathbf{NP}. على سبيل المثال، كما هو مبيّن أدناه، لدينا 3SAT∈NP3SAT \in \mathbf{NP}، لكنّ الدالة 3SAT‾\overline{3SAT} التي على مدخل صيغة 3CNF φ\varphi تُخرج 11 إذا وفقط إذا كانت φ\varphi غير مرضية (not satisfiable) لا يُعرف (ولا يُعتقد) أنّها تنتمي إلى NP\mathbf{NP}. وهذا على النقيض من الصنف P\mathbf{P} الذي مستوفٍ للشرط بأنّه إذا كان F∈PF\in \mathbf{P} فإنّ 1−F1-F تنتمي أيضًا إلى P\mathbf{P}.

أمثلة على دوال في NP\mathbf{NP}

نقدّم الآن بعض الأمثلة على دوال تنتمي إلى الصنف NP\mathbf{NP}. ونبدأ بالمثال النموذجي وهو الدالة 3SAT3SAT.

مثال — 3SAT∈NP3SAT \in \mathbf{NP}

تنتمي 3SAT3SAT إلى NP\mathbf{NP}، لأنّ لكلّ صيغة φ\varphi ذات ℓ\ell متغيّرًا، يكون 3SAT(φ)=13SAT(\varphi)=1 إذا وفقط إذا وُجد إسناد مُرضٍ (satisfying assignment) x∈{0,1}ℓx \in \{0,1\}^\ell بحيث φ(x)=1\varphi(x)=1، ويمكننا التحقّق من هذا الشرط في وقت متعدد الحدود.

والمنطق أعلاه يوضّح لماذا تنتمي 3SAT3SAT إلى NP\mathbf{NP}، لكنّ هذا هو مثالنا الأول، سنُطيل في شرح هذه النقطة الآن وسنعرض بكامل الصرامة، التمثيل الدقيق للشاهد ww والخوارزمية VV اللتين تُثبتان أنّ 3SAT3SAT تنتمي إلى NP\mathbf{NP}. ولأنّ إثبات انتماء الدوال إلى NP\mathbf{NP} أمر إلى حدّ كبير مباشر، فلن نستخدم هذا القدر من التفصيل في الحالات القادمة، كما أنّ من حقّ القارئ تخطّي بقيّة هذا المثال.

باستعمال تمرين محلول — تعريف بديل لـ NP، فإنّه من المقبول أن يكون حجم الشاهد متعدّد الحدود في طول المدخل nn، بدلًا من أن يكون بالضبط nan^a بالنسبة إلى عدد صحيح a>0a>0. وبالتحديد، يمكننا تمثيل صيغة 3CNF φ\varphi ذات kk متغيّرًا وmm بندًا (clause) على هيئة سلسلة طولها n=O(mlog⁡k)n=O(m\log k)، إذ إنّ كلًّا من البنود mm يتضمّن ثلاثة متغيّرات ونفيها، ويمكن تمثيل هوية كلّ متغيّر باستعمال ⌈log⁡2k⌉\lceil \log_2 k \rceil. ونفترض أنّ كلّ متغيّر يشارك في بند ما (وإلّا فيمكن تجاهله) وبالتالي m≥km \geq k، وهو ما يعني بالتحديد أنّ طول المدخل nn لا يقلّ عن mm ولا عن kk.

ويمكننا تمثيل إسناد إلى المتغيّرات kk باستعمال سلسلة ww طولها kk. والخوارزمية التالية تتحقّق ممّا إذا كان ww معطى يحقّق الصيغة φ\varphi:

خوارزمية — Verifier for 3SAT3SAT

INPUT: 3CNF formula $\varphi$ on $k$ variables and with $m$ clauses, string $w \in \{0,1\}^k$ 
OUTPUT: $1$ iff $w$ satisfies $\varphi$ 

For{$j \in [m]$}
   Let $\ell_1 \vee \ell_2 \vee \ell_3$ be the $j$-th clause of $\varphi$ 
   If{$w$ violates all three literals}
     return $0$
   Endif
Endfor
Return $1$

يستغرق خوارزمية — Verifier for 3SAT وقتًا قدره O(m)O(m) لِتعداد كلّ البنود، ويعيد 11 إذا وفقط إذا كانت yy تحقّق كلّ البنود.

إليك المزيد من الأمثلة على مسائل في NP\mathbf{NP}. ولكلّ واحدة من هذه المسائل سنكتفي برسم مختصر لكيفية تمثيل الشاهد ولماذا يمكن التحقّق منه بكفاءة، لكنّ اشتقاق التفاصيل قد يكون طريقة جيدة للارتياح أكثر مع تعريف — NP:

  • تنتمي QUADEQQUADEQ إلى NP\mathbf{NP}، لأنّ لكلّ مدخل EE من المعادلات التربيعية ذي ℓ\ell متغيّرًا، يكون QUADEQ(E)=1QUADEQ(E)=1 إذا وفقط إذا وُجد إسناد x∈{0,1}ℓx\in \{0,1\}^\ell يحقّق EE. ويمكننا التحقّق من الشرط بأنّ xx يحقّق EE في وقت متعدد الحدود بأن نعدّ على كلّ المعادلات في EE، وأن نُدخل لكلّ معادلة ee قيم xx ونتحقّق من أنّ ee مُحقَّقة.

  • تنتمي ISETISET إلى NP\mathbf{NP}، لأنّ لكلّ رسم بياني GG وعدد صحيح kk، يكون ISET(G,k)=1ISET(G,k)=1 إذا وفقط إذا وُجدت مجموعة SS من kk رأسًا لا تحتوي أيّ زوج من الجيران في GG. ويمكننا التحقّق من الشرط بأنّ SS مجموعة مستقلّة (independent set) بحجم ≥k\geq k في وقت متعدد الحدود بأن نتحقّق أولًا من ∣S∣≥k|S| \geq k ثم نعدّ على كلّ الحوافّ {u,v}\{u,v \} في GG، وأن نتحقّق لكلّ حافّة من أنّ u∉Su\not\in S أو v∉Sv\not\in S.

  • تنتمي LONGPATHLONGPATH إلى NP\mathbf{NP}، لأنّ لكلّ رسم بياني GG وعدد صحيح kk، يكون LONGPATH(G,k)=1LONGPATH(G,k)=1 إذا وفقط إذا وُجد مسار بسيط PP في GG طوله kk على الأقلّ. ويمكننا التحقّق من الشرط بأنّ PP مسار بسيط طوله kk في وقت متعدد الحدود بأن نتحقّق من أنّ له الشكل (v0,v1,…,vk)(v_0,v_1,\ldots,v_k) حيث كلّ viv_i رأس في GG، ولا يُكرَّر أيّ viv_i، ولكلّ i∈[k]i \in [k] تكون الحافّة {vi,vi+1}\{v_i,v_{i+1}\} موجودة في الرسم البياني.

  • تنتمي MAXCUTMAXCUT إلى NP\mathbf{NP}، لأنّ لكلّ رسم بياني GG وعدد صحيح kk، يكون MAXCUT(G,k)=1MAXCUT(G,k)=1 إذا وفقط إذا وُجد قطع (S,S‾)(S,\overline{S}) في GG يقطع kk حافّة على الأقلّ. ويمكننا التحقّق من الشرط بأنّ (S,S‾)(S,\overline{S}) قطع قيمته kk على الأقلّ في وقت متعدد الحدود بأن نتحقّق من أنّ SS مجموعة جزئية من رؤوس GG وأن نعدّ على كلّ حوافّ {u,v}\{u,v\} في GG، عدًّا لتلك الحوافّ التي يكون u∈Su\in S و v∉Sv\not\in S أو العكس.

حقائق أساسيّة عن NP\mathbf{NP}

تعريف NP\mathbf{NP} هو أحد أهمّ تعريفات هذا الكتاب، ويستحقّ أن نخصّص له وقتًا من أجل استيعابه وإدماجه في بنائنا المعرفي. وتضع التمارين المحلولة التالية بعض الخصائص الأساسيّة لهذا الصنف. وكالمعتاد، أوصي بشدّة بأن يحاول القارئ حلّها بنفسه.

تمرين محلول — التحقّق ليس أصعب من الحلّ

اثبت أنّ P⊆NP\mathbf{P} \subseteq \mathbf{NP}.

الحل

لنفترض أنّ F∈PF \in \mathbf{P}. ولنعرّف الدالة التالية VV: V(x0n)=1V(x0^n)=1 إذا وفقط إذا كان n=∣x∣n=|x| وكان F(x)=1F(x)=1. (تُخرج VV القيمة 00 على كلّ المداخل الأخرى.) ولأنّ F∈PF\in \mathbf{P}، واضح أنّ بالإمكان حساب VV في وقت متعدد الحدود كذلك.

لنفترض أنّ x∈{0,1}nx\in \{0,1\}^n سلسلة ما. إذا كان F(x)=1F(x)=1 فإنّ V(x0n)=1V(x0^n)=1. ومن جهة أخرى، إذا كان F(x)=0F(x)=0 فإنّ ذلك يعني أنّ لكلّ w∈{0,1}nw\in \{0,1\}^n يكون V(xw)=0V(xw)=0. وعليه، بأخذ a=1a=1 (أي w∈{0,1}n1w\in \{0,1\}^{n^1})، نرى أنّ VV تُحقّق المعادلة، ممّا يُثبت أنّ F∈NPF \in \mathbf{NP}.

ملاحظة — NP\mathbf{NP} لا تعني «غير متعدّدة الحدود!»

يظنّ الناس أحيانًا أنّ NP\mathbf{NP} اختصار لعبارة «زمن غير متعدّد الحدود» (non-polynomial time). وكما بيّن تمرين محلول — التحقّق ليس أصعب من الحلّ، فإنّ هذا بعيد كلّ البعد عن الحقيقة، وفي الواقع كلّ دالة قابلة للحساب في وقت متعدد الحدود تنتمي هي أيضًا إلى NP\mathbf{NP}.

إذا كانت FF تنتمي إلى NP\mathbf{NP}، فإنّ هذا بالتأكيد لا يعني أنّ حساب FF صعب (وإنّنا لا نعرف، على قدر ما علمنا، أنّه يعني بالضرورة أنّ حسابها سهل أيضًا). بل إنّ معناه أنّ FF سهلة التحقّق، بالمعنى التقني لـ تعريف — NP.

تمرين محلول — NP\mathbf{NP} تنتمي إلى الزمن الأُسّيّ

اثبت أنّ NP⊆EXP\mathbf{NP} \subseteq \mathbf{EXP}.

الحل

لنفترض أنّ F∈NPF\in \mathbf{NP}، ولتكن VV هي الدالة القابلة للحساب في وقت متعدد الحدود التي تُحقّق المعادلة، وaa هو الثابت المقابل لها. إذن لكلّ مدخل x∈{0,1}nx\in \{0,1\}^n يمكننا التحقّق ممّا إذا كان F(x)=1F(x)=1 في وقت قدره poly(n)⋅2na=o(2na+1)poly(n)\cdot 2^{n^a} = o(2^{n^{a+1}})، بأن نعدّ على كلّ السلاسل 2na2^{n^a} من النوع w∈{0,1}naw\in \{0,1\}^{n^a} وأن نتحقّق ممّا إذا كان V(xw)=1V(xw)=1، وفي هذه الحالة نُعيد 11. وإذا كان V(xw)=0V(xw)=0 لكلّ ww من هذا النوع فإنّنا نُعيد 00. وبالبناء، ستعمل الخوارزمية أعلاه في وقت لا يتجاوز زمنًا أُسّيًّا في طول مدخلها، وبتعريف NP\mathbf{NP} فإنّها ستُعيد F(x)F(x) لكلّ xx.

من تمرين محلول — التحقّق ليس أصعب من الحلّ وتمرين محلول — NP تنتمي إلى الزمن الأُسّيّ معًا نستنتج أنّ

P⊆NP⊆EXP  .\mathbf{P} \subseteq \mathbf{NP} \subseteq \mathbf{EXP}\;.

ويُترتَّب على مبرهنة تسلسل الأوقات (مبرهنة — نظرية التسلسل الزمني) أنّ P⊊EXP\mathbf{P} \subsetneq \mathbf{EXP}، ومن ثمّ فعلى الأقلّ احتواءً واحدًا من الاحتوائين P⊆NP\mathbf{P} \subseteq \mathbf{NP} أو NP⊆EXP\mathbf{NP} \subseteq \mathbf{EXP} هو تأمّ أي محتوى تحتيًّا تامًّا. ويُعتقد أنّ الاحتوائين معًا هما في الواقع احتواءان تامّان. أي إنّنا نُعتقد أنّ هناك دوال في NP\mathbf{NP} لا يمكن حسابها في وقت متعدّد الحدود (وهذه هي حجّة P≠NP\mathbf{P} \neq \mathbf{NP})، وأنّه هناك دوال FF في EXP\mathbf{EXP} لا يمكننا حتى أن نُثبت بكفاءة أنّ F(x)=1F(x)=1 لمدخل xx معطى. ومن الدوال FF التي يُعتقد أنّها تنتمي إلى EXP∖NP\mathbf{EXP} \setminus \mathbf{NP} الدالة 3SAT‾\overline{3SAT} المعرَّفة بأنّ 3SAT‾(φ)=1−3SAT(φ)\overline{3SAT}(\varphi)= 1 - 3SAT(\varphi) لكلّ صيغة 3CNF φ\varphi. وتُعرف حجّة 3SAT‾∉NP\overline{3SAT}\not\in \mathbf{NP} باسم حجّة «NP≠co−NP\mathbf{NP} \neq \mathbf{co-NP}». وهي تستلزم حجّة P≠NP\mathbf{P} \neq \mathbf{NP} (انظر تمرين — NP ≠ co − NP ⇒ NP ≠ P).

لقد سوينا سابقًا، على نحو غير رسمي، بين مفهوم F≤pGF \leq_p G وبين القول إنّ FF «لا أصعب من GG»، ورأينا بالتحديد في تمرين محلول — الاختزال وP أنّه إذا كان G∈PG \in \mathbf{P} و F≤pGF \leq_p G فإنّ F∈PF \in \mathbf{P} أيضًا. ويبيّن التمرين التالي أنّه إذا كان F≤pGF \leq_p G فإنّه أيضًا «لا أصعب في التحقّق» من GG. أي بغضّ النظر عمّا إذا كان في P\mathbf{P} أم لا، إذا كانت GG تمتلك الخاصيّة أنّ الحلول (solutions) لها يمكن التحقّق منها بكفاءة، فإنّ FF تمتلكها أيضًا.

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

لنفترض F,G:{0,1}∗→{0,1}F,G:\{0,1\}^* \rightarrow \{0,1\}. بيّن أنّه إذا كان F≤pGF \leq_p G و G∈NPG\in \mathbf{NP} فإنّ F∈NPF \in \mathbf{NP}.

الحل

لنفترض أنّ GG تنتمي إلى NP\mathbf{NP}، وبالتالي تحديدًا يوجد aa و V∈PV \in \mathbf{P} بحيث لكلّ y∈{0,1}∗y \in \{0,1\}^*، لدينا G(y)=1⇔∃w∈{0,1}∣y∣aV(yw)=1G(y)=1 \Leftrightarrow \exists_{w\in \{0,1\}^{|y|^a}} V(yw)=1. ولنفترض أيضًا أنّ F≤pGF \leq_p G، وبالتالي تحديدًا توجد دالة RR قابلة للحساب في وقت nbn^b بحيث F(x)=G(R(x))F(x) = G(R(x)) لكلّ x∈{0,1}∗x\in \{0,1\}^*. لنعرّف V′V' على أنّها آلة تورينج (Turing machine) تُدخل عليها زوج (x,w)(x,w) فتحسب y=R(x)y=R(x) وتُعيد 11 إذا وفقط إذا كان ∣w∣=∣y∣a|w|=|y|^a وكان V(yw)=1V(yw)=1. إذن تعمل V′V' في وقت متعدد الحدود، ولكلّ x∈{0,1}∗x\in \{0,1\}^* لدينا F(x)=1F(x)=1 إذا وفقط إذا وُجدت ww بحجم ∣R(x)∣a|R(x)|^a وهو على الأكثر متعدّد الحدود في ∣x∣|x| بحيث V′(x,w)=1V'(x,w)=1، ممّا يُظهر أنّ F∈NPF \in \mathbf{NP}.

من NP\mathbf{NP} إلى 3SAT: مبرهنة كوك-ليفن

لقد رأينا عدّة أمثلة لمسائل لا نعرف ما إذا كانت أفضل خوارزمياتها متعدّدة الحدود أم أُسّية، لكنّنا نستطيع أن نبيّن أنّها تنتمي إلى NP\mathbf{NP}. أي إنّنا لا نعرف ما إذا كانت سهلة الحلّ (solve)، لكنّنا نعرف تمامًا أنّه سهل التحقّق (verify) من حلّ معطى. وهناك كثير جدًّا، جدًّا جدًّا، من الأمثلة الأخرى لدوال مثيرة للاهتمام نودّ حسابها، ثبت بسهولة أنّها تنتمي إلى NP\mathbf{NP}. والمدهش حقًّا هو أنّه إذا استطعنا حلّ 3SAT أمكِنّا عندئذٍ حلّ كلّها!

وفيما يلي إحدى أكثر البرهنات أساسيّة في علوم الحاسوب:

مبرهنة — مبرهنة كوك-ليفن

لكلّ F∈NPF\in \mathbf{NP}، لدينا F≤p3SATF \leq_p 3SAT.

سنُثبت قريبًا برهان مبرهنة — مبرهنة كوك-ليفن، لكنّ لاحظ أنّه يستلزم فورًا أنّ QUADEQQUADEQ و LONGPATHLONGPATH و MAXCUTMAXCUT تختزل جميعها إلى 3SAT3SAT. وإذا ما جمعناه مع الاختزالات التي رأيناها في الاختزال في زمن متعدد الحدود، فإنّه يستلزم أنّ كلّ هذه المسائل متكافئة! فمثلًا، لاختزال QUADEQQUADEQ إلى LONGPATHLONGPATH، يمكننا أولًا اختزال QUADEQQUADEQ إلى 3SAT3SAT باستعمال مبرهنة — مبرهنة كوك-ليفن، ثمّ استعمال الاختزال الذي رأيناه في مبرهنة — صعوبة أطول مسار من 3SAT3SAT إلى LONGPATHLONGPATH. أي إنّنا بما أنّ QUADEQ∈NPQUADEQ \in \mathbf{NP}، فإنّ مبرهنة — مبرهنة كوك-ليفن يستلزم أنّ QUADEQ≤p3SATQUADEQ \leq_p 3SAT، و مبرهنة — صعوبة أطول مسار يستلزم أنّ 3SAT≤pLONGPATH3SAT \leq_p LONGPATH، وهو ما يعني، بفضل تعدّادية الاختزال (transitivity of reductions) (تمرين محلول — تعدّادية الاختزال في زمن متعدد الحدود)، أنّ QUADEQ≤pLONGPATHQUADEQ \leq_p LONGPATH. وبشكل مشابه، بما أنّ LONGPATH∈NPLONGPATH \in \mathbf{NP}، يمكننا استعمال مبرهنة — مبرهنة كوك-ليفن و مبرهنة — صعوبة المعادلات التربيعية لبيّان أنّ LONGPATH≤p3SAT≤pQUADEQLONGPATH \leq_p 3SAT \leq_p QUADEQ، ونتّفق على أنّ LONGPATHLONGPATH و QUADEQQUADEQ متكافئتان حاسوبيًّا.

وبالطبع لا شيء خاصّ بـ QUADEQQUADEQ و LONGPATHLONGPATH هنا: فبدمج مبرهنة — مبرهنة كوك-ليفن مع الاختزالات التي رأيناها، نرى أنّه كما 3SAT3SAT بالضبط، كلّ F∈NPF\in \mathbf{NP} يختزل إلى LONGPATHLONGPATH، وأنّ الأمر نفسه صحيح بالنسبة إلى QUADEQQUADEQ و MAXCUTMAXCUT. وكافة هذه المسائل هي «الأصعب في NP\mathbf{NP}» بالمعنى هذا، إذ إنّ خوارزمية فعّالة لأيّ واحدة منها تستلزم خوارزمية فعّالة لكلّ المسائل في NP\mathbf{NP}. وهذا يقودنا إلى التعريف التالي:

تعريف — NP\mathbf{NP}-الصلابة والاكتمال في NP\mathbf{NP}

لنفترض G:{0,1}∗→{0,1}G:\{0,1\}^* \rightarrow \{0,1\}. نقول إنّ GG هي NPNP-صعبة (NP hard) إذا كان لكلّ F∈NPF\in \mathbf{NP}، لدينا F≤pGF \leq_p G.

ونقول إنّ GG هي NPNP-كاملة (NP complete) إذا كانت GG هي NPNP-صعبة و G∈NPG \in \mathbf{NP}.

يمكن إعادة صياغة مبرهنة كوك-ليفن (مبرهنة — مبرهنة كوك-ليفن) على أنّها تقول إنّ 3SAT3SAT هي NPNP-صعبة، وبما أنّها تنتمي أيضًا إلى NP\mathbf{NP}، فإنّ هذا يعني أنّ 3SAT3SAT هي NPNP-كاملة. ومع الاختزالات في الاختزال في زمن متعدد الحدود، تُظهر مبرهنة — مبرهنة كوك-ليفن أنّه على الرغم من فروقها الظاهريّة، فإنّ 3SAT، والمعادلات التربيعية، وأطول مسار، والمجموعة المستقلّة، والقطع الأقصى، هي كلّها NPNP-كاملة. وقد ثبت أنّ آلاف المسائل الإضافيّة هي أيضًا NPNP-كاملة، آتيةً من جميع العلوم والرياضيات والاقتصاد والهندسة والميادين كثيرة أخرى. (ولأمثلة قليلة، انظر هذه صفحة ويكيبيديا و هذا الموقع.)

إذا كانت مسألة واحدة NPNP-كاملة لها خوارزمية تعمل في وقت متعدد الحدود، فإنّ هناك خوارزمية من هذا النوع لكلّ مسألة قرار موافقة لوجود حلّ قابل للتحقّق منه بكفاءة.

ماذا يعني هذا؟

وكما رأينا في تمرين محلول — التحقّق ليس أصعب من الحلّ، لدينا P⊆NP\mathbf{P} \subseteq \mathbf{NP}. و_أشهر_ حجّة في علوم الحاسوب هي أنّ هذا الاحتواء تأمّ. أي إنّ الناس يتفقون على الحجّة بأنّ P≠NP\mathbf{P} \neq \mathbf{NP}. وإحدى طرائق دحض حجّة P≠NP\mathbf{P} \neq \mathbf{NP} هي إعطاء خوارزمية تعمل في وقت متعدد الحدود، ولو لمسألة واحدة فقط من المسائل NPNP-كاملة مثل 3SAT أو «القطع الأقصى» (Max Cut)، أو لآلاف المسائل الأخرى التي دُرست في جميع ميادين نشاط الإنسان. وكون هذه المسائل قد دُرست من قِبل هذا العدد الكبير من الناس، ومع ذلك لم يُعثر على خوارزمية واحدة تعمل في وقت متعدد الحدود لأيّ منها، يؤيّد تلك الحجّة بأنّ P≠NP\mathbf{P} \neq \mathbf{NP} بالفعل. وفي الحقيقة، بالنسبة للكثير من هذه المسائل (بما فيها كلّ ما ذكرناه أعلاه)، لا نعرف حتى خوارزمية تعمل في وقت 2o(n)2^{o(n)}! غير أنّه، إلى حيرة علماء الحاسوب، لم نتمكّن بعد من إثبات أنّ P≠NP\mathbf{P}\neq\mathbf{NP}، ولا حتى من استبعاد وجود خوارزمية تعمل في وقت O(n)O(n) لـ 3SAT. والبتّ في ما إذا كان P=NP\mathbf{P}=\mathbf{NP} أم لا معروف بـ مسألة P\mathbf{P} مقابل NP\mathbf{NP}. وقد قُدِّمت جائزة بمليون دولار لحلّ هذه المسألة، وكُتب عنها كتاب شعبي، ويخرج كلّ عام بحثٌ جديد يدّعي برهان P=NP\mathbf{P}=\mathbf{NP} أو P≠NP\mathbf{P}\neq\mathbf{NP}، ليبتلعه الفحص النقدي في النهاية.

/images/introtcs/lec_13_Cook_Levin-2.webp

ومن أغرب الغموضات في الحساب أنّ الناس لاحظوا «قانونًا تجريبيًّا للصفر والواحد» أو «ثنائية» معيّنة في التعقيد الحاسوبي للمسائل الطبيعيّة، بالمعنى أنّ كثيرًا من المسائل الطبيعيّة إمّا تنتمي إلى P\mathbf{P} (وكثيرًا ما في TIME(O(n))TIME(O(n)) أو TIME(O(n2))TIME(O(n^2)))، وإمّا أنّها NPNP-صعبة. وهذا مرتبطٌ بالواقعة أنّه بالنسبة لمعظم المسائل الطبيعيّة، أفضل خوارزمية معروفة هي إمّا أُسّية أو متعدّدة الحدود، مع وجود أمثلة ليست قليلة يكون فيها أفضل زمن تشغيل بعض التعقيد الوسيط الغريب مثل 22log⁡n2^{2^{\sqrt{\log n}}}. غير أنّه يُعتقد بوجود مسائل في NP\mathbf{NP} لا تنتمي إلى P\mathbf{P} ولا هي NPNP-كاملة، وفي الحقيقة فإنّ نتيجة معروفة بـ «مبرهنة لادنر» (Ladner's Theorem) تُبيّن أنّه إذا كان P≠NP\mathbf{P} \neq \mathbf{NP} فإنّ هذا هو الحال بالفعل (انظر أيضًا تمرين — مبرهنة لادنر للفقراء و الشكل التوضيحي).

/images/introtcs/lec_13_Cook_Levin-3.webp

مبرهنة كوك-ليفن: مخطّط البرهان

سنبرهن الآن على مبرهنة كوك-ليفن، وهي الأساس الذي تقوم عليه شبكة عظيمة من الاختزالات من 3SAT إلى آلاف المسائل في ميادين كثيرة وعظيمة. ومن المسائل التي ثبت أنّها NPNP-كاملة: طيّ البروتين بطاقة طاقة دنيا، وتهيئة الرغوة بمساحة سطح دنيا، وتلوين الخرائط، وتوازن ناش المثالي، والتشابك بين الحالات الكمّية، وأقصر تسلسل فائق لسلسلة وراثية، ومسألة أصغر كلمة شيفرة، وأقصر متجهة في شبكة، وعُقد أصغر جنس، والمعادلات ديوفانطية الموجبة، والبرمجة الصحيحة، وقريبًا من ذلك كثير جدًّا. وتعقيد الحالة الأسوأ لكلّ هذه المسائل مكافئ (حتى عوامل متعدّدة الحدود) لتعقيد 3SAT، ومن خلال مبرهنة كوك-ليفن، لكلّ المسائل في NP\mathbf{NP}.

ولإثبات مبرهنة — مبرهنة كوك-ليفن نحتاج أن نبيّن أنّ F≤p3SATF \leq_p 3SAT لكلّ F∈NPF\in \mathbf{NP}. وسنقوم بذلك على ثلاث مراحل. ونعرّف مسألةً وسيطة اثنتين: NANDSATNANDSAT و 3NAND3NAND. وسنبيّن قريبًا تعريفات هاتين المسألتين، لكنّ مبرهنة — مبرهنة كوك-ليفن سيترتّب على دمج النتائج الثلاث التالية:

  1. المسألة NANDSATNANDSAT هي NPNP-صعبة (لمّة).

  2. لدينا NANDSAT≤p3NANDNANDSAT \leq_p 3NAND (لمّة).

  3. لدينا 3NAND≤p3SAT3NAND \leq_p 3SAT (لمّة).

وبتعدّادية الاختزال، سيترتّب أنّه لكلّ F∈NPF \in \mathbf{NP}،

F≤pNANDSAT≤p3NAND≤p3SAT F \leq_p NANDSAT \leq_p 3NAND \leq_p 3SAT

وبالتالي نُثبت مبرهنة — مبرهنة كوك-ليفن.

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

مسألة NANDSATNANDSAT، ولماذا هي NPNP-صعبة

تُعرَّف الدالة NANDSAT:{0,1}∗→{0,1}NANDSAT:\{0,1\}^* \rightarrow \{0,1\} على النحو التالي:

  • المدخل لـ NANDSATNANDSAT هو سلسلة QQ تمثّل برنامج NAND-CIRC (أو بما يعادله، رسمًا منطقيًّا من بوّابات NAND).

  • الخرج لـ NANDSATNANDSAT على المدخل QQ هو 11 إذا وفقط إذا وُجدت سلسلة w∈{0,1}nw\in \{0,1\}^n (حيث nn هو عدد مداخل QQ) بحيث Q(w)=1Q(w)=1.

تمرين محلول — NANDSAT∈NPNANDSAT \in \mathbf{NP}

اثبت أنّ NANDSAT∈NPNANDSAT \in \mathbf{NP}.

الحل

لقد رأينا أنّ مسألة حساب قيم الرسم المنطقي (أو البرنامج السطري) يمكن حلّها في وقت متعدد الحدود. وبالتحديد، معطى برنامج NAND-CIRC QQ من ss سطرًا وnn مدخلًا، وسلسلة w∈{0,1}nw\in \{0,1\}^n، يمكننا حساب QQ على المدخل ww في وقت متعدّد الحدود في ss، وبالتالي التحقّق ممّا إذا كان Q(w)=1Q(w)=1 أم لا.

سنبرهن الآن على أنّ NANDSATNANDSAT هي NPNP-صعبة.

لمّة

المسألة NANDSATNANDSAT هي NPNP-صعبة.

يتبع البرهان عن قرب برهان P⊆P/poly\mathbf{P} \subseteq \mathbf{P_{/poly}} (مبرهنة — الحساب غير المنتظم يحتوي الحساب المنتظم، وانظر أيضًا «نشر الحلقة»: تحويل خوارزمي من آلات تورينج إلى دوائر). وبالتحديد، إذا كان F∈NPF\in \mathbf{NP} فإنّ هناك آلة تورينج تعمل في وقت متعدّد الحدود MM وعددًا صحيحًا موجبًا aa بحيث لكلّ x∈{0,1}nx\in \{0,1\}^n، لدينا F(x)=1F(x)=1 إذا وفقط إذا وُجدت w∈{0,1}naw \in \{0,1\}^{n^a} بحيث M(xw)=1M(xw)=1. وقد أعطانا برهان P⊆P/poly\mathbf{P} \subseteq \mathbf{P_{/poly}} طريقة (عن طريق «فكّ الحلقة») للحصول في وقت متعدد الحدود على رسم منطقي CC له nan^a مدخلًا يحسب الدالة w↦M(xw)w \mapsto M(xw). ويمكننا عندئذٍ ترجمة CC إلى رسم NAND مكافئ (أو برنامج NAND-CIRC) QQ. ونرى أنّ هناك سلسلة w∈{0,1}naw \in \{0,1\}^{n^a} بحيث Q(w)=1Q(w)=1 إذا وفقط إذا وُجدت ww من هذا النوع تحقّق M(xw)=1M(xw)=1، وهو ما يحدث (بحسب التعريف) إذا وفقط إذا كان F(x)=1F(x)=1. وعليه فإنّ ترجمة xx إلى الرسم QQ هي اختزال يُظهر أنّ F≤pNANDSATF \leq_p NANDSAT.

توقّف وتأمّل

البرهان قليل من التقنيّة، لكنّه في النهاية يتبع إلى حدّ بعيد تعريف NP\mathbf{NP} مباشرةً، فضلًا عن القدرة على «فكّ الحلقة» (unroll the loop) في برامج NAND-TM كما نُوقش في «نشر الحلقة»: تحويل خوارزمي من آلات تورينج إلى دوائر. فإن وجدتَه محيّرًا، فحاوِل أن تتوقّف هنا وتفكّر في كيفية تنفيذك، بلغة البرمجة المفضّلة لديك، للدالة unroll التي على مدخل برنامج NAND-TM PP وعددين T,nT,n تُخرج برنامج NAND-CIRC QQ له nn مدخلًا ومن O(∣T∣)O(|T|) سطرًا، بحيث لكلّ مدخل z∈{0,1}nz\in \{0,1\}^n، إذا توقّف PP عند zz في TT خطوة على الأكثر وأخرج yy، فإنّ Q(z)=yQ(z)=y.

برهان

لنفترض F∈NPF \in \mathbf{NP}. ولإثبات لمّة نحتاج إلى إعطاء دالة قابلة للحساب في وقت متعدد الحدود تُسقط كلّ x∗∈{0,1}∗x^* \in \{0,1\}^* على برنامج NAND-CIRC QQ بحيث F(x∗)=NANDSAT(Q)F(x^*)=NANDSAT(Q).

لنفترض x∗∈{0,1}∗x^* \in \{0,1\}^* سلسلة من هذا النوع، ولتكن n=∣x∗∣n=|x^*| طولها. بحسب تعريف — NP هناك V∈PV \in \mathbf{P} و a∈Na \in \N موجب بحيث F(x∗)=1F(x^*)=1 إذا وفقط إذا وُجدت w∈{0,1}naw\in \{0,1\}^{n^a} تحقّق V(x∗w)=1V(x^*w)=1.

لنفترض m=nam=n^a. وبما أنّ V∈PV\in \mathbf{P}، فهناك برنامج NAND-TM P∗P^* يحسب VV على المداخل من الشكل xwxw مع x∈{0,1}nx\in \{0,1\}^n و w∈{0,1}mw\in \{0,1\}^m في وقت لا يتجاوز (n+m)c{(n+m)}^c بالنسبة إلى ثابت cc ما. وباستعمال «مصرّفنا الذي يفكّ حلقة NAND-TM إلى NAND» (unrolling the loop NAND-TM to NAND compiler) في مبرهنة — مُصرِّف من آلة تورينج إلى دائرة، يمكننا الحصول على برنامج NAND-CIRC Q′Q' له n+mn+m مدخلًا و O((n+m)2c)O((n+m)^{2c}) سطرًا على الأكثر، بحيث Q′(xw)=P∗(xw)Q'(xw)= P^*(xw) لكلّ x∈{0,1}nx\in \{0,1\}^n و w∈{0,1}mw \in \{0,1\}^m.

ويمكننا عندئذٍ استعمال تقنية بسيطة اسمها «التثبيت» (hardwiring)، تُذكّر بـ ملاحظة — تقنية تثبيت المدخلات، لإسقاط Q′Q' على رسم/برنامج NAND-CIRC QQ له mm مدخلًا بحيث Q(w)=Q′(x∗w)Q(w)= Q'(x^*w) لكلّ w∈{0,1}mw\in \{0,1\}^m.

الادّعاء: هناك خوارزمية تعمل في وقت متعدد الحدود تُخرج، على مدخل برنامج NAND-CIRC Q′Q' له n+mn+m مدخلًا و x∗∈{0,1}nx^* \in \{0,1\}^n، برنامج NAND-CIRC QQ بحيث لكلّ w∈{0,1}nw\in \{0,1\}^n، لدينا Q(w)=Q′(x∗w)Q(w)=Q'(x^*w).

برهان الادّعاء: يمكننا ذلك بإضافة بضعة أسطر إلى Q′Q' للتأكّد من أنّ المتغيّرات zero و one تساوي 00 و 11 على الترتيب، ثمّ استبدال كلّ إشارة في Q′Q' إلى مدخل xix_i مع i∈[n]i\in [n] بالقيمة المقابلة لها حسب xi∗x^*_i.

انظر الشكل التوضيحي لتجد تنفيذًا لهذا الاختزال بلغة Python.

ويُسقط الاختزال النهائي مدخلًا x∗x^* على برنامج NAND-CIRC QQ الذي حصّلناه أعلاه. وبحسب ما سبق، يعمل هذا الاختزال في وقت متعدد الحدود. ولأنّنا نعرف أنّ F(x∗)=1F(x^*)=1 إذا وفقط إذا وُجدت w∈{0,1}mw\in \{0,1\}^m بحيث P∗(x∗w)=1P^*(x^*w)=1، فإنّ هذا يعني أنّ F(x∗)=1F(x^*)=1 إذا وفقط إذا كان NANDSAT(Q)=1NANDSAT(Q)=1، وهو ما أردنا إثباته.

بإعطائنا برنامج NAND-CIRC من  خطوةً  له  مدخلًا وبعض ، يمكننا تحويل  إلى برنامج NAND-CIRC من  خطوةً  يحسب التطبيق  لـ بإضافة شيفرةٍ لحساب الثوابت  و فحسب، ثمّ استبدال كلّ الإشارات إلى  بـ أو  بحسب قيمة ، ثمّ استبدال الإشارات المتبقّية إلى  بـ. وفي الأعلى شيفرة بايثون تنفّذ هذا التحوّل، مع مثالٍ على تنفيذه على برنامجٍ بسيط.

مسألة 3NAND3NAND

تُعرَّف مسألة 3NAND3NAND على النحو التالي:

  • المدخل هو صيغة منطقية Ψ\Psi على مجموعة متغيّرات z0,…,zr−1z_0,\ldots,z_{r-1} هي عطف (AND) من قيود من الشكل zi=NAND(zj,zk)z_i = NAND(z_j,z_k).

  • الخرج هو 11 إذا وفقط إذا وُجد مدخل z∈{0,1}rz\in \{0,1\}^r يحقّق كلّ القيود.

على سبيل المثال، الصيغة التالية هي صيغة 3NAND3NAND ذات 55 متغيّرات و 33 قيود:

Ψ=(z3=NAND(z0,z2))∧(z1=NAND(z0,z2))∧(z4=NAND(z3,z1))  . \Psi = \left( z_3 = NAND(z_0,z_2) \right) \wedge \left( z_1 = NAND(z_0,z_2) \right) \wedge \left( z_4 = NAND(z_3,z_1) \right) \;.

في هذه الحالة يكون 3NAND(Ψ)=13NAND(\Psi)=1 لأنّ الإسناد z=01010z = 01010 يحقّقها. ومعطى صيغة 3NAND3NAND Ψ\Psi على rr متغيّرًا وإسناد z∈{0,1}rz\in \{0,1\}^r، يمكننا التحقّق في وقت متعدد الحدود ممّا إذا كان Ψ(z)=1\Psi(z)=1، ومن ثمّ 3NAND∈NP3NAND \in \mathbf{NP}. ونبرهن الآن على أنّ 3NAND3NAND هي NPNP-صعبة:

لمّة

لدينا NANDSAT≤p3NANDNANDSAT \leq_p 3NAND.

لإثبات لمّة نحتاج إلى إعطاء إسقاط يعمل في وقت متعدد الحدود من كلّ برنامج NAND-CIRC QQ إلى صيغة 3NAND3NAND Ψ\Psi بحيث توجد ww بحيث Q(w)=1Q(w)=1 إذا وفقط إذا وُجد zz يحقّق Ψ\Psi. ولكلّ سطر ii من QQ نعرّف متغيّرًا مقابلًا ziz_i في Ψ\Psi. وإذا كان السطر ii على الشكل foo = NAND(bar,blah) فإنّنا سنضيف البند zi=NAND(zj,zk)z_i = NAND(z_j,z_k) حيث jj و kk هما آخر سطرين كُتب فيهما bar و blah. وسنضع كذلك المتغيّرات المقابلة لمتغيّرات المدخل، فضلًا عن إضافة بند يضمن أن يكون الخرج النهائي 11. ويمكن تنفيذ الاختزال الناتج في نحو اثني عشر سطرًا من Python، انظر الشكل التوضيحي.

/images/introtcs/lec_13_Cook_Levin-4.webp

برهان

لإثبات لمّة نحتاج إلى إعطاء اختزال من NANDSATNANDSAT إلى 3NAND3NAND. لنفترض أنّ QQ برنامج NAND-CIRC له nn مدخلًا وخرج واحد و mm سطرًا. ويمكننا دون فقدان من العموم أن نفترض أنّ QQ يحتوي على المتغيّرات one و zero كالمعتاد.

نُسقط QQ على صيغة 3NAND3NAND Ψ\Psi على النحو التالي:

  • تملك Ψ\Psi المتغيّرات z0,…,zm+n−1z_0,\ldots,z_{m+n-1} وعددها m+nm+n.

  • تقابل المتغيّرات الأولى nn، أي z0,…,zn−1z_0,\ldots,z_{n-1}، مداخل QQ. وتقابل المتغيّرات التالية mm، أي zn,…,zn+m−1z_n,\ldots,z_{n+m-1}، أسطر QQ البالغة mm.

  • لكلّ ℓ∈{n,n+1,…,n+m}\ell\in \{n,n+1,\ldots,n+m \}، إذا كان السطر رقم ℓ−n\ell-n من البرنامج QQ على الشكل foo = NAND(bar,blah) فإنّنا نضيف إلى Ψ\Psi القيد zℓ=NAND(zj,zk)z_\ell = NAND(z_j,z_k) حيث يقابل j−nj-n و k−nk-n آخر سطرين كُتبت فيهما المتغيّرات bar و blah (على الترتيب). وإذا لم يكن أحد bar أو blah أو كلاهما قد كُتب من قبل، فإنّنا نستعمل zℓ0z_{\ell_0} بدلًا من القيمة المقابلة zjz_j أو zkz_k في القيد، حيث ℓ0−n\ell_0-n هو السطر الذي أُسندت فيه zero قيمة. وإذا كان أحد bar أو blah أو كلاهما مدخلًا X[i] فإنّنا نستعمل ziz_i في القيد.

  • لتكن ℓ∗\ell^* آخر سطر أُسندت فيه للخرج y_0 قيمة. عندئذٍ نضيف القيد zℓ∗=NAND(zℓ0,zℓ0)z_{\ell^*} = NAND(z_{\ell_0},z_{\ell_0}) حيث ℓ0−n\ell_0-n هو، كما سبق، آخر سطر أُسندت فيه zero قيمة. ولاحظ أنّ هذا يعني فعليًا القيد zℓ∗=NAND(0,0)=1z_{\ell^*}=NAND(0,0)=1.

ولإكمال البرهان نحتاج أن نبيّن أنّه توجد w∈{0,1}nw\in \{0,1\}^n بحيث Q(w)=1Q(w)=1 إذا وفقط إذا وُجدت z∈{0,1}n+mz\in \{0,1\}^{n+m} تحقّق كلّ القيود في Ψ\Psi. وسنبيّن الآن طرفي هذه التكافؤ.

الجزء الأول: الاكتمال. لنفترض أنّ هناك w∈{0,1}nw\in \{0,1\}^n بحيث Q(w)=1Q(w)=1. ولتكن z∈{0,1}n+mz\in \{0,1\}^{n+m} معرَّفة على النحو التالي: لكلّ i∈[n]i\in [n]، zi=wiz_i=w_i، ولكلّ i∈{n,n+1,…,n+m}i\in \{n,n+1,\ldots,n+m\} يساوي ziz_i القيمة التي تُسنَد في السطر رقم (i−n)(i-n) من QQ عند تنفيذه على ww. وعندئذٍ، بالبناء، تحقّق zz كلّ قيود Ψ\Psi (بما في ذلك القيد zℓ∗=NAND(0,0)=1z_{\ell^*}=NAND(0,0)=1 لأنّ Q(w)=1Q(w)=1.)

الجزء الثاني: التسليمية. لنفترض أنّ هناك z∈{0,1}n+mz\in \{0,1\}^{n+m} تحقّق Ψ\Psi. وستتبع التسليمية بأن نبيّن أنّ Q(z0,…,zn−1)=1Q(z_0,\ldots,z_{n-1})=1 (وعليه بشكل خاص توجد w∈{0,1}nw\in \{0,1\}^n، وهي w=z0⋯zn−1w=z_0\cdots z_{n-1}، بحيث Q(w)=1Q(w)=1). ولهذا سنبرهن على الادّعاء التالي (∗)(*): لكلّ ℓ∈[m]\ell \in [m]، يساوي zℓ+nz_{\ell+n} القيمة المُسنَدة في الخطوة رقم ℓ\ell من تنفيذ البرنامج QQ على z0,…,zn−1z_0,\ldots,z_{n-1}. ولاحظ أنّه بما أنّ zz تحقّق قيود Ψ\Psi، فإنّ (∗)(*) كافية لإثبات شرط التسليمية، إذ إنّ هذه القيود تستلزم أنّ آخر قيمة تُسنَد للمتغيّر y_0 في تنفيذ QQ على z0⋯zn−1z_0\cdots z_{n-1} تساوي 11. ولإثبات (∗)(*) لنفترض، خلافًا للمفترض، أنّها خاطئة، وليكن ℓ\ell أصغر عدد بحيث لا تساوي zℓ+nz_{\ell+n} القيمة المُسنَدة في الخطوة رقم ℓ\ell من تنفيذ QQ على z0,…,zn−1z_0,\ldots,z_{n-1}. لكن، بما أنّ zz تحقّق قيود Ψ\Psi، نحصل على zℓ+n=NAND(zi,zj)z_{\ell+n}=NAND(z_i,z_j) حيث (بافتراضنا أعلاه أنّ ℓ\ell هو أصغر رقم له هذه الخاصيّة) تقابل هذه القيم بالفعل القيم آخر ما أُسند للمتغيّرات في الطرف الأيمن من معامل الإسناد في السطر ℓ\ell من البرنامج. لكنّ هذا يعني أنّ القيمة المُسنَدة في الخطوة رقم ℓ\ell هي ببساطة NAND لـ ziz_i و zjz_j، ممّا يناقض افتراضنا بشأن اختيار ℓ\ell.

مُدخل  ناتجٌ عن أخذ برنامج NAND-TM لحساب الدالة ، وتفريعة للحصول على مُدخل ، ثمّ تركيبه مع اختزال threenand-thm.

من 3NAND3NAND إلى 3SAT3SAT

الخطوة الأخيرة في برهان مبرهنة — مبرهنة كوك-ليفن هي الآتية:

لمّة

لدينا 3NAND≤p3SAT3NAND \leq_p 3SAT.

لإثبات لمّة نحتاج إلى إسقاط صيغة 3NAND3NAND φ\varphi على صيغة 3SAT3SAT ψ\psi بحيث تكون φ\varphi مرضية (satisfiable) إذا وفقط إذا كانت ψ\psi مرضية. والفكرة أنّه يمكننا تحويل كلّ قيد NAND من الشكل a=NAND(b,c)a=NAND(b,c) إلى عطف من عطفات OR تتضمّن المتغيّرات a,b,ca,b,c ونفيها، بحيث يحتوي كلّ OR على ثلاثة حدود على الأكثر. والبناء إلى حدٍّ كبير مباشر، والتفاصيل معطاة أدناه.

توقّف وتأمّل

إنّ من التمارين الجيدة لك أن تحاول إيجاد صيغة 3CNF ξ\xi على ثلاثة متغيّرات a,b,ca,b,c بحيث يكون ξ(a,b,c)\xi(a,b,c) صادقًا إذا وفقط إذا كان a=NAND(b,c)a = NAND(b,c). وعندما تفعل ذلك، حاول أن ترى لماذا يستلزم هذا اختزالًا من 3NAND3NAND إلى 3SAT3SAT، ومن ثمّ يُكمل برهان لمّة

شيفرة ومثالٌ على مخرجات الاختزال المُعطى في threenand-sat-thm من  إلى .

برهان

القيد zi=NAND(zj,zk) z_i = NAND(z_j,z_k) مُحقَّق إذا كان zi=1z_i=1 كلّما كان (zj,zk)≠(1,1)(z_j,z_k) \neq (1,1). وبمرورنا على جميع الحالات، يمكننا التحقّق من أنّ المعادلة مكافئ للقيد

(zi‾∨zj‾∨zk‾)∧(zi∨zj)∧(zi∨zk)    . (\overline{z_i} \vee \overline{z_j} \vee\overline{z_k} ) \wedge (z_i \vee z_j ) \wedge (z_i \vee z_k) \;\;.

فإنّ zj=zk=1z_j=z_k=1 فإنّ القيد الأول في المعادلة لا يكون صادقًا إلا إذا كان zi=0z_i=0. ومن جهة أخرى، إذا كان أحد zjz_j أو zkz_k يساوي 00 فإنّ القيد الثاني أو الثالث سيفشل ما لم يكن zi=1z_i=1. وهذا يعني أنّه، معطى أيّ صيغة 3NAND3NAND φ\varphi على nn متغيّرًا z0,…,zn−1z_0,\ldots,z_{n-1}، يمكننا الحصول على صيغة 3SAT3SAT ψ\psi على المتغيّرات نفسها باستبدال كلّ قيد 3NAND3NAND في φ\varphi بثلاثة قيود 3OR3OR كما في المعادلة.[1] وبسبب تكافؤ المعادلة و المعادلة، فإنّ الصيغة ψ\psi تحقّق أنّ ψ(z0,…,zn−1)=φ(z0,…,zn−1)\psi(z_0,\ldots,z_{n-1})=\varphi(z_0,\ldots,z_{n-1}) لكلّ إسناد z0,…,zn−1∈{0,1}nz_0,\ldots,z_{n-1} \in \{0,1\}^n للمتغيّرات. وبشكل خاصّ، ψ\psi مرضية إذا وفقط إذا كانت φ\varphi مرضية، وعليه يكتمل البرهان.

/images/introtcs/lec_13_Cook_Levin-5.webp

الخلاصة

لقد بيّنا أنّه لكلّ دالة FF في NP\mathbf{NP}، لدينا F≤pNANDSAT≤p3NAND≤p3SATF \leq_p NANDSAT \leq_p 3NAND \leq_p 3SAT، ومن ثمّ فإنّ 3SAT3SAT هي NPNP-صعبة. ولأنّنا رأينا في الاختزال في زمن متعدد الحدود أنّ 3SAT≤pQUADEQ3SAT \leq_p QUADEQ، و 3SAT≤pISET3SAT \leq_p ISET، و 3SAT≤pMAXCUT3SAT \leq_p MAXCUT و 3SAT≤pLONGPATH3SAT \leq_p LONGPATH، فإنّ كلّ هذه المسائل NPNP-صعبة أيضًا. وأخيرًا، بما أنّ كلّ المسائل المذكورة أعلاه تنتمي إلى NP\mathbf{NP}، فإنّها كلّها في الواقع NPNP-كاملة ولكلٍّ منها تعقيد مكافئ. وهناك لآلاف المسائل الطبيعيّة الأخرى التي هي أيضًا NPNP-كاملة. وإيجاد خوارزمية تعمل في وقت متعدد الحدود لأيّ واحدة منها سيستلزم خوارزمية تعمل في وقت متعدد الحدود لكلّها.

/images/introtcs/lec_13_Cook_Levin-6.webp

خلاصة

  • كثير من المسائل التي لا نعرف لها خوارزميات تعمل في وقت متعدد الحدود هي NPNP-كاملة، وهذا يعني أنّ إيجاد خوارزمية تعمل في وقت متعدد الحدود لأحدها سيستلزم خوارزمية من هذا النوع _لكلّ_ها.
  • يُفترض أنّ NP≠P\mathbf{NP}\neq \mathbf{P}، وهذا يعني أنّنا نعتقد أنّ الخوارزميات التي تعمل في وقت متعدد الحدود لهذه المسائل ليست مجهولة فحسب بل غير موجودة.
  • بينما تعني نتيجة NPNP-الصلابة، على سبيل المثال، أنّه على الأرجح لا يوجد حلّ «من كتاب مدرسي» كامل لمسألة مثل MAX-CUT نظيف وعامّ كخوارزمية MIN-CUT، فإنّها لا تعني أنّنا نضطرّ إلى الاستسلام كلّما رأينا مدخلًا لـ MAX-CUT. وفيما بعد من هذا المساق سنناقش عدّة استراتيجيات للتعامل مع NPNP-الصلابة، بما فيها تعقيد الحالة المتوسطة (average-case complexity) و_خوارزميات التقريب_ (approximation algorithms).

التمارين

تمرين — مبرهنة لادنر للفقراء

اثبت أنّه إذا لم تكن هناك خوارزمية تعمل في وقت nO(log⁡2n)n^{O(\log^2 n)} لـ 3SAT3SAT، فإنّ هناك F∈NPF\in \mathbf{NP} بحيث F∉PF \not\in \mathbf{P} و FF ليست NPNP-كاملة.[2]

تمرين — NP≠co−NP⇒NP≠P\mathbf{NP} \neq \mathbf{co-NP} \Rightarrow \mathbf{NP} \neq \mathbf{P}

لنفترض أنّ 3SAT‾\overline{3SAT} هي الدالة التي على مدخل صيغة 3CNF φ\varphi تُعيد 1−3SAT(φ)1-3SAT(\varphi). اثبت أنّه إذا كان 3SAT‾∉NP\overline{3SAT} \not\in \mathbf{NP} فإنّ P≠NP\mathbf{P} \neq \mathbf{NP}. انظر التلميح في الحاشية.[3]

تمرين

عرّف WSATWSAT على أن تكون الدالة التالية: المدخل هو صيغة CNF φ\varphi يكون فيها كلّ بند عطفًا من متغيّر إلى ثلاثة متغيّرات (من دون نفي)، و عدد k∈Nk\in \mathbb{N}. على سبيل المثال، يمكن استعمال الصيغة التالية كمدخل صالح لـ WSATWSAT: φ=(x5∨x2∨x1)∧(x1∨x3∨x0)∧(x2∨x4∨x0)\varphi = (x_5 \vee x_2 \vee x_1) \wedge (x_1 \vee x_3 \vee x_0) \wedge (x_2 \vee x_4 \vee x_0). ويكون الخرج WSAT(φ,k)=1WSAT(\varphi,k)=1 إذا وفقط إذا وُجد إسناد مُرضٍ لـ φ\varphi تتلقّى فيه بالضبط kk من المتغيّرات القيمة 11. على سبيل المثال، بالنسبة للصيغة أعلاه يكون WSAT(φ,2)=1WSAT(\varphi,2)=1 لأنّ الإسناد (1,1,0,0,0,0)(1,1,0,0,0,0) يحقّق كلّ البنود. لكنّ WSAT(φ,1)=0WSAT(\varphi,1)=0 لأنّه لا يوجد متغيّر واحد يظهر في كلّ البنود.

اثبت أنّ WSATWSAT هي NPNP-كاملة.

تمرين

في مسألة توظيف الموظفين (employee recruiting problem) يُعطى لنا قائمة بموظفين محتملين، لكلٍّ منهم مجموعة جزئيّة من mm مهارات محتملة، وعدد kk. ويجب أن نُجمّع فريقًا من kk موظفين بحيث يوجد لكلّ مهارة عضو واحد في الفريق يملك هذه المهارة.

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

عرّف الدالة EMPEMP بحيث تُعرَّف على أنّها، على مدخل المهارات LL لكلّ الموظفين المحتملين (على هيئة متتالية LL من nn قوائم L1,…,LnL_1,\ldots,L_n، كلّ منها تضمّ أرقامًا مميّزة بين 00 و mm)، و عدد kk، EMP(L,k)=1EMP(L,k)=1 إذا وفقط إذا وُجدت مجموعة جزئية SS من kk موظفًا محتملين بحيث لكلّ مهارة jj في [m][m]، يوجد موظف في SS يملك المهارة jj.

اثبت أنّ EMPEMP هي NPNP-كاملة.

تمرين — القطع الأقصى المتوازن

اثبت أنّ «النسخة المتوازنة» (the "balanced variant") من مسألة القطع الأقصى هي NPNP-كاملة، حيث تُعرَّف على النحو التالي: BMC:{0,1}∗→{0,1}BMC:\{0,1\}^* \rightarrow \{0,1\} بحيث لكلّ رسم بياني G=(V,E)G=(V,E) و k∈Nk\in \mathbb{N}، يكون BMC(G,k)=1BMC(G,k)=1 إذا وفقط إذا وُجد قطع SS في GG يقطع kk حافّة على الأقلّ بحيث ∣S∣=∣V∣/2|S|=|V|/2.

تمرين — تقاطع التعبيرات النمطيّة

لنفترض أنّ MANYREGSMANYREGS هي الدالة التالية: على مدخل قائمة من التعبيرات النمطيّة exp0,…,expmexp_0,\ldots,exp_m (الممثَّلة كسلاسل بطريقة ما قياسيّة)، تُخرج 11 إذا وفقط إذا وُجدت سلسلة واحدة x∈{0,1}∗x \in \{0,1\}^* تطابق كلّها. اثبت أنّ MANYREGSMANYREGS هي NPNP-صعبة.

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

استعراض أَرونسون ([@aaronson2016p]) ذو الـ 120 صفحة هو عرضٌ جميل ومفصّل لمسألة P\mathbf{P} مقابل NP\mathbf{NP}، ولأهميّتها وحالتها. وانظر كذلك الفصل 3 من كتاب فيغدرسون الرائع ([@wigderson2017mathematics]).

يعطي جونسون ([@johnson2012brief]) استعراضًا للتطوّر التاريخي لنظرية الاكتمال في NP\mathbf{NP}. وتحتفظ صفحة الويب التالية بسجلّ للمحاولات الفاشلة في حسم مسألة P\mathbf{P} مقابل NP\mathbf{NP}. وحتى لحظة كتابة هذا الكتاب، تذكر نحو 110 ورقة يدّعي أصحابها حسم السؤال، منها نحو 60 تدّعي إثبات أنّ P=NP\mathbf{P}=\mathbf{NP} ونحو 50 تدّعي إثبات أنّ P≠NP\mathbf{P} \neq \mathbf{NP}.

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


  1. ستكون بعض عطفات OR في الصيغة الناتجة متضمّنة متغيّرين فقط. وإذا أصررنا على أن يتضمّن كلّ عطف ثلاثة متغيّرات مختلفة، فيمكننا دائمًا إضافة «متغيّر وهميّ» zn+mz_{n+m} وإدراجه في كلّ عطفات OR المتضمّنة متغيّرين فقط، وإضافة قيد يوجب أن تكون قيمة هذا المتغيّر الوهمي صفرًا. ↩︎

  2. تلميح: استعمل الدالة FF التي على مدخل صيغة φ\varphi وسلسلة من الشكل 1t1^t، تُخرج 11 إذا وفقط إذا كانت φ\varphi مرضية (satisfiable) و t=∣φ∣log⁡∣φ∣t=|\varphi|^{\log|\varphi|}. ↩︎

  3. تلميح: اثبت ثمّ استعمل الحقيقة أنّ P\mathbf{P} مغلقة تحت التكامل. ↩︎