9.9 KiB
title | TARGET DECK | FILE TAGS | tags | ||
---|---|---|---|---|---|
Permutations | Obsidian::STEM | 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
- Gries, David. The Science of Programming. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
- Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., n.d., https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf.