首页 > 编程语言 >搜索算法总结

搜索算法总结

时间:2024-06-08 18:01:05浏览次数:26  
标签:总结 剪枝 迭代 DFS BFS 搜索 搜索算法

概述

搜索算法

搜索算法大致可以分为以下几类:

  • DFS 深度优先搜索
  • BFS 广度优先搜索
  • 迭代加深搜索
  • A*搜索
  • IDA* 启发式迭代加深搜索
  • meet in the middle 折半搜索
  • 双向 DFS
  • 双向 BFS
  • Dancing Links 舞蹈链

Dancing Links 算法是省选内容,在此不进行说明。

剪枝技巧

剪枝是搜索题常用的优化方式,有时能大幅提升程序运行效率,常见剪枝技巧如下:

  • 可行性剪枝
  • 最优性剪枝
  • 排序剪枝(优化搜索顺序)
  • 搜索位置剪枝(记录上一层搜索到的位置,下一层接着搜,不重新来)
  • 逆向操作剪枝(两个相反的操作避免重复做)
  • 重复剪枝(vis数组)
  • 层数剪枝(必须证明到某一层时一定不优)
  • 枚举剪枝(只利用上一层新加的数来和前面的数组合,避免重复搜上一层搜过的)

以下是常见的玄学剪枝技巧,考场上用来搏更高分的,按数据大小分段来解决,不保证正确性:

  • 搜索次数剪枝(cnt>1e7,cout<<ans),本质是最优性剪枝

注意事项

注意事项:

  • 迭代加深等搜索算法不见得总是比普通的 DFS 和 BFS 快,还是要根据具体情形判断。
  • 搜索题的常数必须小到极致,可以使用 unordered_map 或二分等思路优化。

标签:总结,剪枝,迭代,DFS,BFS,搜索,搜索算法
From: https://www.cnblogs.com/zhr0102/p/18238813

相关文章

  • k8s容器网络ovs vxlan流向总结
    ovs流表刷在br-int网桥上。容器网卡eth0另一端在ovsbr-int网桥上。容器网关gw在br-int网桥上,ip地址是从pod网段中分配。br-int网桥上有vxlan类型ovs端口,用于封包和解包。同节点主机->容器路由判断->iptablesOUTPUT->iptablesPOSTROUTING->容器网关->容器网卡ping容器IP通......
  • 题目集4~6的总结
    目录一.前言 nchu-software-oop-2024-上-4~知识点 nchu-software-oop-2024-上-5~知识点 nchu-software-oop-2024-上-6~知识点二.设计与分析一.答题判题程序-41.继承2.多态二.家居强电电路模拟程序-11.类的设计2.抽象类二.家居强电电路模拟程序-21.面向对象设计原则——单一......
  • OOP题目集4~6的总结
    目录(一)前言(二)作业介绍(三)算法与代码(四)PowerDesigner类图模型(五)SourceMonitor代码分析(六)自学内容(七)总结一、前言介绍本篇博客的大致内容、写作目的、意义等本篇博客介绍如何使用Java语言基础和算法来解决题目问题,在此基础上进行对最近Java编程语言学习的总结题目的......
  • 23201405-pta的总结blog-二
    前言本次作业blog主要对于答题判题程序4、家具强电电路模拟1-2进行分析说明和总结。这三次题目集的题目量和难度不必多说,题不在多,而在精。题目主要是为了提高能力,区分层次而出,难度不小。知识点主要有,抽象类、输入输出的处理,正则表达等。更重要的是分析题目,设计程序并实现的能......
  • Linux学习总结
    Linux笔记Linux目录结构1./bin目录/bin目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。这些命令都是二进制文件的可执行程序(bin是binary--二进制的简称),多是系统中重要的系统文件。2./sbin目录/sbin目录类似/bin,也用于存储二进制文件。因......
  • 公司面试题总结(二)
    7.说说JavaScript中的数据类型?存储上的差别?•基本类型:        oNumber        oString        oBoolean        oUndefined        onull        osymbol•引用类型       ......
  • 题目集4~6的总结性Blog
    前言这三次的PTA作业日粮不大,知识点覆盖也不广,主要是对于类方法的掌握,难度适中,是可以接受的程度。答题判断程序4是接着答题程序3的,虽然增加了功能和排序,但是因为有了之前的代码,并不难写;家居强电电路模拟程序1是一个新的程序,最开始感觉是无从下手的,对于电路的输入和控制设备状态......
  • 顺序表、链表、栈和队列总结
    目录顺序表链表栈队列总结补充顺序表实现链表实现栈实现队列实现  顺序表、链表、栈和队列都是线性数据结构,但它们在管理和访问数据方面有不同的特点和用途。以下是它们之间的主要区别:顺序表存储方式:在连续的内存空间中存储元素。访问方式:通过索引直接访......
  • 个人总结
         大二下学期就要结束了。这个学期我学到了很多东西。Maven框架,Mybatis框架,Spring初了解,vue,Josn,Ajax等等相关知识技术。    平时的上课,老师会对我们讲解很多内容。刚开始的打卡APP,到后面的结对作业,院队作业等等。    尤其是团队项目,团队项目对我们......
  • 2024/6/7 今日总结
    今天主要做了计网的实验三,并且完成若有两个自治系统,如下图所示,A自治系统获得一个202.13.5.10-202.13.5.120个公网IP地址,B自治系统获得了203.13.10.100-203.13.10.150个公网IP地址。但A系统内存在4个局域网,分别有80、16、30和8个用户,B系统内存在3个局域网,分别有32、47、120个用户......