Assintóticos para troca de moedas

13

Dado n denominações de moedas, com e sendo números aleatórios distribuídos uniformemente no intervalo . Assintoticamente, para qual fração de moedas o algoritmo ganancioso gera uma mudança ótima usando esse conjunto de denominações?c1=1c2<c3<..<cn[2,N]

A resposta é conhecida por 3 denominações ; mas e o caso geral?

Ganesh
fonte
2
O estabelecimento da probabilidade para 4 denominações foi proposto por Thane Plambeck, que também forneceu uma expressão para a probabilidade para 3 denominações (veja o link fornecido pelo OP). O OP está fazendo uma pergunta mais geral sobre o comportamento assintótico dessa probabilidade. Talvez isso seja mais adequado para math.SE e MO, com assintóticos. @ Ganesh: Qual é a sua motivação no TCS ou o motivo da tag ds.algorithms?
András Salamon
1
@ Andras, isso é muito um problema da teoria da complexidade. Por exemplo, se a abordagem gananciosa obtém a solução ideal em 90% das vezes, também posso esquecer a programação dinâmica e me contentar com soluções abaixo do ideal nos 10% restantes. Talvez isso seja mais apropriado em Math. *, Mas a motivação está no TCS. Finalmente, a "etiqueta certa" me escapou - então eu pensei que ds.algorithms era a melhor aproximação.
Ganesh

Respostas:

9

Esta não é uma resposta, mas talvez isso aponte você ou outra pessoa na direção certa.

Eu encontrei o artigo de D. Kozen e S. Zaks chamado "Limites ideais para o problema de mudança" em que eles fornecem condições para quando o algoritmo guloso de criação de mudanças de uma instância de mudança de moeda é ideal. Vou usar a notação deles.

Dado um exemplo moeda mudança de moedas distintas ( C 1 , C 2 , C 3 , , c m - 1 , c m ) C 1 = 1 < c 2 < c 3 < < c m - 1 < c m um função M ( x ) que representa o número óptimo de moedas necessárias para fazer a mudança para xm

(c1,c2,c3,,cm-1,cm)
c1=1<c2<c3<<cm-1<cm
M(x)x e uma função representando o número de moedas necessárias para fazer cobiça com mudança para x , então se M ( x ) G ( x ) , existe um contraexemplo no intervalo c 3 + 1 < x < c m - 1 + c mG(x)xM(x)G(x)
c3+1<x<cm-1+cm

Eles continuam mostrando que

xc3+1<x<cm-1+cm

G(x)G(x-c)+1
c(c1,c2,,cm)
G(x)=M(x)

Isso nos fornece um teste "eficiente" (até o tempo pseudo-polinomial) para determinar se uma instância de troca de moeda é gananciosa ou não.

Usando o exposto, executei uma simulação curta cujos resultados são plotados em uma escala de log-log abaixo

insira a descrição da imagem aqui

m[1N] .

m=383N-12

pm(N)N-(m-2)2

pm(N)mN

mN trabalho do indica que a energia é muito irregular no fundo para esperar que as manobras locais (por exemplo, manobras gananciosas) ofereçam uma solução ideal. Obviamente, isso é para o Problema da Partição Numérica e é fornecido apenas para fornecer alguma intuição em vez de uma resposta definitiva.

(1,5,10,25,50.,100,200,500,1000,2000,5000,10000)) que não parecem ser distribuídos uniformemente. Talvez olhar para outras distribuições para gerar as denominações de moedas traria resultados não triviais no grande limite do sistema. Por exemplo, uma distribuição da lei de energia pode gerar denominações de moedas mais semelhantes às dos EUA.

user834
fonte