Otra respuesta incompleta. Supongo que el número de participantes es grande, por lo que podemos dividirlos continuamente en grupos. Con este método he podido calcular $p(n)$ para $n$ hasta 6.
Si tenemos $n$ idiomas, entonces podemos dividir a la gente en $2^n$ grupos. Cada grupo habla o no habla determinadas lenguas.
Podemos nombrar las lenguas $0$ a $n-1$ y nombrar los grupos $0$ a $2^n-1$ . Grupo $i$ habla el idioma $j$ si el bit $2^j$ se establece en la notación binaria de $i$ . Por ejemplo, si $n=4$ grupo $3 = 0011_2$ habla las lenguas 0 y 1, pero no las 2 y 3.
Que las variables $a_0$ hasta $a_{2^n-1}$ indican el tamaño de los grupos. Se aplican las siguientes restricciones:
- $a_0 = 0$
- $\displaystyle \forall_i \ \ a_i \ge 0$
- $\displaystyle \sum_{i=0}^{2^n-1} a_i = 1$
- Para grupos $i$ y $j$ : $\quad\displaystyle i\ \&\ j = 0\ \ \implies\ \ a_i = 0\ \vee\ a_j = 0$
Dónde $\&$ es el bit a bit y .
Podemos simplificar un poco el problema. Para $n>2$ podemos suponer que:
- Nadie habla una sola lengua, así que $a_i=0$ cuando $i$ es una potencia de $2$ .
- Si alguien habla sólo dos lenguas, sin pérdida de generalidad podemos suponer que se tratará de lenguas $0$ y $1$ . Así pues, para todos los grupos $i$ que sólo puede hablar dos idiomas, y ninguno de ellos es $0$ ou $1$ tenemos $a_i = 0$ .
Tenemos que calcular:
$$ \min_{\displaystyle a_i}\ \max\ \left\{\sum \{a_i\ |\ i\ \&\ 2^j \neq 0\} \ \ \middle|\ \ j=0,1,\dots n-1\right\} $$ Podemos introducir las fórmulas en Mathematica y utilizar la función Minimizar para encontrar el mínimo de cada una. $n$ y obtener los valores correspondientes $a_i$ . Esto puede utilizarse para buscar patrones que también puedan aplicarse a las categorías superiores. $n$ . El siguiente código funciona para $n \ge 2$ :
solve[n_] := Module[{vari, or, max},
vari = Select[Range[0, 2^n - 1], Total[IntegerDigits[#, 2]] > 1 && (Total[IntegerDigits[#, 2]] > 2 || BitAnd[#, 3] != 0)&];
or = Or @@ (a[#] == 0 & /@ #) & /@ Select[Tuples[vari, 2], Less @@ # && BitAnd @@ # == 0 &];
max = Table[(Select[vari, BitGet[#, i] == 1 &] // a // Thread // Total) <= x, {i, 0, n - 1}];
Minimize[{x, a[#] >= 0 & /@ vari, Total[a /@ vari] == 1, or, max}, Join[a /@ vari, {x}]]
];
Abajo los resultados. Tenga en cuenta que estas soluciones probablemente no son únicas. $$ \begin{array}{|c|c|c|} \hline n & p(n) & a_i \\ \hline 1 & 1 & \begin{array}{c|c} 0 & a_i \\ \hline 1 & 1 \\ \end{array} \\ \hline 2 & 1 & \begin{array}{cc|c} 0 & 1 & a_i \\ \hline 1 & 1 & 1 \\ \end{array} \\ \hline 3 & 2/3 & \begin{array}{ccc|c} 0 & 1 & 2 & a_i \\ \hline 0 & 1 & 1 & 1/3 \\ 1 & 0 & 1 & 1/3 \\ 1 & 1 & 0 & 1/3 \\ \end{array} \\ \hline 4 & 3/5 & \begin{array}{cccc|c} 0 & 1 & 2 & 3 & a_i \\ \hline 0 & 0 & 1 & 1 & 1/5 \\ 0 & 1 & 1 & 0 & 1/5 \\ 1 & 0 & 1 & 0 & 1/5 \\ 1 & 1 & 0 & 1 & 2/5 \\ \end{array} \\ \hline 5 & 5/9 & \begin{array}{ccccc|c} 0 & 1 & 2 & 3 & 4 & a_i \\ \hline 0 & 0 & 1 & 1 & 1 & 2/9 \\ 0 & 1 & 0 & 1 & 1 & 2/9 \\ 1 & 0 & 0 & 0 & 1 & 1/9 \\ 1 & 0 & 0 & 1 & 0 & 1/9 \\ 1 & 1 & 1 & 0 & 0 & 1/3 \\ \end{array} \\ \hline 6 & 1/2 & \begin{array}{cccccc|c} 0 & 1 & 2 & 3 & 4 & 5 & a_i \\ \hline 0 & 1 & 0 & 1 & 1 & 0 & 1/4 \\ 0 & 1 & 1 & 0 & 0 & 1 & 1/4 \\ 1 & 0 & 0 & 0 & 1 & 1 & 1/4 \\ 1 & 0 & 1 & 1 & 0 & 0 & 1/4 \\ \end{array} \\ \hline \end{array} $$ Desgraciadamente, el tiempo de cálculo aumenta muy rápidamente, por lo que no es factible calcularlo para $n \ge 7$ . A menos que podamos añadir más restricciones sobre algunos $a_i$ en $0$ .
Debido a la respuesta de Misha, la salida para $n = 7$ sería algo así: $$ \begin{array}{|c|c|c|} \hline n & p(n) & a_i \\ \hline 7 & 3/7 & \begin{array}{ccccccc|c} 0 & 1 & 2 & 3 & 4 & 5 & 6 & a_i \\ \hline 0 & 0 & 1 & 0 & 1 & 1 & 0 & 1/7 \\ 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1/7 \\ 0 & 1 & 0 & 0 & 0 & 1 & 1 & 1/7 \\ 0 & 1 & 0 & 1 & 1 & 0 & 0 & 1/7 \\ 1 & 0 & 0 & 0 & 1 & 0 & 1 & 1/7 \\ 1 & 0 & 0 & 1 & 0 & 1 & 0 & 1/7 \\ 1 & 1 & 1 & 0 & 0 & 0 & 0 & 1/7 \\ \end{array} \\ \hline \end{array} $$
1 votos
Tengo $1, 1, \frac23, \frac35, \frac59, \frac12$ . El algoritmo que he utilizado es demasiado lento para altas $n$ . Veré si puedo mejorarlo.
0 votos
¿Lo estás forzando?
1 votos
Para cada $n$ Genero una expresión a minimizar y un conjunto de restricciones. Luego dejo que la función Minimizar de Mathematica lo resuelva.
0 votos
Si sirve de algo, para obtener una proporción mínima, nadie puede hablar una sola lengua.