[BGL] problem w/ push_relabel_max_flow and floating point capacities

I am still hoping to hear back from somebody regarding the issues described below. Is the intent to support floating point? If we were to make changes that added tolerances to the comparisons, would they be accepted? -Marc From: Marc Schafer Sent: Wednesday, December 22, 2010 4:22 PM To: 'boost@lists.boost.org' Subject: [BGL] problem w/ push_relabel_max_flow and floating point capacities Using the push_relabel_max_flow feature on graphs that have edge capacities in double or single precision often results in a failed assertion (line 706 push_relabel_max_flow.hpp) on debug builds although the answer provided is correct for builds with assertions disabled. The is_flow() method (line 564, push_relabel_max_flow.hpp) performs some consistency checking after the algorithm completes and there is an assertion that it returns true. The comparisons inside is_flow are done using ==, !=, >, and <. Using a locally modified version, I was able to see that all the cases where is_flow returns false are caused by errors on the order of machine precision. I believe the error is a faulty comparison mechanism inside is_flow rather than a problem with my graphs or the push_relabel_max_flow algorithm. -Marc

On Mon, 3 Jan 2011, Marc Schafer wrote:
I am still hoping to hear back from somebody regarding the issues described below. Is the intent to support floating point? If we were to make changes that added tolerances to the comparisons, would they be accepted?
Sorry -- I was on vacation. I saw your email but haven't had a chance to think through it in detail. I'll send a more detailed response later today or tomorrow. -- Jeremiah Willcock
participants (2)
-
Jeremiah Willcock
-
Marc Schafer