求KM算法的matlab实现 急 80

 我来答
流浪汉丶4
2013-04-24 · 超过18用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:56.8万
展开全部
matlab跟C差不多的,我会C,但是matlab不是很熟悉,怕误导你,就不写matlab的了,把C的给你

const int maxn=20,INF=2147483647;
int w[maxn][maxn];
int lx[maxn]={0},ly[maxn]={0}; //顶标
int linky[maxn];
int visx[maxn],visy[maxn];
int lack;
bool find(int x){
visx[x]=true;
for(int y=0;y<maxn; y++){
if(visy[y])continue;
int t=lx[x]+ly[y]-w[x][y];
if(t==0){
visy[y]=true;
if(linky[y]==-1||find(linky[y])){
linky[y]=x;
return true;
}
}
else if(lack>t)lack=t;
}
return false;
}
void KM(){
memset(linky,-1,sizeof(linky));
for(int i=0;i<maxn; i++)
for(int j=0;j<maxn; j++)
if(w[i][j]>lx[i])
lx[i]=w[i][j]; //初始化顶标
for(int x=0;x<maxn; x++){
for(;;){
memset(visx,0,sizeof(visx));
memset(visy,0,sizeof(visy));
lack=INF;
if(find(x))break;
for(int i=0;i<maxn; i++){
if(visx[i])lx[i]-=lack;
if(visy[i])ly[i]+=lack;
}
}
}
}

希望可以帮到你,不懂再问哈~
xiaolong306
2013-04-24 · TA获得超过620个赞
知道小有建树答主
回答量:81
采纳率:100%
帮助的人:122万
展开全部
这个算法的函数matlab中本身就有,名称为kmeans,你可以试试很好用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式