Supongamos que queremos encontrar el elemento más pequeño de un conjunto , cuyos elementos están indexados de a . No tenemos acceso a los valores de estos elementos, pero podemos comparar cualquiera de los dos elementos de para ver cuál es más pequeño. Para cualquier índices y , hay un asociado costo para comparar el ésimo y ésimo elementos de . La matriz de costos completa se nos proporciona por adelantado.
Es bien sabido que los comparaciones son necesarias y suficientes para encontrar el elemento más pequeño de . Sin embargo, dado que cada comparación puede tener un costo diferente, también queremos mantener el costo total de las comparaciones lo más pequeño posible.
¿Existe un algoritmo en línea que encuentre una secuencia de comparaciones de costo total pequeño que encuentre el elemento más pequeño de ? No existe un algoritmo en línea que encuentre el conjunto de comparaciones con un costo total mínimo , incluso cuando , pero quizás haya un algoritmo en línea con una pequeña relación competitiva.
En particular, ¿es útil permitir que el algoritmo en línea realice más que comparaciones? ¿Es mejor hacer varias comparaciones baratas "adicionales" en lugar de algunas comparaciones costosas?
Estoy especialmente interesado en el caso , donde d es una métrica discreta sobre el conjunto S , y 0 ≤ d ( i , j ) ≤ k , para todos i , j . Un algoritmo en línea óptimo todavía es imposible en esta configuración.
Cualquier referencia a problemas similares es apreciada. No estoy buscando a alguien para resolver mi problema (aunque algunas ideas pueden ayudar y son apreciadas). Solo quiero saber si se conoce este problema. (No pude encontrar nada)
Respuestas:
El análisis de casos de fuerza bruta revela que la proporción competitiva óptima para el caso especial , sin otras restricciones en la matriz de costos, es la proporción áurea ϕ = ( √n=3 . Por lo tanto, ningún algoritmo en línea puede lograr una relación competitiva mejor queϕ.ϕ=(5–√+1)/2 ϕ
Suponga que , C 1 , 3 = 1 y C 2 , 3 = ϕ .C1,2=0 C1,3=1 C2,3=ϕ
Sin pérdida de generalidad, el algoritmo comienza comparando con S 2 , a un costo cero.S1 S2
El adversario declara .S1>S2
Si el algoritmo compara con S 3 :S1 S3
Si el algoritmo compara con S 3 :S2 S3
En cualquier caso, las comparaciones del algoritmo cuestan un factor de más que el conjunto óptimo de comparaciones para el orden total revelado.1+ϕϕ=ϕ1=ϕ
En términos más generales, la relación competitiva es , dondea≤b≤cson los tres costos de comparación. (Hay más casos a considerar aquí, porque hay algoritmos óptimos que no realizan la comparación más barata primero, pero el análisis de casos sigue siendo elemental). Los cálculos tediosos implican que la expresiónmin{a+cmin{a+ca+b,a+b+ca+c} a≤b≤c se maximiza cuandoa=0,b=1yc=ϕ.min{a+ca+b,a+b+ca+c} a=0 b=1 c=ϕ
En particular, si , el mejor algoritmo posible puede verse obligado a realizar las tres comparaciones.a+ca+b>a+b+ca+c
fuente
Un comienzo es:
¿Es este un algoritmo decente? Depende del costo relativo de clasificar C frente a hacer las comparaciones en S:
-t.
fuente