#18564: Boost Edge Connectivity
-------------------------------------+-------------------------------------
       Reporter:  borassi            |        Owner:  borassi
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-6.8
      Component:  graph theory       |   Resolution:
       Keywords:  Boost,             |    Merged in:
  connectivity                       |    Reviewers:
        Authors:  Michele Borassi    |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:                     |  5d15475d4591b889a057ae958b9ad095fa48a8e3
  u/borassi/boost_edge_connectivity  |     Stopgaps:
   Dependencies:                     |
-------------------------------------+-------------------------------------
Changes (by borassi):

 * status:  needs_work => needs_review


Comment:

 Helloooooo!

 I have corrected all the issues raised in previous messages. In
 particular:

  * I have sent an email to the Boost mailing list with the edge
 connectivity bug (at the moment it is waiting for moderation, I will link
 it asap);

  * I have removed trailing whitespaces;

  * I have added a doctest for directed Boost connectivity;

  * I have used Nathann's code from public/18564_merged.

 Only issue that remains open: avoiding the huge copy-paste. Unfortunately,
 also structs and templates do not support fused types ![1]. As far as I
 understood, if we do not want to write C++ code, the only solution is to
 write a function for each task and for each graph type, then to create a
 "generic" function that inputs a fused type containing all Boost graphs
 (for instance, a function `num_vertices(BoostVecDiGraph)`, a function
 `num_vertices(BoostVecGraph)`, and a function
 `num_vertices(BoostFusedGraph)` wrapping the other two). With the number
 of vertices, this is not a big issue, but with `add_edge` it might be,
 because we also need variable `vertices`  (which translates Sagemath
 vertices into Boost vertices), and we cannot use a struct (it is not
 supported). This might result in a huge mess, which increases even more if
 we have to use constructs for the specific algorithm we are "stealing"
 from Boost. Is it really worth it, if in some time Cython might start
 supporting fused types in templates?

 ![1] !https://groups.google.com/forum/#!topic/cython-users/qQpMo3hGQqI

--
Ticket URL: <http://trac.sagemath.org/ticket/18564#comment:40>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to