-
-
Notifications
You must be signed in to change notification settings - Fork 481
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bug in edge disjoint spanning trees #32169
Comments
This comment has been minimized.
This comment has been minimized.
comment:2
I get the answer very quickly with
Concerning the |
comment:3
Another option for the |
This comment has been minimized.
This comment has been minimized.
comment:5
Replying to @DaveWitteMorris:
Thanks for the info. So this was a usage error from my side. I fixed the description. |
comment:6
The current method is based on integer linear programming and is very slow. For undirected graphs, we can try to implement one of the existing polynomial time algorithm such as the one described in https://doi.org/10.1287/moor.10.4.701. I don't know yet if there is a simpler algorithms. I don't know the algorithms for directed graphs. |
Branch: public/graphs/32169_new_ILP |
comment:7
At first, I propose an alternative ILP formulation based on the Miller-Tucker-Zemlin subtour elimination constraints to replace the current formulation which is based on the maximum average degree. I obtain the solution for the reported digraph with
Of course, it would be better to implement the polynomial time algorithms. New commits:
|
Author: David Coudert |
Commit: |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:9
I get slightly better running time when I force equality for the number of incoming edges.
However, if I remove the constraint ensuring that each vertex is incident to a selected edge, the program is way slower to solve. |
comment:10
Do you want to keep trying to improve the speed on this ticket or go with this current version and work on further improvements later? |
comment:11
I prefer to work on further improvements later. I had a look at a paper from Roskind and Tarjan for undirected graphs and it is already quite involved (I don't know if better / simpler algorithms have been proposed since 1985) and I have not seen any proposal for directed graphs yet. |
comment:12
Okay, LGTM. |
Reviewer: Travis Scrimshaw |
comment:13
With this ticket our claim is still way above that what sage can do. For those three graphs with 12 vertices, this ticket fails:
Even worse, it seems to work find on the develop branch. However, on the develop branch I'm getting Anyway, while this resolved the one particular case I reported, it seems to have created various other problems. |
comment:14
E.g.
is resolved now, but didn't work before. |
comment:15
Can you be more specific on the errors you get ? I can try to improve the formulation, and with more time to implement the polynomial time algorithms. |
Changed branch from public/graphs/32169_new_ILP_v2 to public/graphs/32169_v3 |
comment:40
FYI: thanks to the Loukas Georgiadis and his co-authors (see #comment:37), I now have a working implementation of the algorithm of Gabow for computing the edge connectivity of a digraph. They gave me a pure C code that I turned into an easier to read Cython code. It still lacks comments and doctests... I'm still working on the second part of the paper of Gabow for extracting the k-edge-disjoint spanning trees (not obvious). I will not push code before it's done as I may have to refactor some parts of the first algorithm that are also used in the second part. |
comment:41
No problem. Just let me know when you're ready for a review. |
comment:44
Replying to @dcoudert:
This is now #33839. |
comment:45
Then positive review. |
Changed branch from public/graphs/32169_v3 to |
comment:47
This makes the test suite hang with certain random seeds:
|
Changed commit from |
comment:48
outch :( This is for
It's a too hard instance for this formulation with I see 2 solutions here: use a much smaller instance (10 nodes ?) or deprecate the |
comment:49
I would make the number of nodes for the test smaller as it is less invasive of a fix. |
comment:50
I opened #33884. |
comment:51
This bug has roared its ugly head again. Observed on Gentoo x86_64 Linux, Sage 9.8.beta7, with system-installed |
comment:52
and after I installed Coin (used one from the system, coinor-cbc-2.10.5), I get
|
comment:53
With Sage's supplied cbc, it works, including |
comment:54
It's a known problem that |
comment:55
The way forward with COIN is via CVXpy as middleware - #34251 (needs review) |
comment:56
Unfortunately I'm currently too busy to work on the implementation of the combinatorial algorithm of Gabow but it's in my plan for the next months. It's a long and complex algorithm. |
Timeout when creating edge disjoint spanning trees:
This contradicts a doctest in
src/sage/graphs/generic_graph.py
.Depends on #32911
CC: @dcoudert @mkoeppe
Component: graph theory
Keywords: spanning trees
Author: David Coudert
Branch:
e23edfc
Reviewer: Travis Scrimshaw
Issue created by migration from https://trac.sagemath.org/ticket/32169
The text was updated successfully, but these errors were encountered: