Creo que dependiendo de la capacidad del algoritmo de irse modificando a si mismo. No estoy seguro si es el termino correcto pero creo que son los Algoritmos Adaptativos, que son los que se van modificando su conducta o flujo de acuerdo a su entrada y a la experiencia (heurística) en busca de una solución optima.
claro.. existen algoritmos adaptativos, pero estos se adecuan segun las entradas, la pregunta es si el mismo algoritmo entrega dos salidas distintas usando las mismas entradas..
Por supuesto que puede haber dos salidas distintas con el mismo algoritmos, en un algoritmos si lo escribimos, podemos poner 2 puertas por decirlo asi, tomamos la puerta 1 y subimos un piso, tomamos la puerta 2 y bajamos un piso, aunque la puerta 1 lleve a una cocina la puerta 2 puede llevar a una cocina, y dentro de la cocina de cada cuarto puede existir una salida... (cualquier motivo)
En fin, mientras mas caracteristicas tenga nuestro algoritmo mas eficiente sera.
Creo que no debería de haber dos salida distintas para una misma entrada, podría haber dos o mas formas de resolver un problema pero arrojando un mismo resultado.
La pregunta la entiendo como así:
Si ejecutamos un algoritmo dos veces con los mismos valores de entrada y si me da dos resultados distintos entonces algo estaría mal.
Bueno yo diría que si consideramos dos entradas iguales en un algoritmo sus salidas no deben ser distintas … por ejemplo si tengo el algoritmo de hacer una receta de cocina siempre que las entradas de esa receta (los ingredientes) sean los mismos el resultado o la salida va a ser la misma … o si tengo un algoritmo que me diga el factorial de un numero siempre que la entrada sea por ejemplo el numero 6 … al algoritmo siempre debería de arrojarme como salida el factorial de 6 y no de otro numero … si un algoritmo en determinado caso me arroja un resultado con una entrada y luego vuelvo a introducir la misma entrada y me arroja otro resultado el algoritmo a cambiado ….
¿Y si se trata de un algoritmo para generar números aleatorios en función de una semilla? Para la misma semilla podemos (debemos) obtener dos resultados diferentes.
Si se me había ocurrido ese problema y creo que seria algo así.
PROBLEMA: Obtener un numero aleatorio a partir del numero que se ingresa y no siendo menor a este.
SOLUCIÓN:
1-Inicia el programa y pide un numero.
2-El usuario ingresa el numero.
3-Se genera un numero aleatorio.
4-Si el numero generado es menor al numero ingresado volver al paso 3.
5-Regresar el numero generado.
6-Fin del programa.
Si bien el numero devuelto no es siempre el mismo aunque la entrada sea la misma, si cumple con su cometido ya que el problema es "obtener un numero aleatorio a partir del numero que se ingresa y no siendo menor a este".
Si siempre regresara el mismo valor para una misma entrada entonces no seria un numero aleatorio y seria mas bien, que se le esta aplicando una operación al numero.
Un resultado distinto seria que te regresara una letra o un numero menor al ingresado.
Le están dando más vueltas de las que merece la reflexión, Marco está tratando de establecer una de las características más básicas que debe cumplir un algoritmo: ESTAR BIEN DEFINIDO, que significa que todas las ejecuciones del algoritmo con los mismos datos de entrada deben devolver los mismos datos de salida. La otra condición básica que debe cumplir todo algoritmo es la de ser finito (acabar tras un número finito de pasos).
Bueno creo que todo depende del algoritmo, por ejemplo si nuestro algoritmo esta sumando el número que se ingresa con el número anterior, siempre será diferente el resultado incluso ingresando el mismo número más de una ves.
Estas hablando de un algoritmo al cual le ingresamos varios datos, en el caso que tu das, deberias ingresar los mismos datos otra vez.. y ahi ver si la respuesta es la misma
Yo pienso que siempre que el algoritmo no parta de datos almacenados anteriormente (caso de sumar un número con el anterior)o utilizar números aleatorios (la primera idea que me vino a la cabeza al ver la pregunta) el algoritmo debe dar una misma salida para una misma entrada. Si no, querría decir que el algoritmo es inestable e impredecible, características que debemos evitar por todos los medios.
Yo pienso que un algoritmo debe de dar siempre el mismo resultado si es que se hacen todas las instrucciones para lo cual fue hecho. Las multiples salidas habiendo una sola entrada se dan porque no se ha seguido un orden estricto de pasos/instrucciones; nuestro algoritmo es funcional pero no exacto.
Estoy de acuerdo con la estabilidad y lógica de un algoritmo, dando los resultados que se esperan. Pero destaco la excepción de una función random, donde a la misma entrada (la semilla, como mencionaron) se obtienen distintas salidas. Aunque puede ser una excepción dentro de la regla, pues es esperable (en ese algoritmo) que el resultado sea aleatorio.
Yo opino que hay dos maneras de abordar esta pregunta, por una parte tomemos el algoritmo que resuelve la ecuación general de 2do grado y tomemos como entrada lo siguiente: (X^2)+1; La misma naturaleza del algoritmo obliga a que con misma entrada se obtengan 2 resultados distintos (i y -i respectivamente).
Por otro lado, también por naturaleza determinista ese algoritmo obtendrá siempre los mismos resultados (i y -i) si se le proporciona la misma entrada ((X^2)+1), esto nos lleva a que si el algoritmo es determinista, siempre con las mismas entradas obtendremos iguales resultados (uno, o mas, iguales o distintos, dependiendo del algoritmo, pero siempre los mismos para una entrada en particular).
Ahora bien, como consecuencia de esto, ¿que pasa con los algoritmos no-deterministas?, ¿estos están obligados siempre a dar los mismos resultados con las mismas entradas?, No, los algoritmos no-deterministas no están obligados a entregar los mismos resultados con las mismas entradas. Entonces la respuesta a "¿Pueden haber dos o más salidas distintas considerando la misma entrada en un algoritmo?" es: Si, siempre y cuando sea un algoritmo no-determinista, en otro caso la respuesta es no.
Permiteme corregirte algunos puntos ricardo, en tu ejemplo: x'2 + 1 seria el algoritmo no la entrada, las entradas serian x=0,-1,1,-2,2... n Además las salidas serian i,-i, recordemos que puede haber una o más salidas... en todo caso muy bueno el analisis :)
Hola Marko!, mas bien estaba pensando en que el algoritmo era la solución a la ecuación general de 2do grado con la famosisima formula (que cariñosamente llamamos "Chicharronera" en mi escuela XD), x1 = (-b + (b^2-4ac)^1/2)/2a y x2 = (-b - (b^2-4ac)^1/2)/2a, entonces, ahora si, nuestra entrada sería x^2+1 (que es igual a 3 entradas: a=2, b=0, c=1) y da como resultado: i y -i, que son 2 salidas distintas, pero siempre las mismas si se introduce el mismo valor (x^2+1).
Un saludo Marko y gracias por compartir tus conocimientos con todos nosotros!
Supongo que de alguna manera el algoritmo que obtiene un numero "aleatorio" es no-determinista, eh ahí la razón por la cual se pueden obtener distintos resultados con una misma entrada. Otro ejemplo de algoritmo no-determinista que se me ocurre es el algoritmo de cifrado que usaba la maquina "Enigma" en la 2da Guerra Mundial. A pesar de que introdujera siempre una misma cadena de entrada, por ejemplo: "Conejo, Conejo!!", daba como resultado un cifrado distinto, dependiendo de la "semilla" que había en ese momento en la maquina, es por ello que fue tan difícil lograr romper el cifrado, hasta que papito Turing llego a hecharles la mano. XD
Por definicion un algoritmo debe producir una misma salida con una entrada igual.
Habrá oportunidades en las que internamente dada una condición/situación "aleatoria" nos genere una salida igualmente "aleatoria".
Es mi humilde opinión...
Por definición, un algoritmo debe entregar las mismas salidas, ante las mismas entradas...para el caso de bloques "Random", por ejemplo, debería darte el mismo numero aleatorio, si las instrucciones del random fueran las mismas, dada una condicion no aleatoria, sino en tiempo de ejecucion tan pequeña,que es casi incapaz de repetir..
Ejemplo1: sumar 3 numeros:
1.-tomar el 1°numero
2.-tomar el 2°numero y sumarlo al 1°
3.-tomar el 3°numero y sumarlo al resultado anterior
Ejemplo 2: loteria:
1.- Entrada de dato
2.- Funcion Random
3.- Salida dato
(pero si aqui la funcion random depende de la hora del pc,por ejemplo, y entregas el mismo dato de entrada,a la misma hora exacta, la salida es la misma)
En ambos casos, a mismas entradas, mismas salidas...excepto que la funcion random obligue a criterios irrepetibles...random, es un procedimiento, por lo cual considero que la aleateoridad no deberia formar parte, ni ser considerada como tal, un algoritmo...
si postulamos que un algoritmo no entrega siempre las mismas salidas ante las mismas entradas, habria que hacer un algoritmo por cada entrada, y un padre nuestro para que la implementacion resulte...simplemente no tendria sentido,
Saludos!!!
situación: juego de mesa con dados, nada complicado, simplemente recorres casillas, el primero que llegue gana.. algunas casillas contienen bonus para tu próxima lanzada
entrada: bonus de dado, puede ser 0,1,2,3,4 ó 5
algoritmo: lanzar un dado de 6 caras y sumarle el bonus que ganaste anteriormente..... misma entrada.. no siempre misma salida..
Estimados: Agradezco por la participación de los debates, veo que algunos han elaborado repuestas bastante amplias, y muchos han dado con la solución o parte de ésta.
La respuesta a la pregunta es si!!
Sin embargo este tipo de algoritmos son probabilísticos, en el cual consideramos los random, los demás ejemplos dados no son ejemplos validos, ya que definimos algorítimos con una o más entradas, es decir debemos considerar una secuencia de entradas, los algoritmos adaptativos se refiere a varios algoritmos dentro de un algoritmo, y va eligiendo cual es que más se acomoda, sin embargo con las mismas entradas el resultado es el mismo. Ahora, los algoritmos que estudiaremos debemos poder controlar la salida, este caso de algoritmos probabilisticos es un caso especial, que no sera considerado.
Espero se haya entendido cuales son ejemplos de entradas, y de salidas que era el fin de esta discusión.
Creo que dependiendo de la capacidad del algoritmo de irse modificando a si mismo. No estoy seguro si es el termino correcto pero creo que son los Algoritmos Adaptativos, que son los que se van modificando su conducta o flujo de acuerdo a su entrada y a la experiencia (heurística) en busca de una solución optima.
claro.. existen algoritmos adaptativos, pero estos se adecuan segun las entradas, la pregunta es si el mismo algoritmo entrega dos salidas distintas usando las mismas entradas..
Pero si el algoritmo se va modificando a si mismo ya no será el mismo algoritmo ¿no?
Por supuesto que puede haber dos salidas distintas con el mismo algoritmos, en un algoritmos si lo escribimos, podemos poner 2 puertas por decirlo asi, tomamos la puerta 1 y subimos un piso, tomamos la puerta 2 y bajamos un piso, aunque la puerta 1 lleve a una cocina la puerta 2 puede llevar a una cocina, y dentro de la cocina de cada cuarto puede existir una salida... (cualquier motivo)
En fin, mientras mas caracteristicas tenga nuestro algoritmo mas eficiente sera.
pero con la misma entrada???
Creo que no debería de haber dos salida distintas para una misma entrada, podría haber dos o mas formas de resolver un problema pero arrojando un mismo resultado.
La pregunta la entiendo como así:
Si ejecutamos un algoritmo dos veces con los mismos valores de entrada y si me da dos resultados distintos entonces algo estaría mal.
saludos
la pregunta la entendiste bien :)
Tendriamos que estar "locos" si esperamos que el mismo algoritmo con la misma entrada nos entregue un resultado distinto.
Bueno yo diría que si consideramos dos entradas iguales en un algoritmo sus salidas no deben ser distintas … por ejemplo si tengo el algoritmo de hacer una receta de cocina siempre que las entradas de esa receta (los ingredientes) sean los mismos el resultado o la salida va a ser la misma … o si tengo un algoritmo que me diga el factorial de un numero siempre que la entrada sea por ejemplo el numero 6 … al algoritmo siempre debería de arrojarme como salida el factorial de 6 y no de otro numero … si un algoritmo en determinado caso me arroja un resultado con una entrada y luego vuelvo a introducir la misma entrada y me arroja otro resultado el algoritmo a cambiado ….
¿Y si se trata de un algoritmo para generar números aleatorios en función de una semilla? Para la misma semilla podemos (debemos) obtener dos resultados diferentes.
Si se me había ocurrido ese problema y creo que seria algo así.
PROBLEMA: Obtener un numero aleatorio a partir del numero que se ingresa y no siendo menor a este.
SOLUCIÓN:
1-Inicia el programa y pide un numero.
2-El usuario ingresa el numero.
3-Se genera un numero aleatorio.
4-Si el numero generado es menor al numero ingresado volver al paso 3.
5-Regresar el numero generado.
6-Fin del programa.
Si bien el numero devuelto no es siempre el mismo aunque la entrada sea la misma, si cumple con su cometido ya que el problema es "obtener un numero aleatorio a partir del numero que se ingresa y no siendo menor a este".
Si siempre regresara el mismo valor para una misma entrada entonces no seria un numero aleatorio y seria mas bien, que se le esta aplicando una operación al numero.
Un resultado distinto seria que te regresara una letra o un numero menor al ingresado.
Espero este ejemplo sirva.
Saludos
Le están dando más vueltas de las que merece la reflexión, Marco está tratando de establecer una de las características más básicas que debe cumplir un algoritmo: ESTAR BIEN DEFINIDO, que significa que todas las ejecuciones del algoritmo con los mismos datos de entrada deben devolver los mismos datos de salida. La otra condición básica que debe cumplir todo algoritmo es la de ser finito (acabar tras un número finito de pasos).
Bueno creo que todo depende del algoritmo, por ejemplo si nuestro algoritmo esta sumando el número que se ingresa con el número anterior, siempre será diferente el resultado incluso ingresando el mismo número más de una ves.
Saludos.
Estas hablando de un algoritmo al cual le ingresamos varios datos, en el caso que tu das, deberias ingresar los mismos datos otra vez.. y ahi ver si la respuesta es la misma
Saludos
A ok, te refieres a correrlo una ves después cerrar y correrlo nuevamente. Creo que me dio por desvariar un poco :P
Saludos.
Si existen dos o más salidas distintas como respuesta a una misma entrada, significa que el algoritmo está mal.
Recordemos la frase de la semana!
Yo pienso que siempre que el algoritmo no parta de datos almacenados anteriormente (caso de sumar un número con el anterior)o utilizar números aleatorios (la primera idea que me vino a la cabeza al ver la pregunta) el algoritmo debe dar una misma salida para una misma entrada. Si no, querría decir que el algoritmo es inestable e impredecible, características que debemos evitar por todos los medios.
Yo pienso que un algoritmo debe de dar siempre el mismo resultado si es que se hacen todas las instrucciones para lo cual fue hecho. Las multiples salidas habiendo una sola entrada se dan porque no se ha seguido un orden estricto de pasos/instrucciones; nuestro algoritmo es funcional pero no exacto.
Estoy de acuerdo con la estabilidad y lógica de un algoritmo, dando los resultados que se esperan. Pero destaco la excepción de una función random, donde a la misma entrada (la semilla, como mencionaron) se obtienen distintas salidas. Aunque puede ser una excepción dentro de la regla, pues es esperable (en ese algoritmo) que el resultado sea aleatorio.
Yo opino que hay dos maneras de abordar esta pregunta, por una parte tomemos el algoritmo que resuelve la ecuación general de 2do grado y tomemos como entrada lo siguiente: (X^2)+1; La misma naturaleza del algoritmo obliga a que con misma entrada se obtengan 2 resultados distintos (i y -i respectivamente).
Por otro lado, también por naturaleza determinista ese algoritmo obtendrá siempre los mismos resultados (i y -i) si se le proporciona la misma entrada ((X^2)+1), esto nos lleva a que si el algoritmo es determinista, siempre con las mismas entradas obtendremos iguales resultados (uno, o mas, iguales o distintos, dependiendo del algoritmo, pero siempre los mismos para una entrada en particular).
Ahora bien, como consecuencia de esto, ¿que pasa con los algoritmos no-deterministas?, ¿estos están obligados siempre a dar los mismos resultados con las mismas entradas?, No, los algoritmos no-deterministas no están obligados a entregar los mismos resultados con las mismas entradas. Entonces la respuesta a "¿Pueden haber dos o más salidas distintas considerando la misma entrada en un algoritmo?" es: Si, siempre y cuando sea un algoritmo no-determinista, en otro caso la respuesta es no.
XD saludos a todos!
Permiteme corregirte algunos puntos ricardo, en tu ejemplo: x'2 + 1 seria el algoritmo no la entrada, las entradas serian x=0,-1,1,-2,2... n Además las salidas serian i,-i, recordemos que puede haber una o más salidas... en todo caso muy bueno el analisis :)
Hola Marko!, mas bien estaba pensando en que el algoritmo era la solución a la ecuación general de 2do grado con la famosisima formula (que cariñosamente llamamos "Chicharronera" en mi escuela XD), x1 = (-b + (b^2-4ac)^1/2)/2a y x2 = (-b - (b^2-4ac)^1/2)/2a, entonces, ahora si, nuestra entrada sería x^2+1 (que es igual a 3 entradas: a=2, b=0, c=1) y da como resultado: i y -i, que son 2 salidas distintas, pero siempre las mismas si se introduce el mismo valor (x^2+1).
Un saludo Marko y gracias por compartir tus conocimientos con todos nosotros!
Por alguna extraña razón se repitió el comentario de arriba aquí, y como no se pueden eliminar los comentarios, solo elimino la info. Saludos!
Supongo que de alguna manera el algoritmo que obtiene un numero "aleatorio" es no-determinista, eh ahí la razón por la cual se pueden obtener distintos resultados con una misma entrada. Otro ejemplo de algoritmo no-determinista que se me ocurre es el algoritmo de cifrado que usaba la maquina "Enigma" en la 2da Guerra Mundial. A pesar de que introdujera siempre una misma cadena de entrada, por ejemplo: "Conejo, Conejo!!", daba como resultado un cifrado distinto, dependiendo de la "semilla" que había en ese momento en la maquina, es por ello que fue tan difícil lograr romper el cifrado, hasta que papito Turing llego a hecharles la mano. XD
Por definicion un algoritmo debe producir una misma salida con una entrada igual.
Habrá oportunidades en las que internamente dada una condición/situación "aleatoria" nos genere una salida igualmente "aleatoria".
Es mi humilde opinión...
Por definición, un algoritmo debe entregar las mismas salidas, ante las mismas entradas...para el caso de bloques "Random", por ejemplo, debería darte el mismo numero aleatorio, si las instrucciones del random fueran las mismas, dada una condicion no aleatoria, sino en tiempo de ejecucion tan pequeña,que es casi incapaz de repetir..
Ejemplo1: sumar 3 numeros:
1.-tomar el 1°numero
2.-tomar el 2°numero y sumarlo al 1°
3.-tomar el 3°numero y sumarlo al resultado anterior
Ejemplo 2: loteria:
1.- Entrada de dato
2.- Funcion Random
3.- Salida dato
(pero si aqui la funcion random depende de la hora del pc,por ejemplo, y entregas el mismo dato de entrada,a la misma hora exacta, la salida es la misma)
En ambos casos, a mismas entradas, mismas salidas...excepto que la funcion random obligue a criterios irrepetibles...random, es un procedimiento, por lo cual considero que la aleateoridad no deberia formar parte, ni ser considerada como tal, un algoritmo...
si postulamos que un algoritmo no entrega siempre las mismas salidas ante las mismas entradas, habria que hacer un algoritmo por cada entrada, y un padre nuestro para que la implementacion resulte...simplemente no tendria sentido,
Saludos!!!
creo que solo puede tener una salida.
situación: juego de mesa con dados, nada complicado, simplemente recorres casillas, el primero que llegue gana.. algunas casillas contienen bonus para tu próxima lanzada
entrada: bonus de dado, puede ser 0,1,2,3,4 ó 5
algoritmo: lanzar un dado de 6 caras y sumarle el bonus que ganaste anteriormente..... misma entrada.. no siempre misma salida..
Estimados: Agradezco por la participación de los debates, veo que algunos han elaborado repuestas bastante amplias, y muchos han dado con la solución o parte de ésta.
La respuesta a la pregunta es si!!
Sin embargo este tipo de algoritmos son probabilísticos, en el cual consideramos los random, los demás ejemplos dados no son ejemplos validos, ya que definimos algorítimos con una o más entradas, es decir debemos considerar una secuencia de entradas, los algoritmos adaptativos se refiere a varios algoritmos dentro de un algoritmo, y va eligiendo cual es que más se acomoda, sin embargo con las mismas entradas el resultado es el mismo. Ahora, los algoritmos que estudiaremos debemos poder controlar la salida, este caso de algoritmos probabilisticos es un caso especial, que no sera considerado.
Espero se haya entendido cuales son ejemplos de entradas, y de salidas que era el fin de esta discusión.
Gracias por sus respuestas!!
Saludos