资源简介
B树,C语言实现,添加到vc6.0中,可以执行的程序。
代码片段和文件信息
/**
*Data:2011.3.20
*title:base on Branch_board straight selection
*/
#include
#include
#include
using namespace std;
const int D=6; //总特征数
const int d=2; //目标特征数
const int inf=100000; //无穷
int best[D]; //最好结果,舍弃对应位置为0
int max; //当前最好的结果的可区分性
int q[D-d+1]; //后继节点的个数,即下一层舍去的特征数
int r[D-d+1]; //当前特征集合的基数
vector X; //当前节点舍弃i个特征后的剩余特征
vector Q; //当前节点后继舍弃的特征
int l; //当前层数
int B; //初始界值
int J[D+1]; //判据值数组
//任意两个特征可区分性
const int cov[6][6]={
inf13
3inf5
67inf
}
class BTree{
public:
BTree* rchild; //子节点
BTree* lchild; //左兄弟
BTree* parent; //父节点
int x; //舍弃的特征
void generateChild(BTree *);
};
void sortByJudge(); //根据判据值进行排序
int calJudge(vector &Q int x); //计算当前节点判据值
void backUp(BTree *root); //回溯
void updatePath(BTree *root);
void addUnion(vector &srcint n); //集合相加
void subUnion(vector &fir vector &sec); //集合相减
void subUnion(vector &srcint n); //重载上一个函数
void search(BTree *root); //搜索解
//void updateUnion(); //更新集合
void freeMem(BTree *root);
void printResult(); //输出结果
void BTree::generateChild(BTree *root){
BTree *node=new BTree();
root->rchild=node;
node->parent=root;
node->x=Q[q[l]-1];
for(int i=1;i BTree *node2;
//注意最左结点
if(i=q[l]-1){
node->lchild=NULL;
}
else{
node2=new BTree();
node->rchild=NULL;
node->lchild=node2;
node2->parent=node;
node2->x=Q[q[l]-i-1];
node=node2;
}
}
//更新 XQ
sortByJudge(X);
Q.clear();
//May be a bug.
copy(X.begin()X.begin()+q[l]back_inserter(Q));
//计算J表
for(int i=0;i for(int i=0;i J[X[i]=calJudge(XX[i]);
}
subUnion(XQ); //更新集合X
}
void init(){
//初始化r和d
r[0]=D;r[D-d]=0;
for(int i=0;i for(int i=0;i q[i]=r[i]-(D-d-i-1);
r[i+1]=r[i]-q[i];
}
B=0;
}
void search(BTree *root){
l=0;
while(l>=0){
q[l]=r[l]-(D-d-l-1);
sortByJudge(); //排序并更新集合X
//判断下一层是否到达叶结点,更新界值
if(l+1==D-d){
if(J[q[l]-1]>B){
B=J[q[l]-1];
updatePath(root->
- 上一篇:湖南大学C语言程序设计考研试题
- 下一篇:哈夫曼编码
相关资源
- linux下用C语言实现寻找1到1亿内的素数
- linux下C语言实现简易web服务器
- SM2_SM3_SM4_C语言实现+SM3_C++实现+国家密
- linux下C语言实现读者写者写者优先
- 通讯录管理程序设计的C语言实现
- 用C语言实现的TCP服务器与客户端源代
- AES任意文件长度加解密C语言实现
- C语言实现A*算法解决传教士和野人渡
- C语言实现F算法 最短路径算法
- C语言实现高并发http文件上传服务器
- FIR的DSP实现C语言实现
- AES128 C语言实现源码及应用例程
- c语言实现 FCFS和SJF调度算法
- 原创modbus 协议c实现 C 语言 实现功能
- 表达式求值C语言实现《数据结构》课
- C语言实现FFT(快速傅里叶变换)
- c语言实现的电子词典
- 火车订票系统用c语言实现
- C语言实现校园导航系统
- butterworth滤波器的c语言实现
- 六种排序算法C语言实现源代码
- 哈夫曼树的建立(Huffman Tree C语言实现
- 唯一可译码的辨别 C语言实现
- 使用c语言实现基于图的图像分割代码
- C语言实现cordic sinx的算法
- C语言实现的校园导航系统
- s盒的C语言实现,S盒.cpp文件
- C语言实现的文字加密与解密小程序(
- 纯C语言实现https的post和get不依赖任何
- C语言实现宾果消消乐
评论
共有 条评论