博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
子集树与排列树
阅读量:6431 次
发布时间:2019-06-23

本文共 726 字,大约阅读时间需要 2 分钟。

 

1.当所给问题是从n个元素的集合S中找出S满足某种性质的子集时,相应的解空间称为子集树

例如:n个物品的0-1背包问题所相应的解空间是一棵子集树,这类子集树通常有2^n个叶结点,其结点总数为(2^(n+1))-1。

遍历子集树的算法通常需要(2^n)计算时间。

回溯法搜索子集树的算法一般可以描述如下:

void backtrack(int t){    if (t > n)        output(x);    else        for (int i = 0; i < l; i++)        {            x[t] = i;            if (constraint(t) && bound(t))                backtrack(t + 1);        }}

2.当所给问题的确定n个元素满足某种性质的排列时,相应的解空间树称为排列树

排列树通常有n!个叶结点,因此遍历排列树需要奥秘加(n!)计算时间。

例如:全排列、货郎担问题...

回溯法搜索排列树的算法一般可以描述如下:

void backtrack(int t){    if (t > n)        output(x);    else        for (int i = t; i < n; i++)        {            swap(x[t], x[i]);            if (constraint(t) && bound(t))                backtrack(t + 1);            swap(x[t], x[i]);        }}

转载地址:http://igtga.baihongyu.com/

你可能感兴趣的文章
PostgreSQL 性能优化
查看>>
HTML基础之JS
查看>>
剑指offer:第一个只出现一次的字符
查看>>
protobuf for lua in Mac
查看>>
决策树
查看>>
Web 前端颜色值--字体--使用,整理整理
查看>>
五、MySQL 创建数据库
查看>>
redis安全配置
查看>>
作业15-导航,头部,CSS
查看>>
DecimalFormat用法
查看>>
用javascript去掉字符串空格的办法
查看>>
test
查看>>
JAVA编程题-用java解决兔子问题
查看>>
pychon笔记
查看>>
[转] Web前端研发工程师编程能力飞升之路
查看>>
简单理解桶排序
查看>>
C#项目代码规范
查看>>
vscode常用插件
查看>>
算法的时间复杂度比较,计算多项式的直接法和秦九韶法
查看>>
SQL SERVER与C#的数据类型对应表
查看>>