亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? algorithm.cpp

?? 模式識別二維鏈表實現isodata算法 早期試驗
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// Algorithm.cpp: implementation of the CAlgorithm class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Algorithm.h"
#include "iostream.h"
#include "stdlib.h"
#include "math.h"
#include "time.h"




//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CAlgorithm::CAlgorithm()
{
	srand(time(NULL));


}

CAlgorithm::~CAlgorithm()
{

}


int CAlgorithm::Step1()//參數設置、模式輸入、隨機產生初始分類
{
//	ParaSet();
//	PatternInput();
	int i;
	for(i=1;i<=Nc;i++)
	{
		AddNullCluster();
		AddPatToClus(SelectPattern(Random(UnClusPatNum)),GetClusPointer(i));
		
		
	}
	for(i=1;i<=ClusNum;i++)
			CalClusCent(GetClusPointer(i));
	return 0;	
}

int CAlgorithm::Step2()//根據模式與每個類之間的距離,將其加入距離最小的一個類
{
	int minpos;
	double temp1=0,temp2=10000000;
	PATTERN_S *p;
	//計算模式與每個類之間的距離,將其加入距離最小的一個類
		while (UnClusPatNum!=0)
		{
			minpos=1;
			temp1=0;
			temp2=10000000;

			p=SelectPattern(1);
			for(int i=1;i<=ClusNum;i++)
			{
				
				temp1=CalPatClusCentDis(p,GetClusPointer(i));
				
				if(temp2>temp1)
				{
					temp2=temp1;
					minpos=i;
				}
				
			}
			AddPatToClus(p,GetClusPointer(minpos));
		}


	return 0;
}

int CAlgorithm::Step3()//如果類太小,合并并返回第二步
{
	int i;
	int del=0;
	int temp=ClusNum;
	for(i=1;i<=temp;i++)
	{
		if(GetClusPointer(i)==NULL)
			break;

		if(CountPattern(GetClusPointer(i)->pPat)<Thn)
		{
			DeleteCluster(i);
			del=1;
		}
	}
	if(del==0)
		return 0;
	else
		return 2;

}
int CAlgorithm::Step4()//計算類心、模式類心平均距離
{

	int i;
	for(i=1;i<=ClusNum;i++)
	{	
		CalClusCent(GetClusPointer(i));
		CalPatCentMeanDis(GetClusPointer(i));
	}
	CalTotalMeanDis();

		

	return 0;
}

int CAlgorithm::Step5()//根據類的數量判斷是交分裂處理還是交給合并處理
{	
	if(Ip==I)
	{
		ThD=0;
		return 9;
	}
	if(ClusNum<=c/2)
		return 6;
	if(ClusNum>=2*c)
		return 9;
	if((ClusNum>c/2)&&(ClusNum<2*c))
	{
		if((int)c%2==0)return 9;
		if((int)c%2==1)return 6;
	}
	return 0;
}

int CAlgorithm::Step6_7()//計算類內距離的標準差矢量的最大值
{
	int i;
	for(i=1;i<=ClusNum;i++)
	{	
		CalClusMaxBiaozhuncha(GetClusPointer(i));//計算類內距離的標準差矢量的最大值
	}

	return 0;
}


int CAlgorithm::Step8()//根據類內距離的標準差矢量的最大值判斷是否分裂并分裂
{	
	CLUSTER_S *pTemp;
	int i;
	int sepornot=0;
	for(i=1;i<=ClusNum;i++)
	{
		pTemp=GetClusPointer(i);
		if(pTemp->MaxBiaozhuncha>Ths&&((pTemp->PatCentMeanDis>TotalMeanDis&&CountPattern(pTemp->pPat)>2*(Thn+1))||ClusNum<=c/2))
		{
			SeperateCluster(pTemp);
			sepornot=1;
		}
		
	}
	if(sepornot==1)
	{
		Ip++;
		return 2;
	}

		return 0;
}

int CAlgorithm::Step9_10()//根據類心間距離判斷是否合并并合并
{
	int i,j;
	int time=0;
	double temp1,temp2;
	int pos1=0,pos2=0;
	do
	{
		temp1=0;
		temp2=9999999999;
	for(i=1;i<ClusNum;i++)
		for(j=i+1;j<=ClusNum;j++)
		{
			if(GetClusPointer(i)->CombineOrNot==0&&GetClusPointer(j)->CombineOrNot==0)
			{
				temp1=CalClusCentDis(i,j);
				if(temp1<temp2)
				{
					temp2=temp1;
					pos1=i;
					pos2=j;
				}
			}
		}
		if(temp2<ThD)
		{
			CombineCluster(pos1,pos2);
			time++;
		}
	}
	while(temp2<ThD&&time<L);
	for(i=1;i<=ClusNum;i++)
		GetClusPointer(i)->CombineOrNot=0;
	return 0;
}


int CAlgorithm::Step11()//判斷是否繼續迭代或結束
{	
	if(Ip==I)
		return 0;
	else 
	{
		Ip++;
		return 2;
	}

}

int CAlgorithm::ParaSet()
{
	c=4;//預期的類數
	Nc=10;//初始聚類中心個數
	Thn=3;//每一類中允許的最小模式數目
	Ths=10;//類內各個分量分布的標準差上限
	ThD=10;//兩類中心之間的最小距離下限
	L=2;//在每次迭代中可以合并的類的最多對數
	I=4;//允許的最多迭代次數
	k=0.5;//類分裂時用的系數k



	PatNum=20;//設定模式的個數
	PatDim=2;//設定模式的維數



	UnClusPatNum=0;
	ClusNum=0;
	Ip=0;//實際迭代的次數

	pPattern=NULL;
	pCluster=NULL;


	return 0;

}

int CAlgorithm::PatternInput()//讀入模式數據
{	
	PATTERN_S *pTemp;
	PATTERN_S *pEnd;
	

	int i,j;
	
	cout<<"模式的個數為:"<<PatNum;
	cout<<"模式的維數為:"<<PatDim<<endl;
	cout<<"請輸入模式數據:"<<endl;

	
	for(i=0;i<PatNum;i++)
	{
		pTemp=new PATTERN_S;
		
		for(j=0;j<PatDim;j++)
			
		{
			if(j==0)
				pTemp->pat=new double[PatDim];
			cin>>pTemp->pat [j];
		}

		cout<<endl;

		
		if(pPattern==NULL)
		{
			pPattern=pTemp;
			pEnd=pTemp;

		}
		else 
		{
			pEnd->pNext=pTemp;
		}
		pEnd=pTemp;

		
	}
	pEnd=pTemp;
	pEnd->pNext =NULL;
	UnClusPatNum=PatNum;

	
	return 0;	
}

int CAlgorithm::PatternOutput()////顯示模式數據
{
	PATTERN_S *pTemp;
	pTemp=pPattern;
	int i;

	while(pTemp!=NULL)
	{
		for(i=0;i<PatDim;i++)
		{
			cout<<pTemp->pat[i]<<"  ";
		}
		cout<<endl;
		pTemp=pTemp->pNext;
	}
	return 0;
}



int CAlgorithm::AddCluster(CLUSTER_S *p)//添加一個類節點
{
	CLUSTER_S *pTemp;
	if(p==NULL)
		return 1;


	if(pCluster==NULL)//在空鏈條加入
	{

		pCluster=p;
		ClusNum++;
		return 0;
	}
	else //在尾部加入
	{
		pTemp=pCluster;
		while(pTemp->pNext!=NULL)
		{
			pTemp=pTemp->pNext;
		}
		pTemp->pNext=p;
		ClusNum++;
		return 0;
	}
}


int CAlgorithm::DeleteCluster(int position)////刪除一個類
{
	CLUSTER_S *pTemp;
	CLUSTER_S *pDel;

	pTemp=pCluster;

	if(pTemp==NULL||position<1||position>ClusNum)
		return 1;


	if(position==1)//在鏈條頭刪除
	{

		pCluster=pCluster->pNext;
		FreePatInClus(pTemp->pPat);
		delete pTemp;
		ClusNum--;
		return 0;
	}
	else //在指定位置刪除
	{
		for(int i=1;i<position-1;i++)
			pTemp=pTemp->pNext;
		
		pDel=pTemp->pNext;
		pTemp->pNext=pDel->pNext;
		FreePatInClus(pDel->pPat);
		delete pDel;
		ClusNum--;
		return 0;
	}
}




int CAlgorithm::AddPatToClus(PATTERN_S *p,CLUSTER_S *c)
{
	if(p==NULL||c==NULL)//輸入為空
		return 1;

	PATTERN_S *pTemp;

	pTemp=c->pPat;
	if(pTemp==NULL)//類中模式指針為空
	{
		c->pPat=p;

		return 0;
	}

	while(pTemp->pNext!=NULL)
	{
		pTemp=pTemp->pNext;
	}
	pTemp->pNext=p;
	return 0;
}





PATTERN_S* CAlgorithm::SelectPattern(int position)//根據位置參數返回模式結構指針
{
	if(position<1||position>UnClusPatNum)
		return NULL;

	PATTERN_S *pTemp;
	PATTERN_S *pSel;
	pTemp=pPattern;
	if(pTemp==NULL)
		return NULL;
	if(position==1)
	{
		pPattern=pPattern->pNext;
		pTemp->pNext=NULL;
		UnClusPatNum--;
		return pTemp;
	}
	else
	{
		for(int i=1;i<position-1;i++)
			pTemp=pTemp->pNext;
		pSel=pTemp->pNext;
		pTemp->pNext=pSel->pNext;
		pSel->pNext=NULL;
		UnClusPatNum--;
		return pSel;

		
	}


}

int CAlgorithm::CalClusCent(CLUSTER_S *c)//計算類中心
{	
	if(c==NULL)//空類
		return 1;

	double *pCenter;//臨時類心
	double *pDelCent;
	pCenter=new double[PatDim];
	for(int i=0;i<PatDim;i++)
		pCenter[i]=0;
	

	PATTERN_S *pTemp;//臨時模式指針
	pTemp=c->pPat;
	int length=CountPattern(pTemp);//模式鏈長度

	if(pTemp==NULL)//模式鏈為空
	{
		c->pCenter=NULL;
		return 1;
	}

	//求類心
	do
		{
			for(i=0;i<PatDim;i++)
			{
				pCenter[i]+=pTemp->pat[i];
			}
			pTemp=pTemp->pNext;
		}
	while(pTemp!=NULL);

	for(i=0;i<PatDim;i++)
	{
		pCenter[i]=pCenter[i]/length;
	}
		
		pDelCent=c->pCenter;
		c->pCenter=pCenter;
		delete []pDelCent;


	return 0;
}


int CAlgorithm::DisplayPattern(PATTERN_S *p)
{
	PATTERN_S *pTemp;
	pTemp=p;
	int i;
	if(pTemp==NULL)
	{
		cout<<"此模式為空"<<endl;
		return 0;
	}


	while(pTemp!=NULL)
	{
		for(i=0;i<PatDim;i++)
		{
			cout<<pTemp->pat[i]<<"  ";
		}
		cout<<endl;
		pTemp=pTemp->pNext;
	}
	return 0;
}
int CAlgorithm::DisplayCluster(CLUSTER_S *c)
{
	if(c==NULL)
	{
		cout<<"此類為空"<<endl;
		return 0;
	}

	if(c->pCenter==NULL)
		cout<<"類心為空"<<endl;
	else
	{
		cout<<"類心是"<<"   ";
		for(int i=0;i<PatDim;i++)
		{
			cout<<c->pCenter[i]<<"  ";
		}
	}
	cout<<endl;
	cout<<"是否在一個循環內被合并過"<<c->CombineOrNot<<endl;

	cout<<"模式到類心的平均距離:"<<c->PatCentMeanDis<<endl;
	cout<<"類內距離的標準差矢量最大值"<<c->MaxBiaozhuncha<<endl;
	cout<<"類內距離的標準差矢量最大值位置"<<c->MaxBiaozhunchaPos<<endl;
	PATTERN_S *pTemp;
	pTemp=c->pPat;
	cout<<"此類中模式信息:"<<endl;

	DisplayPattern(pTemp);

	cout<<endl;

	return 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合精品国产一区二区三区 | 99在线热播精品免费| 91麻豆自制传媒国产之光| 欧美日韩精品是欧美日韩精品| 久久久美女毛片| 亚洲国产美女搞黄色| 国产精品18久久久久久久久久久久 | 蜜臀av一区二区在线观看 | 成人午夜伦理影院| 日韩欧美aaaaaa| 午夜欧美在线一二页| 成人黄动漫网站免费app| 欧美一二三区精品| 亚洲成a人片在线不卡一二三区| 国产jizzjizz一区二区| 7777精品伊人久久久大香线蕉经典版下载| 国产亚洲一区二区三区在线观看| 午夜激情久久久| 日本高清视频一区二区| 中文字幕在线视频一区| 国产精品91一区二区| 精品欧美一区二区在线观看| 日韩av中文字幕一区二区三区| 91色婷婷久久久久合中文| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美色综合久久| 亚洲精品写真福利| 99re视频精品| 中文字幕一区在线观看| 不卡av在线网| 国产精品女主播在线观看| 国产精品一区在线观看乱码| 欧美成人a∨高清免费观看| 久久9热精品视频| 亚洲精品在线电影| 国产一区二区精品久久91| 精品国产一区a| 国产剧情一区二区三区| 久久综合久久综合九色| 国产精品一区二区不卡| 国产亚洲va综合人人澡精品| 国产大片一区二区| 欧美国产日韩精品免费观看| www.亚洲色图.com| 亚洲午夜精品久久久久久久久| 欧洲精品中文字幕| 日一区二区三区| 精品国一区二区三区| 岛国精品在线观看| 亚洲欧洲日韩女同| 欧美日韩亚州综合| 久久精品国产色蜜蜜麻豆| 久久久精品免费网站| 国产精品18久久久久久vr| 国产精品国产三级国产普通话三级| av一二三不卡影片| 亚洲成人一二三| 欧美电影免费观看高清完整版在 | 欧美日韩一级黄| 日韩av中文字幕一区二区 | 一区二区三区四区激情| 欧美日韩精品电影| 国产精品一区久久久久| 国产精品麻豆99久久久久久| 精品久久久久久最新网址| 国产不卡在线播放| 亚洲第一综合色| 国产日韩欧美一区二区三区乱码| 91日韩一区二区三区| 欧美aⅴ一区二区三区视频| 国产日韩精品一区二区浪潮av| 欧美性感一区二区三区| 久久精品国产99国产精品| 最新热久久免费视频| 日韩午夜小视频| 99精品欧美一区| 精一区二区三区| 一区二区三区91| 国产欧美综合在线| 日韩欧美在线综合网| 91免费视频观看| 国产成人亚洲综合a∨猫咪| 亚洲国产色一区| 国产精品情趣视频| 精品国一区二区三区| 欧美午夜不卡视频| 成人激情开心网| 免费看日韩精品| 一区二区三区国产| 国产精品美女久久久久久| 日韩欧美国产麻豆| 欧美日韩高清影院| 色婷婷综合久久久中文一区二区| 国产一区 二区| 久草在线在线精品观看| 亚洲国产成人91porn| 亚洲欧洲日韩女同| 国产精品美女一区二区三区| 精品福利一区二区三区| 91麻豆精品久久久久蜜臀| 色94色欧美sute亚洲线路一ni| 成人免费视频视频在线观看免费| 精品一区在线看| 美腿丝袜亚洲三区| 日韩成人av影视| 亚洲成在人线在线播放| 亚洲精品欧美在线| 依依成人综合视频| 亚洲精品va在线观看| 成人欧美一区二区三区小说 | 欧美一区二区黄色| 9191精品国产综合久久久久久| 欧美做爰猛烈大尺度电影无法无天| 成人av手机在线观看| 丁香婷婷综合色啪| 国产91丝袜在线观看| 风间由美性色一区二区三区| 国产91在线|亚洲| www.亚洲人| 在线欧美一区二区| 在线观看91精品国产麻豆| 欧美日产国产精品| 日韩限制级电影在线观看| 精品国产欧美一区二区| 精品国产三级a在线观看| 久久理论电影网| 国产欧美在线观看一区| 中文字幕制服丝袜一区二区三区| 亚洲欧美日韩久久精品| 亚洲小说春色综合另类电影| 亚洲国产成人av网| 久久99深爱久久99精品| 福利一区二区在线| 91网站最新网址| 欧美日韩高清一区二区| 欧美成人精精品一区二区频| 国产人久久人人人人爽| 美女网站色91| 国产真实乱偷精品视频免| 风间由美一区二区av101| 在线观看一区日韩| 精品国产免费久久| 成人免费在线播放视频| 亚洲bdsm女犯bdsm网站| 激情丁香综合五月| 91亚洲精品久久久蜜桃网站 | 色呦呦日韩精品| 欧美一级生活片| 国产欧美日韩一区二区三区在线观看| 国产精品毛片大码女人| 视频一区二区国产| 国产超碰在线一区| 欧美日韩视频在线一区二区| 久久综合色一综合色88| 一区二区三区不卡视频| 国产一区二区三区在线观看免费视频| 97久久精品人人爽人人爽蜜臀| 精品视频色一区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美日本在线播放| 国产欧美日本一区二区三区| 亚洲高清在线精品| 成人av电影免费观看| 日韩欧美一区二区视频| 亚洲精品伦理在线| 国产精品一区二区在线看| 欧美高清视频一二三区 | 免费人成黄页网站在线一区二区| 国产成a人亚洲精| 日韩欧美一级二级三级| 亚洲18影院在线观看| 99r国产精品| 久久精品视频免费观看| 久久国内精品视频| 欧美体内she精高潮| 亚洲国产精品黑人久久久| 蜜桃视频一区二区三区| 欧美日韩一二区| 一区二区三区丝袜| av男人天堂一区| 久久久久久久av麻豆果冻| 日本不卡一区二区三区高清视频| 91麻豆高清视频| 国产精品久久久久影院老司| 国产伦精品一区二区三区免费| 91精品国产美女浴室洗澡无遮挡| 亚洲乱码精品一二三四区日韩在线| 国产精品18久久久久久久久久久久 | 极品美女销魂一区二区三区| 欧美色图第一页| 亚洲精品ww久久久久久p站 | 国产精品小仙女| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美成人vps| 青青草精品视频| 欧美日韩成人在线一区| 亚洲一区二区三区爽爽爽爽爽| 色一情一伦一子一伦一区| 亚洲人123区| 91国产成人在线|