Quels sont les problèmes où nous savons que nous avons un algorithme optimal?


15

Quels sont les problèmes non triviaux où nous savons que l'algorithme actuel que nous avons est asymptotiquement optimal? (Pour les machines de turing)

Et comment cela est-il prouvé?


11
Une machine de turing est un modèle délicat pour les limites inférieures. Changer le defn peut changer le polynôme dans le temps de fonctionnement, vous devez donc être un peu plus précis.
Suresh Venkat

Comment définissez-vous non trivial?
funkstar

1
Comme le dit Suresh, le type de MT que vous utilisez a une influence. Je suppose que pour la langue des palindromes (mots que vous pouvez lire à l'envers), nous avons une TM 1 bande optimale qui prend étapes pour décider de la langue. Et pour les TM 2 bandes, il est décidable en temps linéaire, donc à peu près optimal aussi. O(n2)
Bruno

Réponses:


18

Tout algorithme qui prend un temps linéaire et doit lire toute son entrée doit être asymptotiquement optimal. De même, comme le commente Raphaël, tout algorithme dont le temps d'exécution est du même ordre que la taille de sortie est optimal.


10
De même, tout algorithme dont le temps d'exécution est du même ordre que la taille de sortie est optimal.
Raphael

9
Je crois que cette réponse et le commentaire qui la suit constituent l'état de l'art complet.
Jeffε

9
Eh bien, c'était
décevant

1
Pour mémoire, le commentaire de Jɛ ff E semble se référer à la réponse de Shir ci-dessous.
András Salamon

1
Je faisais référence à la réponse de Max, pas à celle de Shir, et au commentaire de Raphaël sur la réponse de Max.
Jeffε

8

Si la mesure de complexité que vous envisagez est la complexité de la requête, c'est-à-dire le nombre de fois où la machine doit regarder l'entrée pour résoudre un problème particulier, il existe de nombreux problèmes pour lesquels nous avons des algorithmes optimaux. La raison en est que les limites inférieures pour la complexité des requêtes sont plus faciles à atteindre que les limites inférieures pour la complexité du temps ou de l'espace, grâce à certaines techniques populaires, notamment la méthode de l' adversaire .

L'inconvénient, cependant, est que cette mesure de complexité est presque exclusivement utilisée dans le traitement de l'information quantique car elle fournit un moyen facile de prouver un écart entre la puissance de calcul quantique et classique. L'algorithme quantique le plus connu dans ce cadre est l'algorithme de Grover . Étant donné une chaîne binaire pour laquelle il existe un seul i tel que x i = n , vous devez trouver i . Classiquement (sans ordinateur quantique), l'algorithme le plus trivial est optimal: il faut interroger cette chaîne n / 2 fois en moyenne pour trouverX1,,XnjeXje=njen/2 . Grover a fourni un algorithme quantique qui le fait dans O ( jeinterroge la chaîne. Cela s'est également avéré optimal.O(n)


2
En effet, la complexité des requêtes est la base sous-jacente de la réponse de Max. Pour la plupart des problèmes, tout algorithme "doit lire l'intégralité de l'entrée" ou au moins une fraction constante de l'entrée.
Jeffε

6
  • Si vous êtes prêt à modifier votre modèle, plusieurs limites inférieures dans les structures de données sont strictes. Voir Limites inférieures pour les structures de données pour les pointeurs vers de bonnes références pour les limites inférieures dans les structures de données.
  • À partir de la borne pour le tri dans le modèle de comparaison que certaines personnes ont mentionné ici, vous pouvez obtenir une borne similaire pour le problème de coque convexe en considérant le cas où l'entrée est composée de points le long du graphique de une fonction croissante dans le premier quadrant de l'avion.Ω(nlogn)

2
+1 pour mentionner les structures de données. Mais je ne pense pas qu'il soit possible d'obtenir une limite inférieure utile pour les coques convexes via les limites inférieures de comparaison pour le tri. La raison en est que le modèle de comparaison n'est pas assez puissant pour calculer les coques convexes. Ce qui fonctionne à la place, c'est d'utiliser un modèle plus puissant tel que des arbres de décision algébriques dans lesquels les coques peuvent être calculées, puis d'adapter la borne inférieure pour le tri à ce modèle plus puissant.
David Eppstein

C'est logique, merci pour la clarification!
Abel Molina

3
  1. Le tri par comparaison à l'aide de comparaisons (tri par fusion, pour n'en nommer qu'un) est optimal, la preuve consiste simplement à calculer la hauteur d'un arbre avec n ! feuilles.O(nlogn)n!

  2. En supposant que la conjecture des jeux uniques, Khot, Kindler, Mossel et O'donnell ont montré qu'il est NP-complet d'approcher Max-Cut mieux que l'algorithme de Goemans et Williamson. Donc, dans ce sens, G&W est optimal (en supposant également que ).PNP

  3. Certains algorithmes distribués peuvent se révéler optimaux en ce qui concerne certaines conditions (par exemple, la proportion de processeurs contradictoires), mais puisque vous avez mentionné les machines Turing, je suppose que ce n'est pas le type d'exemples que vous recherchez.


2
Que le point 2 réponde ou non à la question dépend de ce que le demandeur entend par «optimal», bien que je doute que le demandeur demande dans ce sens (sinon il y a beaucoup, beaucoup de résultats d'approximation serrés qui ne nécessitent même pas de CGU). De plus, je ne pense pas que le point 1 ou 3 réponde à la question.
Tsuyoshi Ito

@TsuyoshiIto, il est difficile de deviner ce que le demandeur voulait dire exactement, ce qui m'a fait essayer des réponses dans différentes directions dans l'espoir de trouver quelque chose d'utile pour lui. Qu'est-ce qui vous fait dire que (1) n'est pas une réponse valable, soit dit en passant?
Shir

2
Le demandeur demande spécifiquement un algorithme optimal pour la machine de Turing .
Tsuyoshi Ito

6
Le "tri par comparaison" est-il réellement un "problème"? Ou est-ce un problème et une restriction sur le modèle de calcul?
Jeffε

3

Supposons que vous entrée donné et qu'on vous demande de décider si la machine RAM M se termine sur l' entrée x après t pas. Par le théorème de la hiérarchie temporelle, l'algorithme optimal pour décider ceci est de simuler l'exécution de M ( x ) pour t étapes, ce qui peut être fait dans le temps O ( t ) .w=M,X,tMXtM(X)tO(t)

(Remarque: pour les machines Turing, la simulation de l'exécution de prend des étapes O ( t log t ) ; nous ne connaissons qu'une limite inférieure de Ω ( t ) . Donc, ce n'est pas tout à fait optimal pour les machines Turing en particulier).MO(tJournalt)Ω(t)

Il existe d'autres problèmes qui contiennent la version du problème d'arrêt en tant que sous-cas. Par exemple, décider si une phrase est une conséquence du WS1S prend du temps 2 O ( | θ | ) et c'est optimal.θ2↑↑O(|θ|)


3

Je ne sais pas ce que vous entendez par "non trivial", mais qu'en est-il de cela. . Ce langage n'est donc pas régulier, toute MT décidant de l'exécuter doit être en Ω ( n log n ) . L'algorithme simple (croisant tous les 0) est optimal.L={02k|k0}Ω(nlogn)


3

Si vous autorisez des problèmes de structure de données dynamiques, nous connaissons certains algorithmes optimaux à temps super-linéaire. C'est dans le modèle de sonde cellulaire, qui est aussi fort que le mot RAM, c'est-à-dire qu'il ne s'agit pas d' un modèle restreint comme les arbres de décision algébriques.

Un exemple est de conserver les sommes de préfixe dans les mises à jour dynamiques. Nous commençons avec un tableau de nombres , et le but est de garder une structure de données qui permet les opérations suivantes:UNE[1],,UNE[n]

  • Ajouter à A [ i ] , étant donné i et ΔΔUNE[je]jeΔ
  • Calculer la somme des préfixes , étant donné ij=1jeUNE[je]je

Vous pouvez facilement prendre en charge les deux opérations en temps avec une structure de données basée sur un arbre binaire augmenté avec A [ i ] aux feuilles. Patrascu et Demaine ont montré que c'était optimal: pour toute structure de données, il y a une séquence de n additions et de requêtes de somme de préfixes qui doivent prendre Ω ( n log n ) total.O(Journaln)UNE[je]nΩ(nJournaln)

Un autre exemple est l' union find : commencez par une partition de en singletons, et conservez une structure de données qui permet les deux opérations:{1,n}

  • Union: étant donné et j , remplacer la partie contenant i et la partie contenant j par leur unionjejjej
  • Trouver: étant donné , sortir un élément canonique à partir de la partie contenant ijeje

O(α(n))αnΩ(nα(n))


1

De nombreux algorithmes de streaming ont des limites supérieures correspondant à leurs limites inférieures.


0

il existe deux algorithmes de recherche quelque peu similaires qui, à ma connaissance, sont optimaux en fonction de contraintes particulières sur l'ordre / la distribution des entrées. cependant, les présentations des algorithmes ne mettent généralement pas l'accent sur cette optimalité.

  • section dorée recherche pour trouver le maximum ou le minimum (extremum) d'une fonction unimodale. suppose que l'entrée est une fonction unimodale. le trouve en temps logarithmique en moyenne. si je me souviens bien, il peut y avoir une preuve d'optimalité dans le livre Structure & Interpretation of computer programmes par abelson & sussman.

  • la recherche binaire trouve un point dans le temps logarithmique en moyenne dans une liste triée, mais nécessite que l'entrée soit triée.

je cite wikipedia ci-dessus mais il n'a pas les preuves qu'ils sont optimaux, peut-être que d'autres références prouvant l'optimalité peuvent être trouvées par le public.


-1

De nombreux algorithmes de temps sublinéaires ont des bornes supérieures correspondant à leurs bornes inférieures.


3
Marqué comme doublon.
Jeffε

L'algorithme de temps sublinéaire et l'algorithme de streaming sont des domaines différents.
Bin Fu

1
C'est vrai, mais vous devez combiner les réponses en une seule.
Suresh Venkat

Quelques exemples d'algorithmes de temps sublinéaire optimaux peuvent être
Bin Fu

1
il n'est pas clair non plus pourquoi ce n'est pas un doublon de la réponse à la complexité de la requête.
Artem Kaznatcheev
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.