חישוב לא דטרמינסטי

נגדיר אלגוריתם לא דטרמינסטי כאלגוריתם שבכל צעד יתכנו כמה אפשרויות

הגדרה
נאמר כי אלג׳ ל״ד A מכריע בעיה S אם מתקיים:

זמן ריצה של אלגוריתם ל״ד

זמן הריצה של A על קלט x הינו מספר הצעדים המקסימלי שA מבצע בריצה כלשהי על x. נאמר שלA יש זמן ריצה פולינומי אם קיים פולינום P כך שלכל x זמן הריצה של A(x) חסום על ידי P(|x|)

הגדרה שקולה למחלקה NP

אם כן, נוכל להגדיר את המחלקה NP על ידי

NP={S | exists a indeterministic turing machine M that decisive S}

טענה: 2 ההגדרות של NP הן שקולות
הוכחה:
תהי בעיה SNP לפי ההגדרה המקורית, כלומר קיים פולינום P ומוודא פולינומי V כך ש xSy:|y|P(|x|):V(x,y)=1 . נגדיר אלגוריתם ל״ד A המכריע את S:

A(x):
	y = ""
	while y <= P(|x|) choose in a indetermistic way between:
		1) y = y+0
		2) y = y+1
		3) break
	return V(x,y)

נשים לב ששלב הבחירה נעשה לכל היותר P(|x|) פעמים ו V אלג׳ פולינומי לכן A פולינומי.
כמו כן:
xS אמ״מ קיים y באורך לכל היותר P(|x|) כך ש V(x,y)=1 אמ״מ קיימת בחירה של y כך ש A(x)=1=V(x,y) בשורה האחרונה של הקוד. לכן SNP גם לפי ההגדרה השקולה.

בכיוון השני, נניח SNP לפי ההגדרה השקולה.
כלומר קיים אלגוריתם פולינומי A שמכריע את S. נסמן ב P את הפולינום שחוסם את זמן הריצה של A ונגדיר אלגוריתם דטרמינסטי V שמקבל (x,y) ופשוט מריץ את A(x) . השימוש ב y יהיה כדי לקבוע את הבחירות הל״ד של A כלומר, לפי הביט ה i מתבצעת הבחירה הi באלגוריתם הל״ד.
כמובן ש V פולינומי ובנוסף :
xS אמ״מ קיימת ריצה עבורה A(x)=1 אמ״מ קיים y חסום ב P(|x|) כך ש V(x,y)=1 ולכן SNP לפי ההגדרה המקורית.

הגדרה

עבור בעיית הכרעה S נגדיר:
PS - כל הבעיות שניתן להכריע בעזרת אלגוריתם דטרמינסטי פולינומי עם גישת אורקל ל S.
NPS - כל הבעיות שניתן להכריע בעזרת אלגוריתם ל״ד פולינומי עם גישת אורקל ל S.
נוכל להגדיר גם בהינתן מחלקה כלשהי C :
PC=SCPS , NPC=SCNPS