यह केवल एक विस्तारित टिप्पणी है। कुछ समय पहले मैंने पूछा था (खुद :-)) कितनी तेजी से एक मल्टीटाट एनटीएम जो एक (यथोचित एन्कोडेड) एनपी-पूर्ण भाषा को स्वीकार कर सकता है। मैं इस विचार के साथ आया:
3-SAT एनपी-पूर्ण रहता है भले ही चर को एकात्मकता में दर्शाया गया हो। मान लीजिए - विशेष रूप से हम एक खंड में बदल सकते हैं एक मनमाना 3-सैट सूत्र के - φ पर n चर और मीटर से अधिक वर्णमाला वर्णों के क्रम में खंड Σ = { + , - , 1 } जिसमें प्रत्येक चर घटना को एकात्मकता में दर्शाया गया है:(xi∨¬xj∨xk)φnmΣ={+,−,1}
+1i0,−1j,+1k
उदाहरण के लिए, के लिए परिवर्तित किया जा सकता है:(x2∨−x3∨+4)
+110-1110+11110
तो हम एक 3-सैट सूत्र में बदल सकते हैं एक बराबर स्ट्रिंग में यू ( φ मैं ) अपने खंड श्रृंखलाबद्ध। भाषा एल यू = { यू ( φ मैं ) | φ मैं ∈ 3 - एस ए टी } एनपी पूरा हो गया है।φiU(φi)LU={U(φi)∣φi∈3−SAT}
एक 2-टेप NTM अगर एक स्ट्रिंग तय कर सकते हैं समय में 2 | x | इस तरह।x∈LU2|x|
- पहला सिर इनपुट को बाएं से दाएं स्कैन करता है और आंतरिक तर्क के साथ यह ट्रैक रखता है जब यह एक क्लॉज में प्रवेश करता है या बाहर निकलता है या सूत्र के अंत तक पहुंचता है। जब भी यह एक या - पाता है , दूसरा सिर 1 i पर इसके साथ दाईं ओर बढ़ना शुरू करता है जो x i का प्रतिनिधित्व करता है । 1 i के अंत में , यदि दूसरा सिर 0 पर है, तो यह एक सत्य मान + या - (यह एक असाइनमेंट बनाता है) का अनुमान लगाता है और इसे दूसरे टेप पर लिखता है; यदि यह एक + या - पाता है, तो उस चर को पहले ही एक मान दिया गया है;+−1ixi1i0+−+−
- दोनों ही मामलों में, आंतरिक तर्क का उपयोग करते हुए, NTM अंतिम देखा या - के साथ दूसरे सिर (असाइनमेंट) के तहत सत्य मूल्य से मेल खाता है ; यदि वे मेल खाते हैं तो खंड संतुष्ट है;+−
- फिर दूसरा सिर सबसे दाहिने सेल में वापस आ सकता है;
- आंतरिक तर्क के साथ NTM ट्रैक रख सकता है यदि सभी खंड संतुष्ट हैं जबकि पहला हेड इनपुट के अंत की ओर बढ़ता है।
उदाहरण:
Tape 1 (formula) Tape 2 (variable assignments)
+110-1110+11110... 0000000000000...
^ ^
+110-1110+11110... 0000000000000...
^ ^
+110-1110+11110... 0000000000000...
^ ^
+110-1110+11110... 0+00000000000... first guess set x2=T; matches +
^ ^ so remember that current clause is satisfied
+110-1110+11110... 0+00000000000...
^ ^
...
+110-1110+11110... 0+00000000000...
^ ^
...
+110-1110+11110... 0++0000000000... second guess set x3=T
^ ^ don't reject because current
clause is satisfied (and in every
case another literal must be parsed)
समय कम किया जा सकता है यदि हम खंड में कुछ निरर्थक प्रतीकों को जोड़ते हैं:|x|
+1i0i,−1j0j,+1k0k...+++
( सूत्र के अंत को चिह्नित करता है)+++
इस तरह दूसरा सिर बाईं ओर की कोशिका में लौट सकता है जबकि पहला भाग को स्कैन करता है । सूत्र के अंत के लिए एक मार्कर के रूप में ++ और एक क्लैम सीमांकक के रूप में +++ का उपयोग करना, हम प्रति खंड में शाब्दिक संख्या के साथ CNF सूत्रों के लिए समान प्रतिनिधित्व का उपयोग कर सकते हैं।0i+++++