人工智能实验报告计算机人工智能_计算机-人工智能.pdf

上传人:C****o 文档编号:95643450 上传时间:2023-08-29 格式:PDF 页数:5 大小:141.90KB
返回 下载 相关 举报
人工智能实验报告计算机人工智能_计算机-人工智能.pdf_第1页
第1页 / 共5页
人工智能实验报告计算机人工智能_计算机-人工智能.pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《人工智能实验报告计算机人工智能_计算机-人工智能.pdf》由会员分享,可在线阅读,更多相关《人工智能实验报告计算机人工智能_计算机-人工智能.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、八皇后问题 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是 十九世纪著名的数学家高斯 1850 年提出:在 8X8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇 后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。基本思想:在 open 表中保留已生成而未考察的结点,并用启发函数 h(x)对它们全部进 行估价,从中选出最优结点进行扩展,而不管这个结点出现在搜索树的什么地 方。(1)把初始结点 SO 放入 open 表中,计算 h(SO);(2)若 open 表为空,则搜索失败,EXIT;(3)移出 open 表中第一个结点 N 放入 closed 表中,并冠

2、以序号 n(4)若目标结点 Sg=N 则搜索成功,EXIT(5)若 N 不可扩展,则转步骤(2);(6)扩展 N,计算每个子结点 x 的函数值 h(x),并将所有子结点配以指向 N 的返回指针后放入 open 表中,再对 open 表中的所有子结点按其函数值大小 以升序排序,转步骤 2;/采用启发式修补解 N 皇后问题#include#include /采用启发式修补解 N 皇后问题#include#include using.namespace std;void shuffle(int Queen,const int n)/随机取得各行的初始皇后位置,以 Queeni 表示第 i行的皇后位置

3、 for(i nt i=0;i n;i)Queeni=abs(rand()%n;int collision(int Queen,const int row,const int column,const int n)./计算每个位置的冲突值 int bug=0;for(int i=0;in;i).if(i!=row)&(Queeni=column|(Queeni-column)=(i-row)|(Queeni-column)=(row-i)/同列,同对角线的情况 bug;return bug;void show(int Queen,const int n)./打印皇后图 cout 厂;for(i

4、nt k=0;kn-1;k)cout 丁;coutendl;for(int i=0;in-1;i).cout ;for(int j=0;jn;j)cout(j=Queeni)?凤 :出在格的国际象棋上摆放八个皇后使其不能互相攻击即任意两个皇后都不能处于同一行同一列或同一斜线上问有多少种摆法基本思想在表中保留已生成而未考察的结点并用启发函数对它们全部进行估价从中选出最优结点进行扩展而并冠以序号若目标结点搜索成功若不可扩展转步骤扩展计算每个子结点的函数值并将所有子结点配以指向的返回指针后放入表中再对表中的所有子结点按其函数值大小以升序排序转步骤采用启发式修补解皇后问题采用启发式修补解后图厂丁凤丨有

5、皇后的位置用凤卜十十凤有皇后的位置用没有的用丄厶启发式修补标志行行之间冲突数取得当前的冲突数不断优化保持皇后在等冲突的情况下不断变更位置有利于后面行的优化取得随机种子)丨有/皇后的位置用凤 coutendl;coutvv 卜;for(j=0;jn-1;j)coutvv 十;coutvv 十vvendl;cout I;for(int j=0;jvn;j)coutvv(j=Queenn-1)?凤:)vv I 有;/皇后的位置用,没有的用 _coutvvendl;coutvv J;for(k=0;kvn-1;k)coutvv 丄;coutvv 厶vvendl;coutvvendl;int repai

6、r(int Queen,const int n)./启发式修补 int max=-1;标志行行之间冲突数 int minbug=n;int count=0;出在格的国际象棋上摆放八个皇后使其不能互相攻击即任意两个皇后都不能处于同一行同一列或同一斜线上问有多少种摆法基本思想在表中保留已生成而未考察的结点并用启发函数对它们全部进行估价从中选出最优结点进行扩展而并冠以序号若目标结点搜索成功若不可扩展转步骤扩展计算每个子结点的函数值并将所有子结点配以指向的返回指针后放入表中再对表中的所有子结点按其函数值大小以升序排序转步骤采用启发式修补解皇后问题采用启发式修补解后图厂丁凤丨有皇后的位置用凤卜十十凤有皇

7、后的位置用没有的用丄厶启发式修补标志行行之间冲突数取得当前的冲突数不断优化保持皇后在等冲突的情况下不断变更位置有利于后面行的优化取得随机种子while(max!=0&countv=100).max=0;for(int i=0;in;i).minbug=collision(Queen,i,Queeni,n);/取得当前的冲突数,不断优化 int temp=Queeni;for(int j=0;jn;j).int bug=collision(Queen,i,j,n);if(bugmax)max=minbug;show(Queen,n);count;return count;void main().

8、int n=-1;int step=0;coutInput N(you would better input a interge minor to 15):n;出在格的国际象棋上摆放八个皇后使其不能互相攻击即任意两个皇后都不能处于同一行同一列或同一斜线上问有多少种摆法基本思想在表中保留已生成而未考察的结点并用启发函数对它们全部进行估价从中选出最优结点进行扩展而并冠以序号若目标结点搜索成功若不可扩展转步骤扩展计算每个子结点的函数值并将所有子结点配以指向的返回指针后放入表中再对表中的所有子结点按其函数值大小以升序排序转步骤采用启发式修补解皇后问题采用启发式修补解后图厂丁凤丨有皇后的位置用凤卜十十凤

9、有皇后的位置用没有的用丄厶启发式修补标志行行之间冲突数取得当前的冲突数不断优化保持皇后在等冲突的情况下不断变更位置有利于后面行的优化取得随机种子if(n=0).coutIllegal Input!endl;return;int*Queen=new intn;sra nd(time(NULL);取得随机种子 shuffle(Queen,n);coutThe oringinal state:100).coutCould find solution within 100 steps,Try again!endl;return;coutAfter step 1 stepsendl;coutThe go

10、al state arrives!endl;出在格的国际象棋上摆放八个皇后使其不能互相攻击即任意两个皇后都不能处于同一行同一列或同一斜线上问有多少种摆法基本思想在表中保留已生成而未考察的结点并用启发函数对它们全部进行估价从中选出最优结点进行扩展而并冠以序号若目标结点搜索成功若不可扩展转步骤扩展计算每个子结点的函数值并将所有子结点配以指向的返回指针后放入表中再对表中的所有子结点按其函数值大小以升序排序转步骤采用启发式修补解皇后问题采用启发式修补解后图厂丁凤丨有皇后的位置用凤卜十十凤有皇后的位置用没有的用丄厶启发式修补标志行行之间冲突数取得当前的冲突数不断优化保持皇后在等冲突的情况下不断变更位置有利于后面行的优化取得随机种子

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁