求两点间最短距离

求两点间最短距离

f1<-function(x){
  lx<-length(x)
  i<-x[lx]
  j<-which.min(x[(i+1):(lx-1)])
  k<-i+j
  return(c(k,x[k]))
}
f2<-function(y){
  n<-nrow(y)
  yy<-cbind(y,1:n)
  y1<-apply(yy[-n,],1,f1)
  i<-which.min(y1[2,])
  j<-y1[1,i]
  return(c(y[i,j],i,j))
}
sigma<-function(b){
  m<-matrix(nrow=b,ncol=b)
  m<-ifelse(row(m)==col(m),0,rnorm(5)*100)
  return(m)
}

方法二,针对距离没有重复值的情况

f<-function(x){
  m<-min(x)
  n<-which(x==m,arr.ind=T)
  return(c(m,n))
   }

arr.ind=T 表明返回值是矩阵的下标,即行数和列数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值