实现给定布尔表达式的基本逻辑门最小数量
逻辑门是数字电路的基本组成单元。它们接收一个或两个二进制输入,并返回一个二进制输出。由于使用了二进制术语,输出和输入可以是0或1,也可以说是“假”和“真”或“低”和“高”。
有三种基本逻辑门:
与门
与门有两个或多个输入和一个输出。如果所有输入都为高电平,则产生高电平输出。一个双输入与门的真值表如下:
输入1 |
输入2 |
输出 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
或门
或门有两个或多个输入和一个输出。如果任何一个输入为高电平,则产生高电平输出。一个双输入或门的真值表如下:
输入1 |
输入2 |
输出 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
非门
非门有一个输入和一个输出。如果输入为低电平,则产生高电平输出;如果输入为高电平,则产生低电平输出。非门的真值表如下:
输入 |
输出 |
1 |
0 |
0 |
1 |
这三种基本逻辑门可以组合起来创建更复杂的电路,例如与非门、或非门和异或门。
布尔表达式:它是一个包含一个或多个变量、逻辑运算符和常量的数学表达式。变量的值可以是0或1,用a、b、c等表示。布尔表达式中使用的逻辑运算符通常是与、或和非。这些运算符以某种方式组合变量和常量,从而定义变量或常量之间的关系。
例如,布尔表达式 A AND B 只有在变量 A 和 B 都为真时才为真。表达式 A OR B 如果变量 A 或变量 B 或两者都为真,则为真。表达式 NOT A 只有在变量 A 为假时才为真。
布尔表达式通常用于编程、电路设计和数字电子学中,以表示逻辑运算、条件和所用变量之间的逻辑关系。
问题陈述
给定一个定义布尔表达式的字符串 str。找到实现给定表达式所使用的基本逻辑门的最小数量。
输入:
str = “!A.B+C”
输出:
3
解释
该表达式使用1个非门(用'!'表示)、1个与门(用'.'表示)和1个或门(用'+'表示)。因此,总共有3个基本逻辑门。
示例2
输入:
str = “!(a+b)+c.d”
输出:
4
解释
该表达式使用1个非门(用'!'表示)、2个与门(用'.'表示)和1个或门(用'+'表示)。因此,总共有4个基本逻辑门。
解决方案方法
为了实现布尔表达式的逻辑门总数,我们计算字符串中出现的门总数,并根据其符号表示识别它们。
与门表示为'.'
或门表示为'+'
非门表示为'!'
伪代码
procedure numberOfGates (s)
n = length(s)
count = 0
for i = 1 to n
if s[i] equals '.' or s[i] equals '+' or s[i] equals '!'
count = count + 1
end if
end for
output count
end procedure
示例:C++ 实现
在下面的程序中,我们遍历布尔表达式并根据其出现次数计算门数。
#include <bits/stdc++.h>
using namespace std;
// Function to find the number of basic logic gates used in a boolean expression
void numberOfGates(string s){
// Calculating the size of the string
int n = s.size();
// Initialising count variable
int count = 0;
// Traversing the string to find the gate's symbols
for (int i = 0; i < n; i++) {
// Incrementing counter on the occurrence of AND, OR or NOT gate
if (s[i] == '.' || s[i] == '+' || s[i] == '!') {
count++;
}
}
cout << count;
}
int main(){
string str = "!a+b";
cout << "Boolean Exoression: " << str << endl;
cout << "Minimum number of basic logic gate required: " ;
numberOfGates(str);
}
输出
Boolean Exoression: !a+b Minimum number of basic logic gate required: 2
结论
总之,为了找到实现给定布尔表达式所需的基本逻辑门的最小数量,我们可以有效地使用 numberOfGates() 函数。此函数将定义布尔表达式的字符串作为输入,并输出实现表达式所需的最小门数。最小化逻辑门对于降低电路的成本和复杂性非常重要。
总的来说,该代码是一种简单有效的方法,可以计算实现布尔表达式所需的基本逻辑门的数量,并且可以轻松地将其应用于更复杂的数字电路。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP