[問題] Prims演算法 取neighbor
大大們你們好
目前我有一個prims演算法 我希望可以在計算的當中去收集每個點的neighbor
以下是我的演算法
我的問題主要出在於在執行prims內的收集neighbor
private int size;//點個數
private Random=new Random();//隨機函數
private Single[,]Network=new Single[size,size];
public struct Data
{
public string myName;//每點的名稱
public int px;//每點X座標
public int py;//每點Y座標
public List<string>neighbor;//每個點的neighbor
public Data(string name,int X,int Y)
{
px=X;
py=Y;
neighbor=new List<string>();
}
}
Data Nodedata=new Data();
List<string>NEI=new List<string>();//存放各點neighbor
List<int>XY=new List<int>();//存放X與Y座標
private void button1_Click(object sender, EventArgs e)
{
prims();
}
void prims()
{
int[]included=new int[size];
int[]excluded=new int[size];
Single[,]finished=new Single[size,size];
int start=0;
int finish=0;
for(int i=0;i<size;i++)
{
excluded[i]=i;
included[i]=-1;
}
included[0]=exluded[R.Next(size)];
excluded[included[0]]=-1;
for(int n=1;n<size;i++)
{
closest(n, ref start,ref finish,ref included[],ref excluded[])
included[n]=excluded[finish];
excluded[finish]=-1;
finished[included[n],excluded[finish]]
=Network[included[n],excluded[finish]];
Nodedata.neighbor[n]="("+XY[start].px+","+XY[start].py+")";
Nodedata.neighbor[start]="("+XY[n].px+","+XY[n].py+")";
//即我compile後程式出現"未將物件參考設定為物件的執行個體"
NEI.Add(Nodedata);
}
shownet(finished);//回傳finished劃prims tree
}
private void closest(int n,int,start,int finish,int included[],int excluded[])
{
Single smallest=-1;
for(int i=0;i<n;i++)
{
for(int j=0;i<size;j++)
{
if(excluded[j]==-1)continue;
if(smallest==-1)smallest=Network[included[i],excluded[j]];
if(Network[included[i],exluded[j]]>smallest)continue;
smallest=Network[included[i],excluded[j]];
start=i;
finish=j;
}
}
}
以上有點冗長= = 希望大大們可以幫我看看
感謝大大的收看
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.231.33
噓
05/16 03:27, , 1F
05/16 03:27, 1F
※ 編輯: dreamday1023 來自: 140.114.231.33 (05/16 11:45)
→
05/17 03:08, , 2F
05/17 03:08, 2F
→
05/17 03:09, , 3F
05/17 03:09, 3F
→
05/17 03:11, , 4F
05/17 03:11, 4F
→
05/17 03:12, , 5F
05/17 03:12, 5F
→
05/17 03:13, , 6F
05/17 03:13, 6F
→
05/17 09:54, , 7F
05/17 09:54, 7F
→
05/17 09:55, , 8F
05/17 09:55, 8F
→
05/17 17:09, , 9F
05/17 17:09, 9F
→
05/17 17:10, , 10F
05/17 17:10, 10F
→
05/17 17:11, , 11F
05/17 17:11, 11F
→
05/17 17:11, , 12F
05/17 17:11, 12F