Autor Tema: Tiempo complejidad

0 Usuarios y 1 Visitante están viendo este tema.

26 Abril, 2024, 09:40 am
Respuesta #20

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

Estamos cerca. En realidad \( h \) puede ser cualquier real entre, en mi ejemplo, \( [0,10] \). Es decir, creo, que tu \( m \) es infinito, por eso pensé siempre en analizar las rectas y las regiones de \( h \) que se determinan, eso lleva, en el peor de los casos tenemos \( \displaystyle\frac{n(n-1)}{2}+1 \) regiones, pero una vez dentro de la región tengo que hallar los pesos que son \( n \) operaciones, por eso digo que es de \( O(n^3) \).

¿Pero los pesos depende del orden de los \( y \) entonces? Eso no me quedo claro. Si depende, si claro.

Por otra parte no me queda claro como se hace el proceso de optimización. Es decir incluso suponiendo que sólo hay una región, ¿exactamente como se pretende optimizar?¿con condiciones sobre la derivada?¿se conocen las derivadas de las funciones de manera explícita?.

Saludos.

26 Abril, 2024, 10:59 am
Respuesta #21

Quema

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 2,109
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Los pesos dependen del orden de los \( y \) y de su probabilidad. Pero el orden es el que digo?.

26 Abril, 2024, 11:32 am
Respuesta #22

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

Los pesos dependen del orden de los \( y \) y de su probabilidad. Pero el orden es el que digo?.

Si tienes que hallar los pesos para cada orden, creo que si \( O(n^3) \). Pero para mi sigue siendo muy oscuro el tema de la optimización. Si dices "para infinitos valores de \( h \)" es que realmente estás haciendo cálculos para un \( h \) genérico. ¿Es cálculo simbólico entonces? Es que no acabo de entender el conjunto del problema y eso me despista y me hace dudar un poco de toda la cuestión.

Saludos.

20 Mayo, 2024, 05:39 am
Respuesta #23

Quema

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 2,109
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
No entendí la parte donde si \( n \) puede tomar \( m \) valores el tiempo de complejidad de un método de fuerza bruta es \( A=O(m n \log n) \), si puedes explicarlo de nuevo. Además, eso halla el óptimo de \( RDU(Y(h)) \). El otro método que usa los puntos de intersección tampoco entendí cómo llegar a \( B=\max\{O(mn), O(n^2 \log n)\} \) si puedes explicarlo mejor. De nuevo, eso halla el valor óptimo de \( h \)? Además, si \( m\geq n \log n \) entonces \( A<B \) y en caso contrario hay que ver si \( m<n \) entonces \( A<B \) y en caso contrario \( A>B \), no?

20 Mayo, 2024, 10:06 am
Respuesta #24

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

No entendí la parte donde si \( n \) puede tomar \( m \) valores el tiempo de complejidad de un método de fuerza bruta es \( A=O(m n \log n) \), si puedes explicarlo de nuevo.

Indica exactamente qué punto no entiendes:

Citar
Suponiendo los \( y_i \) entiendo que hay que calcular:

\( RDU(Y)=\displaystyle\sum_{k=1}^n{}u(y_i)(w(p_1+\ldots+p_i)-w(p_1+\ldots+p_{i-1}) \)

Eso son:

- Calculamos \( a_i=\displaystyle\sum_{k=1}^i{}p_i  \), para \( 1\leq i\leq n \) que son \( n-1 \) operaciones.
- Calculamos \( w_i=w(a_i)-w(a_{i-1} \) que son \( 3(n-1) \) operaciones.
- Calculamos \( u(y_i)w_i \) y sumamos que son \( 2n-1 \) operaciones.

En total \( 6(n-1)+1 \) operaciones. Eso es \( O(n) \).

Si le añadimos el coste de ordenar los \( y_i \) eso sería \( O(n\cdot log(n)) \) (ya que \( O(n\,log(n))>O(n) \).

Si queremos hacer intervenir distintos valores de [ex]h[/tex] no veo forma de contar operaciones sino ponemos en juego CUANTOS valores de \( h \) queremos calcular. Dices \( m \) valores distintos.

En ese caso si repetimos lo anterior a lo bestia, serían operaciones del orden: \( O(m\cdot n\cdot log(n) \) (*).

Citar
Además, eso halla el óptimo de \( RDU(Y(h)) \).

¿Afirmas o preguntas? Lo de calcular el óptimo es casi una cuestión aparte. Es algo que no tengo claro. Tendría que ver que dice la literatura sobre optimización númerica, es algo que no tengo fresco. Desde luego si queremos hallar el máximo de una función \( f(h) \) con \( h\in [a,b] \), sobre la cual no sabemos NADA, más allá que poder evaluarla en cualquier valor \( h \) no se me ocurre otra forma de hacerlo que no sea por fuerza bruta, es decir, calcular \( m \) valores equidistribuidos en \( [a,b] \) y ver donde \( f(h) \) es mayor. Así que por ahora es el método que estoy considerando.

 Sin embargo, sospecho sin embargo que raramente será así. Información extra sobre la función \( f(h) \) cambia el panorama. Como caso extremo si \( f(h) \) es creciente el máximo está en \( f(b) \) y es inmediato. Si es cóncava, el máximo es único y se puede hacer un algoritmo mucho más óptimo parecido al de la bisección.

Citar
El otro método que usa los puntos de intersección tampoco entendí cómo llegar a \( B=\max\{O(mn), O(n^2 \log n)\} \) si puedes explicarlo mejor.

Lo mismo; intenta precisar la duda:

Citar
Con este punto de vista simplemente para cada valor de \( h \) volvemos a reordenar los \( y_i \). Otra opción sería como dices calcular los \( n(n-1)/2 \) cortes de las rectas que nos dan valores \( h_{ij} \) que indican cuando la recta \( y_i \) supera a la \( y_j \). En ese caso se podría reordenar sólo cuando los valores de \( h \) cruzan esos valores y además sólo con un intercambio de posición entre los índices \( i \) e \( j \).

En ese caso el número de operaciones serían \( O(nlog(n)) \) para la ordenación de los \( y_i \) iniciales. \( O(n(n-1)/2) \) para calcular esas intersecciones; pero habría que ordenarlas son: \( O(n(n-1)lob(n(n-1))=O(n^2log(n)) \) (aquí tengo dudas si esto se puede hacer de manera más óptima).

Y después \( O(m\cdot n) \) operaciones (ya que para cada valor de \( h \) ya no hay que reordenar las \( y_i \) sino cambiar de orden los índices \( h_{ij} \) se hayan sobrepasado al cambiar de \( h \). En total serán en el peor de los casos \( O(n(n-1)/2)=O(n^2) \) cambios.

En fin el coste sería:

\( max(O(m\cdot n),O(n^2log(n)) \)

Citar
De nuevo, eso halla el valor óptimo de \( h \)?


 Sobre esto lo mismo; lo halla por fuerza brutísima.

Citar
Además, si \( m\geq n \log n \) entonces \( A<B \) y en caso contrario hay que ver si \( m<n \) entonces \( A<B \) y en caso contrario \( A>B \), no?

Si tienes \( A=O(mnlog(n)) \) y \( B=max(O(m\cdot n),O(n^2log(n)) \):

- Si \( m\leq n \) entonces \( mnlog(n)\geq mn[tex] y [tex]mnlog(n)\geq n^2log(n) \) y por tanto \( A\geq B \).

- Si \( m<n \) entonces \( mnlog(n)<n^2log(n) \) y por tanto \( A\leq O(n^2log(n))\leq B \).

Saludos.

20 Mayo, 2024, 12:45 pm
Respuesta #25

Quema

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 2,109
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Es pregunta. Qué miden esos ordenes \( A \) y \( B \) el tiempo de calcular los \( m \) \( RDU(Y(h)) \)?. Además si tenemos esos \( m \) valores hallar el máximo sería reordenarlos que sería orden \( O(m \log m) \), no?.

Para un \( h \) determinado el tiempo de complejidad es \( O(n \log n) \) para \( m \) valores \( O(m n \log n) \) no?

En el tiempo de compleijdad de \( B \) hablas de \( y_i \) y \( y_j \) como si hubieran solamente dos rectas, cuando podría haber más de dos rectas, no entendí esa parte que discutes \( h{ij} \)

20 Mayo, 2024, 01:19 pm
Respuesta #26

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

Es pregunta. Qué miden esos ordenes \( A \) y \( B \) el tiempo de calcular los \( m \) \( RDU(Y(h)) \)?.

Si, calcularlos y hallar el máximo, que como te indico ahora no añade complejidad.

Citar
Además si tenemos esos \( m \) valores hallar el máximo sería reordenarlos que sería orden \( O(m \log m) \), no?.

No. Para calcular el máximo no hay que reordenar. El máximo de \( n \) elementos se hace en \( O(n) \). En este caso a medida que calculamos cada elemento se le compara con el máximo que llevamos hasta ahora. Entonces no añade ninguna complejidad (hay \( m \) elementos que ordenar).

Citar
Para un \( h \) determinado el tiempo de complejidad es \( O(n \log n) \) para \( m \) valores \( O(m n \log n) \) no?

Si.

Citar
En el tiempo de compleijdad de \( B \) hablas de \( y_i \) y \( y_j \) como si hubieran solamente dos rectas, cuando podría haber más de dos rectas, no entendí esa parte que discutes \( h{ij} \)

No. Me refiero a todos los posibles valores de [tyex]i,j[/tex] con \( 1\leq i<j\leq n \) que son \( n(n-1)/2 \). Eso no s da los \( n(n-1)/2 \) valores de \( h \) que llamo \( h_{ij} \) donde hay un cambio de orden de los \( y_i \) y por eso digo que cada vez que los atravesamos, hay que intercambiar el \( y_i \) con el \( y_j \).

Saludos.

20 Mayo, 2024, 02:18 pm
Respuesta #27

Quema

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 2,109
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
A ver, tenemos dos métodos (los dos son de alguna forma fuerza bruta, no?) uno da un orden \( A \) y el otro \( B \). Cuál es mayor dependerá de los valores que tomen \( m \) y \( n \). En algún momento, si entendí bien, habías mencionado como que hallar los puntos de intersección no mejoraba el tiempo de complejidad, cuando esto demuestra que si puede mejorarlo, no?

Por otro lado, yo proponía un tercer método transformando las probabilidades de los valores de la variable aleatoria equiprobables, eso se hacía hallando el mínimo común múltiplo de los denominadores de las probabilidades de cada valor que llamé \( t \). Decías que eso no mejoraba en nada el tiempo de complejidad. Ahora, creo que si siguiéramos ese método del MCM el tiempo de complejidad de hallar (por fuerza bruta de nuevo, no?) ese tiempo de complejidad es \( C=O(t \log t) \) con \( t\geq n \) (por favor confirmar si así, pues me llama la atención que no aparece el \( m \), o sería \( C=\max \{O(m n), O(t \log t)\} \)). Ahora \( C \) podría ser menor a \( A \) o \( B \), no?

20 Mayo, 2024, 03:19 pm
Respuesta #28

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

A ver, tenemos dos métodos (los dos son de alguna forma fuerza bruta, no?) uno da un orden \( A \) y el otro \( B \). Cuál es mayor dependerá de los valores que tomen \( m \) y \( n \). En algún momento, si entendí bien, habías mencionado como que hallar los puntos de intersección no mejoraba el tiempo de complejidad, cuando esto demuestra que si puede mejorarlo, no?

No creo haber dicho eso, y si lo dije me equivoqué.

Lo que dije, eso si, es que hacemos los cálculos para un \( h \) concreto, lo de los puntos de intersección no aporta nada.

Citar
Por otro lado, yo proponía un tercer método transformando las probabilidades de los valores de la variable aleatoria equiprobables, eso se hacía hallando el mínimo común múltiplo de los denominadores de las probabilidades de cada valor que llamé \( t \). Decías que eso no mejoraba en nada el tiempo de complejidad. Ahora, creo que si siguiéramos ese método del MCM el tiempo de complejidad de hallar (por fuerza bruta de nuevo, no?) ese óptimo es \( C=O(t \log t) \) con \( t\geq n \) (por favor confirmar si así, pues me llama la atención que no aparece el \( m \)). Ahora \( C \) podría ser menor a \( A \) o \( B \), no?

No, no. El \( m \) influye igualmente. Es imposible que no influya. Digamos si en un alarde de optimización para cada h conseguimos hacer los cálculos en tiempo constante \( 1 \). Como mínimo para optimizar (por fuerza bruta) necesitaríamos \( O(m) \).

Saludos.

20 Mayo, 2024, 04:02 pm
Respuesta #29

Quema

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 2,109
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Me estoy confundiendo. Estamos hallando el óptimo por fuerza bruta para un \( h \) que toma \( m \) valores. Tenemos tres métodos con tiempos de complejidad \( A,B \) y \( C \). ¿Cuál sería el tiempo de complejidad del método \( C \) ? El tiempo de hallar el MCM es \( O(t \log t) \), pero no veo cómo es que entra el \( m \).