Los algoritmos aleatorizados (tiempo polinómico, resultado booleano) se encuentran en la clase de complejidad computacional RP, que es un subconjunto de NP donde residen los algoritmos no deterministas (tiempo polinómico, resultado booleano) y un superconjunto de P donde los deterministas (tiempo polinómico, resultado booleano) Los algoritmos residen.
La complejidad de los subconjuntos consiste en reducir los problemas de un conjunto a otro. Por lo tanto, RP ⊆ NP excluye la posibilidad de algoritmos aleatorios que también son no deterministas porque, de manera definitoria, un superconjunto contiene el subconjunto. Subconjunto significa que cada algoritmo RP (o cualquier algoritmo RP completo) puede reducirse a algún algoritmo NP (o cualquier algoritmo NP completo). P es un subconjunto de RP porque cada problema en P puede reducirse a un problema en RP donde la cantidad de entropía no controlada es 0.
Tangencialmente, esto es análogo a cómo cada problema en NC (cómputo paralelo) puede reducirse a un problema en P simulando el cómputo paralelo en una reducción a un problema en serie en P, pero aún no se ha demostrado que lo contrario sea cierto, es decir que cada problema en P es reducible a un problema en NC, ni demostrado que no sea cierto, es decir, la prueba inverosímil de que un problema P-completo no es reducible a un problema en NC. Puede ser posible que haya problemas que son inherentemente seriales y no pueden calcularse en paralelo, pero para probar que probar P ≠ NC parece ser inverosímil (por razones demasiado tangenciales para discutir en esta respuesta).
En términos más generales (es decir, sin limitarse a los tipos de resultados booleanos), los algoritmos aleatorios se distinguen de los algoritmos deterministas en el sentido de que parte de la entropía se origina externamente . Los algoritmos aleatorios se distinguen de los algoritmos no deterministas porque la entropía está limitada y, por lo tanto, se puede demostrar que los algoritmos aleatorios (y no no deterministas) siempre terminan.
La imprevisibilidad de los algoritmos no deterministas se debe a la incapacidad de enumerar todas las permutaciones posibles de la entropía de entrada (lo que resulta en la imprevisibilidad de la terminación). La imprevisibilidad de un algoritmo aleatorio se debe a la incapacidad de controlartoda la entropía de entrada (que da como resultado una imprevisibilidad de un resultado indeterminado, aunque se puede predecir la tasa de imprevisibilidad). Ninguna de estas son declaraciones sobre la imprevisibilidad de la respuesta correcta al problema, sino que la imprevisibilidad se manifiesta en el canal lateral de terminación y el resultado indeterminado, respectivamente. Parece que muchos lectores están combinando la imprevisibilidad en un área con la imprevisibilidad del resultado correcto, que es una combinación que nunca escribí (revise el historial de edición).
Es clave comprender que el no determinismo es siempre (en cualquier ciencia o uso del término) la incapacidad de enumerar la entropía universal (es decir, sin límites). Mientras que, la aleatorización se refiere al acceso a otra fuente de entropía (en programas de entropía diferentes y, por lo tanto, no bajo el control de las variables de entrada) que pueden o no estar ilimitadas.
Agregué el siguiente comentario debajo de la respuesta más popular actualmente al otro hilo que hace una pregunta similar.
Todas las ciencias usan la misma definición de no determinismo unificada en el concepto de entropía ilimitada. Los resultados impredecibles en todas las ciencias se deben a la incapacidad de enumerar a priori todas las salidas posibles de un algoritmo (o sistema) porque acepta estados ilimitados, es decir, clase de complejidad NP. Especificar una entrada particular para observar si se detiene y señalar que el resultado es idempotente es equivalente en otras ciencias a mantener constante el resto de la entropía del universo mientras se repite el mismo cambio de estado. La computación permite este aislamiento de entropía, mientras que las ciencias naturales no.
Agregando algunos de los mejores comentarios para aclarar mi punto sobre la única distinción sobresaliente entre aleatorizado y no determinista.
Es realmente bastante elegante y fácil ver la distinción, una vez que todos dejan de confundirlo al tratar de describirlo desde un punto de vista operativo en lugar de desde el punto de vista de la entropía más destacado.
@reinierpost todos están combinando la diferencia entre aleatorio y no determinista. Esto hace que su comentario se confunda. El algoritmo responde a la interacción de la entropía de entrada (variable) y su entropía interna de código fuente (invariante). El no determinismo es una entropía ilimitada. La entropía invariante puede incluso ser internamente ilimitada, como expandir los dígitos de π . Aleatorizado es que parte de la entropía no está acoplada a la entrada como se define (es decir, puede provenir de una llamada al sistema /dev/random
o una aleatoriedad simulada, por ejemplo, NFA o un PRNG).
.
La definición formal de @Raphael de autómata finito no determinista (NFA) es entropía de entrada finita (datos: la tupla de 5). Por lo tanto, cada NFA puede ejecutarse en una máquina de Turing determinista, es decir, no requiere una máquina completa de Turing no determinista. Por lo tanto, los NFA no están en la clase de problemas no deterministas. La noción de "no determinismo" en NFA es que su determinismo (aunque claramente presente ya que cada NFA se puede convertir en un DFA) no se expande explícitamente, no es lo mismo que el no determinismo de cómputo
.
@Raphael, el supuesto "no determinismo" en los NFA es realmente aleatoriedad, es el sentido de mi definición de la distinción entre aleatoriedad y no determinismo. Mi definición es que la aleatoriedad es donde parte de la entropía que no está bajo el control, el conocimiento (o la expansión no explícita deseada en el caso de un NFA) de la entrada al programa o función. Mientras que el verdadero no determinismo es la incapacidad de conocer la entropía en cualquier caso, porque no tiene límites. Esto es precisamente lo que distingue al azar del no determinismo. Por lo tanto, la NFA debería ser un ejemplo de lo primero, no lo último como usted afirmó.
.
@Raphael, como ya expliqué, la noción de no determinismo en los NFA combina lo no determinista con la entropía finita. Por lo tanto, el no determinismo es un concepto local de no expandir el determinismo como una forma de compresión o conveniencia, por lo tanto, no decimos que los NFA son no deterministas, sino que poseen apariencia de aleatoriedad a un oráculo que no está dispuesto a calcular la expansión determinista. Pero todo es un espejismo porque se llama expandirse determinísticamente porque la entropía no es ilimitada, es decir, finita.
Los diccionarios son herramientas. Aprende a usarlos.
adjetivo aleatorio
Estadística. o caracterizar un proceso de selección en el que cada elemento de un conjunto tiene la misma probabilidad de ser elegido.
ser o estar relacionado con un conjunto o con un elemento de un conjunto, cada uno de cuyos elementos tiene la misma probabilidad de ocurrencia
Por lo tanto, la aleatorización solo requiere que parte de la entropía de entrada sea equiprobable, lo que es congruente con mi definición de que parte de la entropía de entrada no puede ser controlada por el llamador de la función. Tenga en cuenta que la aleatorización no requiere que la entropía de entrada sea indecidible hasta la terminación.
En informática, un algoritmo determinista es un algoritmo que, dada una entrada particular, siempre producirá la misma salida, con la máquina subyacente siempre pasando por la misma secuencia de estados.
Formalmente, un algoritmo determinista calcula una función matemática; una función tiene un valor único para cualquier entrada en su dominio, y el algoritmo es un proceso que produce este valor particular como salida.
Los algoritmos deterministas se pueden definir en términos de una máquina de estados: un estado describe lo que una máquina está haciendo en un instante particular en el tiempo. Las máquinas de estado pasan de manera discreta de un estado a otro. Justo después de ingresar la entrada, la máquina está en su estado inicial o estado inicial. Si la máquina es determinista, esto significa que a partir de este momento, su estado actual determina cuál será su próximo estado; su curso a través del conjunto de estados está predeterminado. Tenga en cuenta que una máquina puede ser determinista y aún así nunca detenerse o terminar, y por lo tanto no puede entregar un resultado.
Esto nos dice que los algoritmos deterministas deben estar completamente determinados por el estado de entrada de la función, es decir, debemos ser capaces de demostrar que la función terminará (o no terminará) y eso no puede ser indecidible. A pesar del intento confuso de Wikipedia de describir no determinista, la única antítesis para determinista como se define anteriormente en Wikipedia, son los algoritmos cuyo estado de entrada (entropía) está mal definido. Y la única forma en que el estado de entrada puede estar mal definido es cuando no está acotado (por lo tanto, no se puede preanalizar determinísticamente). Esto es precisamente lo que distingue a una máquina de Turing no determinista (y muchos programas del mundo real que están escritos en lenguajes completos comunes de Turing como C, Java, Javascript, ML, etc.) de TM deterministas y lenguajes de programación como HTML, fórmulas de hojas de cálculo, Coq, Epigram,
En la teoría de la complejidad computacional, los algoritmos no deterministas son aquellos que, en cada paso posible, pueden permitir múltiples continuaciones (imagina a un hombre caminando por un sendero en un bosque y, cada vez que avanza, debe elegir qué bifurcación en el camino desea tomar). Estos algoritmos no llegan a una solución para cada ruta computacional posible; sin embargo, se garantiza que llegarán a una solución correcta para algún camino (es decir, el hombre que camina por el bosque solo puede encontrar su cabaña si elige alguna combinación de caminos "correctos"). Las elecciones pueden interpretarse como suposiciones en un proceso de búsqueda.
Wikipedia y otros intentan combinar la aleatorización con el no determinismo, pero ¿cuál es el punto de tener los dos conceptos si no los va a distinguir elocuentemente?
Claramente, el determinismo se trata de la capacidad de determinar. Claramente, la aleatorización se trata de hacer que parte de la entropía sea equiparable.
Incluir entropía aleatoria en el estado de un algoritmo no necesariamente lo hace indeterminable. Por ejemplo, un PRNG puede tener la distribución estadística equiprobable requerida, pero también puede ser completamente determinista.
La combinación de conceptos ortogonales es lo que las personas de bajo coeficiente intelectual. ¡Espero algo mejor que eso de esta comunidad!