web-dev-qa-db-fra.com

Que signifie-t-il par temps d'exécution attendu et temps d'exécution moyen d'un algorithme?

Disons que nous voulons analyser l'heure d'exécution des algorithmes. Parfois, nous disons que nous voulons trouver la période d'exécution d'un algorithme lorsque la taille d'entrée est n et pour le pire cas possible, il est noté par O (n). Parfois, bien que je vois des livres/papiers disant que nous devons trouver le temps prév d'un algorithme. Aussi parfois le temps de fonctionnement moyen est utilisé.

Qu'est-ce que "temps attendu"? Dans quel cas est-ce utile de trouver temps prévu au lieu du pire des cas?

éditer: Je pense qu'il y a une différence subtile entre temps d'exécution attendu et en cours d'exécution moyenne Temps Mais je ne suis pas sûr. À travers ce message, je veux connaître la différence exacte si elle.

17
Geek

L'heure de fonctionnement attendue d'un algorithme randomisé est un concept bien défini, tout comme le pire temps de fonctionnement. Si un algorithme est randomisé, son temps d'exécution est également aléatoire, ce qui signifie que nous pouvons définir la valeur attendue de son temps d'exécution.

Un exemple bien connu est QuicksTort: Si nous choisissons les pivots au hasard, nous pouvons prouver que son temps de fonctionnement attendu devient O (n log n), même si son pire temps de fonctionnement reste le temps de fonctionner. N ^ 2). Un exemple où la randomisation est très puissante est le plus petit problème de cercle entourant: il existe un simple algorithme dont le pire temps de fonctionnement est O (n ^ 3), mais dans l'attente, son temps de fonctionnement n'est que O (n).

Le temps de fonctionnement moyen est généralement utilisé lorsque vous parlez du comportement d'un algorithme 'pour la plupart des intrants ". Nous définissons une façon de générer une entrée de manière aléatoire, par exemple, nous remplissons un tableau avec des nombres aléatoires, ou nous permissons au hasard les numéros 1 à N (donc pas de duplicates), ou nous ne retournons une pièce de monnaie et obtenez un ensemble descendant ou ascendant de Nombres. L'heure d'exécution moyenne d'un algorithme pour cette distribution aléatoire des entrées est alors la durée d'exécution attendue de l'algorithme (dans laquelle l'algorithme peut ne pas être randomisé, mais l'entrée est).

À titre d'exemple: il existe des problèmes géométriques pour lesquels il existe des algorithmes qui semblent bien fonctionner à première vue, jusqu'à ce que vous découvriez une manière très étrange de distribuer, disons, les lignes d'entrée. Si vous supposez que les lignes sont distribuées au hasard, il est possible que ces bizarreries soient extrêmement peu susceptibles de se produire, de sorte que votre algorithme finit par être bon.

Contraste: le temps de fonctionnement attendu est sur la manière dont un algorithme effectue "sauf que vous n'ayez pas mal de chance" - réessayez le même algorithme sur la même entrée, mais avec des choix aléatoires différents peut conduire à être résolu beaucoup plus rapidement. Temps de fonctionnement moyen parle de la manière dont un algorithme effectue "pour la plupart des entrées" - essayer à nouveau le même algorithme sur la même entrée ne vous aidera pas (sauf peut-être si l'algorithme est également randomisé).

4
Alex ten Brink