好吧,我读过这本书,我搜索了一下我的测试代码,我发现它对我来说是如何工作的,图分数函数如下:def graphscore(v, proxlimit = 50):
loc = dict([(people[i], (v[i*2], v[i*2+1])) for i in range(0, len(people))])
total = 0.0
#penalize crosscount
for i in range(len(links)):
for j in range(i+1, len(links)):
(x1, y1), (x2, y2) = loc[links[i][0]], loc[links[i][1]]
(x3, y3), (x4, y4) = loc[links[j][0]], loc[links[j][1]]
den = (y4-y3)*(x2-x1)-(x4-x3)*(y2-y1)
if den==0: continue #lines parallel
ua = ((x4-x3)*(y1-y3)-(y4-y3)*(x1-x3))/float(den)
ub = ((x2-x1)*(y1-y3)-(y2-y1)*(x1-x3))/float(den)
if ua > 0 and ua < 1 and ub > 0 and ub < 1:
total += 1.0
#penalize tightened nodes
for i in range(len(people)):
for j in range(i+1, len(people)):
(x1, y1), (x2, y2) = loc[people[i]], loc[people[j]]
dist = math.sqrt(math.pow(x1-x2, 2) + math.pow(y1-y2, 2))
if dist < proxlimit:
total += (1.0-(dist/proxlimit))
return total
在文件开头声明以下全局参数(当然):
^{pr2}$