कोई भी बूलियन अभिव्यक्ति को सरल बनाने के लिए एल्गोरिदम के बारे में जानता है?बूलियन अभिव्यक्ति एल्गोरिदम को सरल बनाएं
मुझे बूलियन बीजगणित और कर्णॉट मानचित्र याद है, लेकिन यह डिजिटल हार्डवेयर के लिए है जहां हर कोई बूलियन है। मुझे ऐसा कुछ चाहिए जो ध्यान में रखता है कि कुछ उप-अभिव्यक्ति बुलियन नहीं हैं।
a == 1 && a == 3
इस एक शुद्ध बूलियन अभिव्यक्ति करने के लिए अनुवाद किया जा सकता:
उदाहरण के लिएa1 && a3
लेकिन इस अभिव्यक्ति, अलघुकरणीय है, जबकि arithmetics के ज्ञान का एक छोटा सा के साथ everibody निर्धारित कर सकते हैं है कि अभिव्यक्ति सिर्फ है:
false
कुछ शरीर जानता है ओमे लिंक?
http://hopper.unco.edu/KARNAUGH/Algorithm.html
बेशक, कि गैर बूलियन subexpressions के साथ सौदा नहीं करता है:
क्या होगा यदि 'ए' को भाषाओं/रनटाइम में अस्थिर चर/फ़ील्ड के रूप में घोषित किया गया है जो उनको अनुमति देता है, और मान किसी अन्य धागे पर 1 और 3 के बीच उतार-चढ़ाव करता है? मैं यह नहीं कह रहा हूं कि यह एक अच्छा डिजाइन है, लेकिन सॉफ्टवेयर में, "हमेशा" और "कभी नहीं" आमतौर पर सापेक्ष शब्द होते हैं। –
यह कोई समस्या नहीं है, वास्तविक उपयोग LINQ प्रदाता के लिए है और वास्तविक मान वे हैं जब क्वेरी का अनुवाद किया जाता है। यदि वे क्वेरी फिर से निष्पादित की जाती हैं तो सरलीकरण अपडेट किए गए मानों के साथ फिर से चलाया जाएगा। – Olmo
सामान्य रूप से यह संभव नहीं है। उदाहरण के लिए 'ए> 0 और बी> 0 और एन> 2 और एक^एन + बी^एन = सी^एन' हमेशा झूठा है लेकिन साबित करना इतना आसान नहीं है। इसका मतलब है कि आप विज्ञापन-प्रसार सरलीकरण के साथ फंस गए हैं और आपके प्रश्न का कोई साफ जवाब नहीं है (क्योंकि यह उन अभिव्यक्तियों की प्रकृति पर निर्भर करेगा जिन्हें आप देख सकते हैं)। –