Thursday, September 8, 2016

Arg - max 23






+

argmax funciones y argmin Re: funciones y argmax argmin dniu W 2010-06-17 20:28 HamsterofDeath pisze: todos los demás elementos? No. La principal diferencia entre "max" y "arg max" es que max devuelve el valor de la máxima, mientras que arg max devuelve el argumento (s) que maximizan una función dada. En caso general no puede haber más de uno, por lo que el método debe devolverlo (devuelve un iterable no debería ser un problema, simplemente añada. head si desea que sólo uno). En la mayoría de los casos sólo quiero conseguir el primer elemento de máx / mín, pero los métodos de máx / mín orden interna no me permite pasar función adicional para ellos. A menudo atrapar a mí mismo haciendo sortBy y luego tomando el primer elemento (la forma más concisa - una sola línea), pero tiene peor complejidad, que el buen arg max / min arg. este es un caso común. si lo fuera, estaría implementar de esta manera: valueOf (e) == maxValue) Ineficiente - se recorre la colección 2 veces. ¿Y si lo único que tienes es un iterador simple, que puede ser atravesado una vez? Creo que podría funcionar en TraversableOnce, para que puedas usarlo en iteradores. ir a través de su código de 3 veces hasta que estaba seguro de haber entendido lo que hace. Tal vez mi código podría ser mejor o más fácil de leer - No estoy pidiendo para añadir exactamente esta implementación, a pesar de que se ha optimizado para atravesar la colección exactamente una vez. Otra cosa que podría mejorarse es evitar el cálculo repetido de la función de la corriente máxima / mínima. Se puede hacer de una manera Seth Tisue demuestra en otro puesto. Un saludo, Piotr Re: Re: funciones y argmax argmin La eficiencia de las listas pequeñas reemplazados en varias ocasiones es lo ArrayBuffer y similares sobresalir en: def argmax [A, B 0) В В В В В В В bestB. clear () В В В В В В В bestI. clear () В В В В В В В bestB + b = В В В В В В В Besti + i = В В В В В> В В В В В else if (borrador == 0) В В В В В В В bestB + b = В В В В В В В Besti + i = В В В В В > В В В> В В В В bestI. toArray>> Si uno está preocupado por la eficiencia, no hay ninguna razón particular para batir a un grupo de la lista de objetos a menos que sus colecciones son extraordinariamente pequeña _o_ para atravesar varias veces. Si uno no está preocupado por la eficiencia, a continuación, se debe tener el enfoque más simple conceptualmente, que es máx / filtro o sortBy / takeWhile. es probable que sea altamente dependiente de la situación y por lo tanto más difícil de resolver (más allá de la aceptación de la preferencia personal) La planta intermedia de objetos pequeños en comparación con varias pasadas. 17/06/2010 HamsterofDeath dependiendo de la función de evaluación, tamaño de la colección, para la recogida y el número de elementos recogidos, atraviesa dos veces podría ser mucho más rápido que atraviesa una vez, pero la creación de una gran cantidad de listas pequeñas. en tales situaciones, generalmente prefiero la implementación más sencilla Re: funciones y argmax argmin dniu W 2010-06-17 21:36, Rex Kerr pisze: Creo que si uno implementa una rutina de biblioteca, uno debe preocuparse más acerca de la eficiencia de la simplicidad de implementación. Probablemente la mayoría de los usuarios de la biblioteca no se ven en el código fuente de las bibliotecas, siempre hace lo que se espera que. La rutina de la biblioteca no debe crear un montón de listas pequeñas, debe hacer una sola pasada y se debe, probablemente, escrita en un estilo más imprescindible para obtener un rendimiento. Así que en mi humilde opinión se puede comer su pastel y tenerlo también en este caso. Sin embargo, este es un offtopic Litle ahora. Yo no pido un centenar de diferentes implementaciones argmax (el proporcionado era sólo un ejemplo), pero si hay posibilidades de que se podría añadir a la biblioteca Scala si abro una entrada para él. Estoy cansado de repetir max y filtro para la misma materia en muchos lugares o copiar el objeto Util con las definiciones de argmax y argmin a cada proyecto en el que lo necesite. Independientemente de la aplicación, el argmax y argmin son más generales que max y min disponibles en la actualidad y que tienen una semántica bien entendido (especialmente por los matemáticos). El código usando argmax explícita es más fácil de leer que uno usando un mapa + max + filtro + ._1. Y si el código de la biblioteca se llevó a cabo de manera eficiente, que podría ser también mucho más rápido. Por cierto: La solución más sencilla con el mapa + max + filtro crea una gran cantidad de pequeñas tuplas temporales - en la mayoría de los casos muchos más que mi ejemplo de implementación ineficiente crea listas pequeñas. Saludos, Piotr KoЕ, aczkowski Re: Re: funciones y argmax argmin bestB a continuación no tiene por qué ser una colección, ya que nunca se utiliza cualquier valor de la misma distinta de la primera. El Jue, Jun 17, 2010 a las 16:36, Rex Kerr escribió: Eficiencia de las listas pequeñas reemplazados en varias ocasiones es lo ArrayBuffer y similares sobresalen en: def argmax [A, B 0) В В В В В В В bestB. clear () В В В В В В В bestI. clear () В В В В В В В bestB + b = В В В В В В В Besti + i = В В В В В> В В В В В else if (borrador == 0) В В В В В В В bestB + b = В В В В В В В Besti + i = В В В В В > В В В> В В В В bestI. toArray>> Si uno está preocupado por la eficiencia, no hay ninguna razón particular para batir a un grupo de la lista de objetos a menos que sus colecciones son extraordinariamente pequeña _o_ para atravesar varias veces. Si uno no está preocupado por la eficiencia, a continuación, se debe tener el enfoque más simple conceptualmente, que es máx / filtro o sortBy / takeWhile. es probable que sea altamente dependiente de la situación y por lo tanto más difícil de resolver (más allá de la aceptación de la preferencia personal) La planta intermedia de objetos pequeños en comparación con varias pasadas. 17/06/2010 HamsterofDeath dependiendo de la función de evaluación, tamaño de la colección, para la recogida y el número de elementos recogidos, atraviesa dos veces podría ser mucho más rápido que atraviesa una vez, pero la creación de una gran cantidad de listas pequeñas. en tales situaciones, generalmente prefiero la implementación más sencilla Viajo al futuro todo el tiempo. Re: Re: funciones y argmax argmin ¡Vaya - derecha are. В que normalmente regrese tanto el máximo y el argmax juntos, pero eso no es el objetivo aquí. В --Rex El Lun 21 Jun 2010 a las 12:53a. m., Daniel Sobral escribió: bestB a continuación no tiene por qué ser una colección, ya que nunca se utiliza cualquier valor de la misma distinta de la primera. El Jue, Jun 17, 2010 a las 16:36, Rex Kerr escribió: Eficiencia de las listas pequeñas reemplazados en varias ocasiones es lo ArrayBuffer y similares sobresalen en: def argmax [A, B 0) В В В В В В В bestB. clear () В В В В В В В bestI. clear () В В В В В В В bestB + b = В В В В В В В Besti + i = В В В В В> В В В В В else if (borrador == 0) В В В В В В В bestB + b = В В В В В В В Besti + i = В В В В В > В В В> В В В В bestI. toArray>> Si uno está preocupado por la eficiencia, no hay ninguna razón particular para batir a un grupo de la lista de objetos a menos que sus colecciones son extraordinariamente pequeña _o_ para atravesar varias veces. Si uno no está preocupado por la eficiencia, a continuación, se debe tener el enfoque más simple conceptualmente, que es máx / filtro o sortBy / takeWhile. es probable que sea altamente dependiente de la situación y por lo tanto más difícil de resolver (más allá de la aceptación de la preferencia personal) La planta intermedia de objetos pequeños en comparación con varias pasadas. 17/06/2010 HamsterofDeath dependiendo de la función de evaluación, tamaño de la colección, para la recogida y el número de elementos recogidos, atraviesa dos veces podría ser mucho más rápido que atraviesa una vez, pero la creación de una gran cantidad de listas pequeñas. en tales situaciones, generalmente prefiero la implementación más sencilla Viajo al futuro todo el tiempo.




No comments:

Post a Comment