AI基础 L5 Uninformed Search II 无信息搜索

news2025/3/13 6:33:29

How good is search?

• Completeness: Does it always find a solution if one exists? 是否通解
• Optimality: Is the solution optimal (i.e., lowest cost)?  是否最优
• Time Complexity: How long does it take to find a solution? 时间多久
• Space Complexity: How much memory does it need to perform the search? 内存多大

Time and space complexity are measured in terms of
• b – maximum branching factor of the search tree
• d – depth of the least-cost solution
• m – maximum depth of the state space (may be ∞)

  • b – 搜索树的最大分支因子(branching factor):这表示在搜索树中,从任何一个节点出发,可以有多少个不同的分支。

  • d – 最短路径的深度(depth of the least-cost solution):这表示从初始状态到达目标状态的最短路径所包含的节点数。

  • m – 状态空间的最大深度(maximum depth of the state space):这表示状态空间中可能的最深层数。对于一些问题,状态空间可能是无限的,这意味着m可以是无穷大。

 Uninformed search strategie

Uninformed strategies use only the information available in the problem definition
• Breadth-first search
• Uniform-cost search
• Depth-first search
• Depth-limited search
• Iterative deepening search


Breadth-first search

广度优先 每层遍历  优先遍历扩展深度最小的节点(为了尽快访问所有状态)

• Root node expanded first
• All successors to root node then expanded, then their successors, etc.
• All nodes at a given depth are expanded before the next level is expanded.

Implementation: fringe is a FIFO (queue)
 

Properties of Breadth-first search

• Complete – Yes
• Time – 1 + b + b2 + b3 + · · · + bd = O(bd)
• Space – O(bd) nodes generated
• Optimal only if the path cost is a non-decreasing function of the depth of the node
深度越深的节点成本越高,那么这个算法是有效的,因为它能够找到成本最低的解。

Tree search

Repeated states

failure to detect repeated states can turn a linear problem into an exponential one

在图搜索中,重复状态(Repeated states)是指在搜索过程中,图中的某些状态被多次访问,但可能没有被正确识别为重复。这种情况下,搜索算法可能会在已经访问过的状态上进行不必要的操作,导致搜索效率降低。

如果算法不能检测到重复状态,那么即使是一个线性问题(问题规模与输入规模成线性关系),也可能变得指数级复杂。这是因为搜索空间会随着重复状态的增加而指数级增长,从而导致算法需要处理更多的状态,增加了搜索的复杂性和所需的时间。

Graph Search

There are many data structures we can use to make things more efficient

— hash table for the closed set,
— priority queue to determine what node to expand in uniform cost Search
— keeping track of shortest path to each node

 Search Strategies Continued
• Breadth-first search is optimal when all step costs are equal as it always expands the
shallowest unexpanded nodes 当每一步成本相等 BFS最优

Uniform Cost Search

• We expand the node with the lowest path cost

• For completeness, we need to always have a path cost (else we can loop forever).
• Implementation: fringe is a FIFO ordered by cost, lowest cost first (priority queue)

使用优先队列(通常是一个最小堆)作为搜索框架,优先扩展代价最小的节点。这意味着它会优先扩展那些最有可能导致最优解的节点。UCS保证找到的路径是最优的,即代价最小的路径。

Depth-first Search

• This type of search expands the deepest node in the current frontier.
• When the end is reached, the search backs up to the next shallowest node that still
has unexplored successors.
• Implementation: fringe is a LIFO (stack)

  1. 扩展当前前沿中最深的节点:在深度优先搜索中,算法首先扩展当前前沿中深度最深的节点。这意味着它首先探索尽可能深的路径,直到达到边缘节点。

  2. 回溯:当达到一个无法继续扩展的节点(通常是最深的边缘节点)时,搜索会回溯到下一个浅层节点,这个节点仍然有未探索的后继节点。这个过程会一直重复,直到找到目标状态或搜索空间耗尽。

深度优先算法 每个分支遍历  优先拓展深度最深的节点

Properties of Depth-first search

• Complete – No: fails in infinite-depth spaces, spaces with loops
Modify to avoid repeated states along path
⇒ complete in finite spaces
• Time – O(bm) terrible if m is much larger than d
but if solutions are dense, may be much faster than breadth-first
• Space – O(bm), i.e., linear space!
10 exab to 156kb
• Optimal – No

Depth-limited search

• This search solves the infinite path problem of DFS
• But incompleteness is introduced if the shallowest goal is beyond the depth limit

DLS通过设定一个深度限制来避免这种情况。一旦达到这个深度限制,搜索就会停止扩展当前路径。但是如果图中的某个目标是超出深度限制的,DLS可能无法找到该目标的解。

在路由问题中,如果已知有20个城市,那么最大深度就是19(因为不能到达自己)。经过观察发现任何城市都可以在深度9内到达,这是状态空间的最长直径。

Iterative deepening Depth-first search

• This acts as a DFS with a gradually increasing limit until a goal is found.
• Combines benefits of DFS and BFS.
• Note that states are generated multiple times. But this is not costly as most nodes
are at the bottom level.
限制在没有找到目标之前会逐渐增加 eg:limit=1时 按照DFS 发现没有找到目标 就将limit增加到2

每次迭代会从初始状态开始 避免重复状态

Properties of iterative deepening search

• Complete – Yes
• Time – (d)b0 + (d − 1)b1 + (d − 2)b2 + (d − 3)b3 + · · · + (!)bd = O(bd)
• Space – O(bd)
• Optimal – Yes, if step cost = 1
Can be modified to explore uniform-cost tree
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通…

【论文阅读】DETRs Beat YOLOs on Real-time Object Detection

文章目录 摘要一、介绍二、相关工作2.1 实时目标检测器2.2 端到端目标检测器 三、检测器的端到端速度3.1 分析 NMS3.2 端到端速度基准 四、实时 DETR4.1 模型概述4.2 高效混合编码器4.3不确定性最小的查询选择4.4 缩放的RT - DETR 五、实验5.1 与SOTA对比5.2 混合编码器的消融研…

VMware Fusion Pro 13 for Mac虚拟机软件

Mac分享吧 文章目录 效果一、下载软件二、开始安装安装完成!!! 效果 一、下载软件 下载软件 地址:www.macfxb.cn 二、开始安装 安装完成!!!

F12抓包06-4:导出metersphere脚本

metersphere是一站式的开源持续测试平台,我们可以将浏览器请求导出为HAR文件,导入到metersphere,生成接口测试。 metersphere有2种导入入口(方式),导入结果不同: 1.导入到“接口定义”&#xf…

ctfshow-web入门-sql注入(web237-web240)insert 注入

目录 1、web237 2、web238 3、web239 4、web240 1、web237 查询语句: //插入数据$sql "insert into ctfshow_user(username,pass) value({$username},{$password});"; 我们需要闭合单引号和括号 添加,查数据库名,payload&…

想要从OPPO手机恢复数据?免费OPPO照片视频恢复软件

此实用程序可帮助那些寻找以下内容的用户: 在OPPO手机中格式化存储卡后可以恢复图片吗?我删除了 OPPO上的视频和图片,我感觉很糟糕,因为里面有我在拉斯维加斯拍摄的视频和照片 免费OPPO照片视频恢复软件 您能恢复OPPO上已删除的…

解锁2024年PDF转PPT新技能,TOP4神器在手,职场晋升竟然如此简单

如今职场节奏快,信息传递和展示方式多样。PDF 兼容性强且稳定,用于分享和保存文件;PPT 演示功能强大,在开会、教学和汇报中不可或缺。实际工作中常需将 PDF 转 PPT,以便更好地演示和编辑。市场上因此出现众多高效方便的…

使用NetBackup GUI 图形化进行oracle备份和恢复

转载 一、环境介绍: 这个实验都是在vmware workstation里完成的。由于NetBackup7只能装在64位的系统上,所以这里采用了64位的rhel5.5系统,以及oracle 10gr2 for linux_x64的软件包。数据库的数据文件存储在ASM中。安装rhel、oracle、netback…

Selenium 实现图片验证码识别

前言 在测试过程中,有的时候登录需要输入图片验证码。这时候使用Selenium进行自动化测试,怎么做图片验证码识别?本篇内容主要介绍使用Selenium、BufferedImage、Tesseract进行图片 验证码识别。 环境准备 jdk:1.8 tessdata&…

关于CPP——std::future异步操作

目录 一、std::future 简介 1.1 概念 1.2 应用场景 1.3 关联的方法 1.3.1 std::async 1.3.2 std::package 1.3.3 std::promise 二、future 用法 2.1 使用std::async关联异步任务 2.2 使用std::packaged_task 1. 获取任务结果的机制: 2. 异步任务的管理&a…

jmeter之仅一次控制器

仅一次控制器作用: 不管线程组设置多少次循环,它下面的组件都只会执行一次 Tips:很多情况下需要登录才能访问其他接口,比如:商品列表、添加商品到购物车、购物车列表等,在多场景下,登录只需要…

【STM32 Blue Pill编程】-ADC数据采样(轮询、中断和DMA模式)

ADC数据采样(轮询、中断和DMA模式) 文章目录 ADC数据采样(轮询、中断和DMA模式)1、硬件准备及接线2、ADC轮询模式2.1 轮询模式配置2.2 代码实现3、ADC中断模式3.1 中断模式配置3.2 代码实现4、ADC的DMA模式4.1 DMA模式配置4.2 代码实现在本文中,我们将介绍如何使用 ADC 并…

[JAVA基础知识汇总-1] 创建线程的几种方式

文章目录 1. 继承Thread类2. 实现Runnable接口3. 实现Callable接口4. 线程池 可以认为有四种方式,也可以认为有一种,因为都跟Runnable接口有关 1. 继承Thread类 代码 public class Thread1ExtendsThread extends Thread { // public Thread1(String …

思维导图与头脑风暴:你值得拥有的四大工作与学习利器

在工作与学习中,我们都遇到过这样的情况:我们需要就某一问题或项目,汇集多人的智慧与创意,这时,头脑风暴便成为了我们不可或缺的利器;而为了更好地进行头脑风暴,选择一款合适的在线思维导图工具…

【Qt开发】QT6.5.3安装方法(使用国内源)亲测可行!!!

目录 🌕下载在线安装包🌕 把安装包放到系统盘🌕开始安装🌕参考文章 🌕下载在线安装包 https://mirrors.nju.edu.cn/qt/official_releases/online_installers/ 🌕 把安装包放到系统盘 我的系统盘是G盘&…

uniapp 全屏日历,动态无限加载

不好用请移至评论区揍我 原创代码,请勿转载,谢谢! 注:本人仅在微信小程序测试过,未在其他app/h5尝试过,按理说应该是可以的,代码没有引用任何第三方组件 日历中每个日期下方的空白部分均可自定义,写在代码中的<view class="item">我是内容</view>…

Go入门指南(The Way to Go) 完整版PDF

The Way To Go可以说是入门 Go 的经典书籍&#xff0c;这本书有内容丰富各种资料链接&#xff0c;这是截止到目前&#xff0c;大叔看到的写得最好的go 语言教材&#xff0c;非常详细.一口气读下来&#xff0c;舍不得放手&#xff0c;大叔强烈推荐你去学习 百度网盘分享

docker基于minio部署outline团队知识库

outline 介绍 Outline 是一个开源的Wiki 知识库和团队协作文档管理工具&#xff0c;美观、实时协作、功能丰富且兼容 Markdown&#xff0c;设计用于帮助团队和组织有效地创建、共享和管理文档。 Outline 具有简单易用的界面和强大的功能&#xff0c;可以替代传统的文档管理系…

winndows系统修改cmd用户中文名、系统中文用户名修改为英文用户名的方法

文章目录 一、问题描述二、修改步骤1. 准备&#xff1a;2. 注销&#xff1a;3. 修改&#xff1a;4. 继续修改&#xff1a; 一、问题描述 电脑用户显示中文名&#xff08;我这里已经修改了&#xff09; 二、修改步骤 1. 准备&#xff1a; 我们需要使用 Administrator 登录&am…

OpenGL——画一个填充的三角形

1. vertShader.glsl&#xff08;顶点着色器代码&#xff09;&#xff1a; #version 460void main (void) {if (gl_VertexID 0)gl_Position vec4 (0.25, -0.25, 0.0, 1.0);else if (gl_VertexID 1)gl_Position vec4 (-0.25, -0.25, 0.0, 1.0);elsegl_Position vec4 (0.25,…