Asintóticos para el cambio de monedas

13

Dadas denominaciones de monedas, con c 1 = 1 y c 2 < c 3 < . . < c n son números aleatorios distribuidos uniformemente en el rango [ 2 , N ] . Asintóticamente, ¿para qué fracción de monedas el algoritmo codicioso genera un cambio óptimo usando este conjunto de denominaciones?norteC1=1C2<C3<..<Cnorte[2,norte]

La respuesta es conocida por 3 denominaciones ; pero ¿qué pasa con el caso general?

Ganesh
fuente
2
Thane Plambeck planteó la probabilidad de 4 denominaciones, quien también proporcionó una expresión para la probabilidad de 3 denominaciones (consulte el enlace proporcionado por el OP). El OP hace una pregunta más general sobre el comportamiento asintótico de esta probabilidad. Quizás esto sea más adecuado para matemáticas. SE y MO, con etiquetas asintóticas. @Ganesh: ¿Cuál es su motivación TCS, o la razón de la etiqueta ds.algorithms?
András Salamon
1
@ Andras, este es un problema de teoría de la complejidad. Por ejemplo, si el enfoque codicioso obtiene una solución óptima, digamos el 90% del tiempo, también podría olvidar la programación dinámica y conformarme con soluciones subóptimas el 10% restante del tiempo. Quizás esto sea más apropiado en matemáticas. *, Pero la motivación radica en TCS. Finalmente, la "etiqueta correcta" se me escapó, así que pensé que ds.algorithms era la mejor aproximación.
Ganesh

Respuestas:

9

Esta no es una respuesta, pero tal vez esto lo guíe a usted u otra persona en la dirección correcta.

Encontré el artículo de D. Kozen y S. Zaks llamado "Límites óptimos para el problema de hacer cambios", en el que dan las condiciones para cuando el algoritmo de creación de cambio codicioso de una instancia de cambio de moneda es óptimo. Usaré su notación.

Dada una instancia de cambio de monedas de monedas distintas ( c 1 , c 2 , c 3 , , c m - 1 , c m ) c 1 = 1 < c 2 < c 3 < < c m - 1 < c m a función M ( x ) que representa el número óptimo de monedas necesarias para realizar cambios para x y una funciónmetro

(C1,C2,C3,,Cmetro-1,Cmetro)
C1=1<C2<C3<<Cmetro-1<Cmetro
METRO(X)X representa el número de monedas necesarias para realizar cambios con avidez para x , entonces si M (sol(X)X , existe un contraejemplo en el rango c 3 + 1 < x < c m - 1 + c mMETRO(X)sol(X)
C3+1<X<Cmetro-1+Cmetro

Continúan demostrando que

XC3+1<X<Cmetro-1+Cmetro

sol(X)sol(X-C)+1
C(C1,C2,,Cmetro)
sol(X)=METRO(X)

Esto nos da una prueba "eficiente" (hasta pseudo polinomio) para determinar si una instancia de cambio de moneda es codiciosa o no.

Usando lo anterior, he realizado una breve simulación cuyos resultados se trazan en una escala de log-log a continuación

ingrese la descripción de la imagen aquí

metro[1norte]

metro=383norte-12

pagmetro(norte)norte-(metro-2)2

pagmetro(norte)metronorte

En el grande metronorte

(1,5 5,10,25,50,100,200,500,1000,2000,5000,10000)) que no parecen estar distribuidas uniformemente. Quizás mirar otras distribuciones para generar las denominaciones de monedas arrojaría resultados no triviales en el límite del sistema grande. Por ejemplo, una distribución de la ley de potencia podría generar denominaciones de monedas que son más similares a las de EE.

usuario834
fuente