समस्या एनपी मुश्किल के लिए है एल = एक * जहां एकL=A∗A परिमित निम्नलिखित शब्दों से युक्त भाषा है:
- x 111 , xx111 000 ,x000
- y 100 , y 010 , yy100y010 001 ,y001
- 00 सी 11 , 01 सी 10 , 10 सी 01 , और 11 सी00c1101c1010c01 0011c00
कमी समस्या ग्राफ ओरिएंटेशन से है, जिसे एनपी-हार्ड के रूप में जाना जाता है (देखें https://link.springer.com/article/10.1007/s00454-017-9884-9 )। इस समस्या में, हमें एक 3-नियमित अप्रत्यक्ष ग्राफ दिया जाता है, जिसमें प्रत्येक शीर्ष पर या तो " { 1 } " या " { 0 , 3 } " लेबल होता है । लक्ष्य ग्राफ के किनारों को निर्देशित करना है ताकि हर शिखर की रूपरेखा उस शीर्ष लेबलिंग सेट में हो।{1}{0,3}
कमी को एक ग्राफ ओरिएंटेशन उदाहरण के इनपुट के रूप में लेने की जरूरत है और आउटपुट के रूप में तीनों की सूची का उत्पादन करना है। इस कमी में, हम जिन ट्रिप्स का उत्पादन करते हैं, वे हमेशा कुछ बाधाओं को पूरा करेंगे। इन बाधाओं को नीचे सूचीबद्ध किया गया है, और हम इन बाधाओं को पूरा करने के लिए और यदि वे इन बाधाओं को पूरा करते हैं, तो केवल मान्य के रूप में तीनों की सूची का उल्लेख करेंगे:
- अक्षर x , y और cxyc को केवल एक अनुक्रमणिका वाले अंतराल दिए गए हैं। दूसरे शब्दों में, जब भी इन पात्रों को रखा जाता है, उन्हें विशिष्ट स्थानों पर रखा जाता है।
- हर ट्रिपल के लिए ( मैं , एल , आर ) उदाहरण में साथ मौजूद मैं ∈ { 0 , 1 } , ट्रिपल ( 1 - मैं , एल , आर ) भी मौजूद है।(i,l,r)i∈{0,1}(1−i,l,r)
- अगर ( α , एल , आर ) और ( α ' , एल ' , आर ' ) उदाहरण में मौजूद दोनों ट्रिपल तो या तो कर रहे हैं एल < एल ' ≤ आर ' < r , या एल ' < एल ≤ आर < आर ' , या { α , α ' } = { 0 , 1 } के साथ एल(α,l,r)(α′,l′,r′)l<l′≤r′<rl′<l≤r<r′{α,α′}={0,1} = एल' < R = आर ' ।l=l′<r=r′
- अगर ( α , एल , आर ) एक ट्रिपल है तो ट्रिपल की संख्या ( α ' , एल ' , आर ' ) के साथ एल ≤ एल ' ≤ आर ' ≤ आर ठीक है आर - एल + 1 ।(α,l,r)(α′,l′,r′)l≤l′≤r′≤rr−l+1
इस पोस्ट के अंत में साबित हुए लेम्मा पर ध्यान दें।
Lemma: तीनों की एक वैध सूची के लिए, वर्ण x , y और c को त्रिभुज द्वारा इंगित के रूप में ठीक से रखा जाना चाहिए, और किसी भी जोड़े के लिए triples ( 0 , l , r ) और ( 1 , l , r ) , उस ट्रिपल के लिए दो वर्णों को सूचकांक l और r पर रखा जाना चाहिए ।xyc( 0 , एल , आर )( 1 , एल , आर )एलआर
फिर कटौती का विचार निम्नलिखित है।
हम किनारों का प्रतिनिधित्व करने के लिए जोड़े ( 0 , एल , आर ) , और ( 1 , एल , आर ) के जोड़े का उपयोग करते हैं। धार सूचकांक पर समाप्ति बिंदुओं के बीच चला जाता है l और सूचकांक पर आर । यह मानते हुए कि हम तीनों की एक मान्य सूची तैयार करते हैं, इन दोनों त्रिगुणों में से वर्णों को l और r पर रखा जाना चाहिए , इसलिए हम उस क्रम का इलाज कर सकते हैं जिसमें उन्हें किनारे की दिशा का संकेत दिया जाता है। यहां 1 किनारे का "सिर" है और 0 "पूंछ" है। दूसरे शब्दों में, यदि 1 को रखा जाता है( 0 , एल , आर )( 1 , एल , आर )एलआरएलआर101 rआरफिर धार l से r तक इंगित करता है और यदि 1 को l पर रखा जाता है, तो r से l तक बढ़त इंगित करता है ।एलआर1एलआरएल
शीर्ष रेखाओं का प्रतिनिधित्व करने के लिए, हम एक सूचकांक पर एक x या y वर्ण रखते हैं और अगले तीन वर्णों का उपयोग तीन किनारों के अंत बिंदु के रूप में करते हैं जो शीर्ष को छूते हैं। ध्यान दें कि यदि हम एक x रखते हैं , तो शीर्ष पर स्थित सभी तीन किनारों को एक ही दिशा में इंगित करना चाहिए (सभी शीर्ष में या सभी शीर्ष में से) बस उन तारों के कारण हैं जो परिमित भाषा A में हैं । इस तरह के कोने में 0 या 3 ओवरड्री होती है , इसलिए हम { 0 , 3 } लेबल वाले कोने के लिए एक एक्स लगाते हैं । अगर हम एक वाईएक्सyएक्सए03एक्स{ 0 , 3 }y, शीर्ष पर तीन किनारों में से एक ए में तार के कारण एक ही दिशा में इंगित करना चाहिए । इस तरह के वर्टिकल में 1 ओवरड्री होती है , इसलिए हम { 1 } लेबल वाले वर्टिक्स के लिए एक वाई लगाते हैं ।ए1y{ 1 }
कुछ अर्थों में, हम कर रहे हैं। विशेष रूप से, इस उदाहरण को हल करने और ग्राफ़ ओरिएंटेशन उदाहरण को हल करने के बीच पत्राचार स्पष्ट होना चाहिए। दुर्भाग्य से, हमारे द्वारा उत्पादित ट्रायल्स की सूची मान्य नहीं हो सकती है, और इसलिए वर्णित "किनारों" का उद्देश्य के रूप में काम नहीं कर सकता है। विशेष रूप से, त्रिगुणों की सूची मान्य नहीं हो सकती है क्योंकि यह शर्त कि त्रिगुणों के अंतराल में हमेशा एक-दूसरे का समावेश होना चाहिए हो सकता है: दो किनारों से अंतराल एक दूसरे के बिना ओवरलैप हो सकता है।
इससे निपटने के लिए, हम कुछ और बुनियादी ढांचे को जोड़ते हैं। विशेष रूप से, हम "क्रॉसओवर कोने" जोड़ते हैं। एक क्रॉसओवर वर्टेक्स डिग्री 4 का एक शीर्ष है, जिसके किनारों को ऐसे जोड़ा जाता है कि प्रत्येक जोड़ी के भीतर एक किनारे को क्रॉसओवर वर्टेक्स और एक आउट में इंगित किया जाना चाहिए। दूसरे शब्दों में, एक क्रॉसओवर वर्टेक्स केवल दो "क्रॉसिंग" किनारों के समान व्यवहार करेगा। हम कुछ अनुक्रमणिका i पर वर्ण c को रखकर एक क्रॉसओवर वर्टेक्स का प्रतिनिधित्व करते हैं । फिर ध्यान दें कि भाषा A , i - 1 और i + 2 के वर्णों को विपरीत बनाती है (एक 0 और एक 1 ) और i - 2 के अक्षर4सीमैंएमैं - १मैं + २01मैं - २और विपरीत होना। इस प्रकार, यदि हम इन सूचकांकों को क्रॉसओवर वर्टेक्स पर चार किनारों के लिए समापन बिंदु के रूप में उपयोग करते हैं, तो व्यवहार बिल्कुल वर्णित है: चार किनारे जोड़े में हैं और प्रत्येक जोड़ी के बीच एक अंक और एक अंक में।मैं + 1मैं + 1
कैसे हम वास्तव में इन crossovers जगह है? खैर लगता है हम दो अंतराल ( एल , आर ) और ( एल ' , आर ' ) जो ओवरलैप। Wlog, एल < एल ' < r < आर ' । हम (के बीच बीच में विदेशी चरित्र जोड़ने के एल ' और आर )। (मान लें कि हम सभी ने अब तक सब कुछ खत्म कर दिया है कि हमेशा पर्याप्त जगह है, और अंत में हम किसी भी अप्रयुक्त स्थान को हटा देंगे।) क्रॉसओवर चरित्र का सूचकांक मैं होने दें । फिर हम चार त्रिभुजों को प्रतिस्थापित करते हैं , एल( एल , आर )( l', आर')l < l'< r < r'एल'आरमैं ( 0) को, आर ) , ( 1 , एल , आर ) , ( 0 , एल ' , आर ' ) , और ( 1 , एल ' , आर ' ) आठ ट्रिपल साथ चरित्र के साथ दोनों एक (एक साथ 0 और चरित्र के साथ एक 1 ) के लिए निम्नलिखित चार अंतराल ( l , i - 1 ) , ( i + 2 , r( 0 , एल , आर )( 1 , एल , आर )( 0 , एल', आर')( 1 , एल', आर')01( l , i - 1 ) )( i + 2 , r ), ( एल ' , मैं - 2 ) , ( मैं + 1 , आर ' ) । ध्यान दें कि अंतराल अब खराब तरीके से ओवरलैप नहीं करते हैं! (इस परिवर्तन के बाद, यदि दो अंतराल ओवरलैप करते हैं, तो एक दूसरे के अंदर सख्ती से होता है।) इसके अलावा, एल से आर तक के किनारे को एल से क्रॉसओवर वर्टेक्स तक एक किनारे से बदल दिया जाता है, इसके बाद किनारे से आर तक ; इन दो किनारों को क्रॉसओवर शीर्ष पर इस तरह से जोड़ा जाता है कि एक को इंगित किया जाता है और एक को इंगित किया जाता है; दूसरे शब्दों में, दो किनारे एक ही व्यवहार करते हैं जैसे कि वे जिस एक किनारे को बदल रहे हैं।( l', i - 2 )( i + 1 , आर')एलआरएलआर
कुछ अर्थों में, इस क्रॉसओवर वर्टेक्स को "अनसोर्स्ड" दो किनारों (जिनके अंतराल ओवरलैपिंग थे) में डाल दिया। यह देखना आसान है कि क्रॉसओवर वर्टेक्स को जोड़ने से कोई अतिरिक्त किनारों को पार नहीं किया जा सकता है। इस प्रकार, हम क्रॉस क्रॉसिंग किनारों की प्रत्येक जोड़ी को पर्याप्त क्रॉसओवर कोने में डालकर अनसोल्ड कर सकते हैं। अंतिम परिणाम अभी भी ग्राफ ओरिएंटेशन उदाहरण से मेल खाता है, लेकिन अब तीनों की सूची वैध है (गुण अब सभी सत्यापित करने में आसान हैं कि हमारे पास किसी भी पार किनारों को "अनसर्टेड" है), इसलिए लेम्मा लागू होता है, किनारों को वर्णित किया जाना चाहिए। , और पत्राचार वास्तव में एक समानता है। दूसरे शब्दों में, यह कमी सही है।
लेम्मा का प्रमाण
Lemma: तीनों की एक वैध सूची के लिए, वर्ण x , y और c को त्रिभुज द्वारा इंगित के रूप में ठीक से रखा जाना चाहिए, और किसी भी जोड़े के लिए triples ( 0 , l , r ) और ( 1 , l , r ) , उस ट्रिपल के लिए दो वर्णों को सूचकांक l और r पर रखा जाना चाहिएएक्सyसी( 0 , एल , आर )( 1 , एल , आर )एलआर।
प्रमाण:
हम अंतराल लंबाई के आधार पर तीनों पर प्रेरण द्वारा आगे बढ़ते हैं। विशेष रूप से, हमारा कथन निम्नलिखित है: किसी भी k के लिए यदि कुछ ट्रिपल में अंतराल लंबाई k हैकश्मीरकश्मीर तो उस ट्रिपल में वर्ण को लेम्मा में वर्णित के रूप में रखा जाना चाहिए।
बेस केस: k = 0 के लिए , ट्रिपल को एक वर्ण x , y या c रखना चाहिएके = ०एक्सyसी अंतराल के अंदर एकल इंडेक्स । यह बिल्कुल ऐसा है जैसा कि लेम्मा में वर्णित है।
आगमनात्मक मामला: मान लें कि कथन किसी k से कम k के लिए है । अब अंतराल लंबाई के साथ कुछ ट्रिपल पर विचार कश्मीर ' । फिर ट्रिपल इस रूप में होने चाहिए कि ( मैं , एल , आर ) के साथ आर = एल + कश्मीर ' - 1 और मैं ∈ { 0 , 1 } । ट्रिपल ( 1 - i , l , r ) भी मौजूद होना चाहिए। त्रिगुणों की संख्या ( α)कश्मीरकश्मीर'कश्मीर'( i , l , r )r=l+k′−1i∈{0,1}(1−i,l,r)' , एल ' , आर ' ) के साथ एल ≤ एल ' ≤ आर ' ≤ आर ठीक है r - एल + 1 = कश्मीर ' । इन त्रिगुणों में त्रिगुण ( 0 , l , r ) और ( 1 , l , r ) शामिल हैं, लेकिन k ′ - 2 अन्य रूप के त्रिगुण ( α ′ , l ples )(α′,l′,r′)l≤l′≤r′≤rr−l+1=k′(0,l,r)(1,l,r)k′−2, आर ' ) के साथ एल < एल ' ≤ आर ' < आर । इन अन्य त्रिभुजों में अंतराल की लंबाई k k की तुलना में छोटी होती है, इसलिए सभी को अपने वर्णों को लेम्मा में निर्दिष्ट करना चाहिए। ऐसा होने का एकमात्र तरीका यह है कि ये तिकड़ी हर सूचकांक में वर्णों को सूचकांक l + 1 से शुरू करेंऔर सूचकांक r + 1 पर समाप्त करें। इस प्रकार, हमारे दो त्रिभुज ( 0 , l , r ) और ( 1 , l , r )(α′,l′,r′)l<l′≤r′<rk′l+1r+1(0,l,r)(1,l,r)सूचक के मामले को समाप्त करते हुए, अपने पात्रों को सूचक l और r पर रखना चाहिए , जैसा कि लेम्मा में वर्णित है।lr
प्रेरण द्वारा, लेम्मा सही है।