Belirli grafiklerde max_flow_min_cost işlevini kullanmaya çalışıyorum, ancak bazen algoritma sonsuza kadar sürüyor (veya en azından çok uzun bir süre) gibi görünüyor ve bunun nedenini anlamıyorum. dava. İşte bu kadar uzun süre çalışmasına neden olan bir grafik. Yukarıdaki grafik değiştirme ancak 2 ya da 3 batmaya hedef kapasiteli yaparsanız Hepsi aynı düğümleriPython NetworkX max_flow_min_cost işlevi sonsuza kadar koşuyor
nodes = [
('1in', {'y': -1, 'x': -1, 'type': 'passenger in', 'number': 1}),
('2out', {'y': 1, 'x': -1, 'type': 'passenger out', 'number': 2}),
('destination', {'y': 0, 'x': 0, 'type': 'destination'}),
('2in', {'y': 1, 'x': -1, 'type': 'passenger in', 'number': 2}),
('source', {'type': 'meta'}),
('4in', {'y': -1, 'x': 1, 'type': 'passenger in', 'number': 4}),
('1out', {'y': -1, 'x': -1, 'type': 'passenger out', 'number': 1}),
('4out', {'y': -1, 'x': 1, 'type': 'passenger out', 'number': 4}),
('sink', {'type': 'meta'}),
('3in', {'y': 1, 'x': 1, 'type': 'passenger in', 'number': 3}),
('3out', {'y': 1, 'x': 1, 'type': 'passenger out', 'number': 3})
]
edges = [
('1in', '1out', {'cost': 0, 'capacity': 1}),
('2out', '4in', {'cost': -9.48, 'capacity': 1}),
('2out', 'destination', {'cost': -10.9, 'capacity': 1}),
('2out', '3in', {'cost': -10.31, 'capacity': 1}),
('destination', 'sink', {'cost': 0, 'capacity': 1}),
('2in', '2out', {'cost': 0, 'capacity': 1}),
('source', '2in', {'cost': 0, 'capacity': 1}),
('source', '4in', {'cost': 0, 'capacity': 1}),
('source', '1in', {'cost': 0, 'capacity': 1}),
('source', '3in', {'cost': 0, 'capacity': 1}),
('4in', '4out', {'cost': 0, 'capacity': 1}),
('1out', '2in', {'cost': -10.31, 'capacity': 1}),
('1out', '4in', {'cost': -10.31, 'capacity': 1}),
('1out', 'destination', {'cost':-10.9, 'capacity': 1}),
('1out', '3in', {'cost': -9.48, 'capacity': 1}),
('4out', 'destination', {'cost': -10.9, 'capacity': 1}),
('3in', '3out', {'cost': 0, 'capacity': 1}),
('3out', '4in', {'cost': -10.31, 'capacity': 1}),
('3out', 'destination', {'cost': -10.9, 'capacity': 1})
]
sahip, aynı zamanda sonsuza kadar çalışır. Kapasite 4'e eşitse, algoritma düzgün çalışır. Bu tam olarak arandı:
nx.max_flow_min_cost(G,'source','sink',weight='cost')
Teşekkür ederiz! Herhangi bir yardım takdir edilecektir. G'nin kodlarıyla ilgili bir sorun olması durumunda, NetworkX projesinde bir Yönlendirilmiş Grafik (DiGraph)
Düzenleme: I opened an issue olduğunu belirtmekte yarar var.
networkx web sitesinde cevap soruya bakın o kodu gibi görünmesi amacıyla 4 boşluklu kod tablolaştırıyoruz. –
@imaluengo Teşekkür ederiz! Editörde bir satır gösterdi, bu yüzden korktum ve yapmadım. – Arya
Evet, sadece 1 satırdı, onu birkaç satıra (düğüm ve kenar başına bir tane) kırdım ve 4 boşlukla tablo haline getirdim. 1 satır korkutucuydu! –