新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> We choose to study algorithmic problems,  not because they are easy,  but because they are hard.
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机理论与工程『 算法理论与分析 』 → 源码查错 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4292 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 源码查错 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     KEVIN1050 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:75
      门派:XML.ORG.CN
      注册:2007/9/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给KEVIN1050发送一个短消息 把KEVIN1050加入好友 查看KEVIN1050的个人资料 搜索KEVIN1050在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看KEVIN1050的博客楼主
    发贴心情 源码查错

    JAVA才学了几天就开始学数据结构,这个程序怎么看都看不懂哪里出错了,能否帮忙指正一下?

    不胜感激!

    import java.until.random;
    class SequenceAlignment1{
      /*

        using main with two command line arguments will align the
        arguments with minimum cost according to the meassure +1 for
        mismatches and indels, 0 for matches.
        
       */
    private string[] character=[ A ,R, N, D, C, Q, E, G, H, I, L, K, M, F, P, S, T, W, Y,V];
    private int[][] scores =
                /* A  R  N  D  C  Q  E  G  H  I  L  K  M  F  P  S  T  W  Y  V */
      { /* A */ {  5                                                          },
        /* R */ { -2, 7                                                       },
        /* N */ { -1,-1, 7                                                    },
        /* D */ { -2,-2, 2, 8                                                 },
        /* C */ { -1,-4,-2,-4,13                                              },
        /* Q */ { -1, 1, 0, 0,-3, 7                                           },
        /* E */ { -1, 0, 0, 2,-3, 2, 6                                        },
        /* G */ {  0,-3, 0,-1,-3,-2,-3, 8                                     },
        /* H */ { -2, 0, 1,-1,-3, 1, 0,-2,10                                  },
        /* I */ { -1,-4,-3,-4,-2,-3,-4,-4,-4, 5                               },
        /* L */ { -2,-3,-4,-4,-2,-2,-3,-4,-3, 2, 5                            },
        /* K */ { -1, 3, 0,-1,-3, 2, 1,-2, 0,-3,-3, 6                         },
        /* M */ { -1,-2,-2,-4,-2, 0,-2,-3,-1, 2, 3,-2, 7                      },
        /* F */ { -3,-3,-4,-5,-2,-4,-3,-4,-1, 0, 1,-4, 0, 8                   },
        /* P */ { -1,-3,-2,-1,-4,-1,-1,-2,-2,-3,-4,-1,-3,-4,10                },
        /* S */ {  1,-1, 1, 0,-1, 0,-1, 0,-1,-3,-3, 0,-2,-3,-1, 5             },
        /* T */ {  0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1, 2, 5          },
        /* W */ { -3,-3,-4,-5,-5,-1,-3,-3,-3,-3,-2,-3,-1, 1,-4,-4,-3,15       },
        /* Y */ { -2,-1,-2,-3,-3,-1,-2,-3, 2,-1,-1,-2, 0, 4,-3,-2,-2, 2, 8    },
        /* V */ {  0,-3,-3,-4,-1,-3,-3,-4,-4, 4, 1,-3, 1,-1,-3,-2, 0,-3,-1, 5 }
                /* A  R  N  D  C  Q  E  G  H  I  L  K  M  F  P  S  T  W  Y  V */
      };
      int convert(string x)
      { /* A  R  N  D  C  Q  E  G  H  I  L  K  M  F  P  S  T  W  Y  V */

      int index;
      switch(x){
      case A: index=0;break;
      case R: index=1;break;
      case N: index=2;break;
      case D: index=3;break;
      case C: index=4;break;
      case Q: index=5;break;
      case E: index=6;break;
      case G: index=7;break;
      case H: index=8;break;
      case I: index=9;break;
      case L: index=10;break;
      case K: index=11;break;
      case M: index=12;break;
      case F: index=13;break;
      case P: index=14;break;
      case S: index=15;break;
      case T: index=16;break;
      case W: index=17;break;
      case Y: index=18;break;
      case V: index=19;break;
      default:break;
      }
      return a;
      }
      int getscore(string a,string b){
      int i,j;
      i=convert(a);
      j=convert(b);
      if(score)
      score=scores[i][j];
      else
      score=scores[j][i];
      }
        public static void main(String[] args){
        /*SequenceAlignment1 sa1 = new SequenceAlignment1(string[] cmdLn);
        String[] res = sa1.getAlignment();
        System.out.println(sa1.getValue());
        System.out.println(res[0]);
        System.out.println(res[1]);*/
        
        Random generator=new Random();
        //int r=generator.nextInt();
        for(int j=0;j<cmdLn.length;j++){
        int randomIndex=generator.nextInt(19);
        string b;
        b=character[randomIndex];
        }
        
        
        String xs, ys; // the seqs to be aligned.
        int n, m;      // their lengths.
        int[][] M;     // the matrix used to compute the optimal values
        Coord[][] traceback;
        
        public SequenceAlignment1(String a, String b){
        xs = a;
        ys = b;
        n = a.length();
        m = b.length();
        M = new int[n+1][m+1];

        traceback = new Coord[n+1][m+1];

        for(int i = 1; i<=n; i++){
            M[i][0] = i*(-8);
            traceback[i][0]=new Coord(i-1,0);
        }

        for(int j = 1; j<=m; j++){
            M[0][j] = j*(-8);
            traceback[0][j]=new Coord(0,j-1);
        }
        
        for(int i = 1; i<=n; i++)
            for(int j = 1; j<=m; j++){
            M[i][j] = max(M[i-1][j-1]+d(xs.charAt(i-1),ys.charAt(j-1)),
                      M[i-1][j]-8,
                      M[i][j-1]-8);
            if(M[i][j] == M[i-1][j-1]+d(xs.charAt(i-1),ys.charAt(j-1)))
                traceback[i][j] = new Coord(i-1,j-1);
            else if (M[i][j]==M[i-1][j]-8)
                traceback[i][j] = new Coord(i-1,j);
            else traceback[i][j] = new Coord(i,j-1);
            }
        }
        

      public int getValue(){return M[n][m];}


      public String[] getAlignment(){
        Coord tb = new Coord(n,m);
        StringBuffer res1 = new StringBuffer();
        StringBuffer res2 = new StringBuffer();
        int i = tb.i;
        int j = tb.j;
        tb=traceback[n][m];
        while(tb!=null){
          if(i==tb.i)res1.append('-');
          else res1.append(xs.charAt(i-1));
          if(j==tb.j)res2.append('-');
          else res2.append(ys.charAt(j-1));
          i=tb.i;
          j=tb.j;
          tb = traceback[i][j];
        }
        String[] res = {res1.reverse().toString(),res2.reverse().toString()};
        return res;
      }

        private static final int min(int a, int b, int c){
        return Math.min(a,Math.min(b,c));
        }
         
          private static final int max(int a, int b, int c){
        return Math.max(a,Math.max(b,c));
        }
        

        // The distance function:
        private static final int d(char a, char b){
        return a==b?0:1;
        }


    }

    class Coord{
      int i, j;
      Coord(int x, int y){
        i=x;j=y;
      }
    }


    [此贴子已经被作者于2007-9-30 23:11:44编辑过]

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/30 9:34:00
     
     KEVIN1050 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:75
      门派:XML.ORG.CN
      注册:2007/9/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给KEVIN1050发送一个短消息 把KEVIN1050加入好友 查看KEVIN1050的个人资料 搜索KEVIN1050在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看KEVIN1050的博客2
    发贴心情 
    翻译:


    用JAVA程序,从命令行读取两个字符串,输出这两个输入的最优(佳)对比的花费(COST)和输出有着最优分数的对比(alignment)

    要求用动态规划(dynamic programming)

    有着最优分数(score)的一个对比(alignment)是:当对比两个各自都允许间隙(gap)的字符串时,有着最大分数(score)的对比.通过一个分数矩阵来表示字母(letter)对比的花费.假设一个间隙(gap)的花费是-8.两个字符串对比的花费是各自位置的花费的总和.


    应该测量执行时间(execution time),并生成一个包含有测量及结论的文件.表示你应该写一个程序,测试序列对比中的输入(input)的大小,必须提供计算执行时间的证据

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/30 13:13:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 算法理论与分析 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/2 23:50:38

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    3,562.500ms