बूलियन अभिव्यक्ति का एहसास करने के लिए आवश्यक नंद / एनआर द्वार की न्यूनतम संख्या का निर्धारण


9

क्या NAND या NOR गेट्स की न्यूनतम संख्या निर्धारित करने के लिए कोई एल्गोरिथम है

  1. इनपुट्स की संख्या
  2. पूरक इनपुट की उपलब्धता / अनुपलब्धता

एक बूलियन अभिव्यक्ति को साकार करने के लिए आवश्यक है? हम कर्णघट मानचित्रों के माध्यम से मुख्य याचनात्मक के रूप में एक-या रूप प्राप्त कर सकते हैं जो न्यूनतम है (जहां तक ​​मुझे पता है, क्विन-मैकलुस्की एल्गोरिथ्म उन्हें निर्धारक रूप से प्राप्त करता है)। क्या NAND या NOR कार्यान्वयन के लिए भी समान तकनीक मौजूद है? कम से कम, ऐसी तकनीक को वास्तविक आरेख को खोजने के बिना भी नंद / एनआर गेट्स की आवश्यक न्यूनतम संख्या निर्धारित करनी चाहिए?

मुख्य आरोपियों पर डी मॉर्गन के कानून को लागू करना नियतात्मक नहीं लगता है,

A ⊕ B = A'B + AB' = ((A'B)'(AB')')' [5 NAND gates]
A ⊕ B = (AB + A'B')' = ((ABAB+ABB') + (A'AB+A'B'))' = (AB(AB+B') + A'(AB+B'))' = ((AB+A')(AB+B'))' = (((AB)'A)'((AB)'B)')' [4 NAND gates by reusing (AB)']

क्या यह दो-चरण या बहु-चरण कार्यान्वयन के लिए है?
फिज़ा

@RespawnedFluff बहु-स्तरीय कार्यान्वयन का लक्ष्य फाटकों की संख्या को कम करना है, इसलिए न्यूनतम NAND / NOR कार्यान्वयन भी बहु-स्तरीय होना चाहिए।
सामिक

K- मानचित्र आपको बहु-स्तरीय अनुकूलन के लिए न्यूनतम परिणाम नहीं देता है।
फिज़ी

जवाबों:


10

आप केवल पूर्णांक प्रोग्रामिंग समस्या [या समकक्ष, नीचे देखें] को हल करके बहु-स्तरीय नेटवर्क में गेटों की न्यूनतम संख्या पा सकते हैं। यह समस्या एनपी-पूर्ण है, इसलिए केवल एक दर्जन गेटों को हल करने के लिए व्यावहारिक है।

वहाँ सन्निकटन विधियाँ मौजूद हैं जो आपको न्यूनतम संख्या नहीं देंगी, लेकिन समय की आवश्यकता के संदर्भ में अधिक ट्रैक्टेबल हैं ... ये अपने आप में एक विशाल विषय हैं, मूल रूप से बहु-स्तरीय अनुकूलन के पूरे क्षेत्र में। आप यहाँ एक [मुक्त] अवलोकन पढ़ सकते हैं ।

एनएएनडी (4 चर तक) के छोटे नेटवर्क के लिए, समस्या पूरी तरह से संपूर्ण ज्ञान [या समकक्ष विधियों] द्वारा हल की गई है। एलिजाबेथ एन अर्नस्ट द्वारा एक हालिया [2009] पीएचडी थीसिस है जो प्राचीन परिणामों को संक्षेप में प्रस्तुत करता है और उन्हें विस्तारित करता है। अर्नस्ट शाखा-और-बाउंड का उपयोग करता है, जो अभ्यास में संपूर्ण विधि में सुधार करता है, लेकिन एसिम्पोटिक रूप से नहीं। वह यह भी नोट करती है कि पूर्णांक प्रोग्रामिंग या सीएसपी (बाधा के माध्यम से हल, सैट के माध्यम से हल) जैसी अन्य अंतर्निहित गणना पद्धतियां व्यवहार में बदतर होती हैं।

उसने स्पष्ट रूप से अपनी विधि के लिए कुछ सॉफ्टवेयर लिखा (जिसे BESS कहा जाता है), लेकिन मुझे यकीन नहीं है कि यह कहीं सार्वजनिक रूप से उपलब्ध है। उसकी थीसिस का पूरा पाठ umich में स्वतंत्र रूप से उपलब्ध है । और वास्तव में आपको 2-इनपुट xor (आपका दूसरा वाला स्पष्ट रूप से) के लिए न्यूनतम अभिव्यक्ति मिली, जो नीचे प्रकाश डाला गया है:

यहां छवि विवरण दर्ज करें

उन्होंने एबीसी से विधिपूर्वक ऑप्टिमाइज़र द्वारा उत्पादित लोगों के साथ सटीक परिणामों (नंदों के लिए) की तुलना भी की ।

एबीसी 4,043 कार्यों में से 340 के लिए एक इष्टतम नेटवर्क का उत्पादन करने में सक्षम था जहां इष्टतम नेटवर्क को जाना जाता है। उन कार्यों के लिए जहां एबीसी ने एक इष्टतम नेटवर्क का उत्पादन नहीं किया था, यह इष्टतम नेटवर्क की तुलना में औसतन 36% बड़ा था। []

वहाँ (स्पष्ट रूप से) कुछ [बड़े] नेटवर्क जिसके लिए बीईएस खत्म नहीं हुआ, लेकिन ऊपरी सीमा को खोजने की अनुमति दी गई (उस बिंदु पर जहां खोज को छोड़ दिया गया था)। उन लोगों के लिए एबीसी ने बहुत अच्छा किया [अच्छी तरह से पाया सीमाओं के संबंध में], जैसा कि आप नीचे दिए गए 2 के ग्राफ से देख सकते हैं।

यहां छवि विवरण दर्ज करें


यदि आप उत्सुक हैं तो मैंने एबीसी को एक्सोर समस्या पर आज़माया है ... और यह 5 नंद द्वार देता है, कम से कम resyn2स्क्रिप्ट के साथ । तो यह तर्क शुक्रवार (जो गलत उपयोग करता है) से बेहतर नहीं है।
फिज़ा

ABC के लिए स्क्रिप्ट और डेटाबेस मौजूद हैं जो मूल रूप से पूर्व-संगणित इष्टतम कार्यान्वयनों जैसे arxiv.org/pdf/1108.3675.pdf के लिए बड़ी मात्रा में फ़ंक्शंस देखते हैं। मैंने कोशिश नहीं की है कि एक, लेकिन भले ही यह काम करे, कड़ी मेहनत कहीं और किया।
सीटी

मैं आपके द्वारा प्रदान की गई सामग्रियों से गुजर रहा हूं और वे बहुत दिलचस्प लग रहे हैं, मैं उन्हें समझने के लिए संघर्ष कर रहा हूं। एक बार जब मैं उन्हें ठीक से समझ पाऊंगा तो शायद इनाम दूंगा। इस बीच, एक उत्थान है।
सामिक

1

वहाँ शायद बेहतर तकनीकें हैं, लेकिन जिस तरह से अंधेरे युग में, मैंने कर्णघट मैप्स को ठीक काम करने के लिए पाया


क्या आप उन "अंधेरे युग" पर कुछ प्रकाश डालना चाहेंगे जो कर्णघट मानचित्रों से AND-OR कार्यान्वयन से न्यूनतम NAND / NOR कार्यान्वयन के लिए आगे बढ़ना चाहते हैं?
समिक

1

NAND के बाद NAND, OR के बाद और उसके बराबर है।

NOR के बाद NOR, OR के बाद OR के बराबर है।

नंद द्वारा पीछा किया गया एनएंड और उसके बाद के बराबर होगा और जो वास्तव में बहुत मायने नहीं रखता है। नंद ने नंद का अनुसरण किया, वैसे ही OR के साथ या उसके बराबर होगा।

मुझे विश्वास नहीं है कि सामान्य मामले में किसी भी व्यवहार्य तरीके से बड़ी संख्या में इनपुट के साथ समस्या के लिए एक न्यूनतम समाधान ढूंढना होगा (जाहिर है कि छोटे इनपुट मायने रखता है कि आप बल को भंग कर सकते हैं)। क्विन-मैक्लुस्की केवल दो-स्तरीय समाधानों को देखता है (न्यूनतम दो-स्तरीय समाधान अक्सर न्यूनतम समग्र समाधान नहीं होता है) और जटिल सत्य तालिकाओं और बड़ी संख्या में आदानों के साथ कम्प्यूटेशनल रूप से व्यावहारिक हो सकता है।


तो बबल शिफ्टिंग से बेहतर कोई तरीका नहीं है?
समिक

1

सबसे अच्छा एल्गोरिथ्म एस्प्रेसो एल्गोरिथ्म है। कुछ हद तक यह FPGA संश्लेषण में लागू किया गया है

लॉजिक फ्राइडे सॉफ्टवेयर का एक टुकड़ा है जिसका आप उपयोग कर सकते हैं। नोट: यह एक XOR से 5 NAND गेट कम करता है।


लेकिन एस्प्रेसो AND-OR कार्यान्वयन भी देता है, है ना?
समिक

1
एस्प्रेसो केवल इस अर्थ में "सर्वश्रेष्ठ" है कि यह बड़े इनपुट्स (सूत्रों) [के-नक्शों के विपरीत] के लिए संभव है, लेकिन यह सभी मामलों में सर्वश्रेष्ठ / न्यूनतम सूत्र नहीं देता है।
फ़िज़ूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.