欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PDF文档下载
 

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

  • 资源ID:119068880       资源大小:393.24KB        全文页数:9页
  • 资源格式: PDF        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

Liaoning Normal University 开 放 实 验 室 项 目研 究 论 文题目:排列组合的并行实现学院:计算机与信息技术学院专业:计算机科学与技术班级序号:1 班 21 号学号:学生姓名:指导教师:2011 年 12 月名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -第 1 页排列组合的并行实现学生:指导教师:郑晓薇张哲计算机与信息技术学院计算机科学与技术专业 09 级摘要:回溯法是一种试探求解的方法:通过对问题的归纳分析,找出求解问题的一个线索,沿着这一线索往前试探,若试探成功,即得到解;若试探失败,就逐步往回退,换其他路线再往前试探。排列组合是通过一定的约束条件,以及一定的规律来输出数字的几组排列。排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。关键词:回溯法,排列组合,约束条件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 on 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 combination 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 combination 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,如果由根到 S的那条路径确定了这个解空间的一个元组,则称一个元组,则称S为一个解状态。如果树的搜索方法是深度优先的,就成为回溯法。排列组合的规律是多种多样的,此论文的排列组合是在设置其排列的最大数和排列的个数前提下,通过回溯法来完成其条件的约束,输出不同的排列,并实现并行。但是在回溯法的基础上并行经常会出现问题。所以要实现某些回溯法程序的并行,需要加在合适的位置上,这样才能有效的实现程序的并行化。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -第 3 页一、问题提出(一)背景分析许多要求寻找一组解满足某些约束条件的最优解的问题中,回溯法非常有用。但是随着问题复杂性的增加,串行回溯搜索往往非常费时,所以为了加快搜索速度,提高效率。实现回溯搜索的并行化就具有十分重要的意义。在某些排列组合中,用回溯法来进行数字序列的排列是非常稳定的,但是由于回溯法是通过不断返回根节点来寻找最优解非常耗时,所以在回溯的基础上实现并行化更是提高了排列的效率。(二)排列组合的具体约束条件如下排列:12 13 14 15 21 23 24 25 31 32 34 35 41 42 43 45 51 52 53 54 输出以上几组排列,通过设置 m=2,n=5 来约束排列中允许出现最大的数以及一组排列的个数,在每个排列中,不允许出现相同的数字,也不允许出现相同的排列。并统计其组成排列的个数。二、回溯法解决排列组合(一)串行算法设计应用回溯法产生排列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 页 -第 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();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 来实现程序的并行,并行是通过多核处理器对CPU 进行有名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -第 6 页效的利用,把一个程序通过多线程处理的方式缩短时间,提高运行的效率。OpenMP 的编程模型以线程为基础,通过编译指导语句来显示地指导并行化,为编程人员提供了对并行化的完整的控制。它是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程语言。具有良好的可移植性,支持多种编程语言,能够支持多种平台,包括大多数的类 UNIX系统以及 Windows NT系统(Windows 2000,Windows XP,Windows Vista 等)。使用运行时函数库所包含的函数,必须在相应的源文件中包含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)返回可用的处理核(处理器)个数。支持超线程技术的处理核或处理器将被算作两个处理核(或两个处理器)。(二)排列组合并行程序的实现在该排列组合中有两个循环可以套用变成并行循环,但其中一个中有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=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 并行 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 较大时,它加速比较明显提高,运行效率越高。在原来的初始并行设想中,是在程序刚开始访问根节点时并行,但是由于是回溯法,在判断排列是否相同时跳出了循环。由于其回溯法的数据相关性无法在那层循环中实现并行。如果可以在那层循环并行,其运行效率会更加有所提高。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 页 -

注意事项

本文(2022年排列组合并行算法的实现)为本站会员(沈***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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