clc;
clear all;
close all;

Distance = [0,2,4,6,6,8;
2,0,4,6,6,8;
4,4,0,6,6,8;
6,6,6,0,4,8;
6,6,6,4,0,8;
8,8,8,8,8,0];
S = ['A','B','C','D','E','F'];
L = length(Distance(:,1));
r= [];
SResult = [];
STemp = [];
%% NJ Algorithm
while L > 2
%calculate r(i)=sum(d(i,k))/(L-2);
r = [];
for i = 1:L
r = [r;sum(Distance(:,i))/(L-2)];
end
%calculate D(i)= d(i,j) - r(i) -r(j);
for i =1:L
for j =1:L
if i == j
DistanceTemp(i,j) = 0;
else
DistanceTemp(i,j) = Distance(i,j) - r(i) - r(j);
end
end
end
%find min weight
minWeight = min(min(DistanceTemp));
[row,con] = find(DistanceTemp == minWeight);
row = row(1);
con = con(1);
STemp = strcat(S(min(row,con)),S(max(row,con)));
SResult = [SResult,STemp]
S(row) = [];
S(con) = [];
S = strcat(S,STemp);
%update Distance
CombineVector = (Distance(row,[1:min(row,con)-1,min(row,con)+1:max(row,con)-1,...
max(row,con)+1:L]) + Distance(con,[1:min(row,con)-1,min(row,con)+1:max(row,con)-1,...
max(row,con)+1:L]) - Distance(row,con))/2;
Distance = Distance([1:min(row,con)-1,min(row,con)+1:max(row,con)-1,...
max(row,con)+1:L],[1:min(row,con)-1,min(row,con)+1:max(row,con)-1,...
max(row,con)+1:L]);
L = length(Distance(:,1));
Distance(L+1,1:L) = CombineVector;
Distance(1:L,L+1) = CombineVector';
Distance(L+1,L+1) = 0;
L = L + 1;
end

最新文章

  1. DZY Loves Chemistry 分类: CF 比赛 图论 2015-08-08 15:51 3人阅读 评论(0) 收藏
  2. VBA对象模型(2)
  3. 关于JAVA多线程的那些事__初心者
  4. ThreadPoolExecutor参数解析
  5. WeCenter 社交化问答社区程序 | WeCenter 是一款知识型的社交化问答社区程序,专注于社区内容的整理、归类、检索和再发行
  6. java基础解析系列(六)---深入注解原理及使用
  7. Access Treeview树节点代码一
  8. html&css学习二
  9. 利用MathType为公式编号并引用
  10. JavaScript形而上的For循环中的Break
  11. Android--UI之GridView
  12. JDK 1.8 新特性
  13. cdnbest节点动态ip配置教程
  14. P1474 货币系统 Money Systems(完全背包)(大水题)
  15. Oracle备份恢复简单过程以及中间的坑.
  16. topcoder srm 415 div1
  17. 第一章 AOP
  18. 【Shell】总结·linux shell脚本攻略
  19. 关于yo3 所遇到的问题
  20. 五 Python基础 数据类型和变量

热门文章

  1. Java线程的死锁和活锁
  2. 在Jenkins的帮助下让我们的应用CI与CD
  3. vue springboot利用easypoi实现简单导出
  4. python+selenium通过加载用户配置实现免登陆
  5. python3基础2
  6. Linux 学习笔记05丨在Ubuntu 20.04配置FTP服务器
  7. Codeforces Round #667 (Div. 3) B、C、D、E 题解
  8. Java基础教程——运算符
  9. EdgeConnect: Structure Guided Image Inpainting using Edge Prediction
  10. 三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境