Algorithmes d'approximation pour les problèmes en P


34

On pense généralement à l’approximation des solutions (avec des garanties) aux problèmes difficiles à résoudre. Y a-t-il des recherches en cours sur l'approximation des problèmes déjà connus comme étant en P? Cela pourrait être une bonne idée pour plusieurs raisons. De prime abord, un algorithme d'approximation peut fonctionner avec une complexité beaucoup plus faible (ou même une constante beaucoup plus petite), utiliser moins d'espace ou être beaucoup mieux parallélisable.

De plus, les systèmes qui offrent des compromis temps / précision (FPTAS et PTAS) pourraient être très intéressants pour les problèmes en P avec des limites inférieures qui sont inacceptables avec des intrants importants.

Trois questions: y a-t-il quelque chose qui me manque qui fait que cela est évidemment une mauvaise idée? Des recherches sont-elles en cours pour développer une théorie de ces algorithmes? Sinon, au moins, est-ce que quelqu'un connaît des exemples individuels de tels algorithmes?


8
La géométrie algorithmique (par exemple, -nets) et de l' algèbre linéaire numérique (par exemple, différentes méthodes itératives) fournissent de nombreux exemples d'algorithmes d'approximation pour les problèmes qui sont trivialement dans P, mais exactement algorithmes polynomiaux peut être prohibitif pour grand monde réel ensembles de données. ϵ
Jukka Suomela

Réponses:


20

Comme le souligne Jukka, la géométrie informatique est une source riche de problèmes pouvant être résolus en temps polynomial, mais nous souhaitons obtenir des approximations rapides. Le résultat "idéal" classique est un "LTAS" (schéma d’approximation linéaire du temps) dont le temps d’exécution serait de la forme - généralement obtenus par extraction d’une constante (poly ( 1 / ϵ )) taille du noyau à partir des données, et exécution d'un algorithme coûteux sur ce noyau, avec la garantie qu'une solution exacte sur le noyau est une solution approximative sur la totalité de l'entrée.O(n+poly(1/ϵ))1/ϵ

Il existe de nombreuses astuces, réductions et principes, et le nouveau livre de Sariel Har-Peled en est rempli. Je ne pense pas qu'il existe une théorie de la complexité riche en tant que telle.


Je pense que c'est le plus proche d'une "théorie" que l'on pourrait avoir. Je vais regarder attentivement le livre. Merci!
aelguindy

15

Liste non exhaustive d'articles récents qui trouvent des solutions approximatives aux problèmes de P

1) Il existe une grande quantité de travail sur des solutions approchées des équations linéaires (symétrique diagonale dominante) en temps presque linéaire O(npolylog(n))

(liste des articles) http://cs-www.cs.yale.edu/homes/spielman/precon/precon.html

(En général, la plupart des solveurs itératifs pour les équations linéaires partagent le principe de approchant la solution vraie. Il en va de même pour les méthodes itératives qui résolvent des problèmes plus généraux (par exemple, certains programmes convexes / linéaires)).ϵ

2) Solutions approximatives à min / max coupes / flux http://people.csail.mit.edu/madry/docs/maxflow.pdfst

3) Recherche d'une approximation creuse de la transformée de Fourier d'un signal en temps sous-linéaire http://arxiv.org/pdf/1201.2501v1.pdf

4) Recherche du composant principal approximatif d’une matrice http://www.stanford.edu/~montanar/RESEARCH/FILEPAP/GossipPCA.pdf


11

Je ne suis pas au courant d'une théorie générale en cours d'élaboration sur des algorithmes d'approximation pour des problèmes de P. Je connais un problème particulier, qui s'appelle oracles de distance approximative:

Soit un graphe non orienté pondéré avec n = | V | nœuds et m = | E | bords, une requête de point à point demande la distance entre deux noeuds de , t V .G=(V,E)n=|V|m=|E|s,tV

Il existe un compromis à trois facteurs entre espace, temps d'interrogation et approximation dans le problème de l'oracle de distance. On peut répondre trivialement à chaque requête avec exactitude (approximation = ) en un temps O ( 1 ) en stockant la matrice de distance de toutes les paires; ou en temps O ( m + n log n ) en exécutant un algorithme de chemin le plus court. Pour les graphes volumineux, ces deux solutions peuvent nécessiter un espace prohibitif (pour stocker la matrice) ou un temps d'interrogation (pour exécuter un algorithme de chemin le plus court). Par conséquent, nous permettons une approximation.1O(1)O(m+nlogn)

k

Pour les graphes clairsemés, un compromis plus général d'espace-approximation-temps peut être montré .


11

Nous cherchons souvent des solutions approximatives à des problèmes simples tels que trouver le chemin le plus court dans un graphique, trouver le nombre d'éléments uniques dans un ensemble. La contrainte ici est que l'entrée est grande et nous voulons résoudre le problème approximativement en utilisant un seul passage sur les données. Il existe plusieurs algorithmes de "streaming" conçus pour obtenir des solutions approximatives en temps linéaire / quasi linéaire.

O(nm)nm




8

Je pense que tout le domaine des flux de données et des algorithmes sub-linéaires est un effort dans cette direction. Dans le flux de données, l’accent est mis sur la résolution des problèmes de l’espace o (n) et idéalement de l’espace O (polylog (n)), tandis que dans les algorithmes sub-linéaires, vous essayez d’obtenir des algorithmes avec le temps d’exécution de o (n). Dans les deux cas, il est souvent nécessaire de compromettre l'utilisation d'un algorithme d'approximation aléatoire.

Vous pouvez commencer avec le matériel sur cette page et cela .


8

ϵϵ. Il existe un certain nombre de documents sur la résolution de cas particuliers de problèmes de programmation linéaire tels que les flux de produits multiples (et plus généralement l'emballage et le recouvrement de LP) environ. Il n'y a pas de théorie distincte de l'approximation pour les problèmes dans P vs problèmes qui sont dans NP (nous ne savons pas si P est égal à NP ou non). On peut parler d'une certaine technique applicable à une certaine classe de problèmes. Par exemple, il existe des techniques générales connues pour résoudre approximativement le compactage et couvrir des programmes linéaires et certaines variantes.


4

Dimitris mentionne approximativement les transformées de Fourier. cela est largement utilisé dans la compression d'image, par exemple dans l'algorithme JPEG. [1] Bien que je n’aie pas vu de document mettant l’accent sur cela, il semble en quelque sorte qu’une compression avec perte [2] (avec des limites pouvant être dérivées) puisse également être considérée comme un algorithme d’approximation à P-temps. les aspects d'approximation sont très développés et optimisés / spécialisés dans le sens où ils sont optimisés de sorte qu'ils ne puissent pas être perçus par la vision humaine, c'est-à-dire que la perception humaine d'artefacts de codage (définie grossièrement comme différence entre approximation et compression sans perte) est minimisée.

Cela est lié aux théories sur la perception de l'œil humain ou sur son "approximation" par l'encodage des couleurs via un processus de type algorithmique. en d'autres termes, le schéma / algorithme d'approximation théorique est en fait conçu intentionnellement pour correspondre au schéma / algorithme d'approximation physique / biologique (codé par le traitement de l'information biologique, à savoir les neurones dans le système visuel humain).

la compression est donc étroitement liée à l'approximation. en JPEG, la transformée de Fourier est approximée par la transformée en cosinus discrète DCT [3]. des principes similaires sont utilisés sur plusieurs images pour la norme de compression vidéo MPEG. [4]

[1] compression jpeg, wikipedia

[2] compression avec perte, wikipedia

[3] DCT, transformée en cosinus discrète, wikipedia

[4] MPEG, wikipedia


1

Peut-être que cela ne répond pas exactement à votre question, car pour l’instant, je ne peux que me souvenir de certaines heuristiques, mais je suis certain qu’il existe des approximations, car je les ai déjà vues.

O(F(k)*|g|α), comme la résolution de TSP dans des graphes de largeur d’arbre délimité, ou la recherche de décomposition en arborescence de graphes de petite largeur. Mais en réalité ils ne sont pas assez bons etF(k)est trop grand pour être utilisé dans le monde réel. Donc, utiliser des approximations ou des heuristiques convient très bien, par exemple, vous pouvez jeter un coup d'œil sur l' heuristique pour TSP dans les graphes à largeur d'arbre liée , ou sur certains algorithmes pour le problème de Maximum Agreement Forest et ses approximations / heuristiques ultérieures (un simple Google affiche les résultats en 2010, 2011). ), ou des algorithmes pour trouver la décomposition en arbre de graphes.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.