El tiempo constante es la complejidad absoluta al final del tiempo. Uno puede preguntarse: ¿hay algo no trivial que se pueda calcular en tiempo constante? Si nos atenemos al modelo de máquina de Turing, entonces no se puede hacer mucho, ya que la respuesta solo puede depender de un segmento inicial de longitud constante de la entrada, ya que las partes más lejanas de la entrada ni siquiera se pueden alcanzar en tiempo constante.
Por otro lado, si adoptamos el modelo de RAM de costo unitario algo más poderoso (y más realista), en el que las operaciones elementales en números -bit se cuentan como pasos individuales, entonces podremos resolver problemas no triviales tareas, incluso en tiempo constante. Aquí hay un ejemplo:
Instancia: enteros , cada uno dado en formato binario por bits.
Pregunta: ¿Existe un gráfico de -vértices, de modo que su conectividad de vértice sea , su conectividad de borde sea y su grado mínimo sea ?
Tenga en cuenta que, desde la definición, ni siquiera es obvio que el problema está en NP . La razón es que el testigo natural (el gráfico) puede necesitar una descripción larga de bits, mientras que la entrada es dada solo por O ( log n bits. Por otro lado, el siguiente teorema (verTeoría del gráfico extremode B. Bollobas) viene al rescate.
Teorema: Sean enteros. Existe un gráfico de n -vértices con conectividad de vértice k , conectividad de borde l y grado mínimo d , si y solo si se cumple una de las siguientes condiciones:
- ,
Dado que estas condiciones se pueden verificar en tiempo constante (en el modelo de RAM de costo unitario), el Teorema conduce a un algoritmo de tiempo constante en este modelo.
Pregunta: ¿Cuáles son algunos otros ejemplos no triviales de algoritmos de tiempo constante?
fuente
Respuestas:
El documento Algoritmos de aproximación de tiempo constante a través de mejoras locales de Nguyen y Onak ofrece muchos ejemplos de esquemas aleatorios de aproximación de tiempo constante: Coincidencia máxima (el tiempo de ejecución depende solo del grado máximo del gráfico), Fijar cobertura, etc. Los autores presentar un método para diseñar tales algoritmos.
fuente
Existen muchos ejemplos de juegos estudiados en la teoría de juegos combinatorios donde el estado de un juego puede describirse mediante un número constante de valores enteros. Para algunos de estos, una estrategia ganadora para el juego se puede calcular en tiempo constante. Pero también plantean preguntas sobre cuál es exactamente su modelo de cálculo.
Uno de los juegos combinatorios más simples y básicos es nim: uno tiene un número constante de montones de frijoles, y en un solo movimiento puedes eliminar cualquier número de frijoles de un montón, ya sea ganando o perdiendo (según las reglas que elijas) Si tomas el último frijol. La estrategia óptima se puede calcular en tiempo constante si permite operaciones booleanas xor bit a bit (es decir, el operador ^ en lenguajes de programación como C / C ++ / Java / etc.) ¿Es este un algoritmo de tiempo constante en su modelo?
Aquí hay uno donde se sabe que existe un algoritmo determinista exacto de tiempo constante (en un modelo de cómputo extendido posiblemente no realista que le permite probar la primalidad de un número en tiempo constante) pero no se sabe qué es ese algoritmo: dado un comienzo moverse en el juego de monedas de Sylver , determinar si es un movimiento ganador o perdedor. Se proporciona un diagrama de flujo para este problema en Berlecamp, Conway y Guy, Winning Ways , pero depende de un conjunto finito de contraejemplos para una caracterización general de los movimientos ganadores, y no se sabe cuál es ese conjunto (o incluso si es vacío).
Otro ejemplo interesante de la teoría de juegos combinatorios es el juego de Wythoff. Cada posición del juego puede describirse mediante un par de enteros (es decir, espacio constante, en su modelo de cálculo), los movimientos en el juego implican reducir uno de estos dos enteros a un valor menor, y la estrategia ganadora implica moverse a una posición donde La proporción entre estos dos enteros es lo más cercana posible a la proporción áurea. Pero en muchas posiciones de juego hay una opción: puedes reducir el mayor de los dos enteros hasta el punto donde es (casi) el entero más pequeño multiplicado por la proporción áurea, o el entero más pequeño dividido por la proporción áurea. Solo una de estas dos opciones será una jugada ganadora. Entonces, la estrategia óptima se puede definir en términos de un número constante de operaciones aritméticas, pero estas operaciones implican un número irracional, la proporción áurea. ¿Es ese un algoritmo de tiempo constante en su modelo? Talves esto'n logn
fuente
fuente