基于搜索的算法

一、实验目的

1 理解搜索树与解空间树的区别

2 理解回溯法\分支限界法\穷举搜索的区别

3 理解回溯法的特征(基于解空间树\纵向优先\剪枝) 和 分支限界法的特征(基于解空间树\横向优先\剪枝)

4掌握回溯法的简单实现和时间复杂度分析

  • 实验内容

1、图着色问题

2、0/1背包问题

三、问题分析

1、图着色问题:

      回溯法求解图着色问题时,首先把所有顶点的颜色初始化为0,然后依次为每个顶点着色,如果当前顶点着色没有冲突,则继续为下一个顶点着色,否则,为当前顶点着下一个颜色,如果所有m种颜色都试探过并且不发生冲突,则回溯到当前顶点的上一个顶点,以此类推;

2、0/1背包问题

      回溯法求解0/1背包问题时,不断的去试探每个重量的物品,然后如若发生冲突,就是重量已经超过背包了,那就回溯到上一个物品;

四、问题解决

1、图着色问题

      (1)、算法:回溯法求解图着色问题GrapghColor

                输入:图G=(V,E),m种颜色

                输出:n个顶点的着色情况color[n]

                过程:1、将数组color[n]初始化为0;

                            2、i=0;

                            3、当i>=0为顶点i着色:

                                  3.1、依次考查每一种颜色,若顶点i的着色与其他顶点的着色不发生冲突,则转步骤3.2;否则,搜索下一颜色;

                                  3.2、如果color[i]大于m,重置顶点i的着色情况,i=i-1,转步骤3回溯;

                                  3.3、若顶点i是一个合法的着色且顶点尚未全部着色,则i=i+1,转步骤3处理下一个顶点;

                                  3.4、若顶点已全部着色,则输出数组color[n],算法结束;

      (2)、代码:

       
 void GraphColor(int m,int [][]arc,int []color,int n){/*m种颜色,n个顶点,数组arc[]存储图,color[]存储颜色*/

    int i,j;

    for (i=0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值