Supongamos que tengo el set: $$A=\{0, 1, 2, ... 224, 225\}$$
Quiero encontrar un triple que las sumas a $225$ (donde un triple es un conjunto de 3 valores únicos en el conjunto).
No Repetición De La Versión:
Hay muchos de esos triples incluidos: $$(0, 1, 224), (0, 2, 223), ... , (74, 75, 76)$$ Note: $(0, 0, 225)$ is not a valid triple as $0$ se repite.
¿Cuál es el número mínimo de valores que deben estar presentes en el conjunto de $A$ tal que se pueda garantizar que un triple debe existir?
O dicho de otra manera, ¿cuántos elementos pueden permitir a un oponente estratégicamente eliminar dicho que todavía puedo garantizar que un triple debe existir (sin ver que los valores fueron retirados)?
De fondo y la Versión con la Repetición:
Esta pregunta surgió a partir de una asignación para escribir un $O(n)$ algoritmo que, dada una lista de quizás $100,000$ enteros no negativos, será la que determine si hay o no $3$ números enteros cuya suma $225$ (nota: yo hace mucho tiempo que han terminado la tarea, pero todavía estoy preguntando acerca de la mejor solución). Aquí, la repetición es permitido para $(0, 0, 225)$ o $(75, 75, 75)$ son válidos triples.
Mi enfoque era crear un 'contador' de la matriz de $C$ del tamaño de la $226$ e inicializarla con $0's$. Mientras que la iteración a través de la lista, si el valor de $i$ se encontraron en $0\le i \le 225$, entonces el incremento de $C[i]$. El contador de la matriz, por tanto, mantiene un seguimiento del número de veces que cada valor relevante se produce.
Podemos dejar de contar después de $1$ ocurrencia para cualquier valor dado $j \gt 225/2$, y después de $2$ acontecimientos de cualquier otro valor, con la excepción de $75$ a que se debe contar para a $3$ apariciones desde la triple $(75, 75, 75)$ debe ser verificada.
Después de la iteración a través de la lista el contador de la matriz se puede comprobar por la presencia de válido triplica el uso de bucles anidados y así sucesivamente. Pero una optimización se puede hacer. Si, por ejemplo, cada valor de $0...225$ se ha encontrado al menos una vez, entonces podemos decir que un triple existe sin siquiera comprobar.
Entonces la pregunta es similar a la simplificación del caso anterior. Después de cuántos 'hits', donde algunos de los $A[i]$ se incrementa, puede simplemente devolver true y saber que un triple debe existir?
He estado tratando de encontrar una solución a la versión más simple de este problema durante bastante tiempo. Le pregunté a mi algoritmos profesor y un TA. También escribí un pequeño programa para probar y la fuerza bruta de un techo sobre esto, pero rápidamente corrió hacia los problemas de combinatoria.