首页 > 其他分享 >Whisper的第一篇笔记(dfs)

Whisper的第一篇笔记(dfs)

时间:2022-10-07 22:11:26浏览次数:42  
标签:状态 结点 第一篇 Whisper top dfs 搜索 回溯

原本

小z是打算先写一篇关于字符串的笔记

由于实在是太太太太长了

我决定抛弃它(先丢进草稿箱

然后

这篇稍微正经一点的有关dfs的学习笔记就来辽(这是LDL老师才讲的内容

我来记录一下(记性不太好

语文太差,请多包涵

正文开始

 


 

dfs与回溯

 

Depth First Search

 

•  深度优先搜索概述

  –尽可能“深”的搜索某一分支。在深度优先搜
  索中,对于最先发现的结点,如果还有以此为
  起点的未搜索边,则沿此边继续搜索下去。当
  结点V的所有边都已经被探寻过,搜索将回溯
  到发现点V的那条边的始结点。重复此过程直
  至源结点可到达的所有结点为止。

 

•  回溯法概述

  –从问题的某一种状态出发, 搜索从这种状态出
  发所能达到的所有状态, 当这一条路走到“ 尽
  头 ”而没达到目标状态的时候, 再倒回上一个
  出发点, 从另一个状态出发, 继续搜索. 这种不
  断“走不通就回头”寻找解的方法, 称作“ 回
  溯法 ”。
  –回溯是搜索算法中的一种控制策略。
  –DFS利用的数据结构是栈(stack)。

 

•  回溯法的基本思想

  –为了求得问题的解,先选择某一种可能情况向
  前探索,在探索过程中,一旦发现原来的选择
  是错误的,就退回一步重新选择,并继续向前
  探索,如此反复进行,直至得到解或证明无解。
  –如迷宫问题:进入迷宫后,先随意选择一个前
  进方向,一步步向前试探前进,如果碰到死胡同,
  说明前进方向已无路可走,则返回一步,看看
  其它方向是否还有路可走;如果有路可走,则
  沿该方向再向前试探,如果仍然无路可走,就
  再返回一步看有无其他路可走。按此原则不断
  搜索回溯再搜索,直到找到出口或返回到入口
  处无解为止。

 

•  深度优先搜索/回溯法框架一

 

 1 void  dfs(当前状态){
 2     for (int   i =算符最小值; i<= 算符最大值; i++){
 3          算符i作用于当前状态,扩展出一个子状态;
 4          if ((子状态满足约束条件)&&子状态满足最优性要求)){     
 5              保存结果;
 6              if  (到目的地)  {   
 7                   if (当前状态为最佳目标状态)  记下最优结果;
 8                   return; //回溯 
 9              }
10              dfs(下一个状态);
11              恢复:保存结果之前的状态(回溯一步);
12         }
13     }
14 }                                   

 

 

•  深度优先搜索/回溯法框架二

 1 void  DFS(当前状态){   
 2     if  (当前状态为边界){
 3         if (当前状态为最佳目标状态)  记下最优结果;
 4         return;//回溯 
 5     }
 6     for (int   i =算符最小值; i<= 算符最大值; i++){
 7         算符i作用于当前状态,扩展出一个子状态;
 8         if ((子状态满足约束条件)&&子状态满足最优性要求)){     
 9             保存结果;
10             DFS(下一个状态);
11             恢复:保存结果之前的状态(回溯一步)
12         }
13     }
14 }  

 

•  栈的操作(手写 / C++ stack)

  (上面是手写,下面是C++ stack)

 1 //栈的操作 
 2 
 3 //定义栈
 4 {
 5     int s[MAXN],top=0;
 6     
 7     stack<int>s;
 8 } 
 9 //进栈 
10 {
11     s[++top]=num;
12     
13     s.push(num);
14 } 
15 //出栈 
16 {
17     top--;
18     
19     s.pop();
20 }
21 //取栈顶元素
22 {
23     num=s[top];
24     
25     num=s.top();
26 } 
27 //求栈中元素个数
28 {
29     cnt=top;
30     
31     cnt=s.size();
32 } 
33 //判空 
34 {
35     if(top) return true;
36     else return false;
37     
38     s.empty();
39 }
40 //清空 
41 {    
42     top=0;
43     
44     while(!s.empty())
45         s.pop();
46 }

 

今天累了

就这样吧

如果有错误请私信我(今晚有一点迷糊

Good night.

 

——by_WBCAZ

 

 

标签:状态,结点,第一篇,Whisper,top,dfs,搜索,回溯
From: https://www.cnblogs.com/WBCMZ/p/16767237.html

相关文章

  • HDFS上传文件
    上传文件流程图,要点都在图上......
  • 总结第一篇SCI写作到投稿的过程
    在七月初研一课程结束,就开始了第一篇SCI的投入写作,直到昨晚投出为止,这里总结一下自己写作和投稿的流程。(后期,如有拒稿、大修、小修等再进行完善补充)1、问题提出和写作套路......
  • 22. 括号生成(dfs)
    22.括号生成数字n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())......
  • TZOJ 2777: Hero in Maze 简单版/深搜DFS
    描述 500年前,Jesse是我国最卓越的剑客。他英俊潇洒,而且机智过人^_^。突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中。Jesse听说这个消息已经是两天以后了,他......
  • C语言学习的第一篇博客
    今年40,一直从事医药行业的销售工作,现在越来越发现销售类的工作没有未来,反倒是觉得以前不屑一顾的公务员、事业单位和技术类的工作是不错的,因为这些工作重在积累,当然公务员及......
  • 如何查看hive表在hdfs中的位置
    在hive环境下使用命令:hive>showdatabases;#查看所有的数据库OKappdevhive>usedev;#选择dev数据库OKhive>showcreatetabletest_table;#打印创建表的......
  • 随便瞎胡的第一篇随笔
    哈哈哈本蒟蒻终于有博客辽!!!不得不承认我捣鼓了近1h还没弄懂设置(没有理解能力我貌似在1天前才知道有博客这个东西存在(悲先来膜拜一番大佬(蒟蒻瑟瑟发抖,orz希望以后阔以在......
  • Codeforces Beta Round #87 (Div. 1 Only) A. Party(树的深度+dfs)
    https://codeforces.com/contest/115/problem/A题目大意:给定n个节点,每个节点都有一个不同于自己的数值,表示自己的老板,-1表示自己就是老板。现在玩游戏需要组队,一组队......
  • HDFS读写流程
    HDFS读流程客户端通过FileSystem的get方法加载配置获得FileSystem对象。FileSystem向NameNode通过open方法请求读取文件。NameNode进行检查(文件是否存在,是否有相应权......
  • Codeforces Round #321 (Div. 2) C. Kefa and Park(树+dfs)
    https://codeforces.com/contest/580/problem/C题目大意:给定一棵树,这棵树总共有n个节点,自己家住在节点1(根节点);每个节点都有一个标记a[i],标记为1就是这个地方有猫,0就表......