matlab算法时间复杂度,关于降低算法时间复杂度问题的探讨和总结

本文探讨如何降低MATLAB算法时间复杂度,通过使用矩阵操作替代循环、优化冗余判断以及引入优先级队列,将原本耗时800多秒的算法优化至14秒。作者分享了社区中关于profile工具和C/C++的mex文件调用的建议,以进一步提升效率。
摘要由CSDN通过智能技术生成

在知乎和CSDN上发起了一个问题,题目为【matlab

降低算法时间复杂度的方法?】正文如下:​

我在用matlab编写一个小算法,这个算法里面可能多次循环的嵌套,导致得到最终结果(输入Reader=800,Tag=1000,r=30,范围为[1,900]的时候),花费了将近800多秒!劳驾各方神圣给我指点迷津,降低我这个算法的时间复杂度,有什么好点子好方法么?​

更新:原题是RFID网络冗余阅读器去除算法,即要去除掉系统网络中冗余的阅读器,就是图中的红色圈圈,下图是已经去除后的效果。​

【算法执行结果图如下】​

a4c26d1e5885305701be709a3d33442f.png

算法设计:​

definition:​

cc(covered count)

——每个tag被reader覆盖的数量(黑点到红圈圆心的距离:D<=r)

nc(neighbor

count)——每个reader邻居的数量(两个圆圈原点距离:L<=2*r)

ncc(neighbor cover

count)——每个reader的邻居所覆盖的所有tag数量的总和

steps:​

a.找出所有cc=1的tag,由于这些tag只被独有的reader覆盖,所以这些对应的reader为非冗余reader,其下所覆盖的所有tag均被该reader锁定(hold);

b.当所有cc=1对应的reader被找到后,即剩下的tag的cc均>1,剩下的reader根据nc值由低到高依次循环执行c,d,e操作(邻居越多的阅读器在实际中越容易对其他阅读器产生干扰);

c.当有多个nc值相等的reader,判断相同nc值的reader的ncc值大小,根据ncc的值由高到低循环进行d,e操作;

d.该reader中所有的tag的cc值减1,该reader为冗余reader&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值