Temas acerca de Inteligencia Artificial
Foto de Usuario
luisvasquez

Ranking Troomes
Mensajes: 4
Registrado: 26 Ago 2017, 15:26

¿Que es la programación competitiva?

Mensaje por luisvasquez » 13 Nov 2017, 20:51

La programación competitiva es un deporte mental que generalmente se realiza a través de Internet o una red local, que involucra a los participantes que intentan programar de acuerdo con las especificaciones proporcionadas. Los concursantes se conocen como programadores deportivos. La programación competitiva es reconocida y respaldada por varias compañías multinacionales de software y de Internet, como Google y Facebook. Hay varias organizaciones que organizan concursos de programación de forma regular.

Una competencia de programación generalmente involucra al presentador presentando un conjunto de problemas lógicos o matemáticos a los concursantes (que pueden variar en número de decenas a varios miles), y los concursantes deben escribir programas informáticos capaces de resolver cada problema. La evaluación se basa principalmente en la cantidad de problemas resueltos y el tiempo dedicado a la redacción de soluciones exitosas, pero también puede incluir otros factores (calidad de producción producida, tiempo de ejecución, tamaño del programa, etc.)

Historia

Uno de los concursos más antiguos conocidos es ACM-ICPC, que se originó en la década de 1970, y ha crecido hasta incluir 88 países en su edición de 2011. El interés en la programación competitiva ha crecido mucho desde 2000, y está fuertemente relacionado con el crecimiento de Internet, lo que facilita la celebración de concursos internacionales en línea, eliminando los problemas geográficos.

Descripción general

El objetivo de la programación competitiva es escribir código fuente de programas informáticos que puedan resolver problemas determinados. Una gran mayoría de los problemas que aparecen en los concursos de programación son de naturaleza matemática o lógica. Estas tareas típicas pertenecen a una de las siguientes categorías: combinatoria, teoría de números, teoría de grafos, geometría, análisis de cadenas y estructuras de datos. Los problemas relacionados con la inteligencia artificial también son populares en ciertas competiciones.

Independientemente de la categoría del problema, el proceso de resolver un problema se puede dividir en dos grandes pasos, construir un algoritmo eficiente e implementar el algoritmo en un lenguaje de programación adecuado (el conjunto de lenguajes de programación permitidos varía de un concurso a otro). Estas son las dos habilidades más comúnmente probadas en competencias de programación.

En la mayoría de concursos, el juicio se realiza automáticamente por máquinas anfitrionas, conocido comúnmente como jueces. Cada solución presentada por un concursante se ejecuta en el juez contra un conjunto de casos de prueba (generalmente secretos). Normalmente, los problemas de concurso tienen un sistema de marcado de todo o nada, lo que significa que una solución es "Aceptada" solo si produce resultados satisfactorios en todos los casos de prueba ejecutados por el juez, y se rechaza de otra manera. Sin embargo, algunos problemas de competencia pueden permitir la calificación parcial, dependiendo del número de casos de prueba aprobados, la calidad de los resultados o algún otro criterio especificado. Algunos otros concursos solo requieren que el concursante presente el resultado correspondiente a los datos de entrada dados, en cuyo caso el juez solo tiene que analizar los datos de salida enviados.

Competiciones notables

Hay dos tipos de formatos de competencia: a corto y largo plazo. Cada ronda de competencia a corto plazo suelen durar pocas horas, usualmente entre una a tres horas. Las competiciones a largo plazo pueden durar de unos pocos días a algunos meses.

Corto plazo
  • ACM-ICPC - una de las competiciones más antiguas, para estudiantes de universidades en grupos de 3 personas cada uno, patrocinado por IBM
    ACSL - competencia de ciencias de la computación con porciones escritas y de programación, para estudiantes de escuela media / secundaria
    Google Code Jam - concurso celebrado desde 2003, proporcionado y patrocinado por Google
    Facebook Hacker Cup - competencia celebrada desde 2011, proporcionada y patrocinada por Facebook
    HackerRank Ad Infinitum - Math Programming Contest de HackerRank
    CodeChef Cook-Off - un concurso de programación estilo ACM-ICPC celebrado el segundo el último domingo de cada mes
    CodeChef LunchTime - una serie de Programación Junior celebrada el último domingo de cada mes, para estudiantes de escuela media / secundaria
    CodeChef SnackDown - Un concurso anual de programación global con multiples rondas patrocinado por CodeChef
    Competencia de programación IEEEXtreme - competencia anual para miembros estudiantes de IEEE celebrada desde 2006 por IEEE
    IOI - una de las competiciones más antiguas, para estudiantes de secundaria
    TopCoder Open - Algorithm - competición celebrada desde 2004 por TopCoder
    Algoritmo Yandex - concurso realizado desde 2013 por Yandex
En la mayoría de las competiciones anteriores, dado que el número de concursantes es bastante grande, las competiciones generalmente se organizan en varias rondas. Por lo general, requieren la participación online en todas las rondas, excepto la última, que requieren la participación onsite. Una excepción especial a esto es IEEEXtreme, que es una competencia anual de programación virtual de 24 horas. Los mejores jugadores en IOI y ACM-ICPC reciben medallas de oro, plata y bronce, mientras que en los otros concursos, se otorgan premios en efectivo a los mejores finalistas. También alcanzar los primeros puestos en las tablas de puntaje de tales competencias puede atraer el interés de reclutadores de compañías de software e Internet.

Largo plazo
  • Concursos de programación de Al Zimmermann: una competencia de tres meses, organizada una o dos veces al año
    CodeChef Long Challenges

    Google AI Challenge - competiciones bi-anuales para los estudiantes, que funcionó desde 2009 hasta 2011
    Semana de código HackerRank - concurso de 7 días por HackerRank
    Halite: un desafío de programación de IA celebrado de noviembre de 2016 a febrero de 2017, patrocinado por Two Sigma y Cornell Tech
    Concurso de programación ICFP - concurso anual de 3 días celebrado desde 1998 por la Conferencia Internacional de Programación Funcional
    Kaggle
    Concurso de programación de inteligencia artificial abierto de la Copa AI de Rusia
    TopCoder Marathon matches
Recursos de entrenamiento y concurso en línea

La comunidad de programación en todo el mundo ha creado y mantenido varios recursos de Internet dedicados a la programación competitiva. Ofrecen concursos independientes con o sin premios menores. Además, los archivos de problemas pasados son un recurso popular para la capacitación en programación competitiva. Éstas incluyen:
Tomado de https://en.wikipedia.org/wiki/Competitive_programming


Responder