算法导论复习——CHP22 分支限界法

LIFO和FIFO分枝-限界法        

        采用宽度优先策略,在生成当前E-结点全部儿子之后再生成其它活结点的儿子,且用限界函数帮助避免生成不包含答案结点子树的状态空间的检索方法。两种基本设计策略: FIFO检索:活结点表采用队列;LIFO检索:活结点表采用栈。

        如采用FIFO分支-限界法检索4-皇后问题的状态空间树:

LC-检索(Least Cost,A*算法)

        LIFO和FIFO分枝-限界法存在的问题

        对下一个E-结点的选择规则过于死板。对于有可能快速检索到一个答案结点的结点没有给出任何优先权,如结点30。

        解决:做某种排序,让可以导致答案结点的活结点排在前面 。

        如何排序? 寻找一种“有智力”的排序函数C(·),来选取下一个E 结点,加快到达一答案结点的检索速度。

        如何衡量结点的优先等级?

        对于任一结点,用该结点导致答案结点的成本(代价) 来衡量该结点的优先级——成本越小越优先

        对任一结点X,可以用两种标准来衡量结点的代价:

        1)在生成一个答案结点之前,子树 X 需要生成的结点数。

        2)在子树 X 中离 X 最近的那个答案结点到 X 的路径长度。

        C(x)

         “有智力”的排序函数,依据成本排序,优先选择成本最小的活结点作为下一个E结点进行扩展。 C(·)又称为“结点成本函数” n 结点成本函数C(X)的取值:

        1)如果X是答案结点,则C(X)是由状态空间树的根结点到X 的成本(即所用的代价,可以是级数、计算复杂度等)。

        2) 如果X不是答案结点且子树X不包含任何答案结点,则 C(X)=∞

        3) 如果X不是答案结点但子树X包含答案结点,则C(X)应等于子树X中具有最小成本的答案结点的成本。

        \widehat{c}(x)

        计算结点X的代价通常要检索子树X才能确定,因此 计算C(X)的工作量和复杂度与解原始问题是相同的。 n 计算结点成本的精确值是不现实的——相当于求解 原始问题。怎么办? n 结点成本的估计函数\widehat{c}(x)包括两部分:h(X)和\widehat{g}(x)

        \widehat{g}(x)是由X到达一个答案结点所需成本的估计函数

                性质:单纯使用选择E结点会导致算法偏向纵深检查。

        故引进h(X)改进成本估计函数:h(x)=根结点到结点X的成本——已发生成本。

                f(·)是一个非降函数。 非零的f(·)可以减少算法作偏向于纵深检查的可能性, 它强使算法优先检索更靠近答案结点但又离根更近的结点。 

        LC-检索:选择\widehat{c}(x)值最小的活结点作为下一个E-结点的状态空间树检索方法。

                特例:

                BFS: 依据级数来生成结点,

                D-Search:令f (h(X)) =0;所以当Y是X的一个儿子时, 总有

        LC分支-限界检索:带有限界函数的LC-检索

        LEAST(E):在活结点表中找一个具有最小成本估计值的活结点,从活结点表中删除这个结点,并将此结点放在变量E中返回。

        ADD(X):将新的活结点X加到活结点表中。

        活结点表:以优先队列存放 

不同估算函数对于结果的影响

        1、当估算的距离等于实际距离时,一路下去,肯定就是最优的解,而且基本不用扩展其它的点。

        2、如果估算距离小于实际距离时,则到最后一定能找到一条最短路径,但是有可能会经过很多无效的点。(过于乐观,以h(X)为主)

        3、如果估算距离大于实际距离时,有可能就很快找到一条通往目的地的路径,但是却不一定是最优的解。(过于悲观,以g(X)为主)

        成本函数在分支-限界算法中的应用

        假定每个答案结点X有一个与其相联系的c(X),且找成本最小的答案结点。

        1)最小成本的下界为X的成本估计函数。当时, \widehat{c}(x)给出了由结点X求解的最小成本的下界,作为启发性函数,减 少选取E结点的盲目性。

        2)最小成本的上界 。最小成本的上界 定义U为最小成本解的成本上界,则对具有的所有活结点可以被杀死,从而可以进一步使算法加速,减少求解的盲目性。

        最小成本上界U的求取:

        1)初始值:利用启发性方法赋初值,或置为∞

        2)每找到一个新的答案结点后修正U,U取当前最小成本值。 注:只要U的初始值不小于最小成本答案结点的成本,利用U就不会杀死可以到达最小成本答案结点的活结点。

利用分枝-限界算法求解最优化问题

        可行解:类似于n-元组的构造,把可行解可能的构造过程用 “状态空间树”表示出来。

        最优解:把对最优解的检索表示成对状态空间树答案结点的 检索。

        成本函数:每个结点赋予一个成本函数c(X) ,并使得代表最优解的答案结点的c(X)是所有结点成本的最小值 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/230338.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fineBI web组件传参

1、fineBI web组件传参 1.1、 Web组件- FineBI帮助文档 FineBI帮助文档1. 概述1.1 版本FineBI 版本HTML5移动端展现功能变动6.0--V11.0.83web组件适配移动端效果优化6.0.13-web组件支持传递参数 ${过滤组件https://help.fanruan.com/finebi/doc-view-143.html 1.2、自己做的例…

我不想学JAVA---------JAVA和C的区别

前言 我一个研究方向是SLAM的为什么要来学JAVA。 从九月份开学到现在,已经学了Linux,数据结构,SLAM,C的基础操作,期间还参与编写了一本VHDL的教材。还有上课、考试什么的其他杂七杂八的事情就不说了。 读研好苦逼&…

防爆气象站跟传统气象站相比有哪些优势?

防爆气象站是一种特殊的气象站,设计用于在易燃易爆、高温、潮湿等恶劣环境下进行气象监测。以下是防爆气象站的优点: 防爆性能:防爆气象站能够承受极端恶劣的环境条件,可以在易燃易爆、高温、潮湿等危险环境下进行工作&#xff0…

2024年【北京市安全员-A证】考试试卷及北京市安全员-A证复审考试

题库来源:安全生产模拟考试一点通公众号小程序 北京市安全员-A证考试试卷考前必练!安全生产模拟考试一点通每个月更新北京市安全员-A证复审考试题目及答案!多做几遍,其实通过北京市安全员-A证在线考试很简单。 1、【多选题】《中…

ubuntu python播放MP3,wav音频和录音

目录 一.利用pygame(略显麻烦,有时候播放不太正常)1.安装依赖库2.代码 二.利用mpg123(简洁方便,但仅争对mp3)1.安装依赖库2.代码 三.利用sox(简单方便,支持的文件格式多)…

Docker安装sentinel控制台

1、拉取镜像,直接使用run命令,如果说本地没有镜像就会直接去远程仓库拉取: docker run -d \ -p 8858:8858 \ --name sentinel-dashboard \ --network demo \ -e AUTH_USERNAMEsentinel \ -e AUTH_PASSWORD123456 \ bladex/sentinel-dashboa…

Linux 进程(七) 进程地址空间

虚拟地址/线性地址 学习c语言的时候我们经常会用到 “&” 符号,以及下面这张表,那么取出来的地址是否对应的是真实的物理地址呢?下面我们来写代码一步一步的验证。 从上面这张图不难看出,从正文代码,到命令行参数环…

【vue/uniapp】使用 uni.chooseImage 和 uni.uploadFile 实现图片上传(包含样式,可以解决手机上无法上传的问题)

引入: 之前写过一篇关于 uview 1.x 版本上传照片 的文章,但是发现如果是在微信小程序的项目中嵌入 h5 的模块,这个 h5 的项目使用 u-upload 的话,图片上传功能在电脑上正常,但是在手机的小程序上测试就不会生效&#x…

CSS 缩减顶部动画

<template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container" mou…

鸿蒙HarmonyOs:为什么不支持热更新?

学习了一段时间的鸿蒙开发&#xff0c;发现鸿蒙开发还是比较简单的&#xff0c;今天突然心血来潮&#xff0c;研究了一下鸿蒙热更新&#xff0c;最终得出的结论是鸿蒙暂时不支持热更新。 鸿蒙app开发主要是利用的ArkTs语言&#xff0c;ArkTs又是基于TypeScript语言的&#xff0…

C++基本语言:1.7string类型介绍

C基本语言包含10章节内容&#xff0c;存于C从入门到精通专栏 目录 一、前言 二、string类型简介 三、定义和初始化string对象 四、string对象上的操作 一、前言 C语言的内置类型&#xff0c;如int、float、char等&#xff0c; 这些是属于语言本身提供的。 C中&#xf…

顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音(mod_cti基于FreeSWITCH)

介绍 顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音 一、添加acl 打开ccadmin->点击配置文件->点击acl.conf->在</list>后面添加一条图中的信息->muqi是我自己设置的名字你们可以修改为自己需要的名字->添加好了点击提交XML->在运维调试点…

Spring配置文件

一&#xff1a; Bean标签基本配置 1&#xff1a;用途 用于配置对象交由Spring来创建&#xff0c;默认情况下它调用的是类中的无参构造函数&#xff0c;如果没有无参构造函数则不能创建成功。 2&#xff1a;基本属性&#xff08;id&#xff09; Bean实例在Spring容器中的唯一…

YOLO+SlowFast+DeepSORT 简单实现视频行为识别

前段时间刷短视频看到过别人用摄像头自动化监控员工上班状态&#xff0c;比如标注员工是不是离开了工位&#xff0c;在位置上是不是摸鱼。虽然是段子&#xff0c;但是这个是可以用识别技术实现一下&#xff0c;于是我在网上找&#xff0c;知道发现了 SlowFast&#xff0c;那么下…

计算机毕业设计------基于SpringCloud的实验室管理系统

项目介绍 实验室管理系统的用户可以分为两种&#xff1a;系统管理员和普通用户。系统管理员主要功能&#xff1a; 登录登出、分析数据、管理用户、管理日志、管理实验室、管理预约、维护个人资料、实验室保修管理 用户主要功能&#xff1a; 注册登录、查询实验室、实验室预约…

基于ThinkPHP的云盘系统Cloudreve本地搭建并实现远程访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

element中Table表格控件实现单选功能、多选功能、两种分页方式

目录 1、Table表格控件实现单选功能2、Table控件和Pagination控件实现多选和两种分页方式方法一&#xff1a;使用slice方法方法二&#xff1a;多次调用接口 1、Table表格控件实现单选功能 <template><div><!-- highlight-current-row 是否要高亮当前行 -->…

WEB:探索开源PDF.js技术应用

1、简述 PDF.js 是一个由 Mozilla 开发的开源 JavaScript 库&#xff0c;用于在浏览器中渲染 PDF 文档。它的目标是提供一个纯粹的前端解决方案&#xff0c;摆脱了依赖插件或外部程序的束缚&#xff0c;使得在任何支持 JavaScript 的浏览器中都可以轻松地显示 PDF 文档。 2、…

【JUC】Synchronized及JVM底层原理

Synchronized使用方式 Synchronized有三种应用方式 作用于实例方法&#xff0c;当前示实例加锁进入同步代码前要获得当前实例的锁&#xff0c;即synchronized普通同步方法&#xff0c;调用指令将会检查方法的ACC_SYNCHRONIZED访问标志是否被设置。 如果设置了&#xff0c;执行…

Linux 的引导与服务控制

一 开机启动过程 bios加电自检-->mbr-->grub-->加载内核文件-->启动进程 1 bios家电自检 检测硬件是否正常&#xff0c;然后根据bios中的启动项设置&#xff0c;去找内核文件 2 mbr 因为grup太大,第一个扇区存不下所有的grub程序&#xff0c;所以分为2部分指…