JAVA实现距离矢量算法

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

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

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);  
}

}

这个。。。看起来好复杂,查了下资料没有找到实现过的。