当前位置: 首页 > news >正文

算法导论复习——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)是所有结点成本的最小值 。

相关文章:

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

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

鸿蒙系列--装饰器

一、基础UI组件结构 每个UI组件需要定义为Component struct对象,其内部必须包含一个且只能包含一个build(){}函数,用于绘制UI;struct之内、build()函数之外的地方用于存放数据。 二、基本UI装饰器 Entry 装饰struct,页面的入口…...

FairGuard游戏加固产品常见问题解答

针对日常对接中,各位用户对FairGuard游戏加固方案在安全性、稳定性、易用性、接入流程等方面的关注,我们梳理了相关问题与解答,希望可以让您对产品有一个初步的认知与认可。 Q1:FairGuard游戏加固产品都有哪些功能? A:FairGuar…...

Redis(二)数据类型

文章目录 官网备注十大数据类型StringListHashSetZSetBitmapHyperLogLog:GEOStreamBitfield 官网 英文:https://redis.io/commands/ 中文:http://www.redis.cn/commands.html 备注 命令不区分大小写,key区分大小写帮助命令help…...

2023年广东省网络安全B模块(笔记详解)

模块B 网络安全事件响应、数字取证调查和应用安全 一、项目和任务描述: 假定你是某网络安全技术支持团队成员,某企业的服务器系统被黑客攻击,你的团队前来帮助企业进行调查并追踪本次网络攻击的源头,分析黑客的攻击方式,发现系统漏洞,提交网络安全事件响应报告,修复系统…...

每日力扣算法题(简单篇)

543.二叉树的直径 原题: 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 解题思路: …...

Flume基础知识(三):Flume 实战监控端口数据官方案例

1. 监控端口数据官方案例 1)案例需求: 使用 Flume 监听一个端口,收集该端口数据,并打印到控制台。 2)需求分析: 3)实现步骤: (1)安装 netcat 工具 sudo yum …...

通过IP地址如何进行网络安全防护

IP地址在网络安全防护中起着至关重要的作用,可以用于监控、过滤和控制网络流量,识别潜在威胁并加强网络安全。以下是通过IP地址进行网络安全防护的一些建议: 1. 建立IP地址白名单和黑名单: 白名单:确保只有授权的IP地…...

Vue.js 中使用 Watch 选项实现动态问题判断与展示答案

组件结构 以下是组件的基本结构&#xff1a; <template><div><!-- 输入框&#xff0c;用于输入问题 --><p>提出一个是/否问题&#xff1a;<input v-model"question" :disabled"loading" /></p><!-- 显示答案 --&…...

python笔记-自用

2024/1/3# python用号实现字符串的拼接&#xff0c;非字符串不能拼接 from pymysql import Connection# 连接mysql数据库salary 100 name "wang"ans "%s" % salary name print(ans)x 1 y 2 sum "%s %s" % (x, y) print(sum)# %s字符串占…...

安克创新与火山引擎数智平台开展合作:数据分析降门槛 数据协同破边界

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 近日&#xff0c;消费电子品牌安克创新与火山引擎数智平台&#xff08;VeDI&#xff09;达成合作&#xff0c;双方将聚焦安克创新大数据平台的海量数据分析场景&…...

LDD学习笔记 -- Linux内核模块

LDD学习笔记 -- 内核模块 简介LKM类型Static Linux Kernel ModuleDynamic Linux Kernel ModuleLKM编写语法 syntax详细描述内核头文件用户空间头文件Module Initialization FunctionModule Cleanup FunctionKeyword & Tag宏 __init __exitLKM入口注册Module Metadate&#…...

springboot整合springbatch批处理

springboot整合springbatch实现批处理 简介项目搭建步骤 简介 项目搭建 参考博客【场景实战】Spring Boot Spring Batch 实现批处理任务&#xff0c;保姆级教程 步骤 1.建表 建表sql CREATE TABLE student (id int NOT NULL AUTO_INCREMENT,name varchar(100) NOT NULL C…...

答案解析——C语言—第2次作业:转义字符

本次作业的链接如下&#xff1a;C语言—第2次作业&#xff1a;转义字符 1.下面哪个不是C语言内置的数据类型&#xff1a; C char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数 …...

HTML5-新增表单input属性

新增表单属性 form控件主要新增的属性: autocomplete 是否启用表单的自动完成功能&#xff0c;取值&#xff1a;on&#xff08;默认&#xff09;、off novalidate 提交表单时不进行校验&#xff0c;默认会进行表单校验 autocomplete属性 概念&#xff1a;autocomplete属性…...

css-、串联选择器和后代选择器的用法

& &表示嵌套的上一级&#xff0c;这是sass的语法&#xff0c;代表上一级选择器 .btn {&.primary {background-color: #007bff;color: #fff;} } 编译出来的结果是同一个元素&#xff0c;有两个类名&#xff0c;两个类名之间没有空格&#xff1a; .btn.primary {…...

nifi详细介绍--一款开箱即用、功能强大可靠,可用于处理和分发数据的大数据组件

目录 目录 一、引言 二、NiFi 的历史背景介绍 三、NiFi 是什么&#xff1f; 核心特性 应用领域 四、NIFI 入门 五 、NiFi 工作流程 六、实际应用场景 七、优势总结 一、引言 NiFi&#xff08;Apache NiFi&#xff09;&#xff0c;全名为“Niagara Files”&#xff0…...

K8S Dashboard登录Token过期问题处理

整体思路 用户访问一个页面&#xff0c;在该页面中设置一个超链接&#xff0c;点击跳转至K8S Dashboard&#xff1b;跳转后&#xff0c;使用剪贴板上已复制的Token粘贴到Dashboard页面中的输入框登录即可。 写个定时任务将Token复制到页面上&#xff0c;过期了重新再登…...

x-cmd pkg | trafilatura - 网络爬虫和搜索引擎优化工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trafilatura 是一个用于从网页上提取文本的命令行工具和 python 包: 提供网络爬虫、下载、抓取以及提取主要文本、元数据和评论等功能可帮助网站导航和从站点地图和提要中提取链接无需数据库&#xff0c;输出即可转换…...

前端知识点(面试可看) —— JS

摘要 马上就要毕业啦&#xff0c;没有参加2023年的秋招&#xff0c;准备在最近开始找全职或者实习工作&#xff0c;然后也马上过年了&#xff0c;总结和理一下自己的知识要点&#xff0c;参加2024年的春招。 1. JS的执行流程 浏览器的V8引擎收到到执行的JS代码V8结构化这段代…...

XC6206-1.8V是什么?有哪些作用?

本文主要介绍XC6206-1.8V是什么&#xff1f;有哪些作用&#xff1f;XC6206-1.8V是一款超低功耗、高精度的固定输出低压差线性稳压器&#xff08;LDO&#xff09;&#xff0c;核心作用是把较高电压转换成稳定的1.8V输出&#xff0c;专门为电池供电和低功耗设备设计。图文来源&am…...

Mermaid:文本驱动的可视化引擎深度指南

Mermaid&#xff1a;文本驱动的可视化引擎深度指南 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器&#xff0c;支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图的开发者。 …...

Qwen3-ASR-1.7B新手必看:常见问题解决,音频格式、长音频处理技巧

Qwen3-ASR-1.7B新手必看&#xff1a;常见问题解决&#xff0c;音频格式、长音频处理技巧 1. 引言&#xff1a;语音识别模型的基础认知 语音识别技术正在改变我们处理音频数据的方式。Qwen3-ASR-1.7B作为一款多语言语音识别模型&#xff0c;为开发者提供了强大的离线转写能力。…...

Go语言广播系统设计:基于Channel的高性能事件分发机制

引言 在后端系统架构中&#xff0c;事件广播是一种常见的通信模式。本文将深入分析一个基于Go语言channel实现的广播管理器&#xff0c;探讨其设计思想、实现细节以及在实际项目中的应用价值。 参考代码 点击直达 背景与需求 在许多应用场景中&#xff0c;我们需要实现一对…...

MATLAB 数值计算辅助:分析 Stable Yogi 生成图像的色彩与纹理特征

MATLAB 数值计算辅助&#xff1a;分析 Stable Yogi 生成图像的色彩与纹理特征 1. 引言 最近在尝试用 Stable Yogi 生成一些皮革纹理的设计图&#xff0c;效果确实挺惊艳的。但生成得多了&#xff0c;就遇到一个新问题&#xff1a;我手头攒了几百张图&#xff0c;风格各异&…...

视频文件修复全攻略:如何用Untrunc工具抢救损坏的MP4/MOV文件

视频文件修复全攻略&#xff1a;如何用Untrunc工具抢救损坏的MP4/MOV文件 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 当你打开存储着家庭聚会回忆的视频文件时&…...

OpenRGB:如何用一个免费开源软件统一管理所有RGB灯光设备?

OpenRGB&#xff1a;如何用一个免费开源软件统一管理所有RGB灯光设备&#xff1f; 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgrammer1/…...

Llama-3.2V-11B-cot在智能教育中的应用:数学题配图逻辑漏洞识别实战

Llama-3.2V-11B-cot在智能教育中的应用&#xff1a;数学题配图逻辑漏洞识别实战 1. 引言&#xff1a;当AI遇见数学教育 数学教材和习题集中的配图错误是一个长期困扰教育行业的难题。据统计&#xff0c;约15%的数学教材配图存在不同程度的逻辑漏洞或表达偏差&#xff0c;这些…...

实战教学应用:基于快马平台开发生物繁殖课互动学习与测评系统

作为一名生物老师&#xff0c;我一直在寻找能够让学生更直观理解繁殖知识的教学工具。最近尝试用InsCode(快马)平台开发了一个互动学习系统&#xff0c;效果出乎意料的好。这个平台最棒的地方是&#xff0c;不需要复杂的服务器配置&#xff0c;就能把想法快速变成可实际使用的教…...

从理论到实践:在快马平台构建基于openclaw的物流分拣仿真系统

最近在研究物流自动化分拣系统时&#xff0c;发现openclaw机械爪控制在实际应用中存在不少痛点。传统开发流程需要从零搭建仿真环境、编写控制逻辑、调试物理交互&#xff0c;整个过程耗时耗力。于是尝试用InsCode(快马)平台快速构建了一个物流分拣仿真系统&#xff0c;效果出乎…...