El problema del cambio de monedas
Transcripción
El problema del cambio de monedas
El problema del cambio de monedas Algorı́tmica (Facultad de Informática) Curso 2006–2007 En un sistema monetario determinado existen N monedas de diferente valor v1 , v2 , . . . , vN ∈ N. Se supone que no hay lı́mite en el número de monedas disponibles de cada valor. Se desea obtener el número de mı́nimo de monedas que son precisas para devolver una cierta cantidad Q. Se puede demostrar fácilmente con un contraejemplo que una estrategia voraz no siempre va a encontar la solución óptima: {1, 2, 10, 25, 100} y Q = 130. Un algoritmo voraz devolverı́a una moneda de 100, una moneda de 25, dos monedas de 2 y una moneda de 1 (en total, 5 monedas). Se puede encontrar una solución mejor: una moneda de 100 y 3 monedas de 10, 4 monedas en total. El grafo de la figura 1 representa el espacio de búsqueda para una instancia del problema. 0 1 2 3 4 5 6 Figura 1: Grafo de búsqueda del problema del cambio de monedas para la instancia Q = 6 y monedas de valores {1, 2, 3, 5}. La solución (1, 0, 0, 1) está marcada en trazo discontinuo. Al vértice 4, por ejemplo, le llegan arcos de los vértices 3 (con una moneda de valor 1), 2 (con una moneda de valor 2), y 1 (con una moneda de valor 3). Sea Monedas(c) el número mı́nimo de monedas para devolver la cantidad c. Queremos encontrar Monedas(Q). La siguiente ecuación recursiva devuelve este valor: 0, si q = 0; Monedas(q) = mı́n (Monedas (q − v ) + 1), en otro caso. n 1≤n≤N,(q−vn )≥0 Una de las actividades de este proyecto plantea el mismo problema pero con limitación del número de monedas de cada valor. Es necesario reformular el problema suponiendo que sólo disponemos de mi monedas de valor vi , para 1 ≤ i ≤ N . 1