文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页单机游戏角色扮演 → 怪物猎人世界新装备介绍 怪物猎人世界新装备新系统一览

金茂大厦_使用卡诺图简化你的逻辑判断

什么是卡诺图

卡诺图是真值表的变形,它可以将有n个变量的逻辑函数的2^n个最小项组织在给定的长方形表格中,同时为相邻最小项(相邻与项)运用邻接律化简提供了直观的图形工具。在部分情况下,卡诺图能让你的逻辑变得一目了然,但是如果需要处理的逻辑函数的自变量较多,卡诺图会使图形更加复杂。更多

一个简单的例子

现有绿、黄、红三颗灯,当满足下面四个条件中任何一个时,需要按下按钮:

  1. 绿灯、黄灯、红灯全部都熄灭
  2. 黄灯熄灭、红灯亮
  3. 绿灯熄灭、黄灯亮
  4. 绿灯、黄灯、红灯全部亮起

如果让你写一段代码来判断是需要按下按钮,很多人会这么写:

/**
 * @param bool $a 绿灯的状态,true为亮,false为熄灭
 * @param bool $a 黄灯的状态,true为亮,false为熄灭
 * @param bool $a 红灯的状态,true为亮,false为熄灭
 * @return bool
 */
function checkEnterBtn(bool $a, bool $b, bool $c): bool 
{
    if ( (!$a && !$b && !$c) || (!$b && $c) || (!$a && $b) || ($a && $b && $c) ) {
        return true;
    }
    
    return;
}

上面的代码是不是觉得特别的繁琐。繁琐就对了,下面我们来开启高能模式,将卡诺图应用到我们实际的编码中。

定义命题:

从上面的四个条件中,我们可以明显看出,参与逻辑计算的变量只有三个,所以我们为它们分别定义一个命题:

  • 命题A: 绿灯亮起
  • 命题B: 黄灯亮起
  • 命题C: 红灯亮起

画出卡诺图的结构

我们这里使用的卡诺图是变量卡诺图的变种

image

我们这里之所以让命题B和命题C交叉的目的是为了覆盖所有的变量。如果只有两个参与运算的变量,卡诺图的机构就是一个4x4的方格。更复杂的卡诺图参见维基百科。

将四个条件在卡诺图中标出

接下我们在满足上面4个条件的方格中打上勾

image

在上面图中,我们可以一目了然的看出在什么条件下需要按下按钮。接下来,我们将相邻的打勾格所形成的最大网格用虚线围起来组成组合框(组合框之间可以相互重叠)。

image

这个时候,我们可以看出图中有两个组合框,分别为:

  • 横向组合框,就是A为false的区域,因此用?A来表示。
  • 纵向组合框,就是C为true的区域,因此用C来表示。

最终代码

将一步得出的两个组合框用代码实现,就是:

/**
 * 判断是否能按下按钮
 * @param bool $a 绿灯的状态
 * @param bool $b 黄灯的状态
 * @param bool $c 红灯的状态
 * @return bool 
 */
function checkEnterButton($a, $b, $c) {
    if (!$a || $c) {        // 这里的两个条件就是上一步中两个组合框的内容
        return true;
    }

    return false;
}

总结

当然,并不是什么情况都能够使用卡诺图来简化逻辑的,当参与运算的变量过多,会导致卡诺图变得非常的复杂。所以你需要区分什么情况下能够使用这种方式。

好了,到这里就结束了。对比两种实现方式,是不是要简洁很多。由此可见数学对于程序员来说是多么重要的东西。

当前文章:http://www.buzzsox.com/hhx/117697-661313-59503.html

发布时间:04:06:55

www.456767.com??管婆特马彩图??六合公益论坛??94779黄大仙论坛香港??香港马会资料大全网??香港开奖结果4887??开奖结果??www.787654.com??2017广东买马开奖结果??藏宝图??

相关阅读 预定航班凭空消失 高速路上接连爆胎 假期出游又有新痛点?社科院研究生院工商学院院长助理杨小科:依托大数据优势提升价值再现 “母城”记忆 渝中区下半城打造商旅文融合发展回首过去,展望未来,轻薄游戏本是PC的终极形态?今日结束:韩国进口,LG竹盐派缤按压式牙膏285g×2瓶38.8元蝉蜕的功效与作用马斯克三年后若想再当特斯拉董事长 需经股东投 票同意致敬中国卫浴脊梁 | 惠达荣耀!中国骄傲!

文章评论
发表评论

热门文章 分布式事务1可躺可立/10W快充,ROCK旗舰店苹果安卓通用无线充电器29元4月新番《鬼太郎》TVCM公布 泽城美雪参演不再是Pixel Buds独家!谷歌实时翻译对耳机开放支持

最新文章 山西省首届“大槐树杯”百名金牌导游大赛启动Snapchat在英国全新推出25个当地视频节目 委内瑞拉挖矿惊魂记:被警察多次勒索绑架,矿机被没收小米小爱mini智能音箱0点159元秒杀游戏星计划 “盐盐夏日”女王盐带你清爽一夏!今年的LG G7多了一个AI后缀,可仍然迈不过刘海屏这一关

人气排行 央视曝光甘肃16亿扶贫公路变“豆腐渣” 甘肃官方回应日厂推出奇葩手办:蝎子螃蟹小龙虾应有尽有《我不是药神》票房破20亿大关!捐款金额达800万元Re:Unity游戏开发有哪些让你拍案叫绝的技巧?夏季补水不黏腻,妮维雅男士精华露49元、润肤霜29.9元香蕉皮暗藏的几大神奇作用 还能治病淡江大学教授:李敖对1960年代台湾高中生影响极大除了祝福,中国市场还能给谷歌Waymo什么?