D'autres types d'analyse du temps de fonctionnement en dehors du pire des cas, du cas moyen, etc.?

22

Voici quelques façons d'analyser le temps d'exécution d'un algorithme:

1) Analyse du pire des cas: temps d'exécution sur la pire instance.

2) Analyse de cas moyen: temps d'exécution prévu sur une instance aléatoire.

3) Analyse amortie: durée moyenne d'exécution sur la pire séquence d'instances.

4) Analyse lissée: temps d'exécution prévu sur la pire instance perturbée de manière aléatoire.

5) Analyse de cas générique: temps d'exécution sur le pire de tous sauf un petit sous-ensemble d'instances.

Ma question: est-ce une liste complète?

umar
la source
2
Je suppose que ce genre de liste ne peut jamais être exhaustif.
Tsuyoshi Ito

Réponses:

8

L'optimalité d'instance est une propriété très intéressante des algorithmes. On peut généraliser les notions d'optimalité d'instance et proposer des notions étonnamment intéressantes qui incluent l'analyse du pire et du cas moyen.

Bien qu'il ne relève pas strictement de l'analyse traditionnelle des algorithmes, il est intéressant en soi. L'idée dans un article par Afshani-Barbay-Chan (FOCS '09) qui discute d'un algorithme géométrique considère les performances de l'algorithme inconscient de l'ordre d'entrée (qui est pertinent pour leur problème particulier).

Cela peut être vu comme généralisant comme suit: Pour chaque partition d'algorithme, les entrées en classes d'équivalence et considèrent les performances de l'algorithme comme une sorte de statistique collective sur les performances moyennes pour chacune de ces classes d'équivalence.

L'analyse du pire des cas considère simplement l'entrée comme des classes d'équivalence individuelles et calcule le temps de fonctionnement maximal. L'analyse de cas moyenne examine la classe d'équivalence triviale qui est une classe unique comprenant toutes les entrées. Dans l'article Afshani-Barbay-Chan, leur algorithme est optimal si l'entrée est partitionnée en classes de permutations (c.-à-d. Ordonner des performances inconscientes).

Il n'est pas clair si cela conduit à de nouveaux paradigmes d'analyse d'algorithmes. Le cours de Tim Roughgarden contient d'excellents exemples motivants et couvre différentes méthodes d'analyse des algorithmes.

Ananth
la source
Ananth, merci beaucoup pour le lien vers le cours de Tim. C'est exactement le genre de chose que je cherchais.
umar
14

J'en ai deux autres pour la liste, qui sont quelque peu similaires.

  1. O(cnnO(1))1<c<2kO(2knO(1))kn

  2. O(nlogn+k)k

Bart Jansen
la source
8

O(nlogn)

Elle ressemble à l'analyse paramétrisée pour les algorithmes à temps polynomial, et il semble que l'analyse sensible à la sortie tombe dans cette catégorie.

Serge Gaspers
la source
Serge, merci pour le lien vers le blog de Glencora, beaucoup de commentaires intéressants là-bas.
umar
7

Il existe également une analyse "à haute probabilité " (pour les algorithmes randomisés), où, pour une instance donnée, vous vous inquiétez de la performance de votre algorithme la plupart du temps, mais vous pouvez abandonner complètement une petite fraction du temps. Ceci est courant dans la théorie de l'apprentissage.

Lev Reyzin
la source
4

Vous pouvez ajouter un caractère aléatoire à votre algorithme et le combiner avec tout ce qui précède. Ensuite, vous obtiendrez, par exemple, le temps d'exécution prévu dans le pire des cas (instance dans le pire des cas, mais en moyenne sur toutes les séquences possibles de retournements de pièces aléatoires dans l'algorithme) et le temps d'exécution dans le pire des cas avec une probabilité élevée (encore une fois, dans le pire des cas, mais la probabilité sur la pièce aléatoire bascule dans l'algorithme).

Jukka Suomela
la source
3

L'analyse bijective est un moyen de comparer deux algorithmes (Spyros Angelopoulos, Pascal Schweitzer: paging et list update under bijective analysis. J. ACM 60, 2013): En gros, l'algorithme A est meilleur que l'algorithme B sur les entrées de longueur n s'il y a un bijection f des entrées de longueur n telle que A fonctionne sur l'entrée x au moins aussi bien que B sur f (x).

Bodo Manthey
la source
1

Analyse compétitive

Utilisé pour comparer les algorithmes en ligne avec les algorithmes de performance hors ligne. Voir la page wikipedia . Le problème de mise à jour de liste est un exemple classique.

Rui Ferreira
la source
1
Mais il n'est pas utilisé pour analyser "le temps d'exécution d'un algorithme" .
Jukka Suomela
0

Analyse concurrentielle Dans l' algorithme de remplacement de page , une méthode surpondère l'autre par moins de pages manquantes. Moins de page manquante illustre "moins de temps d'exécution". En outre, l'analyse concurrentielle est une méthode pour comparer relativement deux méthodes. Un bon ouvrage de référence est "CALCUL EN LIGNE ET ANALYSE CONCURRENTIELLE" d'Allan Borodin.

Jing
la source