Skip to content

A proper random_element() method for PerfectMatchings #9890

@nathanncohen

Description

@nathanncohen

At the moment, the method random_element() from PerfectMatchings computes a random matching by picking a random integer between 0 and the number of matchings on n elements, then (I presume) enumerating all the matchings according to some ordering until the kth has been computed. This is impressively useless.

sage: %timeit PerfectMatchings(12).random_element()
5 loops, best of 3: 1.5 s per loop

By the way, I was not able to write a method to obtain the list of pairs describing the matching from an PerfectMatching object.. I don't understand how this class is written, and I have no idea why it needs to be so complicated (but it would be nice to add it to this ticket during the review, if someone gets how it works).

The method random_element (and also an_element) both raise an exception when the set of elements is EMPTY. I also fixed the doctests.

(I don't even get why you can build a PerfectMatchings class on an odd number of elements in the first place)

I expect this ticket could be heavily modified during review, but there is a problem with these classes at the moment.

Nathann

CC: @nthiery @hivert

Component: combinatorics

Author: Nathann Cohen

Reviewer: Frédéric Chapoton

Merged: sage-5.10.beta5

Issue created by migration from https://trac.sagemath.org/ticket/9890

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions