كثير حدود غير قطعي

[تصغير|500x500بك|مخطط أويلر لمجموعات المسائل P و NP و NP-كاملة و NP-صعبة. وبافتراض أن P ≠ NP، فقد [:en:NP-intermediate|أثبت لادنر وجود مسائل ضمن NP لكنها تقع خارج كلٍّ من P و NP-كاملة.]]
في نظرية التعقيد الحسابي، يعدّ **الصنف كثير الحدود غير الحتمي**  (**nondeterministic polynomial time**) فئة تعقيد تُستخدم لتصنيف مسائل القرار. تمثل NP مجموعة مسائل القرار التي تمتلك الحالات التي تكون إجاباتها "نعم" براهين يمكن التحقق منها في زمن كثير الحدود بواسطة آلة تورنغ حتمية، أو على نحو مكافئ، هي مجموعة المسائل التي يمكن حلها في وقت حدودي بواسطة آلة تورنغ غير حتمية.

* الصنف كثير الحدود غير الحتمي هو مجموعة مسائل القرار التي يمكن *حلها* في وقت حدودي عبر آلة تورينغ *غير حتمية*.
* الصنف كثير الحدود غير الحتمي هو مجموعة مسائل القرار التي يمكن *التحقق منها* في وقت حدودي عبر آلة تورينغ *حتمية*.

التعريف الأول هو أصل تسمية هذا الصنف (الزمن كثير الحدود غير الحتمي). ويُعدّ التعريفان متكافئين، نظرًا لأن خوارزمية آلة تورينغ غير الحتمية تتكوّن من مرحلتين: المرحلة الأولى تتعلق بتخمين حلٍّ للمسألة، ويتم هذا التخمين بصورة غير حتمية. أما المرحلة الثانية فتتعلق بالتحقق من صحة هذا التخمين، ويتم ذلك بصورة حتمية.

## تاريخ
في بداية الستينات من القرن العشرين، حاول العالم Karp حل مسألة التقرير لمسألة البائع المتجول وهذا كان بادئ الامر وبعد وقت قصير Rabin اسس نظرية التعقيد ووضع حجارة الاساس لها وكلمة التعقيد(complexity) ظهرت فقط في عام 1965 وبعدها تم تعريف متى تكون الخوارزمية «جيدة» وتم هذا بواسطة Edmonds، اما cook فقد عرف NP وP وكذلك عرف مسائل NP كاملة وبين ان SAT هي كذلك واظهر ان كل مسألة NP كاملة يمكن حلها بواسطة SAT وذلك يتم بواسطة دالة تحويل (reduction) وقد عرف Karp لاحقا مسائل NP كاملة منها TSP وعرفت هذه المسائل بقائمة karp ال-21 وفي عام 2000 تم رصد جائزة بمبلغ مليون دولار لمن يحل مسألة NP=P.
## تعريف

يوجد عدة تعريفات للصنف الحدودي غير الحتمي (NP)، وأهمها ما يلي:

### التعريف بواسطة الفاحص (Verifier)
إذا أعطيتَ شخصًا ما إجابةً مقترحة لمسألة ما، فهل يستطيع التحقق من صحتها في وقت معقول (كثير حدود)؟ إذا كانت الإجابة نعم، فالمسألة تنتمي إلى NP.

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

يكون التعريف الرسمي كالآتي:

لغة L \subseteq \{0,1\}^* متواجدة في NP إذا كان هناك:
* متعدد حدود p : \mathbb{N} \to \mathbb{N} — يحدد الحجم الأقصى المسموح به للبرهان،
* وآلة تورنغ حتمية متعددة الحدود M — وهي ما نسميه **الفاحصة**، أي البرنامج الذي يتحقق من صحة الإجابة،

بحيث أنه لكل x \in \{0,1\}^*:

:x \in L \iff \exists\, u \in \{0,1\}^{p(|x|)} : M(x, u) = 1

**ماذا تعني هذه الصيغة؟**
تقول هذه الصيغة ببساطة: المدخل x ينتمي إلى اللغة L، إذا وُجد برهان u (أي إجابة مقترحة بحجم معقول (كثير الحدود)) تستطيع الفاحصة M التحقق من صحته.

إذا كان x \in L وكان u \in \{0,1\}^{p(|x|)} بحيث أن M(x, u) = 1، فحينها نسمّي:
* **u**: برهانًا أو إثباتًا (certificate) لـ x — أي الإجابة التي نتحقق منها،
* **M**: آلةً فاحصة (verifier) — أي البرنامج الذي يتحقق من صحة البرهان.
### التعريف بواسطة آلة تورنغ غير حتمية (NDTM)

نُعرِّف أولًا زمن الحساب لآلة تورنغ غير حتمية، ثم نُعرِّف NP على أساسه.

**تعريف NTIME:**
لكل دالة T : \mathbb{N} \to \mathbb{N} ولغة L \subseteq \{0,1\}^*، نقول إن:

:L \in \mathrm{NTIME}(T(n))

إذا وُجد ثابت c > 0، ووُجدت آلة تورنغ غير حتمية  تعمل في زمن c \cdot T(n)، وتُسمى M، بحيث:

:\forall\, x \in \{0,1\}^* : x \in L \iff M(x) = 1

إذا يُعرَّف الصنف NP على النحو التالي:

:NP = \bigcup_{c \in \mathbb{N}} \mathrm{NTIME}(n^c)   

وهذا هو أول تعريف تاريخي لـ NP، ومنه اشتُقَّت التسمية: *الزمن الحدودي غير الحتمي*.

### التعريف بواسطة نظرية PCP

:NP = PCP(\log(n),\, 1)

في مطلع التسعينيات، أثبتت هذه النظرية (المعروفة بـ **نظرية الإثبات القابل للتحقق العشوائي (PCP)**) وأفتحت آفاقًا جديدة في علوم الحاسوب. وتُعدّ من النظريات الأساسية في نظرية التعقيد الحسابي، إذ أسهم هذا التعريف في توضيح حدود إمكانية التقريب لمسائل NP-كاملة، وأفضى إلى نتائج جوهرية تتعلق بصعوبة إيجاد حلول مقرَّبة لتلك المسائل. 

## تعريف
يوجد عدة تعريفات ل-NP ولعل اهمها هو التالي:
* لغة  L \subseteq [{0,1}]^*  متواجدة في NP إذا كان هناك متعدد حدود p:\mathbb{N} \to \mathbb{N}  وآلة تيورنج متعددة الحدود M (أي ان عدد حسابات M هو دالة متعددة الحدود بطول المدخل أي انه يوجد متعدد حدود g:\mathbb{N} \to \mathbb{N}  حيث ان كمية حسابات (M(x هو (|g(|x عندما x يعبر عن المدخل للالة M و-|x| هو طول المدخل) حيث انه لكل  x \in ^*: x \in L \iff \exists u \in [0,1]^{p(|x|)}: M(x,u)=1  
إذا كان  x \in L  و u \in [0,1]^{p(|x|)}  بحيث ان 1=(M(x,u حينها نسمي u اثبات أو برهان(certificate) ل-x ونسمي M آلة فاحصة(verifier)(لانها تفحص إذا كان x في L بواسطة برهان u).
* نعرف اولا زمن حساب لالة غير حتمية ثم نعرف NP ليكون كل لغة يمكن تقريرها بآلة تيورنج غير حتمية بحيث ان زمن حسابها متعدد الحدود،
**تعريف NTIME**: لكل دالة T:\mathbb{N} \to \mathbb{N}  و-  L \subseteq [0,1]^* بحيث ان  L \in NTIME(T(n) إذا يوجد ثابت c>0 وأيضا يوجد NDTM cT(n)-time (آلة تيورنج غير حتمية) M بحيث: \forall x \in [0,1]^*: x \in L \iff M(x)=1 .

حينها نعرف NP بالشكل التالي: NP= \bigcup_{c\in\mathbb{N}} NTIME(n^c)
وهذا التعريف هو أول تعريف ل-NP.
*  NP=PCP(log(n),1)

في بداية التسعينات برهنت هذه النظرية لتفتح افق جديدة في علوم الحاسوب ونظرية PCP هي نظرية اساسية في علم التعقيد إذ انه بواسطة هذا التعريف باتت صورة المسائل التي هي NP كاملة التي يمكن اعطائها حل مقرب اوضح حيث نتج عن هذه النظرية الكثير من النتائج عن صعوبة تقريب حل مسائل NP كاملة.

## تصنيفات مهمة داخل NP
* لعل أحد أهم التصنيفات في NP هو القسم P وهو قسم اللغات التي يمكن تقريرها بواسطة آلة تيورنج حتمية بوقت حدودي، وهذا القسم يعتبرا مهما لان كل هذه اللغات لها استخدام عملي في علم الحاسوب.
* مسائل NP كاملة وهي قسم لغات يتوفر فيها شرطان:
:* اللغة في NP
:* يمكن اختصار أو تحويل (reduction) كل لغة في NP إلى هذه اللغة

تقريبا كل المسائل العملية موجودة في هذا القسم ولكن في حال ان  NP \neq P  حينها لا يوجد لاي من هذه المسائل خوارزمية جيدة بمعنى انه لا توجد آلة تيورنج حتمية بوقت حدودي تقرر هذه اللغات.
* القسم RP

مسألة تقرير S في RP إذا يوجد خوارزمية احتمالية بوقت حدودي A بحيث ان  \forall x \in S  الاحتمال بأن الخوارزمية A تقرر x بشكل صحيح أكبر من  \frac 12  أي:  Pr[A(x)=1]\ge \frac{1}{2} ، ولكل  x \notin S  الخوارزمية لا تخطأ في تقرير x أي:  Pr[A(x)=0]=1 
RP هو اختصار R*andomized *P*olynomial time* وهذا القسم يعتبر من الاقسام العملية وذلك بالرغم من عدم معرفة إذا ما RP=P حيث انه يمكن كتابة برامج احتمالية وهذا يمكننا من استخدام اللغات فيه، أحد أهم اللغات التي فيه والتي لا يعرف لها خوارزمية حتمية بوقت حدودي هي مسألة فحص إذا ما متعددا الحدود متساويين.

## امثلة
* مسألة الاكتفاء : {SAT={φ | φ satisfiable أي لغة كل الصيغ البوليانية التي يمكن اعطاء متغيراتها تعويض بحيث ان قيمتها تكون 1 (أو true)
* مشكلة المخطط الكامل ضمن مخطط : {clique={(,k): G graph and k number , Is there clique of size k وهي لغة كل المخطوطات التي يمكن فيها مخطوط كامل بكبر k?
هاتان اللغتان هما NP كاملتين كذلك.
* {p:هل p عدد اولي ؟}=PRIME وهذه اللغة موجودة في P
* مشكلة تلوين المخطط : باعطائنا مُخطط هل يمكن تلوينه بثلاثة الوان بحيث أن كل ضلع رأسيها ملونين بالوان مختلفة ؟
* مشكلة التفكيك إلى جداء عوامل أولية : ايجاد العوامل الاولية لعدد ما .
* باعطائنا دالتين متعددتي الحدود، فحص هل هما متطابقين .

## نظريات مهمة
*  P \subseteq RP \subseteq NP 
*  P \subseteq co-RP \subseteq co-NP 
*  NP \subseteq EXP 
* إذا NP=PCP(f,f) عندما:  f=o(log(n) حينها NP=P
* إذا Sat\in P  حينها NP=P أو بشكل عام إذا أي لغة في قسم NP كامل موجودة في P حينها NP=P

## مراجع

## انظر أيضا
* قسم تعقيد
* نظرية التعقيد الحسابي.
* مسألة P=NP
* خوارزمية

تصنيف:أقسام التعقيد الحسابي
تصنيف:علم الحاسوب النظري