指定したノード群において、中心となるノードはどのように考えればよいでしょうか。指定ノード群からの分散が最も小さくなるノードを探す場合 mini deviation と 指定ノード群からの距離の合計が基も小さくなる場合 mini-sum のサンプルです。入力点群の最寄が指定ノードとなります。入力ノード群を動かして、どちらが中心ノードに使えそうか試してみてください。
分散の小さいノードを探す
#find the node which is
smalldev = sys.float_info.max
centernode = None
for n in g.nodes:
g.DijkstraFast(n)
sum = 0
for ng in nodesToCome:
sum += ng.cost
avg = sum / len(nodesToCome)
dev = 0
for ng in nodesToCome:
dev += math.pow(ng.cost-avg,2)
dev /= len(nodesToCome)
if smalldev > dev:
smalldev = dev
centernode = n
距離の合計が小さいノードを探す
#find the minisum node
minisum = sys.float_info.max
minisumnode = None
for n in g.nodes:
g.DijkstraFast(n)
sum = 0
for ng in nodesToCome:
sum += ng.cost
if minisum > sum:
minisum = sum
minisumnode = n

Comments are closed.