# Enumerating every "partnering" without repeating partners

I'm taking a class. In this class every week we have a partner. There are an even number of people in the class. We'd like avoid having repeat partners if possible so that everyone gets to work with as many people as possible. I'd like to know how many weeks we could accomplish this before we're forced to partner someone again.

More formally given a set $$S$$ with an even number of elements, define a "partnering" of $$S$$ to be a set of partitionings where each part in each partition is of size 2. The empty set is a valid partnering. The set containing any single partitioning of $$S$$ is a valid partnering. What the largest "partnering" we can define?

If there are $$2N$$ elements in $$S$$ then there is no partnering of size greater than $$2N-1$$. I've also been able to get a rough lower bound on the size of the maximal partnering. The best I've been able to do is half the size of the set but in special cases I can do a bit more. For instance if the size of the set is $$2^k*N$$ I can get $$N+\frac{N}{2} + ... + \frac{N}{2^k}$$ but that's a very special case. For powers of two this ideal since $$2N-1 = N+\frac{N}{2} + ... + \frac{N}{2^k}$$. Ok so for powers of two I have the answer but for other numbers I just have a lower bound.

My current method:

If you have $$2N$$ elements in your set you can arbitrarily split them into two groups, $$A$$ and $$B$$ of size $$N$$ and assign each element in each group a member of $$Z_N$$. Call the functions assigning these indexes $$Z_a$$ and $$Z_b$$ for the functions that assign them for each group. You can then define $$N$$ different partitions by first paring $$a \in A$$ with $$b \in B$$ if $$Z_a(a) = Z_b(B) + k$$ for each $$k \in Z_n$$. That gives you a partnering of size $$N$$ already. After those pairings have been used up you can recursively split $$A$$ and $$B$$ into two groups since no one in $$A$$ has been partnered with anyone in $$A$$ yet and likewise for $$B$$

Intuitively we're splitting the group in two, putting each group in a circle, and then rotating one of the circles. Then if we're lucky we can repeat the process.

Can we do any better or is this optimal? My expectation is that there must be a better result here since otherwise it would mean the size of the maximal partnering has something to do with how many times you can divide the size of the set by 2.

If $$|S|=2N$$, then the largest "partnering" is a $$1$$-factorisation of the complete graph, or a round-robin tournament schedule. There always exists a schedule that pairs all people exactly once in $$2N-1$$ rounds without repeating pairs. There are various algorithms to find such a schedule, see the previous link.
{"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 30, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "url": "https://cs.stackexchange.com/questions/126382/enumerating-every-partnering-without-repeating-partners/126387#126387", "fetch_time": 1638081647000000000, "content_mime_type": "text/html", "warc_filename": "crawl-data/CC-MAIN-2021-49/segments/1637964358469.34/warc/CC-MAIN-20211128043743-20211128073743-00393.warc.gz", "warc_record_offset": 252531825, "warc_record_length": 34062, "token_count": 687, "char_count": 2731, "score": 3.734375, "int_score": 4, "crawl": "CC-MAIN-2021-49", "snapshot_type": "latest", "language": "en", "language_score": 0.9384440183639526, "file_path": "/sailhome/yjruan/project/latent-lm/data/processed/finemath-4plus/finemath-4plus/train-00054-of-00064.parquet"}