命题公式的范式python

别再死记硬背!用Python代码5分钟搞懂离散数学里的命题逻辑 本文通过Python代码实践,帮助读者快速理解离散数学中的命题逻辑概念,包括真值表、逻辑联结词和范式转换。通过代码实现和可视化工具,让抽象的命题逻辑变得直观易懂,适合编程爱好者和数学学习者。 阅读详情

命题公式的范式

程序: 输入一个命题公式, 输出合取/析取范式 主合取/析取范式

在这里插入图片描述

class Logic:
    def __init__(self, expr):
        # 合取 & 析取 | 非 ! 单条件 $ 双条件 @ 括号 ()
        # 初始化类,设置表达式列表、符号列表、命题元素列表
        self.expr_list = [i for i in expr if i != ' ']
        self.symbol_list = ['&', '|', '!', '$', '@', '(', ')']
        self.element_list = []
        for s in self.expr_list:
            if s.isalpha() and s not in self.element_list:
                self.element_list.append(s)
            else:
                assert s in self.symbol_list or s.isalpha()
        self.prn_list = self.get_prn()  # 获取逆波兰表达式
        print("PRN: ", self.prn_list)
        self.truth_table = self.get_truth_table(self.prn_list, self.element_list)  # 获取真值表
        self.print_truth_table(self.element_list, self.truth_table)  # 打印真值表

    def get_prn(self):
        # 获取逆波兰表达式
       	pass

    def print_truth_table(self, element_list, truth_table):
        # 打印真值表
        pass

    def get_truth_table(self, rpn_expr, element_list):
        # 获取真值表
        pass

    def get_cnf(self):
        # 主合取范式
        pass

    def get_dnf(self):
        # 主析取范式
        pass


if __name__ == '__main__':
    expr = "(P & R)|(S & R)| !P"
    logic = Logic(expr)

    print("CNF: ", logic.get_cnf())
    print("DNF: ", logic.get_dnf())

    expr1 = "(p $ !q) $ r"
    logic1 = Logic(expr1)
    print("CNF: ", logic1.get_cnf())
    print("DNF: ", logic1.get_dnf())

从零开始:手把手教你用Python实现主析取范式与主合取范式的自动转换 本文详细介绍了如何使用Python实现主析取范式(PDNF)与主合取范式(PCNF)的自动转换,涵盖逻辑公式的Python表示、真值表生成算法以及两种范式间的转换方法。通过代码示例和分步讲解,帮助开发者掌握这一在逻辑电路设计和人工智能推理中广泛应用的核心技术。 阅读详情

相关推荐

别再死记硬背了!用Python代码5分钟搞懂离散数学里的命题逻辑(附真值表生成脚本)

本文通过Python代码实践,帮助读者直观理解离散数学中的命题逻辑。从基础命题表示到真值表生成,再到逻辑等价式验证和命题公式分类,文章详细展示了如何用编程思维掌握抽象概念,特别提供了真值表生成脚本,让学习过程更加高效有趣。

weixin_33501543的博客 326

命题逻辑实战:如何用Python自动生成主析取范式(代码+步骤详解)

本文详细介绍了如何使用Python自动生成命题逻辑中的主析取范式,包括真值表构建、极小项提取和范式生成的全过程。通过代码示例和步骤详解,帮助读者掌握命题逻辑的自动化处理技术,适用于离散数学和计算机科学领域的实际应用。

weixin_29054195的博客 362

别再死记硬背了!用Python代码帮你秒懂离散数学的命题逻辑(附真值表生成器)

本文通过Python代码实战演示如何快速掌握离散数学中的命题逻辑,包括真值表生成器、逻辑公式验证及可视化工具。通过代码实现德摩根律、分配律等抽象概念,帮助读者直观理解命题逻辑,提升学习效率和应用能力。

weixin_33749131的博客 112

Python(离散数学实验)求不超过4个命题变元任意公式的主合取范式、主析取范式、真值表和成真赋值

计算离散数学中公式的主析取范式,主合取范式,成真赋值,真值表

qq_40282331的博客 6493

离散数学实战解析:命题公式类型判定与优化方法

本文深入解析离散数学中命题公式的类型判定与优化方法,涵盖重言式、矛盾式和可满足式的定义与判断技巧。通过真值表法和等值变换法的对比,提供高效判定策略,并结合Python代码实现实战优化,帮助读者掌握逻辑验证的核心技术。

weixin_30772105的博客 447

STM32F103 实例应用(10)——I2C读写24C32

一、应用简介 本文介绍24C32的读写,基于野火的软件I2C程序。 board_i2c.h /**=========================================================================== @file board_i2c.h @brief 本文件是用于I2C驱动 @author 青梅煮久 @version r0.1 @date 2021/01/13 -------------------------.

qq_34118600的博客 3447

python求主析取范式_python应用之求主析取范式,主合取范式

任意输入一个命题公式,计算并输出其真值表以及主析取范式,主合取范式思路:大概就是将蕴含,等价,异或进行转化,然后使用eval()计算#! /usr/bin/env python3# -*- coding:utf-8 -*-sInput = '' #输入的命题公式字符串sParse = '' #化简后的sInputvariable = [] #保存公式中的变量ornl = [] #主析取范式最小项a...

weixin_39662834的博客 2194

二、频率调制光谱(FMS)技术——error信号的数学模型及其他推论

一些推论。

qq_41111336的博客 1605

【日常Python-5】求真值表和主范式

1.问题描述 真值表是命题逻辑中的一个十分重要的概念,利用它几乎可以解决命题逻辑中的所有问题。例如,利用命题公式的真值表,可以判断命题公式的类型、求命题公式的主范式、判断两命题公式是否等价。(背景:离散数学) 2.实验代码 # -*- coding:gbk -*- sInput = '' #输入的命题公式字符串 sParse = '' #化简后的sInput variable = [] #保存公...

一只会飞的鲲的博客 3224

【小白指南】如何将deepseek引入WPS\Word\Excel中去?

如何将deepseek引入WPS\Word\Excel中去?纯小白都能看的懂,一步步操作就能行

2503_90498422的博客 1万+

告别TI官网迷路!手把手教你用C2000Ware为TMS320F28027搭建Proteus仿真工程模板

本文详细指导如何使用C2000Ware为TMS320F28027搭建Proteus仿真工程模板,帮助DSP开发者快速上手。从资源获取、工程目录设计到关键文件配置,再到CCS与Proteus的联调技巧,全面解析仿真工程搭建的每个步骤,特别适合初学者和工程师参考。

weixin_42715608的博客 472

命题逻辑中真值表方法的应用

离散数学

fankeyang的博客 1793

奥比中光Dabai深度相机SDK在Ubuntu22.04的兼容性安装指南

本文详细指导如何在Ubuntu22.04系统上安装奥比中光Dabai深度相机的SDK。针对新旧版本不兼容的核心问题,重点推荐使用经过验证的v1.10.18版本SDK,并提供了从系统依赖检查、SDK下载安装、Python环境配置到编译测试的完整步骤,帮助用户成功解决安装难题并实现相机驱动。

j2k3l4的博客 1000

离散作业:主范式的实现

#用程序实现主范式 sInput = '' #输入的命题公式字符串 sParse = '' #化简后的sInput variable = [] #保存公式中的变量 ornl = [] #主析取范式最小项 andnl = [] #主合取范式最大项 fore = '' #符号前面的部分 back = '' #符号后面的部分 def myinput(): global sInput print("请输入一个任意命题公式(原子命题用字母表示,'~'表示非 '&'表示合取 '|'表示析取 .

JHJ15713942621的博客 224

通达信+大智慧数据同步存调DLL

数据同步存调DLL(通达信版+大智慧版)

guleba的博客 2053

HFSS实战项目——高带外抑制特性SIW带通滤波器

本文对单级滤波器和双级滤波器的设计、工作原理及仿真结果进行了详细分析,并验证了双级SIW带通滤波器在性能方面的优越性,为微波通信系统中滤波器的设计和应用提供了重要参考。

2401_87464239的博客 1815

离散数学 习题篇——生成主范式

给定公式中的命题变元,以及所有极小项(或极大项)的解释,可以计算出对应主范式。 在LaTeX中,公式按照这种格式:把符号串放入一对$中。 于是$P\vee \neg Q\wedge R$会显示为P∨¬Q∧R。 Word的公式编辑器也是用相同的格式。 ¬符号对应于\neg。(为让输入输出更简单,注意后面有一个空格。) ∨符号对应于\vee。(为让输入输出更简单,注意后面有一个空格。) ∧符号对应于\...

weixin_44941062的博客 1270

uniapp:在map地图组件上添加控件,在地图上添加浮层展示自定义按钮或元素,uniApp如何在Map组件地图上添加悬浮在上面的图标/图片(全平台兼容安卓苹果app、H5网页、微信小程序、nvue)

uni-app的map添加控件问题,uniapp实现地图展示控件,uniapp小程序如何在map组件上增加按钮,uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,Uniapp腾讯地图添加控件,uniapp百度地图添加控件,地图上展示控件并可以点击,在地图上展示控件信息,uniapp map地图怎么向地图上增加工具栏,使用cover-view将控件在地图上展示,解决uniapp map上添加浮层无法显示问题,不显示怎么办,css样式不生效,地图等最高层

✅ 精选推荐文章 3230

别再死记硬背了!用Python手把手实现离散数学主范式生成器(附完整源码)

本文介绍如何用Python实现离散数学中的主范式生成器,帮助用户通过可视化工具掌握主析取范式和主合取范式的转换。文章详细解析了公式解析器、真值表引擎和范式生成算法的核心设计,并提供了完整源码,适用于逻辑电路设计和算法验证等应用场景。

weixin_30823001的博客 184

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python自动化离散数学范式计算:从真值表到主析取/合取范式

离散数学是计算机科学的理论基础,其核心概念如命题逻辑、真值表和逻辑范式,直接对应计算机底层的逻辑运算与电路设计。理解命题公式的表示与求值原理,是将抽象数学思维转化为可计算模型的关键。通过构建抽象语法树(AST)和递归求值算法,可以自动化生成真值表,并基于真值表直接推导出主析取范式(PDNF)和主合取范式(PCNF)。这一技术不仅解决了手工推演易出错、效率低的问题,更在算法设计、电路验证和软件测试等领域具有重要价值。本文以Python实现为例,详细解析了如何将命题公式转化为数据结构,并自动化完成真值表生成与范

343

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

离散数学实战:用Python代码自动生成主析取范式与主合取范式

本文详细介绍了如何使用Python代码自动生成离散数学中的主析取范式与主合取范式。通过构建命题逻辑的Python表示、真值表生成算法以及极小项与极大项的编码,实现从理论到实践的跨越。文章提供了完整的代码示例,帮助计算机专业学生和编程爱好者掌握这一实用技能,适用于逻辑电路设计、自动定理证明等领域。

weixin_29309785的博客 163

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

离散数学命题逻辑实战:用Python自动生成真值表与主析取范式

本文通过Python编程实战,详细演示了如何自动生成命题逻辑公式的真值表与主析取范式。文章从构建公式的抽象语法树(AST)入手,逐步实现了公式解析、真值计算、赋值枚举及范式转换算法,将离散数学中的抽象理论转化为可执行的代码,帮助读者在理解命题逻辑核心概念的同时掌握其自动化实现方法。

9o8p7i6u5y的博客 530

别再死记硬背了!用Python代码帮你秒懂离散数学里的命题逻辑(附真值表生成脚本)

本文通过Python代码实践,将离散数学中的命题逻辑理论转化为可运行的脚本,帮助读者轻松理解命题逻辑的核心概念。文章详细介绍了逻辑运算的Python实现、真值表生成、逻辑等价式验证、命题公式分类以及范式转换等实用技巧,让抽象的数学符号变得直观易懂。

weixin_32660831的博客 226

别再死记硬背了!用Python代码帮你搞定离散数学命题逻辑(附真值表生成脚本)

本文介绍如何利用Python代码简化离散数学中的命题逻辑学习,包括真值表生成、范式计算和推理验证等核心内容。通过自动化脚本和可视化工具,帮助读者直观理解抽象概念,提升学习效率,特别适合计算机科学学生和编程爱好者。

weixin_33713707的博客 305

离散数学实战:用Python代码实现谓词逻辑9大经典题型(左孝凌版)

本文通过Python和SymPy库,将左孝凌版离散数学中抽象的谓词逻辑理论转化为可执行的代码实践。详细讲解了如何实现命题符号化、约束变元换名、量词消去、前束范式转换以及谓词演算推理等9大经典题型,帮助读者在编程中深化对全称量词、存在量词等核心概念的理解,有效提升逻辑思维与编程能力。

linux6sysadmin的博客 429

从编程思维看离散数学:Python如何帮你自动判断命题公式类型?

本文探讨了如何利用Python编程来自动化判断离散数学中的命题公式类型,包括重言式、矛盾式和可满足式。通过构建真值表生成器和范式计算算法,展示了编程与数学的完美结合,显著提升了逻辑分析的效率和准确性。文章还介绍了性能优化策略及其在数字电路验证、软件需求分析等领域的实际应用。

weixin_42526101的博客 184
上一篇: CS564: Assignment 5
下一篇: CS4386AIGameProgramming
todcode
博客等级 码龄7年 359粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值