作者dreamday1023 (也許我就是我,好好愛自己)
看板C_Sharp
標題[問題] Prims演算法 取neighbor
時間Sun May 16 02:46:10 2010
大大們你們好
目前我有一個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
噓 flamo:錯字真多 05/16 03:27
※ 編輯: dreamday1023 來自: 140.114.231.33 (05/16 11:45)
→ ssccg:你的algo裡面找最近點的方法不對,應該要記錄每點的distance 05/17 03:08
→ ssccg:另外資料結構很混亂,你要就直接用index number代表每個點 05/17 03:09
→ ssccg:所有要記錄的項目都用array做 05/17 03:11
→ ssccg:不然就是都包到一個node struct裡,全用list做 05/17 03:12
→ ssccg:現在這樣有點四不像 05/17 03:13
→ conanist:先寫好中文的演算法 然後在細分 細到一行中文一行code 05/17 09:54
→ conanist:你寫code 出來可是人家不知道你為什而寫 很難懂 05/17 09:55
→ dreamday1023:關於distance 其實我並沒有把全code秀出來 不過已經 05/17 17:09
→ dreamday1023:確定prims是可以執行的 我現在是想要在執行prims內 05/17 17:10
→ dreamday1023:去收集我的neighbor ss大說包到一個node struct 內的 05/17 17:11
→ dreamday1023:的意思是要怎樣做呢 05/17 17:11