2022年排列组合并行算法的实现

上传人:沈*** 文档编号:119068880 上传时间:2022-07-13 格式:PDF 页数:9 大小:393.24KB
收藏 版权申诉 举报 下载
2022年排列组合并行算法的实现_第1页
第1页 / 共9页
2022年排列组合并行算法的实现_第2页
第2页 / 共9页
2022年排列组合并行算法的实现_第3页
第3页 / 共9页
资源描述:

《2022年排列组合并行算法的实现》由会员分享,可在线阅读,更多相关《2022年排列组合并行算法的实现(9页珍藏版)》请在装配图网上搜索。

1、Liaoning Normal University 开 放 实 验 室 项 目研 究 论 文题目:排列组合的并行实现学院:计算机与信息技术学院专业:计算机科学与技术班级序号:1 班 21 号学号:学生姓名:指导教师:2011 年 12 月名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -第 1 页排列组合的并行实现学生:指导教师:郑晓薇张哲计算机与信息技术学院计算机科学与技术专业 09 级摘要:回溯法是一种试探求解的方法:通过对问题的归纳分析,找出求解问题的一个线索,沿着这一线索往前试探,若试探成功,即得到解;若试探失败,就逐步往回退,换其他路线再往前试探。排列组合是通

2、过一定的约束条件,以及一定的规律来输出数字的几组排列。排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。关键词:回溯法,排列组合,约束条件Abstract:Back in the law is a test the solution method:through inductive analysis of problem,find out the problem solving a clue,along the clues o

3、n test,test if successful,namely get solution;If the test failure,he gradually back towards the back,change other routes go a test.The permutation and combination is through certain constraints,and certain laws to output digital several groups of alignment.The permutation and combination is the comb

4、ination of the most basic learning concept.The so-called arrangement,is refers to the number of elements from a given out the elements of the designated number order.Combination means that a given number of elements from the specified number of elements out only,do not consider sort.To arrange a com

5、bination of center problems are given the arrangement and study demand combined the possibility of total.Key words:backtracking method;permutation and combination;constraint condition 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -第 2 页前言许多问题的求解过程可以通过搜索问题的解空间来完成,而问题的解空间可用状态空间树来表示,树中的每一个节点对应问题求解的一个状态。对于一个状态S,如果

6、由根到 S的那条路径确定了这个解空间的一个元组,则称一个元组,则称S为一个解状态。如果树的搜索方法是深度优先的,就成为回溯法。排列组合的规律是多种多样的,此论文的排列组合是在设置其排列的最大数和排列的个数前提下,通过回溯法来完成其条件的约束,输出不同的排列,并实现并行。但是在回溯法的基础上并行经常会出现问题。所以要实现某些回溯法程序的并行,需要加在合适的位置上,这样才能有效的实现程序的并行化。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -第 3 页一、问题提出(一)背景分析许多要求寻找一组解满足某些约束条件的最优解的问题中,回溯法非常有用。但是随着问题复杂性的增加,串

7、行回溯搜索往往非常费时,所以为了加快搜索速度,提高效率。实现回溯搜索的并行化就具有十分重要的意义。在某些排列组合中,用回溯法来进行数字序列的排列是非常稳定的,但是由于回溯法是通过不断返回根节点来寻找最优解非常耗时,所以在回溯的基础上实现并行化更是提高了排列的效率。(二)排列组合的具体约束条件如下排列:12 13 14 15 21 23 24 25 31 32 34 35 41 42 43 45 51 52 53 54 输出以上几组排列,通过设置 m=2,n=5 来约束排列中允许出现最大的数以及一组排列的个数,在每个排列中,不允许出现相同的数字,也不允许出现相同的排列。并统计其组成排列的个数。二

8、、回溯法解决排列组合(一)串行算法设计应用回溯法产生排列A(n,m),设置一维数组 a,a(i)(i=1,2,.,m)在 1n 中取值。首先从 a(1)=1 开始,逐步给 a(i)(1im)赋值,每一个 a(i)赋值从 1 开始递增至 n。定义变量 g=1,当排列中有相同元素则g=0。若 i=m 与 g=1?同时满足,则为一组解,用s统计解的个数后,格式打印输出这组解。由数字1n 组成的 m 位整数组,其约束条件是没有相同数字。(三)排列组合串行程序算设计其串行代码如下:#include stdafx.h”#include 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页

9、-第 4 页#include#define N 30 void main()double begin,end;begin=(double)clock();int n,m,aN,i,j,g;long s=0;printf(input n(n10):);scanf(%d,&n);printf(input m(1m=n):);scanf(%d,&m);i=1;ai=1;while(1)g=1;for(j=1;ji;j+)if(aj=ai)g=0;break;/*出现相同元素时返回*/if(g&i=m)s+;for(j=1;j=m;j+)printf(%d,aj);/*输出一个排列*/printf()

10、;if(s%10=0)printf(n);if(g&i0)ai+;else break;printf(n s=%ldn,s);end=(double)clock();printf(串行查找的时间:%f 秒n,(end-begin)/(double)CLOCKS_PER_SEC);(四)排列组合串行程序运行结果运行结果:(1)当 n=5,m=3 如图一名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -第 5 页图一 n=5,m=3 串行运行结果(2)当 n=6,m=4 如图二图二 n=6,m=4 串行运行结果三、并行实现排列组合(一)并行思想通过并行语言 OpenMP 来实

11、现程序的并行,并行是通过多核处理器对CPU 进行有名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -第 6 页效的利用,把一个程序通过多线程处理的方式缩短时间,提高运行的效率。OpenMP 的编程模型以线程为基础,通过编译指导语句来显示地指导并行化,为编程人员提供了对并行化的完整的控制。它是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程语言。具有良好的可移植性,支持多种编程语言,能够支持多种平台,包括大多数的类 UNIX系统以及 Windows NT系统(Windows 2000,Windows XP,Windows Vista 等)。使用运行时函数库所包含的

12、函数,必须在相应的源文件中包含OpenMP 头文件,即#include“omp.h”四个最常用的 OpenMP 库函数:int omp_get_num_threads(void)返回当前使用的线程个数。int omp_set_num_threads(int NumThreads)在进入并行区域前,该函数设置将要使用的线程个数,它可以覆盖环境变量OMP_NUM_THREADS的值。int omp_get_thread_num(void)返回当前线程号,值在0(主线程)到线程总数减 1之间。int omp_get_num_procs(void)返回可用的处理核(处理器)个数。支持超线程技术的处理核

13、或处理器将被算作两个处理核(或两个处理器)。(二)排列组合并行程序的实现在该排列组合中有两个循环可以套用变成并行循环,但其中一个中有break 跳出无法执行并行,所以就用另一个循环来进行并行循环。其核心代码如下:s+;omp_set_num_threads(4)#pragma omp parallel for for(j=1;j=m;j+)printf(%d,aj);/*输出一个排列*/printf();if(s%10=0)printf(n);(三)并行程序运行结果(1)当 n=5,m=3 如图三名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 9 页 -第 7 页图三 n=5,m

14、=3 并行运行结果(2)当 n=6,m=4 如图四图四 n=6,m=4 并行运行结果四、并行运行结果与串行运行结果分析程序运行加速比:串行执行时间/并行执行时间m 时间(s)时间(s)时间(s)平均时间加速比串行 n=9 3 1.9 1.7 1.9 1.83 1.33 4 3.406 2.984 3.343 3.244 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -第 8 页5 8.250 7.812 8.468 8.175 1.36 6 28.375 30.844 32.203 30.474 7 105.875 106.484 99.093 103.817 1.24

15、 并行 n=9 3 1.203 1.531 1.375 1.369 4 2.453 2.156 2.500 2.369 1.06 5 6.562 6.484 6.670 6.572 6 28.023 29.375 28.625 28.674 2.06 7 57.698 42.078 50.921 50.232 通过运行的数据的记录排列组合通过并行其平均加速比为:1.41 通过以上数据可以看出当n 较大时,它加速比较明显提高,运行效率越高。在原来的初始并行设想中,是在程序刚开始访问根节点时并行,但是由于是回溯法,在判断排列是否相同时跳出了循环。由于其回溯法的数据相关性无法在那层循环中实现并行。如

16、果可以在那层循环并行,其运行效率会更加有所提高。while(1)g=1;omp_set_num_threads(4)/在 for 循环前加循环并行导语句#pragma omp parallel for for(j=1;ji;j+)if(aj=ai)g=0;break;/跳出循环无法执行并行五、结束语通过对排列组合程序并行算法的学习与编写,让我收获很多。首先,我的排列组合程序是一个通过回溯法来执行的程序。让我通过此程序理解回溯法的含义,更加熟练的运用回溯法来编写程序。再次让我通过此次编程接触了并行思想以及如何运用并行语言来实现程序的并行设计。同时也让我发现了回溯法在并行过程中的问题。以后也会沿着此方向来进行深入研究。完善程序的并行实现。参考文献:1 陈国良编著.并行算法:排序和选择.中国科大出版社,1990;台湾儒林图书公司2 李晓梅,蒋增荣.并行算法 M.湖南:湖南科学技术出版社,19923 李宝峰.多核程序设计技术M.北京:电子工业出版社,2007 4 陈国良编著.并行算法的设计与分析.高等教育出版社(修订版),2002 5 沈志宇等编著.并行程序设计.国防科大出版社,1997 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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