计算机理论导引 试卷,计算机理论导引实验报告_CFG是P成员.doc

a7f4a3f590493a1e451dd952a488fd7c.gif 计算机理论导引实验报告_CFG是P成员.doc

(15页)

97b7444fe8ebef35f82a90fb7f1baa81.gif

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

9.90 积分

HUNAN UNIVERSITY计算理论导引实验报告题 目:CFG是P成员学生姓名:安佳玮学生学号:20090810101专业班级:计算机科学与技术1班上课老师:吴昊实验日期:2011-12-22目 录一、实验目的 2二、实验方法 2三、实验代码 2四、测试数据以及运行结果 10一、实验目的上下文无关文法CFG G是否派生某个串W。采用动态规划(Dynamic Programming)设计一个多项式时间的验证算法二、试验方法编写一个算法/程序,对于给定的输入,可以在多项式时间内判定ACFG。三、实验代码#include // 第一类规则,即规则右边只含有两个变元class Regular_1{public: int left; int right_1; int right_2;};// 第二类规则,即规则右边只含有一个终结符或者空class Regular_2{public: int left; int right;};// 表格类,用来存放中间数据class Table{public: int size; // 表格的行和列的数量,与输入长度相同 int num_v; // 表格中每个单元格最多含有的数量大小,与cfg的变元数量相同 int ***value; // 用来存放数据的三元数组 Table(int num_v,int num_w); // 构造函数,参数指定输入字符串的长度以及cfg变元的数量 ~Table(); // 析构函数 void SetValue(int i,int j,int num); // 向表格第i行j列追加数据num bool CheckValue(int i,int j,int num); // 检查表格第i行j列是否含有数据num,含有则返回true,否则返回false void Print(); // 打印表格的内容};Table::~Table(){ if(value) delete value;}void Table::SetValue(int i,int j,int num){ int *p=value[i][j]; // 寻找追加数据的位置 while((*p)!=-1) { p++; } *p=num;}bool Table::CheckValue(int i,int j,int num){ int *p=value[i][j]; while((*p)!=-1) { if((*p)==num) return true; p++; } return false;}Table::Table(int num_v,int num_w){ size=num_w; this->num_v=num_v; value=new int**[num_w]; // 给value动态分配,并将初值设为-1 for(int i=0;inum_v; cout<>num_e; cout<num_r1; r1=new Regular_1[num_r1+1]; cout<r1[i].left>>r1[i].right_1>>r1[i].right_2; } r1[i].left=-1; cout<num_r2; r2=new Regular_2[num_r2+1]; for(i=0;ir2[i].left>>r2[i].right; } r2[i].left=-1; cout<start_v; }CFG::~CFG(){ if(r1) delete r1; if(r2) delete r2;}bool CFG::Go(int *w){ bool result=false; Regular_1 *p1=r1; Regular_2 *p2=r2; int len_w=0; int *p=w; // 获取输入长度 while(*p!=-1) { len_w++; p++; } p=w; Table t(num_v,len_w); int i,j,k,l; cout<len_w; w=new int[len_w+1]; if(len_w==0) cout<w[i]; } w[i]=-1; c.Go(w); cout<>c; if(c=='N') return; }}改程序在VC++下可以通过编译,并且运行结果正确四、测试数据以及运行结果以教材习题上面的一个CFG为例。该CFG描述如下:S->RTR->TR|aT->TR|b在该CFG下面测试输入w1=baba和w2=ababb测试结果如下: 关 键 词: 导引 实验 cfg 报告 理论 成员 计算机

4d91c43bfc72ca913299809b07b4968f.gif  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值