亚瑟王问题

题目:亚瑟王打算请150明骑士参加宴会,但是有些骑士相互之间会有口角,而亚瑟王知道谁和谁不和。亚瑟王希望能让他的客人围着一张圆桌坐下,而所有不和的骑士相互之间不会挨着坐。回答下列问题:

1. 哪一个经典问题能够作为亚瑟王问题的模型?

2. 请证明,如果与每一个骑士不和的人数不超过75,则该问题有解。

3. 设计回溯算法求解亚瑟王问题。

解:

1、应用哈密顿模型来求解此问题

2、应该于每一个骑士不和的人数不超过74人,才有解,我们这里把自己和自己不和也算一个人,于是有了下面的分析模型;

3、分析如下:(简化模型,假设只有10个人,每个人和其它5人不和, 这里不和的人数可以自定义不一定是五个人)

const int n = 10;

int arc[n][n] = {

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{1,1,1,1,1,0,0,0,0,0}, 具体的C 实现程序如下:

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0}

};

#include

#define N 20

const int n = 10;

int arc[n][n] = {

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0}

};

void Hamiton(int x[ ], int n);

int main()

{

int x[n];

Hamiton(x, n) ;

return 0;

}

void Hamiton(int x[ ], int n)

{

int i, k;

int visited[N]; //假设图最多有N 个顶点

for (i = 0; i

x[i] = 0;

visited[i] = 0;

}

x[0] = 0; visited[0] = 1; //从顶点0出发

k = 1;

while (k >= 1)

{

x[k] = x[k] + 1; //搜索下一顶点

while (x[k]

{

if (visited[x[k]] == 0 && arc[x[k-1]][x[k]] == 1) break;

else x[k] = x[k] + 1;

}

if (x[k]

for (k = 0; k

cout

画出分析模型无向图

如下图所示(搜索是从点1开始的)

由于篇幅问题,这个例题解的哈密顿回路的搜索空间树请参考P185的示例

题目:亚瑟王打算请150明骑士参加宴会,但是有些骑士相互之间会有口角,而亚瑟王知道谁和谁不和。亚瑟王希望能让他的客人围着一张圆桌坐下,而所有不和的骑士相互之间不会挨着坐。回答下列问题:

1. 哪一个经典问题能够作为亚瑟王问题的模型?

2. 请证明,如果与每一个骑士不和的人数不超过75,则该问题有解。

3. 设计回溯算法求解亚瑟王问题。

解:

1、应用哈密顿模型来求解此问题

2、应该于每一个骑士不和的人数不超过74人,才有解,我们这里把自己和自己不和也算一个人,于是有了下面的分析模型;

3、分析如下:(简化模型,假设只有10个人,每个人和其它5人不和, 这里不和的人数可以自定义不一定是五个人)

const int n = 10;

int arc[n][n] = {

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{1,1,1,1,1,0,0,0,0,0}, 具体的C 实现程序如下:

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0}

};

#include

#define N 20

const int n = 10;

int arc[n][n] = {

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{0,0,0,0,0,1,1,1,1,1},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0},

{1,1,1,1,1,0,0,0,0,0}

};

void Hamiton(int x[ ], int n);

int main()

{

int x[n];

Hamiton(x, n) ;

return 0;

}

void Hamiton(int x[ ], int n)

{

int i, k;

int visited[N]; //假设图最多有N 个顶点

for (i = 0; i

x[i] = 0;

visited[i] = 0;

}

x[0] = 0; visited[0] = 1; //从顶点0出发

k = 1;

while (k >= 1)

{

x[k] = x[k] + 1; //搜索下一顶点

while (x[k]

{

if (visited[x[k]] == 0 && arc[x[k-1]][x[k]] == 1) break;

else x[k] = x[k] + 1;

}

if (x[k]

for (k = 0; k

cout

画出分析模型无向图

如下图所示(搜索是从点1开始的)

由于篇幅问题,这个例题解的哈密顿回路的搜索空间树请参考P185的示例


相关内容

  • 什么是问题
  • 什么是问题? --综合实践活动"主题研究教学模式"中发现问题的研究 黑龙江省齐齐哈尔市富拉尔基区教师进修学校副校长高占国 全面提高中小学综合实践活动教学质量的最有效途径--富区中小学综合实践活动主题研究教学模式研究,是我们在综合实践活动课程改革实验过程中的研究成果.主题研究教学模 ...

  • [小学生问题解决能力评价的研究]研究报告
  • <小学生问题解决能力评价的研究>研究报告 北京市石景山区金顶街第二小学 课题组 总课题:小学生学业成就评价改革实验 一. 问题的提出 总课题是全国教育科学"十五"规划教育部重点课题<小学生学业成就评价改革研究>,总课题含有七个子课题:<小学生学业情感 ...

  • 用友U8库存管理系统操作问题详解
  • 期初 1. 点击库存期初无反应 问题现象:点击库存期初无反应 问题版本:8.52 问题模块:库存管理 问题原因:机器名有'-' 解决方案:删除机器名中的'-',按规范重新起机器名,用字母开头,不超过八个字符. 2. 库存期初和收发存汇总表数据不一致 问题现象:存货02030504 2005年库存期初 ...

  • 化学课堂教学问题的理性设计
  • 广西师范大学蓝芝霖黄都 河池市环江毛南族自治县高级中学谭远聪 [摘要]以氧化还原反应为例,探讨化学课堂教学问题的理性设计. [关键词]化学课题问题理性设计 [中图分类号]G[文献标识码]A [文章编号]0450-9889(2015)05B-0059-02 早在20世纪30年代,陶行知先生就言简意赅地 ...

  • [4.1 发现问题]教学设计
  • 第四章 发现问题 第一节 发现问题 一.教学目标 1. 知识与技能: (1)了解与明确发现问题的重要性及其作用: (2)初步掌握发现问题的一般方法,共三种: (3)能通过各种渠道收集与所发现问题相关的各种信息,并进行处理. 2. 过程与方法: (1)通过引导与结合自己的实际生活,能分析讨论发现的问题 ...

  • 分治法,动态规划及贪心算法区别
  • 转自:http://hxrs.iteye.com/blog/1055478 分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题.但其实这三者之间的区别还是蛮大的. 1.分治法 分治法(divide-and-conquer):将原 ...

  • 小学数学问题解决策略
  • 学数学"情景·过程·表述·反思"教学过程是把问题作为教学出发点, 让学生在处理信息.探究方法.理清思路.形成策略中有效解决问题.其基本教学模式与环节如下.这个教学基本模式相对稳定, 但并非一成不变, 它具有灵活性.在课堂教学中可以根据不同年段的学生进行不同的组合, 灵活调整, 使 ...

  • "问题引导式"培训方式的探索和应用
  • "问题引导式"培训方式的探索和应用 摘要:如何提高职工的职业技能.激发职工学习的积极性和主动性,一直是企业培训工作不断探索与尝试的课题."问题引导式"培训方法是提高培训效果的有效途径之一.文章阐述了"问题引导式"培训方法的内涵和特点,探索和 ...

  • 陇县职称论文发表网-园林绿化问题对策论文选题题目
  • 云发表,专业论文发表网站!http://www.yunfabiao.com/ 面向作者直接收稿,省去中间环节,价格更低,发表更快,收录更快! 陇县职称论文发表网-园林绿化|问题|对策论文选题题目 陇县职称论文发表网-以下是园林绿化|问题|对策职称论文发表选题参考题目,均采用云论文发表选题题目软件,经 ...

  • 浅谈小数解决问题的教学
  • 浅谈小数解决问题的教学 [摘要]小学数学解决问题的教学是<新课程标准>中规定的课程目标之一,通过对解决问题的理解,分析解决问题教学与应用题教学的区别及优势,阐述小学数学解决问题的教学模式以及在实施解决问题教学过程中的几点建议,明确了小学数学解决问题教学的重要地位. [关键词]小学数学 解 ...