¿Cuál es la diferencia entre algoritmo no determinista y aproximado?

Básicamente son cosas completamente diferentes, aunque están relacionadas porque ambas son formas que a veces hacen que los problemas “difíciles de calcular” sean un poco más fáciles.

Considere el siguiente problema: dada una lista de ciudades que desea visitar, suponiendo que sea fácil encontrar la tarifa aérea más barata entre dos de ellas, averigüe en qué orden visitar las ciudades que tiene la tarifa total más barata mientras visita cada ciudad en menos una vez. (Las personas familiarizadas con la teoría de la complejidad lo reconocerán como el problema del Vendedor Viajero). Un algoritmo de aproximación para esto sería un algoritmo que se garantiza que le dará un conjunto de boletos de avión que podrían no ser los más baratos, pero no serán más que ( por ejemplo) 5% más caro que la opción más barata. Dicho esto, si ejecuta el algoritmo de aproximación varias veces para las mismas ciudades, le dará el mismo resultado cada vez, y si eso no es lo más barato, no tiene suerte. Un algoritmo no determinista no le dará el mismo resultado cada vez, pero si enumera todos los resultados posibles que podría darle, uno de ellos sería el conjunto más barato.

Estoy un poco confundido acerca de cómo planteaste esta pregunta. Los dos factores no se oponen entre sí. Puede tener un algoritmo que no sea determinista y aproximado y un algoritmo que no lo sea.

Un algoritmo no determinista tiene un componente aleatorio. Eso significa que si le da la misma entrada dos veces seguidas, no procesará la salida de la misma manera las dos veces.

Un algoritmo aproximado devuelve una respuesta que está cerca de la solución. Esto puede deberse a que la solución exacta es demasiado difícil de calcular o no tiene suficiente tiempo para obtener la solución exacta.

Ahora un algoritmo no determinista puede ser exacto o aproximado. Si un algoritmo no determinista es exacto, devolverá una de las soluciones óptimas. Si es aproximado, devolverá una de las soluciones aproximadas.

Del mismo modo, un algoritmo aproximado puede ser no determinista o determinista. Si es determinista y recibe la misma entrada dos veces, procesará la entrada de la misma manera y devolverá la misma respuesta. Si no es determinista, puede procesar la entrada de una manera diferente y potencialmente devolver una salida diferente.

Sé que esto fue un poco redundante, pero espero que ayude a entenderlo.