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

Question sur la complexité en Python

Pseudo supprimé
Pseudo supprimé 08 janvier 2018 à 00:51:18

Salut les kheys. :noel:

https://image.noelshack.com/fichiers/2018/02/1/1515369014-capture.png

J'aimerais savoir pourquoi l'opération avec le zip a une complexité en n^2 ? Et pourquoi un simple print a une complexité en O(n) alors que ça devrait être en O(1) ? J'ai du mal à faire la différence entre complexité moyenne et maximale.

Merci d'avance. :noel:

Submerger
Submerger
Niveau 10
08 janvier 2018 à 01:13:13

Mec il est 1:00 va te coucher

Pseudo supprimé
Pseudo supprimé 08 janvier 2018 à 01:17:04

Le 08 janvier 2018 à 01:13:13 Submerger a écrit :
Mec il est 1:00 va te coucher

Je dois vraiment comprendre ce truc.

Ayez pitié les kheys, j'me lève dans 5 heures. J'aimerais dormir. :noel:

MegacityFutur
MegacityFutur
Niveau 10
08 janvier 2018 à 01:18:15

Pour le print, il doit afficher chacune des lettre

Pour le zip c'est parceque pour chaque liste il doit aussi faire une opération O(n) donc ça fait O(n) * O(n) il me semble

Kamihate
Kamihate
Niveau 8
08 janvier 2018 à 01:18:15

Le 08 janvier 2018 à 01:17:04 Shirk a écrit :

Le 08 janvier 2018 à 01:13:13 Submerger a écrit :
Mec il est 1:00 va te coucher

Je dois vraiment comprendre ce truc.

Ayez pitié les kheys, j'me lève dans 5 heures. J'aimerais dormir. :noel:

Je up pour t'aider khey ! [[sticker:p/1lm9]]

Pseudo supprimé
Pseudo supprimé 08 janvier 2018 à 01:18:58

Le 08 janvier 2018 à 01:18:15 Kamihate a écrit :

Le 08 janvier 2018 à 01:17:04 Shirk a écrit :

Le 08 janvier 2018 à 01:13:13 Submerger a écrit :
Mec il est 1:00 va te coucher

Je dois vraiment comprendre ce truc.

Ayez pitié les kheys, j'me lève dans 5 heures. J'aimerais dormir. :noel:

Je up pour t'aider khey ! [[sticker:p/1lm9]]

Cimer khey ! :noel:

Pseudo supprimé
Pseudo supprimé 08 janvier 2018 à 01:19:39

Le 08 janvier 2018 à 01:18:15 MegacityFutur a écrit :
Pour le print, il doit afficher chacune des lettre

Pour le zip c'est parceque pour chaque liste il doit aussi faire une opération O(n) donc ça fait O(n) * O(n) il me semble

Merci khey, mais pourquoi alors a-t-on une complexité moyenne différente de la maximale, si dans les deux cas il doit faire une opération O(n) pour chaque liste ?

JeanCroutenard
JeanCroutenard
Niveau 10
08 janvier 2018 à 01:20:44

Le zip est en O(n), mais c'est le dict() qui prend O(n^2) en pire cas (chaque ajout d'une entrée fait du O(n) pire cas, tu ajoutes n entrées)
le print(dico) est en O(n) parce qu'il y a n entrées à afficher

Message édité le 08 janvier 2018 à 01:24:40 par JeanCroutenard
Pseudo supprimé
Pseudo supprimé 08 janvier 2018 à 01:26:15

Le 08 janvier 2018 à 01:20:44 JeanCroutenard a écrit :
Le zip est en O(n), mais c'est le dict() qui prend O(n^2) en pire cas (chaque ajout d'une entrée fait du O(n) pire cas, tu ajoutes n entrées)
le print(dico) est en O(n) parce qu'il y a n entrées à afficher

Aaaaaaaaaaaaaah d'accord j'ai capté ! Merci ! :noel:

Je vais enfin pouvoir plonger dans mon lit. Merci les kheys !

Hola-Chica-3
Hola-Chica-3
Niveau 10
08 janvier 2018 à 01:30:10

Je pense que c'est en n^2 si tous les mots (ou tableaux) composants x ont une taille différentes.

Dans ce cas là, quand il ajoute dans le dict il va devoir checker si la taille (la clé) n'est pas déjà dans le dict; vu que ca ne sera jamais le cas, il chercheras parmi toutes les j entrées à ce moment là et rajouteras la nouvelle clé à la fin du dict. Tu as n mots donc ca fera en gros n^2: http://www.wolframalpha.com/input/?i=sum(i,i%3D0,i%3Dn)

Pseudo supprimé
Pseudo supprimé 08 janvier 2018 à 01:31:33

J'étudie aussi python et tu m'as rappelé que je ne comprends rien

Blaff12
Blaff12
Niveau 10
08 janvier 2018 à 01:37:43

Le 08 janvier 2018 à 01:30:10 Hola-Chica-3 a écrit :
Je pense que c'est en n^2 si tous les mots (ou tableaux) composants x ont une taille différentes.

Dans ce cas là, quand il ajoute dans le dict il va devoir checker si la taille (la clé) n'est pas déjà dans le dict; vu que ca ne sera jamais le cas, il chercheras parmi toutes les j entrées à ce moment là et rajouteras la nouvelle clé à la fin du dict. Tu as n mots donc ca fera en gros n^2: http://www.wolframalpha.com/input/?i=sum(i,i%3D0,i%3Dn)

C'est pas exactement comme cela que fonctionne les dictionnaires en Python (généralement appelés HashMap dans les autres langages). :noel:
Quand on ajoute une entrée à un dictionnaire, on ne check pas toutes les clés existantes, ça serait beaucoup trop long. :non:
On va juste calculer un "empreinte" (hash) de l'objet, cette empreinte est en fait un nombre, et tu vas regarder ce qui se situe dans ton dictionnaire à l'index de ce nombre. En interne, ton dictionnaire fonctionne en fait comme un tableau avec beaucoup de cases vides qui sont remplies quand tu ajoutes une entrée.
Le pire des cas survient lorsque tu veux ajouter plusieurs objets qui ont la même empreinte. Tu vas regarder qu'est-ce qui ce situe dans ton tableau à l'endroit indiqué, mais tu vas remarquer qu'il y a déjà un objet de stocké, mais qu'il est différent. Donc tu vas devoir trouvé un autre emplacement, et ainsi de suite, ce qui peut causer une insertion en O(n) dans le pire des cas. Et donc si tu ajoutes n objets, ça devient O(n²) dans le pire des cas. :ok:

Message édité le 08 janvier 2018 à 01:38:14 par Blaff12
Sous forums
  • Religion