度中心度只是g的底層簡單圖中頂點的頂點度列表。
在C#中,這將是:
輸入的
public string DegreeCentrality(List<Tuple<long, long>> items)
{
var sb = new StringBuilder();
var total = new List<long>();
total.AddRange(items.Select(o => o.Item1).ToList());
total.AddRange(items.Select(o => o.Item2).ToList());
foreach (var group in total.GroupBy(o => o).OrderByDescending(o => o.Count()))
{
sb.Append(string.Format("{0}\t{1}\n", group.Key, group.Count()));
}
return sb.ToString();
}
:
2 1
1 5
5 4
4 6
6 1
1 3
將返回:
1 4
2 1
3 2
4 3
5 2
6 2
編輯:
File.WriteAllText(@"d:\out.txt", DegreeCentrality(File.ReadAllText(@"d:\in.csv").Split('\n').Skip(1).Select(row => row.Trim().Split(',')).Select(item => Tuple.Create(long.Parse(item[0]), long.Parse(item[1]))).ToList()));
+評論
File.WriteAllText(
@"d:\out.txt", //8) write output here
DegreeCentrality( //7) Use list to generate results
File.ReadAllText(@"d:\in.csv") //1) read input from here
.Split('\n') //2) split content to lines
.Skip(1) //3) skip header
.Select(row => row.Trim().Split(',')) //4) split at ','
//5) parse text as number pair
.Select(item => Tuple.Create(long.Parse(item[0]), long.Parse(item[1])))
.ToList() //6) Execute results in list
));
或臨時變量
var input = File.ReadAllText(@"d:\in.csv");
var lines = input.Split('\n').Skip(1);
var arries = lines.Select(row => row.Trim().Split(null));
var items = arries.Select(item => Tuple.Create(long.Parse(item[0]), long.Parse(item[1]))).ToList();
File.WriteAllText(@"d:\out.csv", DegreeCentrality(items));
這個問題被擱置的 「過寬」。如果你更清楚地描述你想如何做這個計算,也許它可能會重新開放。你想要一個獨立的程序讀/寫輸入/輸出文件?或者你是否在尋找一種可以調用的方法,將某些數據結構作爲輸入/輸出?或者你已經在使用一些圖形庫? – Marco13 2014-09-05 11:21:36