¿Cuáles son los usos del algoritmo simplex en la programación competitiva? He visto muchos equipos superiores con el algoritmo simplex en sus cuadernos de equipo. ¿Hay algunos lugares específicos donde se puede usar simplex?

Simplex se utiliza para resolver el sistema de desigualdades lineales.

Se basa en la propiedad de convexidad: cualquier mínimo local debe ser un mínimo global. Simplex es un algoritmo no determinista.

Si un problema se puede reducir a ecuaciones de desigualdad lineal, se puede resolver con simplex. Una amplia variedad de problemas, como la ruta más corta de una sola fuente, el flujo máximo, el flujo de costo mínimo, etc. pueden reducirse a desigualdades lineales.

Sin embargo, los problemas mencionados anteriormente tienen soluciones más conocidas que simplex. Un problema particular que se me ocurre, que no tiene una solución de tiempo polinomial que no sea reducirse a desigualdades lineales (y aplicar simplex), es el flujo de productos múltiples.

Ejemplo: los generadores de escudo se pueden resolver con simplex (Divulgación: soy el autor de este problema).

Gracias por el A2A Lalit.

El algoritmo simple se usa principalmente en problemas de optimización. Estos problemas de optimización pueden tener una solución utilizando técnicas NP-Hard como la Programación de enteros, o más generalmente, la Programación lineal.

Permite que las soluciones de programación lineal converjan a un tiempo de ejecución polinómico esperado en la mayoría de los casos arbitrarios. Sin embargo, el peor caso de simplex es exponencial.

Por ejemplo, un problema que utilizó este algoritmo es:

Problema – E – Fuerzas de código

Sin embargo, como puede ver, estos problemas son extremadamente raros. No aparecen con frecuencia.

Simplex es un algoritmo muy eficiente utilizado para resolver la programación lineal, que no se ve tan a menudo en la programación competitiva. Sin embargo, un buen concursante debe tener en cuenta el LP cuando aparece, porque de lo contrario el problema podría parecer muy difícil de abordar 🙂

El último buen ejemplo que recuerdo se llama Shield Generators y proviene de Zenefits CodeSprint en HackerRank. Definitivamente deberías echar un vistazo al problema. También hay un buen editorial para ello.

Según mi experiencia, N nunca o una vez puede resolverse usándolo. Creo que fue un problema en UVA. Puede considerarlo como una de las cosas muy raras que necesita en una competencia. No lo incluyo en mi biblioteca de competencia.

More Interesting

Matemáticas generales que uno debe saber antes de tomar la clase de algoritmo? Especialmente para estudiantes con antecedentes no informáticos.

¿Qué tipo de algoritmo de Machine Learning debería usar para un robot que ve?

Cómo saber si / cuándo puede aplicar la manipulación de bits para resolver un problema

¿Qué algoritmo de consenso de blockchain podría utilizar para crear una base de datos descentralizada de resultados de partidos de fútbol?

Dado un gráfico dirigido, ¿podemos hacer DFS en cada nodo para encontrar el nodo de mayor valor?

¿Cuál es la mejor manera de aprender estructuras de datos y cuáles son los libros para comprender esto fácilmente?

¿Necesito tener el conocimiento de las estructuras de datos y el algoritmo, antes de comenzar a practicar en spoj, codchef, topcoder, etc.? Sé un poco de C ++.

¿Qué algoritmo de compresión de imagen se usa en WhatsApp?

¿Cuáles son algunos de sus mejores algoritmos de C ++ o C que está orgulloso de haber escrito?

¿Funciona la siguiente implementación para encontrar la subcadena común más larga dentro de dos cadenas?

¿Qué canal / tutorial en YouTube es mejor para aprender algoritmos o estructuras de datos?

¿Cómo se usaron los algoritmos cuando no había computadoras?

La variación es cuánto cambia su algoritmo dados los nuevos datos. ¿Qué significa esto?

¿Por qué es mejor usar los elementos del marco de la colección que usar una matriz de objetos?

¿Hay algún caso donde alguien de alguna manera descifró el algoritmo y engañó en el IITJEE?