数字电路基础知识——数字逻辑代数(逻辑代数基本定理及常用公式,最大项、最小项,公式法、卡洛图法及Q-M法化简(列表法)化简逻辑函数)

数字电路基础知识——数字逻辑代数(逻辑代数公式、卡洛图的运用、Q-M法化简(列表法))
本节主要介绍逻辑代数的公式、及逻辑函数的化简、包括公式法化简、卡洛图化简、Q-M列表法化简。重点需要知道前面两种的方法,第三种可以了解,能够帮助自己更深的了解逻辑相邻项的理解

一、逻辑代数的三个基本运算

逻辑代数中最基本的三个运算:与、或、非
基本的函数关系如下:
在这里插入图片描述

二、逻辑代数的基本定律
1. 基本公式

在这里插入图片描述
在这里插入图片描述

比较重要的是后面三个定律:

  1. 反演律(德摩根律)
    使用此定律可以将乘积项和项打开。
    具体规则是 × 变++变×原变量变反变量,反变量变原变量
  2. 吸收律
    重点知道这个:A+A’B=A+B、A+AB=A、A(A+B)=A
    A+A’B
    =A+AB+A’B
    =A+B(A+A’)
    =A+B
  3. 冗余律
    AB+A’C+BC=AB+A’C
    AB+A’C+BC
    =AB+A’C+(A+A’)BC
    =AB+A’C+ABC+A’BC
    =AB+ABC+A’C+A’BC
    =AB(1+C)+A’C(1+B)
    =AB+A’C
2. 基本定理
  1. 代入定理
    任何一个逻辑式代入原来式中所有的相同变量的位置,等式仍然成立。

  2. 反演定理

  3. 对偶定理
    若两逻辑等式相等,则他们的对偶式也相等
    对偶定理主要在某些情况下,证明某式成立时,可以通过证明其对偶式成立来简化证明。
    如:
    Y=A(B+C),则YD=A+BC
    Y=(AB+CD)’,则YD=((A+B)(C+D))’
    Y=AB+(C+D)’,则YD=(A+B)(CD)’
    在这里插入图片描述

三、逻辑函数的两种标准式
  1. 最小项
    n个变量的最小项是含n个变量的与项,其中每个变量都是以原变量或反变量的形式出现一次。
    通常用mi表示各项。
    在这里插入图片描述
    在这里插入图片描述
    如:对于下面的逻辑表达式:
    在这里插入图片描述

  2. 最大项
    n个变量的最大项是含n个变量的或项,其中每个变量都是以原变量或反变量的形式出现一次。
    通常用Mi表示各项。

  3. 最大项和最小项的性质
    n变量的全部最小项之和恒为1,全部最大项之积恒为0.
    任意两个最小项之积恒为0,任意两个最大项之和恒为1.
    n变量的每一个最小项或者最大项有n个相邻项(相邻项是指两个最小项只有一个因子互为反变量,其余因子均相同,又称逻辑相邻项

四、逻辑函数的卡洛图化简

公式法化简逻辑函数其实就是用上面的公式来化简。
主要介绍一下卡洛图化简。

  1. 相邻项
    首先需要知道相邻项的概念,即两个最小项只有一个因子互为反变量,其余因子均相同,又称逻辑相邻项
  2. 卡洛图
    把任意两个逻辑上相邻的最小项变为几何中的相邻,做到逻辑相邻和几何相邻
    2变量卡洛图:由代表四个最小项的四个方格组成:
    在这里插入图片描述
    三变量卡洛图由8个最小项组成,需要注意的是最小项编码和格雷码的编码类似,即相邻位置或者首尾是逻辑相邻。:
    在这里插入图片描述
    四变量如下(一般卡洛图的化简至多四-五个变量):
    在这里插入图片描述
  3. 逻辑函数在卡洛图的表示
    在这里插入图片描述
    如:
    在这里插入图片描述
  4. 卡洛图最小项合并规则
    任何两个为一的相邻最小项可以合并为一项,并消去一个变量(消去的是互为反变量的因子,保留公因子)
    在这里插入图片描述
    任何四个为一的相邻最小项(可以是循环相邻)可以合并为一项,并消去两个变量
    在这里插入图片描述
    在这里插入图片描述
  5. 图形法化简的基本步骤

第一、将函数化为最小项之和的形式,然后做函数的卡洛图,确定卡洛图方格矩阵
第二、画卡洛圈(要遵循卡洛圈最少,最大的原则)
第三、写逻辑表达式(相同变量留下,不同变量去掉)

五、Q-M法化简逻辑函数(奎恩-麦克拉斯基),也叫列表化简法

卡洛图法化简虽然比较直观,简单,但是也有自身的缺点,如当逻辑变量大于五个之后,会变得很困难。
而公式法化简虽然虽然不受变量数量的影响,但是化简过程并没有固定、通用的步骤。所以也很难借助计算机辅助进行化简。
本节介绍一下Q-M法化简,本质上也是通过相邻最小项消去多余因子,来求逻辑函数的
在这里插入图片描述
先将函数表达式用最小项之和的形式表示:
如下面的函数表达式:

  1. Y=Σm(0,3,4,5,6,7,8,10,11)
  2. 将其按照一个个数一次排列分组,如下:
    在这里插入图片描述
  3. 合并相邻的最小项
    即将上表中每一组的每一个最小项与相邻组所有的最小项逐一比较,若仅有一个因子不同,则可以合并,并消去不同的因子。如下,例如罪域m0和m4仅尤一位不一样,所以这一位可以合并为0-00,同时将上表中可以合并的用“对号”表示,不能合并的用Pi表示。
    按照同样的方法,可以在次合并下面左边的一列,可以合并的用“对号”表示,不能合并的用Pi表示。
    在这里插入图片描述
    因此经过以上的并向合并,留下了没有合并过的最小项Pi,所以就包含了函数Y的全部最小项,因此,可以表示为:
    Y=P1+P2+P3+P4+P5+P6+P7
    需要注意的是上面的表达式并不一定是最简结果,将所有Pi列成如下表格。

在这里插入图片描述
上表格中的m5、m6、m8都是只在Pi中只出现了一次所以最小项一定包含P1和P4,所以选取了这两项之后,以及包含了m4、m5、m6、m7、m8、m10这六个,除去之后剩下的m0、m3、m11如下表所示:

mi0311
P2×
P3×
P5×
P6××
P7×

现在就是化简上面的结果了,因为P2和P3都有m0,因此可以去任何一项作为最简项。
对于P5、P6、P7,由于P5和P7行的所有项均包含在P6中,因此P6包含了P5、P7的所有最小项,故将P5、P7删掉。因此最终的结果是:
Y=P1+P4+P3+P6

以下是一个简单的Python代码示例,展示了如何使用蒙特卡洛路径规划算来寻找最优路径: ```python import random # 随机采样点的数量 num_samples = 1000 # 地图大小 map_width = 10 map_height = 10 # 起点和终点的坐标 start = (0, 0) goal = (9, 9) # 障碍物的坐标列表 obstacles = [(3, 4), (5, 7), (8, 2)] def monte_carlo_path_planning(start, goal, obstacles, num_samples): best_path = None best_cost = float('inf') for _ in range(num_samples): # 随机生成路径 path = [start] while path[-1] != goal: x = random.randint(0, map_width - 1) y = random.randint(0, map_height - 1) point = (x, y) if point not in obstacles: path.append(point) # 计算路径代价 cost = len(path) # 更新最优路径 if cost < best_cost: best_path = path best_cost = cost return best_path # 调用函数得到最优路径 path = monte_carlo_path_planning(start, goal, obstacles, num_samples) # 打印最优路径 print("Best path:", path) ``` 在上述代码中,我们首先定义了一些参数,如采样点数量、地图大小、起点和终点坐标以及障碍物坐标列表。然后,我们定义了一个`monte_carlo_path_planning`函数来执行蒙特卡洛路径规划算函数使用随机生成的路径,并计算路径的代价。最后,函数通过比较代价来更新最优路径。最后,我们调用函数并打印出最优路径。 请注意,这只是一个简单的示例代码,仅用于演示蒙特卡洛路径规划的基本原理。在实际应用中,您可能需要根据具体情况进行调整和优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摆渡沧桑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值