Selección en línea barata con comparaciones ponderadas

8

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.S1nSij Ci,jijSCi,j

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.n1S

¿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 ? S 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. n=3

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?n1

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.Ci,j=4d(i,j)dS0d(i,j)ki,j

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)

Jorge
fuente
1
Espera, ahora estoy confundido. Si conoce los valores y los costos de comparación por pares de antemano, minimizar el costo de comparación total es equivalente a calcular una arborescencia de costo mínimo en un gráfico dirigido acíclico completo. Pero si no conoce los valores, pero solo descubre su orden al realizar comparaciones, no existe una estrategia en línea que siempre encuentre el elemento más pequeño utilizando comparaciones de costo total mínimo; Un adversario inteligente puede obligarlo a perder dinero. ¿En qué versión estás interesado?
Jeff el
Ok, tal vez no hice mi pregunta lo suficientemente clara. Los valores son desconocidos y son "revelados" por las comparaciones (en realidad no, digamos que las comparaciones regresan solo si un objeto es mayor, igual o más pequeño que otro). Entonces estoy interesado en la segunda versión. Por cierto, nunca escuché de la arborescencia de costo mínimo. Al menos aprendí algo nuevo.
George
3
Debería editar su pregunta para que este punto sea explícito. Para responder a sus preguntas breves: no sé si el problema ya se conoce, pero realizar el conjunto óptimo de comparaciones en línea no es NP completo, porque es imposible (a menos que ). Lo mejor que puede esperar es una pequeña relación competitiva. n=2
Jeff el
1
Editado para mayor claridad (espero) y para enfatizar que esta es una pregunta de algoritmos en línea . ¡Comprueba que no he estropeado demasiado la declaración del problema!
Jeff el
¡Esto es mucho mejor! Muchas gracias. También agregué que la distancia entre dos objetos está limitada por algún número entero k.
George

Respuestas:

6

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=0C1,3=1C2,3=ϕ

  • Sin pérdida de generalidad, el algoritmo comienza comparando con S 2 , a un costo cero.S1S2

  • El adversario declara .S1>S2

  • Si el algoritmo compara con S 3 :S1S3

    • El adversario declara .S1>S3
    • El algoritmo debe comparar y S 3 .S2S3
    • El adversario declara , entonces S 2 es el mínimo.S2<S3S2
    • El costo total de las comparaciones del algoritmo es .1+ϕ
    • El adversario revela el orden total .S2<S3<S1
    • El costo total de las comparaciones óptimas ( y S 2 < S 3 ) es ϕ .S1>S2S2<S3ϕ
  • Si el algoritmo compara con S 3 :S2S3

    • El adversario declara , entonces S 2 es el mínimo.S3>S2S2
    • El costo total de las comparaciones del algoritmo es .ϕ
    • El adversario revela el orden total .S2<S1<S3
    • El costo total de las comparaciones óptimas ( y S 1 < S 3 ) es 1 .S1>S2S1<S31
  • 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 , dondeabcson 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}abcse maximiza cuandoa=0,b=1yc=ϕ.min{a+ca+b,a+b+ca+c}a=0b=1c=ϕ

En particular, si , el mejor algoritmo posible puede verse obligado a realizar las tres comparaciones.a+ca+b>a+b+ca+c

Jeffε
fuente
1
¡Ese es un muy buen primer paso! Gracias por su interés en mi problema (parece que está aún más interesado que yo :))
George
Buena observación Solo para tener en cuenta, este análisis asume un algoritmo determinista a menos que me equivoque.
Tsuyoshi Ito
Si, eso es correcto. Un algoritmo aleatorio podría funcionar mejor (en expectativa, contra un adversario ajeno).
Jeff el
-3

Un comienzo es:

  1. Ordenar todos los elementos de su matriz de costos C
  2. Realice primero la comparación de costo más baja, colocando al perdedor en el juego NOPE
  3. Para cada comparación de costos posterior, si alguno de los dos elementos está en NOPE, no realice la comparación
  4. Debe continuar hasta que todos los elementos menos uno estén en NOPE, que son las comparaciones n-1.

¿Es este un algoritmo decente? Depende del costo relativo de clasificar C frente a hacer las comparaciones en S:

  • Para cualquier elemento que esté evaluando, si hubo una comparación más barata que la actual, ya se realizó, y el elemento actual ganó esa comparación
  • Costo == n ^ 2 comparaciones numéricas para ordenar C, más n-1 comparaciones de S

-t.

Tristan Reid
fuente
1
Ci,j
¡Gracias! Ya pensé en este enfoque codicioso obvio (que es lo que usaré si no surge nada mejor). El problema es si ofrece garantías sobre la relación competitiva.
George
@JeffE: sí, el costo es la comparación n-1 con sus costos asociados, pero también el costo de clasificar la matriz de costos
Tristan Reid
@ George B. - Si el costo de ordenar C es relativamente barato, no creo que haya un mejor algoritmo para hacerlo. Este algoritmo siempre realizará exactamente n-1 comparaciones, nunca 1 más o 1 menos. Las comparaciones que realiza siempre serán las n-1 más baratas. Creo que la codicia es buena ...
Tristan Reid
d(A,B)d(A,C)d(B,C)ABACBCABel costo será 4 ^ 1 + 4 ^ 1 = 8, por lo que un algoritmo codicioso no funcionará aquí. Y sí, ordenar C no es un problema.
George