找回密码
 注册
Simdroid-非首页
查看: 83|回复: 0

[编程进阶] 改进模块的计算效率

[复制链接]
发表于 2009-8-5 11:32:27 | 显示全部楼层 |阅读模式 来自 江苏无锡
悬赏10仿真币未解决

  1. HeldKarp1[pts_List]:=Module[{n=Length[pts],nearestTwo,averageDist},
  2. (* 寻找最近的两个邻近点 *)
  3. nearestTwo[n_]:=Nearest[pts,pts[[n]],3,DistanceFunction->EuclideanDistance];
  4. (* 计算最近的两个邻近点距离之和的平均数 *)
  5. averageDist[n_] :=With[{triples=nearestTwo[n]},0.5 (EuclideanDistance[triples[[1]],triples[[2]]]+EuclideanDistance[triples[[1]],triples[[3]]])];
  6. (* 计算累计值作为下界 *)
  7. Total@Table[averageDist[i], {i,1,n}]];

  8. SeedRandom[1234];pts=RandomReal[1,{100,2}];
  9. HeldKarp1[pts]//AbsoluteTiming
复制代码


HeldKarp1 模块的作用为计算任意邻近两点的平均距离,在此处为一个估算值。

改进模块的计算效率,计算时间最短为佳。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-28 15:52 , Processed in 0.029659 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表