2013-04-01 3 views
2

Я хочу использовать эвристику для A * в сетиx, но я не могу узнать, как получить доступ к атрибутам узлов в эвристике (мне нужны они для моей эвристики). Как я могу получить доступ к атрибутам узлов в эвристической функции?Использовать атрибуты в эвристике

ответ

4

Если G ваш график, то атрибут key узла n можно обращаться с

G.node[n][key] 

Если G не во внешней области видимости эвристической функции уже, а затем сделать G доступным к эвристической функции используйте замыкание:

def make_heuristic(G): 
    def heuristic(a, b): 
     a_attr, b_attr = [G.node[n][key] for n in (a, b)] 
     ... 
    return heuristic 

nx.astar_path(G,start,end,make_heuristic(G))   
+0

Эвристическая функция имеет только два атрибута: являются узлами. – fread2281

Смежные вопросы