网站导航网学 原创论文 网站设计 最新系统 最新研究 原创论文 获取论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计下载 > Java类作品 > 正文

基于JAVA的算法的演示系统的设计与实现

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/05/09

鉴于大家对Java类作品十分关注,我们编辑小组在此为大家搜集整理了“基于JAVA的算法的演示系统的设计与实现”一文,供大家参考学习!

QQ交谈客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn

 

算法演示系统详细功能说明
一、              引言
本项目要做的是一个算法演示系统,这6种算法都是基于概率的算法。
(1)       数值概率计算:PI(π)的计算
(2)       在一个数组中找到“a”使用Las Vegas算法
(3)       在一个数组中找到“a”使用Monte Carlo算法。
(4)       快速排序:Las Vegas算法的代表。
(5)       验证两个数组的乘积是否正确,即输入A,B,C三个数组判断C==AxB? : 使用Monte Carlo 算法。
(6)       商旅问题 : 使用概率算法简化求解过程。
这6种算法选题是有规律的,先从基本的概率数值计算,再到简单的在一个数组中找到“a的算法引入,之后分别举2个例子来详细说明Las Vegas和Monte Carlo算法。最后是比较难的商旅问题。
 
这6种算法的基本思路及伪代码我都会给出。
 
二、              系统语言要求:
需要使用Java语言来完成。(试用JFrame,JPanel等等那些GUI)
三、              系统界面:
 
界面大致就是这个样子,主要分为6个比较大的模块。
(1)       左上角的选择算法。
(2)       右上角的代码展示区(不可编辑区域)。
(3)       图像演示区
(4)       属性修改区
(5)       属性观察窗口
(6)       功能按钮栏
只要有这6各部分即可,不必拘束于图中给的布局方式。
四、              各个模块功能说明:
算法选择区:可以用来选择以上6种算法,选择不同的算法,相应的代码区,图像演示区,属性修改区,属性观察窗口里的内容要相应的变化。
代码演示区:里面的代码为当前算法的核心代码。
图像演示区:里面显示的内容为当前算法的算法演示。
属性修改区:里面显示的内容为当前算法的可修改属性,可修改几个核心的变量即可。
         这种修改不需要是即时的,修改将对下次算法运行产生影响。
观察窗口:可以显示出当前执行代码段内所有变量的值。
按钮栏:
         重置:终止当前正在执行的算法,回归到初始状态,清空算法图像演示区里的图像,并且修改变量值为属性修改区里的数值。
 
         演示模式:在该模式下程序(图像演示区)将以适当的速度演示算法。在该模式下只有暂停和继续两个按钮有效。
         暂停:暂停演示模式下的算法。
         继续:继续刚刚暂停的算法。
        
         单步执行模式:点击后,进入单步执行模式,在该模式下只有下一步按钮有效。
         下一步:执行下一条代码演示区里的算法的语句,并且相应的代码段变红:变红的代码为刚刚执行过的代码。
 
五、              对于每个算法所要演示的内容介绍:
(1)        数值概率计算:PI(π)的计算
图中已经给出:
算法的思想是:
设有一半径为r的圆及其外切四边形。向该正方形随机地投掷n个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因而所投入的点落入圆内的概率为           。所以当n足够大时,k与n之比就逼近这一概率。从而
 


 

其实就是             再一倒就出来了
下面是参考代码:
public double darts(int n)
    { // 用随机投点法计算p
      int k=0;
      for (int i=1;i <=n;i++) {
        double x=dart.fRandom();
        double y=dart.fRandom();
        if ((x*x+y*y)<=1) k++;
        }
      return 4*k/(double)n;
    }
 
(2)       在一个数组中找到“a”使用Las Vegas算法
Input: An array of n elements, in which half are '' a ''s and the other half are '' b ''s.
         一个有n个元素数组的数组,一般是‘a’一半是‘b
Output: Find an '' a '' in the array.
            找到数组中的‘a’
伪代码:
findingA_LV(array A, n)
begin
    repeat
        Randomly select one element out of n elements.
    until''a'' is found
end
该算法一定成功,但效率是不确定的。
 
 
 
(3)       在一个数组中找到“a”使用Monte Carlo算法。
伪代码:
findingA_MC(array A, n)
begin
    i=1
    repeat
        Randomly select one element out of n elements.
        i= i + 1
    until i=k
end
根据调整k的值 可以控制该算法的成功概率。
(4)       快速排序:Las Vegas算法的代表。
快速排序,不需多解释,但是要随机的选取index for the pivot
快速排序的演示过程,请参见
myeducs.cn
(5)       验证两个数组的乘积是否正确,即输入A,B,C三个数组判断C==AxB? : 使用Monte Carlo 算法。
Input: Matrix A  Rm × pB  Rp × n, and C  Rm × n.
Output: True if C = A · B; false if C ≠ A · B
 
算法伪代码
begin
   i=1
   repeat
       Choose r=(r1,...,rn)  {0,1}n at random.
       Compute C · r and A · (B · r)
       if C · r ≠ A · (B · r)
           return FALSE
       endif
       i = i + 1
   until i=k
   return TRUE
 end
k仍然是用来控制算法的正确率的。
(6)       商旅问题 :
我还不太懂,但是应该可以用概率算法来简化该问题的难度,还要研究一下,3天后给出答复,或者你们也可以看看怎么弄。
 
以上我给出的代码段就是要显示在,代码区中的代码部分,在那个区域里的代码不应该出现绘图语句,实际上绘图语句执行了,只不过不用放到演示代码段里,那里只要显示算法思路就可以了。
 
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT

本文选自计算机毕业设计http://myeducs.cn
论文文章部分只是部分简介,如需了解更多详情请咨询本站客服!QQ交谈QQ3710167

原创论文

设为首页 | 加入收藏 | 论文首页 |原创论文 |
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师