作者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
1F:嘘 flamo:错字真多 05/16 03:27
※ 编辑: dreamday1023 来自: 140.114.231.33 (05/16 11:45)
2F:→ ssccg:你的algo里面找最近点的方法不对,应该要记录每点的distance 05/17 03:08
3F:→ ssccg:另外资料结构很混乱,你要就直接用index number代表每个点 05/17 03:09
4F:→ ssccg:所有要记录的项目都用array做 05/17 03:11
5F:→ ssccg:不然就是都包到一个node struct里,全用list做 05/17 03:12
6F:→ ssccg:现在这样有点四不像 05/17 03:13
7F:→ conanist:先写好中文的演算法 然後在细分 细到一行中文一行code 05/17 09:54
8F:→ conanist:你写code 出来可是人家不知道你为什而写 很难懂 05/17 09:55
9F:→ dreamday1023:关於distance 其实我并没有把全code秀出来 不过已经 05/17 17:09
10F:→ dreamday1023:确定prims是可以执行的 我现在是想要在执行prims内 05/17 17:10
11F:→ dreamday1023:去收集我的neighbor ss大说包到一个node struct 内的 05/17 17:11
12F:→ dreamday1023:的意思是要怎样做呢 05/17 17:11