回溯法【2-5】

假设一个推销员问题由下图定义,用回溯法求解
从1号结点出发的相应最短巡回路径(每个顶点刚好到达一次)。若用bestL表示搜索过程中产生的当前最优解,剪枝函数 L 设计为:

L = 已走过的路径长度 + 当前结点相关的最短边 + 所有未访问结点的相关最短边之和。

在这里插入图片描述

那么,走过结点:1->3->2时 ,bestL和 L的值分别是:A (如果先从2结点开始深度搜索的话)
A. 30和25

B. 30和28

C. 27和25

D. 27和28

在这里插入图片描述

回溯法是一种解决问题的递归算法。在回溯法中,我们尝试解决问题的每一部分,如果在解决当前部分时发现存在无法满足问题条件的情况,则回溯到上一步并尝试其他解决方案,直到问题被解决为止。在寻找最短路径时,我们可以将问题建模为一个图,其中每个点表示一个城市,每条边表示两个城市之间的距离。推销员需要从一个起点出发,经过所有城市后最终回到起点,所要走的路径就是我们需要寻找的最短路径。

对于剪枝函数L,它可以帮助我们在搜索过程中避免探索到不必要的路径,从而提高搜索效率。该函数的计算方式为:已走过的路径长度 + 当前结点相关的最短边 + 所有未访问结点的相关最短边之和。其中已走过的路径长度和当前结点相关的最短边都可以通过动态规划的方式进行计算,而所有未访问结点的相关最短边可以通过使用Dijkstra算法计算得出。

回溯法是一种搜索算法,可以在问题的解空间内找到满足特定限制条件的所有解。在搜索过程中,每次扩展一个子节点,会对当前状态进行判断,看看是否满足问题的限制条件。如果满足条件,则进行下一步扩展;如果不满足,则进行回溯,回退到上一个状态并重新选择其他路径继续搜索。

在回溯法中,当前最优解的定义是指:
在搜索过程中已经找到的所有解中,最接近目标解的解。
这个解不一定是全局最优解,但是对于当前搜索状态而言是最优的。
在搜索过程中,我们会不断尝试找到更加优秀的解,在找到更优解的同时也可能改变当前最优解的定义。
因此,在回溯法中,当前最优解是一个动态的概念。

具体来说,当我们在搜索过程中找到了一个新的解决方案时,我们会将其与当前最优解进行比较。如果新的解决方案更优,则更新当前最优解;否则,我们继续搜索其他可能的解决方案。

在某些情况下,我们可以使用剪枝技术来提高回溯法的效率。例如,在搜索过程中,如果当前正在搜索的解已经比当前最优解要差,那么我们可以直接跳过这个解,从而避免不必要的搜索。

回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10:00进去,10:05就出来了,这问的也太变态了···

从外包出来,没想到死在另一家厂子了。 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到5月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内推…

【Win32】资源文件(对话框),逆向对话框回调函数,消息断点(附带恶意软件源码)

之前在学习windows编程的时候已经写过对话框的创建了,其中包括了对话框的分类,原理等等,大家可以去看一下:【windows编程之对话框】对话框原理,对话框的创建。原理今天就讲的不是很多了,直接给大家给出步骤…

《Go专家编程(第2版)》书评

首先感谢官方的肯定,让我在【图书活动第四期】的活动中获得了《Go专家编程(第2版)》这本书,以下是从我的观点对这本书的书评 文章目录 前言书籍部分读者评价总结 前言 很高兴有机会写一篇关于《Go专家编程(第2版)》的书评。大致读…

APIO2023 游记

GDOI 和 GDKOI 的游记都咕咕咕了,而且都炸了,APIO 的游记提前发,就是要破釜沉舟。 我是线上选手。 Day -7 我们原题检测,阿克了,毕竟是原题,虽然有两道博弈论黑题确实挺毒瘤的。 教练让我做 APIO2012 的…

产品经理必读丨如何找准产品定位?

我们都知道,当一款新产品开始立项之前,势必需要经过谨慎的市场调研才能整合资源启动新的项目,但除此之外,作为产品经理还需要做好一件关键的事情——找准产品在市场中的定位。 什么是产品定位 百度百科对产品定位的解释是非常准确…

【STM32】基础知识 第十六课 窗口看门狗 WWDG 深入浅出

【STM32】基础知识 第十六课 窗口看门狗 WWDG 深入浅出 概述窗口看门狗 (WWDG)WWDG_SR 状态寄存器WWDG 配置与使用使用 WWDG 进行故障检测案例 概述 在嵌入式开发中, 可靠性和稳定性是至关重要的. 这就是为什么许多单片机, 比如 STM32, 提供了窗口看门狗 (Window Watchdog, WW…

k8s部署dashboard

1.查看k8s集群版本 kubectl version 2.在github中查看k8s对应的ui版本 Releases kubernetes/dashboard GitHub 3.下载对应版本的dashboard yaml文件 wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 4.更改yaml文件配置 …

HTB-Agile

HTB-Agile 信息收集80端口漫长的兔子洞之旅 立足www-data -> corumcorum -> edwardsedwards -> root 信息收集 80端口 漫长的兔子洞之旅 我注意到系统为我分配了一个session,是以eyj开头的。 拿去jwt.io看看。 额,可能后面会用先留在这&#…

多线程-程序、进程、线程与并行、并发的概念

多线程 本章要学习的内容: 专题1:相关概念的理解专题2:多线程创建方式一:继承Thread类专题3:多线程创建方式二:实现Runnable接口专题4:Thread类的常用方法专题5:多线程的优点、使用…

5月编程排行榜出炉,最佳编程语言是谁?

技术的发展日新月异,作为开发者,应该时刻关注这些变化,不断学习才能跟上时代步伐。 编程语言层出不穷,关于“ 最佳编程语言 ”的争论也从未停止,网友们各抒己见...... 网友A: 人生苦短,我选Pyt…

软件测试工程师如何提高自己的竞争力?

案例一来自我们的资深功能测试工程师招聘。当时,有一位拥有近 9 年测试经验的资深测试候选人,我对他的简历还是比较满意的,所以就安排了面谈。但是,在聊的过程中我很快发现,这位候选人绝大多数的测试经验积累都“强”绑…

利用 DynamoDB 和 S3 结合 gzip 压缩,最大化存储玩家数据

前言 一些传统游戏架构中,采用 MySQL 存储玩家存档数据,利用分库分表分散单库单表的存储和性能压力,从而达到支持更多玩家的目的。随着数据量增长,数据表中 varchar 类型已经无法满足游戏中单字段的存储需求,而 blob …

去哪儿酒店数据下载

字段内容包含: id int(11) NOT NULL AUTO_INCREMENT, hotelid varchar(50) DEFAULT NULL, url varchar(200) DEFAULT NULL, hotelname2 varchar(100) DEFAULT NULL, name varchar(100) DEFAULT NULL, province varchar(50) DEFAULT NULL, d…

RabbitMQ集群安装

RabbitMQ集群安装 1.前言 OS: CentOS Linux release 7.9.2009 (Core) 机器: IPnodecpu内存存储10.106.1.241max-rabbitmg-018 核16 G100 G10.106.1.242max-rabbitmg-028 核16 G100 G10.106.1.243max-rabbitmg-038 核16 G100 G 因为操作系统版本是 centos7,所以…

跟着chatGPT学习:kubernetes中的Reflector、list-watcher、informer等概念

以下是我跟chatGPT学习kubernetes中Reflector、list-watcher、informer等的概念的过程 不敢保证chatGPT回答的百分之百准确。但是,确实帮助我了我理解! 最终学习的是下面的图, 1、在kubernetes中Reflector原理? 在Kubernetes…

【操作系统】线程简介

线程简介 线程概念 在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体。 所以,线程是轻量级的进程(LWP:light w…

短视频矩阵源码-智能剪辑生成技术数值组如何编程?

短视频混剪生成时长逻辑一般采用根据用户设定的总时长、视频数量、时长比例等参数计算出每个视频在混剪中所占的时长,然后根据视频的总时长与所占比例来划分每个视频在混剪中的时长,最后将各个视频拼接起来形成混剪视频。此算法可以进行灵活的时长调整和…

RabbitMQ 小白教程,从安装到使用

主要内容 AMQP简介 RabbitMQ简介 RabbitMQ原理 Erlang安装 安装RabbitMQ RabbitMQ账户管理 交换器 学习目标 知识点要求AMQP简介掌握RabbmitMQ简介掌握RabbitMQ原理掌握Erlang安装掌握安装RabbitMQ掌握RabbitMQ账户管理掌握交换器掌握 一、 AMQP简介 1 AMQP是什么?…

【Midjourney】Midjourney 连续性人物创作 ④ ( 使用 URL + Seed 随机种子生成连续性的人物 )

文章目录 一、生成图片并获取 Seed二、使用 URL Seed 随机种子生成连续性的人物 使用 URL 链接 和 Seed 随机种子 生成连续性人物 , 必须先生成一组图片 , 然后按 U 按钮 , 选择一张大图 , 之后所有的连续性人物图片都基于该图片进行生成 ; 使用 URL Seed 随机种子生成连续性…

Flink学习——状态编程

目录 一、Flink中的状态 二、状态编程 (一)ValueState案例——判断传感器的数据 1.代码实现 2.端口进行传输数据 3.运行结果 (二)ListState (三)MapState案例——比较学生每次考试成绩 1.代码实现 2.端口传输学生成绩 3.运行结果 (四)ReducingState 一、Flink中的状…