看板 C_Sharp 關於我們 聯絡資訊
大大們你們好 目前我有一個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