Fournir un exemple précis dans l'analyse d'algorithme d'approximation

8

Disons que j'ai trouvé un algorithme à 2 approximations pour un certain problème et je veux montrer que l'analyse est serrée.

Dois-je maintenant trouver un exemple de taille générique ou suffit-il de montrer que j'ai un exemple de taille pour lequel l'algorithme donne ?ndix2OPT

stev
la source

Réponses:

6

Cela dépend de votre définition du rapport d'approximation. Normalement, le rapport d'approximation est défini comme le pire rapport entre la solution optimale et celle produite par votre algorithme. Si tel est le cas, tout ce dont vous avez besoin pour montrer que le ratio est serré est de trouver un mauvais exemple.

Parfois, cependant, vous prouvez quelque chose comme UNELg2OPT+1. Cela signifie que votre rapport d'approximation est vraiment2+o(1). Pour montrer que c'est serré, vous aurez besoin d'un exemple pour une infinité de tailles (mais pas nécessairement pour une taille générique ; peut-être que tous vos exemples ont une taille égale).

Yuval Filmus
la source
3

Si votre algorithme atteint une approximation de 1,5 sur tout sauf un ensemble fini S d'instances, sur lesquelles votre algorithme réalise une approximation 2, alors vous pouvez "améliorer" votre algorithme en "câblant" les solutions optimales pour les instances de Sdans votre algorithme. En bref, à des fins théoriques, un algorithme qui réussit sur tout sauf un ensemble fini d'instances est tout aussi bon qu'un algorithme qui réussit toujours. Par conséquent, un exemple serré théoriquement significatif est en fait une famille infinie d'exemples serrés. Comme le dit Yuval, n'importe quelle famille infinie d'exemples fera l'affaire, vous n'avez pas besoin d'un exemple pour chaque taille d'instance.

Cela étant dit, la plupart des problèmes vous permettent de «faire évoluer» un petit exemple en un plus grand.

Sasho Nikolov
la source
Mais s'il y a trop de mauvaises instances sur lesquelles vous souhaitez que l'algorithme soit câblé, ne rencontrez-vous pas le problème que votre algorithme ne s'exécute plus en polytime, car vous devez vérifier quel cas de câblage à appliquer?
user695652
@ user695652 "fini" S signifie que |S|=O(1). vous pouvez choisir dans quel cas appliquerO(1)temps. bien sûr, cela pourrait être une constante ÉNORME - mais c'est la nature de l'analyse asymptotique.
Sasho Nikolov