I'm having strange behaviour when I re-run the Closure function over the same graph but with different weights.
For example, following your example. If I run
G = nx.DiGraph()
G.add_node(0, weight=0)
G.add_node(1, weight=0)
G.add_node(2, weight=0)
G.add_edge(0, 1, weight=1)
G.add_edge(0, 2, weight=1)
G.add_edge(1, 2, weight=1)
nx.set_node_attributes(G,{0: 3, 1: -6, 2: 4},'weight')
Closure(G).solve()
nx.set_node_attributes(G,{0: -1, 1: -1, 2: -1},'weight')
Closure(G).solve()
I get empty set. If I come back to the original values:
nx.set_node_attributes(G,{0: 3, 1: -6, 2: 4},'weight')
Closure(G).solve()