唯爱鱼 2015-07-14 04:21 采纳率: 0%
浏览 4538
已结题

JAVA实现距离矢量算法

1.编程实现右图所示简单网络拓扑的距离向量路由算法。
1.1 结点之间的连接关系固定;
1.2 链路开销可以由用户设定。
2.距离向量算法的实现方式:
2.1 可以利用多线程机制;每个结点一个
线程;每隔一段事件利用线程间通信
机制传递距离向量(DV);或是
2.2 每个结点利用单独的进程实现;每隔一
段时间利用Socket实现结点间的距离向量交换;
2.3 距离向量的计算与结点路由表的显示。
3.网络拓扑结构的描述(数据结构),拓扑结构利用文件存储。
4.结点初始化流程/消息传递与路由计算/节点路由表显示等的程序设计

我总共有40个金币,做出来了,我都给你,求大牛

  • 写回答

2条回答

  • frank_20080215 2015-07-14 05:13
    关注

    public class LD {

    /**
    * 计算矢量距离
    * Levenshtein Distance(LD)

    * @param str1 str1
    * @param str2 str2
    * @return ld
    */
    public int ld(String str1, String str2)

    {

    //Distance

    int [][] d;

    int n = str1.length();

    int m = str2.length();

    int i; //iterate str1

    int j; //iterate str2

    char ch1; //str1

    char ch2; //str2

    int temp;

    if (n == 0)

    {

    return m;

    }

    if (m == 0)

    {

    return n;

    }

    d = new int[n + 1][m + 1];

    for (i = 0; i <= n; i++)

    { d[i][0] = i;

    }

    for (j = 0; j <= m; j++)

    {

    d[0][j] = j;

    }

    for (i = 1; i <= n; i++)

    {

    ch1 = str1.charAt(i - 1);

    //match str2

    for (j = 1; j <= m; j++)

    {

    ch2 = str2.charAt(j - 1);

    if (ch1 == ch2)

    {

    temp = 0;

    }

    else
    {

    temp = 1;

    }

                d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + temp);  
            }  
        }  
        return d[n][m];  
    }  
    
    private int min(int one, int two, int three)  
    {  
        int min = one;  
        if (two < min)  
        {  
            min = two;  
        }  
        if (three < min)  
        {  
            min = three;  
        }  
        return min;  
    }  
    
    /** 
     * 计算相似度 
     * @param str1 str1 
     * @param str2 str2 
     * @return sim   
     */ 
    public double sim(String str1, String str2)  
    {  
        int ld = ld(str1, str2);  
        return 1 - (double) ld / Math.max(str1.length(), str2.length());  
    }  
    
    /** 
     * 测试 
     * @param args 
     */ 
    public static void main(String[] args)  
    {  
        LD ld = new LD();  
        double num = ld.ld("人民", "中国人民是人才");  
        System.out.println(num);  
    }
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿