资源简介
用c++写的马尔科夫聚类算法(MCL),输入图的矩阵信息,可以得到图的聚类。

代码片段和文件信息
//#include
//#include
/*#include
#include
#include
typedef float datatype;
int node=0;
#define MAXNODE 100
datatype **matrix(const int mconst int n)
/*创建一个m*n的datatype类型矩阵,返回首地址,如果创建失败则返回NULL*/
/*{
int ij;
datatype **a = (datatype**)malloc(sizeof(datatype *)*m);
if (!a) {
return NULL;
} else
for (i = 0; i {
a[i] = (datatype*)malloc(sizeof(datatype)*n);
if (!a[i]) {
return NULL;
}else{
for(j = 0;j a[i][j] = 0;}
}
return a;
}
void dela(datatype **aconst int m)
/*删除用matrix()函数创建矩阵*/
/*{
int i;
for (i = 0; i free(a[i]);
free(a);
}
//四舍五入,库函数未调用成功
float myround(float data)
{
float outdata;
if (data > 0)
outdata=(int)((data*100)+0.5)/100.00;
else
outdata=(int)((data*100)-0.5)/100.00;
return outdata;
}
datatype **normalize(datatype **non_NormMatrix)
{
//计算每一列的和
float sums[MAXNODE];
int colrow;
float sum;
for(col=0;col sum = 0;
for(row=0;row sum += non_NormMatrix[row][col];
sums[col] = sum;
}
// 每一个值除以所在列的和
for(col=0;col for(row=0;row //
non_NormMatrix[row][col] = myround( (non_NormMatrix[row][col] / sums[col]));
return non_NormMatrix;
}
datatype **expand(datatype **e_Matrix)
{
int rowcolc;
float result;
for(row=0;row {
for(col=0;col {
result = 0;
for(c=0;c result += e_Matrix[row][c] * e_Matrix[c][col];
e_Matrix[row][col] = result;
}
}
return e_Matrix;
}
datatype **inflate(datatype **e_Matrix int power)
{
int rowcol;
for(row=0;row for(col=0;col e_Matrix[row][col] = pow(e_Matrix[row][col] power);
//if(e_Matrix[row][col] // e_Matrix[row][col] = 0;
}
return e_Matrix ;
}
bool equal(datatype **mdatatype **M)
{
int ij;
for(i=0;i for(j=0;j if( abs(m[i][j] - M[i][j]) > 0.01)
return false;
return true;
}
int main(void)
{
int ijrowcol;
int p = 2; //扩张系数
int num = 0;
float info;
bool flag=false ;
datatype **M;
datatype **m;
printf(“请输入图的结点个数:“);
scanf(“%d“&node);
M=matrix(nodenode);
m=matrix(nodenode);
if (!M) {
/*如果创建失败,则输出错误信息并结束程序*/
/* printf(“存储错误\n“);
return -1;
} else
{
printf(“请输入图的矩阵信息:(按行输入)“);
for (i= 0 ; i {
/*使用刚才创建的二维数组*/
/* for (j=0; j scanf(“%f“&M[i][j]);
//M[i][j]=info;
}
}
printf(“输入完成。\n“);
}
//float minval = 0.001;
//optional
for(i=0;i M[i][i] = 1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 31744 2013-12-08 12:19 MyMcl\Debug\MyMcl.exe
文件 323696 2013-12-08 12:19 MyMcl\Debug\MyMcl.ilk
文件 379904 2013-12-08 12:19 MyMcl\Debug\MyMcl.pdb
文件 2162688 2013-12-08 12:18 MyMcl\ipch\mymcl-8c70186b\mymcl-ff43cb4e.ipch
文件 1290 2013-12-08 12:19 MyMcl\MyMcl\Debug\cl.command.1.tlog
文件 3920 2013-12-08 12:19 MyMcl\MyMcl\Debug\CL.read.1.tlog
文件 848 2013-12-08 12:19 MyMcl\MyMcl\Debug\CL.write.1.tlog
文件 2644 2013-12-08 12:19 MyMcl\MyMcl\Debug\li
文件 5510 2013-12-08 12:19 MyMcl\MyMcl\Debug\li
文件 1456 2013-12-08 12:19 MyMcl\MyMcl\Debug\li
文件 986 2013-12-08 12:19 MyMcl\MyMcl\Debug\mt.command.1.tlog
文件 1574 2013-12-08 12:19 MyMcl\MyMcl\Debug\mt.read.1.tlog
文件 642 2013-12-08 12:19 MyMcl\MyMcl\Debug\mt.write.1.tlog
文件 20606 2013-12-08 12:19 MyMcl\MyMcl\Debug\mymain.obj
文件 1236 2012-11-24 19:57 MyMcl\MyMcl\Debug\MyMcl.Build.CppClean.log
文件 381 2013-12-08 12:19 MyMcl\MyMcl\Debug\MyMcl.exe.intermediate.manifest
文件 94 2013-12-08 14:28 MyMcl\MyMcl\Debug\MyMcl.lastbuildstate
文件 905 2013-12-08 14:28 MyMcl\MyMcl\Debug\MyMcl.log
文件 68608 2013-12-08 12:19 MyMcl\MyMcl\Debug\vc100.idb
文件 69632 2013-12-08 12:19 MyMcl\MyMcl\Debug\vc100.pdb
文件 9002 2013-12-08 12:19 MyMcl\MyMcl\mymain.cpp
文件 3221 2012-11-24 11:01 MyMcl\MyMcl\MyMcl.vcxproj
文件 944 2012-11-24 11:01 MyMcl\MyMcl\MyMcl.vcxproj.filters
文件 143 2012-11-24 10:58 MyMcl\MyMcl\MyMcl.vcxproj.user
..A..H. 32 2013-12-08 10:56 MyMcl\MyMcl.opensdf
文件 1921024 2013-12-08 12:20 MyMcl\MyMcl.sdf
文件 882 2012-11-24 10:58 MyMcl\MyMcl.sln
..A..H. 10240 2012-12-07 17:03 MyMcl\MyMcl.suo
目录 0 2013-12-08 12:18 MyMcl\ipch\mymcl-8c70186b
目录 0 2013-12-08 14:28 MyMcl\MyMcl\Debug
............此处省略7个文件信息
- 上一篇:斗地主课程设计 c语言版
- 下一篇:ADS1115的51单片机驱动
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
评论
共有 条评论