当前位置: 首页 > news >正文

灌南住房和城乡建设局网站wordpress 获取分类文章列表

灌南住房和城乡建设局网站,wordpress 获取分类文章列表,清理网站数据库,重庆建站管理系统价格回溯法 回溯法有“通用解题法”之称,用它可以系统地搜索问题的所有解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。 在包含问题的所有解的解空间树中,按照深度优先搜索(DFS))的策略,从根结点出发深度探索解空间树。当探索…

回溯法

回溯法有“通用解题法”之称,用它可以系统地搜索问题的所有解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。

在包含问题的所有解的解空间树中,按照深度优先搜索(DFS))的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。

若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束。 而若使用回溯法求任一个解时,只要搜索到问题的一个解就可以结束。

DFS

解题步骤

  1. 针对所给问题,定义问题的解空间
  2. 确定易于搜索的解空间结构
  3. 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索

子集树与排列树

下面的两棵解空间树是回溯法解题时常遇到的两类典型的解空间树,子集树排列树

子集树

当所给问题是从n个元素的集合S中找出S满足某种性质的子集时,相应的解空间树称为子集树。例如从n个物品的0-1背包问题所相应的解空间树是一棵子集树,这类子集树通常有2n{2^n}2n个叶结点,其结点总个数为2n+1−1{2 ^{n+1}- 1}2n+11。遍历子集树的算法需O(2n{2^n}2n)计算时间

用回溯法搜索子集树的一般算法可描述为:

/*** output(x)     记录或输出得到的可行解x* constraint(t) 当前结点的约束函数* bount(t)      当前结点的限界函数* @param t  t为当前解空间的层数*/
void backtrack(int t){if(t >= n)output(x);elsefor (int i = 0; i <= 1; i++) {x[t] = i;if(constraint(t) && bount(t))backtrack(t+1);}
}

排列树

当所给问题是确定n个元素满足某种性质的排列时,相应的解空间树称为排列树。例如旅行售货员问题的解空间树是一棵排列树,这类排列树通常有n!{n!}n!个叶结点。遍历子集树的算法需O(n!{n!}n!)计算时间

用回溯法搜索排列树的一般算法可描述为:

/*** output(x)     记录或输出得到的可行解x* constraint(t) 当前结点的约束函数* bount(t)      当前结点的限界函数* @param t  t为当前解空间的层数*/
void backtrack(int t){if(t >= n)output(x);elsefor (int i = t; i <= n; i++) {swap(x[t], x[i]);if(constraint(t) && bount(t))backtrack(t+1);swap(x[t], x[i]);}
}

Leetcode真题

电话号码的字母组合

解题思路:
经典排列树,按节点遍历

private String[] voc = new String[]{"","*", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
List<String> res = new ArrayList();
public List<String> letterCombinations(String digits) {if (digits == null || digits.length() == 0) {return res;}backtrack(digits, 0, new StringBuffer());return res;
}public void backtrack(String digits, int index, StringBuffer s) {if (index == digits.length()) {res.add(s.toString());return;}int i = digits.charAt(index) - '0';for (char c : voc[i].toCharArray()) {s.append(c);backtrack(digits, index + 1, s);s.deleteCharAt(s.length() - 1);}
}

括号生成

解题思路:
排列树,按节点遍历

  1. 回溯结束条件:左括号数 = 右括号数 = 总数
  2. 左括号数<总数, 字符串加入左括号
  3. 右括号数<总数 且 左括号数>右括号数,字符串加入右括号
List<String> res = new ArrayList<>();
public List<String> generateParenthesis(int n) {backtrack(n, 0, 0, "");return res;
}void backtrack(int n, int l, int r, String str) {if (l == n && r == n) {res.add(str);}if (l < n) {backtrack(n, l + 1, r, str + "(");}if (r < n && l > r) {backtrack(n, l, r + 1, str + ")");}
}

N皇后

解题思路:
子集树,按节点遍历

  1. 回溯结束条件:所有层数放置完毕
  2. 每列循环遍历,当满足非冲突条件时(列,主对角线,副对角线不冲突)
    • 放置该行的皇后
    • 执行下一级回溯

两点位于同一对角线时,行列值相加/相减的值相等

List<List<String>> res = new ArrayList<>();
public List<List<String>> solveNQueens(int n) {if (n <= 0) {return res;}backtrack(0, n, new int[n]);return res;
}/*** output(x)     记录或输出得到的可行解x* constraint(t) 当前结点的约束函数** @param t      t为当前解空间的层数* @param n 总层数* @param queens 结果集,下标为行号,值为列号*/
void backtrack(int t, int n, int[] queens) {if (t >= n) {output(res, n, queens);return;} else {for (int j = 0; j < n; j++) {if (constraint(t, j, n, queens)) {queens[t] = j;backtrack(t + 1, n, queens);}}}
}/*** 检查是否存在冲突(列,主对角线,副对角线)* 两点位于同一对角线时,行列值相加/相减的值相等*/
boolean constraint(int t, int j, int n, int[] queens) {for (int i = 0; i < t; i++) {if (queens[i] == j || i - queens[i] == t - j || i + queens[i] == t + j) {return false;}}return true;
}void output(List<List<String>> res, int n, int[] queens) {List<String> list = new ArrayList<>();for (int i = 0; i < n; i++) {char[] chars = new char[n];Arrays.fill(chars, '.');chars[queens[i]] = 'Q';list.add(new String(chars));}res.add(list);
}

参考资料:

  1. 回溯法的解题步骤与例子解析
  2. leetcode
  3. 深度优先搜索
http://www.yayakq.cn/news/89745/

相关文章:

  • 网站经营跟备案不符网络工程师考试大纲
  • 做直播网站用什么程序做百科的网站
  • 视频制作素材网站百度识图在线识图
  • 手机论坛网站学校做网站的目的
  • 移动网站性能网站源码检测
  • 简历生成网站外国网站手机dns
  • 江山市建设局网站长沙网站建设网站
  • 鞋帽箱包网站建设手机有些网站打不开怎么解决
  • 上海手机网站建设公司中国十大电商平台有哪些
  • 咸宁制作网站每平每方设计家官网
  • 经典网站设计作品网站建设中最有效网站推广方式
  • 广西建设工程管理网站精彩网站制作
  • 虚拟网站中文wordpress模板
  • 常用来做网站首页的文件名路飞和女帝做h的网站
  • 网站备案要邮寄资料吗长沙优化网站关键词
  • 杭州企业网站设计公司广州建设职业
  • 天津做网站的费用做单挣钱的网站
  • 佛山市做网站的公司怎么去推广一个产品
  • 百度搜索引擎录入网站网站建设专家北京注安
  • 免费网站建设找云狄成为软件工程师的条件
  • wordpress教程 网站标题注册公司深圳
  • 无锡企业网站制作费用淘宝网页设计代码
  • 企业网站快速备案服务网站seo优化推广外包
  • 南昌专业做网站兰州seo优化公司
  • 服装网站建设公司地址分销网站
  • 深圳建站公司有推荐的公司吗企业网站模板整套
  • 如何让网站做成移动版注册公司代理费用标准
  • 江西哪里有做电商网站的公司新公司注册核名
  • 网站模板中心项目外包网站
  • 单位网站建设的目的江苏易销 网站建设