Neighbour-Joining (NJ算法)
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
最新文章
- DZY Loves Chemistry 分类: CF 比赛 图论 2015-08-08 15:51 3人阅读 评论(0) 收藏
- VBA对象模型(2)
- 关于JAVA多线程的那些事__初心者
- ThreadPoolExecutor参数解析
- WeCenter 社交化问答社区程序 | WeCenter 是一款知识型的社交化问答社区程序,专注于社区内容的整理、归类、检索和再发行
- java基础解析系列(六)---深入注解原理及使用
- Access Treeview树节点代码一
- html&;css学习二
- 利用MathType为公式编号并引用
- JavaScript形而上的For循环中的Break
- Android--UI之GridView
- JDK 1.8 新特性
- cdnbest节点动态ip配置教程
- P1474 货币系统 Money Systems(完全背包)(大水题)
- Oracle备份恢复简单过程以及中间的坑.
- topcoder srm 415 div1
- 第一章 AOP
- 【Shell】总结·linux shell脚本攻略
- 关于yo3 所遇到的问题
- 五 Python基础 数据类型和变量
热门文章
- Java线程的死锁和活锁
- 在Jenkins的帮助下让我们的应用CI与CD
- vue springboot利用easypoi实现简单导出
- python+selenium通过加载用户配置实现免登陆
- python3基础2
- Linux 学习笔记05丨在Ubuntu 20.04配置FTP服务器
- Codeforces Round #667 (Div. 3) B、C、D、E 题解
- Java基础教程——运算符
- EdgeConnect: Structure Guided Image Inpainting using Edge Prediction
- 三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境