CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

complexité en L1

ghostfagactif
ghostfagactif
Niveau 22
08 mars 2021 à 20:31:37

Salut j'ai diverses questions concernant le choix entre O, Theta et Omega afin de déterminer le temps d'exécution d'un algorithme. Quelqu'un connaissant bien le sujet pourrait m'aider ?

Pathos-II
Pathos-II
Niveau 22
08 mars 2021 à 21:03:00

Poses ta question directement et on y répondra, le but d'un forum c'est que chacun voit la réponse et puisse corriger si l'interlocuteur se trompe :ok:
O c'est la complexité dans le pire des cas
Theta en moyenne
Omega dans le meilleur des cas

godrik
godrik
Niveau 30
08 mars 2021 à 21:14:35

Salut j'ai diverses questions concernant le choix entre O, Theta et Omega afin de déterminer le temps d'exécution d'un algorithme. Quelqu'un connaissant bien le sujet pourrait m'aider ?

Oui. Poses ta question.

Poses ta question directement et on y répondra, le but d'un forum c'est que chacun voit la réponse et puisse corriger si l'interlocuteur se trompe :ok:
O c'est la complexité dans le pire des cas
Theta en moyenne
Omega dans le meilleur des cas

Ca, c'est pas vrai... La complexite au pire cas, c'est une fonction f. Et cette fonction f elle peut etre dans Theta de je sais pas quoi ou dans Omega d'autre chose.
BigOh, Theta, et Omega, ce sont des classes de fonctions. Tu peux mesurer tout et rien en terme. Il y a O(1) ordinateur dans mon bureau et la surface au sol de ma maison est en Theta (longeurmaison*largeurmaison).

ghostfagactif
ghostfagactif
Niveau 22
09 mars 2021 à 00:42:21

Excusez-moi du retard de la réponse. Pour faire simple je ne comprends pas toujours, les raisons qui poussent à choisir O, Theta ou Omega car résumer la situation O=pire cas, Theta=la moyenne et Omega= le meilleur cas ne semble pas tjrs fonctionner. Par exemple dans un de mes entraînements, on nous demande de donner le temps d'exécution dans le meilleur des cas d'un algorithme InsertionSort, la réponse se trouve être O(n) et je ne comprends pas la raison pour laquelle on a choisi O(n) et pas autre chose. Autre énoncé : Let Prod(A) be the algorithm that computes the product of the entries of an
n-element array A. Tbest(n), the running time of Prod(A) in the best case is: La réponse ici est Theta(2) et je ne comprends pas non plus ce choix. Si quelqu'un pourrait m'éclairer à ce sujet, cela m'aiderait bcp.

ethyl-acetate
ethyl-acetate
Niveau 10
09 mars 2021 à 00:47:01

le post ici me semble assez clair https://stackoverflow.com/questions/12138212/difference-between-big-theta-and-big-o-notation-in-simple-language

ghostfagactif
ghostfagactif
Niveau 22
09 mars 2021 à 11:14:47

merci pour ton lien ça m’a déjà un peu plus éclairé sur le sujet mais si d’autres personnes peuvent m’apporter des réponses spécifiques aux exemples cités ça m’aiderait bcp

Pseudo supprimé
Pseudo supprimé 09 mars 2021 à 17:15:35

Le O c'est une notatin de maths. Et la complexite se mesure en O. Quand on ne precise pas on sous entend la complexite dans le pire cas et la notation O est utilise sans quiproquos, et on dit alors par exemple que le quick sort a une complexite de O(n^2) (ou en version longue d'une complexite "O(n^2) dans le pire des cas"). Par contre si l'on parle de la complexite dans le meilleur cas on emploie aussi O vu que la complexite se mesure en O. Donc l'insretion sort a une complexite de "O(n) dans le meilleur des cas" ce qui peut se simplifer en "omega(n)". omega est juste un raccourci pour dire la complexite dans le meilleur des cas.

godrik
godrik
Niveau 30
10 mars 2021 à 03:06:20

OK. visiblement il y a des problemes de comprehension des notations de complexites. Les notations Big-Oh, Big-Theta, et Big-Omega sont des notations ensemblistes qui representent toutes les fonctions qui sont dans l'ensemble. Elles n'ont rien a voir avec le pire cas ou le meilleur cas, ou le cas moyen.

La notation Big-Oh veut basiquement dire que si f est dans O(g) alors f(n) <= g(n) [de facon asymptotique, voir ton cours pour la definition exacte]. O(g) est l'ensemble de toute les fonctions f tel que f(n) <= g(n). Du fait tu as n^3 dans O(n^3), mais aussi n+5 est dans O(n^3), et n^2 log (n) est aussi dans O(n^3)..

De la meme facon Omega(g) est l'ensemble des fonctions f tel que f(n) >= g(n). Du fait n^3 est dans Omega(n^3), mais n^12 est aussi dans Omega(n^3) et 2^(n!) est aussi dans Omega(n^3).

Si f est dans Theta(g) alors f est dans Omega(g) et dans O(g).

Dans tous les cas, tu prefererais pouvoir exprime tout avec une notation Big-Theta parceque c'est la notation la plus precise. Mais des fois on ne sait pas faire alors on se contente des notations Big-Oh et Big-Omega.

Quel rapport avec les complexite au pire cas et au meilleur cas, et en moyenne? En general on exprime ces complexites dans ces notations ensemblistes parceqeu c'est plus simple.

Prenons un exemple concret:

bubblesort(A, n) {
  bool cont = true;
  while (cont) {
    cont = false;
    for (int i=1;i<n; ++i)
      if (A[i] > A[i-1]) {
       swap(A[i], A[i-1]);
       cont = true;
      }
  }
}

C'est un algo de tri. On peut prouver que dans le pire cas, il y a n-1 iterations de la boucle while.

Et donc il y a danss le pire cas en gros n^2 execution du if, et le contenu du if est constant. Donc la complexite au pire cas est dans Theta(n^2). Elle est aussi dans O(n^2), et dans Omega(n^2). Et note qu'elle est aussi dans Omega(1) et dans O(n^42).

Dans le meilleur cas, il n'y qu'une seule execution de la boucle while. Et donc la complexite au meilleur cas est de Theta(n). Note que la complexite au meilleur cas est aussi dans O(n^2) ou dans O(2^n).

La notation Big-Oh et Big-Omega est decorelle de si tu fais une analyse au pire cas ou au meilleur cas.

Pourquoi est ce qu'on n'utiliserait pas toujours Big-Theta? On utilise pass toujours Big-Theta parceque des fois, c'est difficile de prouver qu'on est vraiment en Big-Theta. Consider le code suivant:

strange(A, n) {
  if (A[0] == 0) return;
  bool cont = true;
  for (int j=0; j<n; ++j) {
    if  (strangeconditionIcannotanalysebutinO1(j)) {
      for (int i=1;i<n; ++i) {
        if (A[i] > A[i-1]) {
         swap(A[i], A[i-1]);
        }
      }
    }
  }
}

Maintenant c'est beaucoup plus difficile d'analyser cet algorithme. parceque je ne sais pas combien de fois la boucle i va etre executer. Si je ne sais pas analyse la condition qui est au milieu, alors la seule chose que je puisse dire est que la boucle i va s'executer entre 0 fois et n fois. Donc je suis sur que la complexite au pire cas est en O(n^2) parceque clairement la condition ne peut etrer vrai que n fois au plus. Mais je ne sais pas dire si au pire cas c'est possible la condition soit vrai n fois. Donc je ne sais pas si la complexite au pire cas est dans Omega(n^2).
Note que meme si la condition est toujours fausse alors, il faudra quand meme faire la condition bizarre n fois. Du fait la complexite au pire cass est aussi en Omega(n).
Donc je me resoud a dire que l'algo est en O(n^2) et dans Omega(n) parceque je ne sais pas faire l'analyse de facon plus precise que ca.

Et note que la complexite au meilleur cas est dans Theta(1)

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment