Constrained Permutations

Let $(p_1 p_2 \ldots p_k)$ denote the permutation of the set ${1, …, k}$ that maps $p_i\mapsto i$. Define the length of the permutation to be $k$; note that the empty permutation $()$ has length zero.
Define an occurrence of a permutation $p=(p_1 p_2 \cdots p_k)$ in a permutation $P=(P_1 P_2 \cdots P_n)$ to be a sequence $1\leq t_1 \lt t_2 \lt \cdots \lt t_k \leq n$ such that $p_i \lt p_j$ if and only if $P_{t_i} \lt P_{t_j}$ for all $i,j \in \{1, \dots, k\}$.
For example, $(1243)$ occurs twice in the permutation $(314625)$: once as the 1st, 3rd, 4th and 6th elements $(3\,\,46\,\,5)$, and once as the 2nd, 3rd, 4th and 6th elements $(\,\,146\,\,5)$.
Let $f(n, m)$ be the number of permutations $P$ of length at most $n$ such that there is no occurrence of the permutation $1243$ in $P$ and there are at most $m$ occurrences of the permutation $21$ in $P$.
For example, $f(2,0) = 3$, with the permutations $()$, $(1)$, $(1,2)$ but not $(2,1)$.
You are also given that $f(4, 5) = 32$ and $f(10, 25) = 294\,400$.
Find $f(10^{18}, 40)$ modulo $1\,000\,000\,007$.

This is a problem in enumerative combinatorics that can be solved with the use of dynamic programming.

This problem is set up perfectly for dynamic programming. We construct an $n \times m \times p$, $3$D dp-table `dp[][][]` where an entry `dp[i][j][k]` represents the number of permutations for an array of length `i` such that no occurrence of permutation `1243` and not more than `j` occurrences of permutation `21` and with maximum element being `k`.

For the base case `dp[i][j][0]` is always $1$ for all `i` and `j`, because there is only the empty permutation.

For the non-base cases, we sum up the number of ways based on where the maximum appears in the list:
1. For each `l` from `k` to `i-1`, we increase the number of occurrences of `21` by `1`, decrement the length of array from `i` to `i-1` and maximum remains `k` which results in:
> `dp[i][j][k] = (dp[i][j][k] + dp[i – 1][j – (l < k ? 1 : 0)][k - 1]) mod MODULO` 2. For `l == i`: > `dp[i][j][k] = (dp[i][j][k] + dp[i – 1][j][k – 1]) mod MODULO`

Maintain a cumulative sum for each `i`, `j` to calculate the result of dp-table.

Finally, the answer for `f(n, m)` is the summation `dp[n][m][i]` for all possible `i`.

For the case, `f(10^18, 40)` modulo $1,000,000,007$, it is not feasible to directly compute due to the astronomical size of the inputs. You would need to take into account the computational constraints and come up with a more optimized solution or algorithm, possibly involving number-theoretic concepts such as modular arithmetic or combinatorial identities to compute smaller, more manageable quantities.

Lastly, for some competitive programming problems such as this one, there might not be a straight forward way to solve it, only an efficient algorithm and technique that would get you closer to the result under given constraints.

More Answers:
Open Chess Positions
Scatterstone Nim
Crossed Lines

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Share:

Recent Posts

Mathematics in Cancer Treatment

How Mathematics is Transforming Cancer Treatment Mathematics plays an increasingly vital role in the fight against cancer mesothelioma. From optimizing drug delivery systems to personalizing

Read More »