notebook/notes/combinatorics/permutations.md

9.9 KiB

title TARGET DECK FILE TAGS tags
Permutations Obsidian::STEM combinatorics set
combinatorics
set

Overview

A permutation of some n objects is a (possible) rearrangement of those n objects. The number of permutations is n! since there are n possible ways to pick the first object, (n - 1) possible ways to pick the second, and so on.

void permutations_aux(
  const size_t n,
  int A[static n],
  int res[static n],
  uint64_t choices
) {
  if (!choices) {
    for (size_t i = 0; i < n; ++i) {
      printf("%d ", A[res[i]]);
    }
    printf("\n");
    return;
  }

  unsigned int weight = n - bit_weight(choices);
  for (unsigned int i = 0; i < 64; ++i) {
    uint64_t next = 1L << i;
    if (choices & next) {
      res[weight] = i;
      permutations_aux(n, A, res, choices & ~next);
    }
  }
}

void permutations(const size_t n, int A[static n]) {
  int *res = malloc(sizeof(int) * n);
  permutations_aux(n, A, res, (1L << n) - 1);
  free(res);
}

The above approach prints out all permutations of a given array, provided the array contains at most 64 digits. It relies on bit_weight as defined in binary/index.

%%ANKI Basic What is a permutation? Back: An ordered arrangement of some collection of objects. Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic How many permutations are there of n objects? Back: n! Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic How is permutation expressed recursively? Back: Put each candidate in the current position, finding all permutations of the remainder each time. Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic How is n! permutations of n objects derived? Back: There are n choices for the first position, n - 1 choices for the second, etc. Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic What combinatorial concept explains n! permutations of n objects? Back: The multiplicative principle. Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic What combinatorial concept is often associated with the factorial? Back: Permutations. Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic How does sorting relate to the concept of permutations? Back: Sorting aims to efficiently find a specific permutation. Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf. Tags: algorithm

END%%

%%ANKI Basic What symbol denotes "n factorial"? Back: n! Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic What is n! shorthand for? Back: \Pi_{k=1}^n k Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic What is the identity element of \cdot (multiplication)? Back: 1 Reference: Gries, David. The Science of Programming. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.

END%%

%%ANKI Basic What does 0! (factorial) evaluate to? Back: 1 Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic Why might 0! = 1 (barring convention)? Back: Because the empty product is 1, the multiplication identity. Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic What combinatorial concept explains the number of bijective functions between two finite sets? Back: Permutations (factorials). Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic How many bijective functions exist between \{1, 2, 3\} and \{a, b, c\}? Back: 3! Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic How many bijective functions exist between finite sets A and B where |A| = |B| = n? Back: n! Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

If we generalize to choosing k \leq n elements of k objects, we can calculate the k-permutation of n. This is denoted as (n)_k, sometimes called the falling factorial. (n)_k = \frac{n!}{(n - k)!}

The derivation works by noting that we have n - 0 possible ways to pick the first object, n - 1 ways to pick the second, up until n - (k - 1) ways to pick the last object.

%%ANKI Basic What is a k-permutation? Back: An ordered arrangement, containing k elements, of some collection of objects. Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic What is the closed formula for (n)_k (falling factorial)? Back: (n)_k = \frac{n!}{(n - k)!} Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic How many k-permutations are there of n objects? Back: (n)_k Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic How is (n)_k k-permutations of n objects derived? Back: There are n choices for the first position, n - 1 choices for the second, etc. up until n - (k - 1) choices for the last position. Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic What does (n)_n evaluate to? Back: n! Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic What does (n)_0 evaluate to? Back: 1 Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Cloze In a k-permutation of n objects, there are n - 0 choices for first object and {n - (k - 1)} choices for the last object. Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic What combinatorial concept explains the number of injective functions between two finite sets? Back: k-permutations (falling factorials). Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

%%ANKI Basic How many injective functions exist between \{1, 2, 3\} and \{a, b, c, d, e\}? Back: (5)_3 Reference: Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.

END%%

References