#12630: Add representations of quivers and quiver algebras to sage
-------------------------------------+-------------------------------------
Reporter: JStarx | Owner: AlexGhitza
Type: enhancement | Status: needs_work
Priority: major | Milestone: sage-6.2
Component: algebra | Resolution:
Keywords: algebra, quiver, | Merged in:
module, days49 | Reviewers: Simon King
Authors: Jim Stark, Simon | Work issues: fix or delete
King, Mathieu Guay-Paquet, Aladin | "all_paths()"
Virmaux | Commit:
Report Upstream: N/A | a6b04c6c57b2362cbfa2e300a5d592ef79757fc8
Branch: | Stopgaps:
public/combinat/quivers |
Dependencies: #12412, #12413, |
#14806, #15491, #15623, #15810 |
-------------------------------------+-------------------------------------
Changes (by SimonKing):
* status: needs_review => needs_work
* work_issues: => fix or delete "all_paths()"
Comment:
Replying to [comment:206 darij]:
> I changed the doc again. Simon, can you keep working on the
public/combinat/quivers branch?
As I have stated above: I keep forgetting how to teach git to push to the
right location, and the dev scripts will not push to a public place.
So, please tell me how I can push to a public branch.
> I don't understand why we have two ways to compute paths in a path
semigroup:
> {{{
> def all_paths(self, start=None, end=None):
> }}}
> on the one hand, and
> {{{
> def iter_paths_by_length_and_startpoint(self, d, v):
> def iter_paths_by_length_and_endpoint(self, d, v):
> }}}
I don't recall exactly, but if I recall correctly I added the iteration
methods in order to have something that works in the acyclic case. I have
just looked at the code: all_paths does not use the iterative methods.
Perhaps it should!
> All I can say is that it is broken even in the acyclic case:
> {{{
> sage: Q = DiGraph({i: {i+1: "a"+str(i)} for i in range(2)})
> sage: Q.edges()
> [(0, 1, 'a0'), (1, 2, 'a1')]
> sage: Q.path_semigroup().all_paths()
> [e_0, a, 0, a*a, a*1, 0*a, 0*1, e_1, a, 1, e_2]
> }}}
Wow, that's very bad and needs to be fixed. Note that
`list(Q.path_semigroup())` gives the correct result.
> Apparently somewhere deep in the code it believes that every edge label
is one character long.
It shouldn't.
> And it seems to check for acyclicity twice
??
In `all_paths`, I only see one location where it is tested (however, it is
tested in each round of the recursion, which is bad).
> (and, for some reason, also checks for absence of loops?).
If I recall correctly, when the code was written, the graph code did say
that a loop does not count as a cycle. But apparently this has changed.
So, perhaps we can remove the `has_loops()` test.
> Either way, is there a reason for this method to exist?
For `all_paths`? Hm. When I think about it, I guess the iterator of the
path semigroup is all what we need.
--
Ticket URL: <http://trac.sagemath.org/ticket/12630#comment:207>
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/groups/opt_out.