双向搜索,Meet in the middle(蒟蒻练习生)

本页面将简要介绍两种双向搜索算法:「双向同时搜索」和「Meet in the middle」。

一·双向搜索

定义

双向同时搜索的基本思路是从状态图上的起点和终点同时开始进行广搜或深搜。

如果发现搜索的两端相遇了,那么可以认为是获得了可行解。

过程

双向搜索的步骤如下

将开始结点和目标结点加入队列 q
标记开始结点为 1
标记目标结点为 2
while (队列 q 不为空)
{
  从 q.front() 扩展出新的 s 个结点

  如果 新扩展出的结点已经被其他数字标记过
    那么 表示搜索的两端碰撞
    那么 循环结束

  如果 新的 s 个结点是从开始结点扩展来的
    那么 将这个 s 个结点标记为 1 并且入队 q 

  如果 新的 s 个结点是从目标结点扩展来的
    那么 将这个 s 个结点标记为 2 并且入队 q
}

二·Meet in the middle

注意:Meet in the middle 并不是二分搜索(二分搜索也译为【折半搜索】)

Meet in the middle 算法没有正式译名,常见的翻译为「折半搜索」、「双向搜索」或「中途相遇」。它适用于输入数据较小,但还没小到能直接使用暴力搜索的情况。

过程

Meet in the middle 算法的主要思想是将整个搜索过程分成两半,分别搜索,最后将两半的结果合并。

性质

暴力搜索的复杂度往往是指数级的,而改用 meet in the middle 算法后复杂度的指数可以减半。

例题

「USACO09

### 配置 VSCode 实现 LaTeX 双向搜索 为了实现在 VSCode 中的 LaTeX 和 PDF 的双向搜索功能,需安装并配置 `LaTeX Workshop` 插件以及确保 TeX 发行版已正确安装。对于双向链接的支持主要依赖于编译器选项和查看器设置。 #### 安装必要组件 确认已经安装了 TeX Live 或 MiKTeX 这样的 TeX 发行版本[^1]。接着通过 Visual Studio Code 的扩展市场找到名为 "LaTeX Workshop" 的插件完成安装。 #### 设置正向搜索 (Forward Search) 编辑 VSCode 用户或工作区级别的 settings.json 文件来指定用于启动正向搜索命令的行为: ```json { "latex-workshop.view.pdf.internal.synctexpanel.enabled": true, "latex-workshop.latex.outdir": "./out", } ``` 上述 JSON 片段中的 `"latex-workshop.view.pdf.internal.synctexpanel.enabled"` 参数启用同步面板支持;而 `"latex-workshop.latex.outdir"` 则定义输出目录位置以便更好地管理生成文件。 当使用 SumatraPDF 作为预览工具时,还需调整如下参数以确保其能够响应来自编辑器端发起的跳转请求: ```json { "latex-workshop.view.pdf.viewer": "tab", "latex-workshop.view.pdf.command.line.args": [ "-forward-search", "%tex", "%line" ] } ``` 这里指定了 `-forward-search` 命令及其所需参数模板 `%tex` 表示 tex 文件路径占位符,`%line` 是当前光标所在行号占位符。 #### 启用逆向搜索 (Inverse Search) 为了让点击 PDF 文档内的任意一处都能迅速定位到对应的源代码处,同样需要修改配置项: ```json { "latex-workshop.view.pdf.backwardSearchOnDoubleClicked": true, "latex-workshop.view.pdf.backwardSearchCommand": "${file}:${line}", } ``` 此部分设定允许双击触发反向查找动作,并给出格式化字符串 `${file}:${line}` 来告知编辑器如何解析传入的信息从而打开相应文档并聚焦至特定行上。 最后值得注意的是,如果选用其他类型的 PDF 查看程序,则可能要查阅对应软件的手册了解具体集成方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cqbzcyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值