Προγραμματισμός

Γνώση Υπολογιστών >> Προγραμματισμός >  >> Python Προγραμματισμός

Ποια είναι η χρονική πολυπλοκότητα της επιχείρησης διασταύρωσης σε σύνολα Python;

Η χρονική πολυπλοκότητα της επιχείρησης διασταύρωσης σε σύνολα Python, χρησιμοποιώντας τον χειριστή `&` ή τη μέθοδο `Termection ()` είναι o (min (len (s1), len (s2))) Κατά μέσο όρο, όπου `s1` και` s2` είναι τα σύνολα που διασταυρώνονται.

Εδώ είναι γιατί:

* Εφαρμογή: Τα σύνολα Python εφαρμόζονται χρησιμοποιώντας πίνακες κατακερματισμού. Αυτό επιτρέπει πολύ γρήγορες αναζητήσεις (κατά μέσο όρο, O (1)).

* Διαδικασία διασταύρωσης: Η λειτουργία διασταύρωσης ουσιαστικά επαναλαμβάνεται μέσω του μικρότερου σετ και ελέγχει εάν κάθε στοιχείο υπάρχει στο μεγαλύτερο σετ.

* Κόστος αναζήτησης: Ο έλεγχος για την ύπαρξη ενός στοιχείου στο μεγαλύτερο σύνολο είναι κατά μέσο όρο μια λειτουργία O (1) λόγω της εφαρμογής του πίνακα hash.

Επομένως, εάν το S1` είναι το μικρότερο σετ, η λειτουργία επαναλαμβάνεται μέσω του `S1` (Len (S1) φορές) και εκτελεί μια αναζήτηση O (1) στο` S2` για κάθε στοιχείο. Αυτό έχει ως αποτέλεσμα μια συνολική χρονική πολυπλοκότητα του O (Len (S1) * 1) =O (Len (S1)). Ομοίως, εάν το «S2» είναι μικρότερο, η πολυπλοκότητα είναι O (Len (S2)). Έτσι, η συνολική πολυπλοκότητα είναι O (min (LEN (S1), LEN (S2))).

σενάριο χειρότερης περίπτωσης:

Ενώ η μέση περίπτωση είναι O (min (LEN (S1), LEN (S2)), το σενάριο χειρότερης περίπτωσης είναι O (LEN (S1) * LEN (S2)) εάν υπάρχουν πολλές συγκρούσεις κατακερματισμού που οδηγούν σε αναζητήσεις O (N) αντί για O (1). Ωστόσο, αυτό είναι σπάνιο στην πράξη με το καλά σχεδιασμένο hashing του Python.

Παράδειγμα:

`` `Python

set1 ={1, 2, 3, 4, 5}

set2 ={3, 5, 6, 7, 8, 9, 10}

Intersection_set =set1 &set2 # ή set1.intersection (set2)

εκτύπωση (etrection_set) # έξοδος:{3, 5}

`` `

Σε αυτό το παράδειγμα, η πολυπλοκότητα του χρόνου της διασταύρωσης θα ήταν πιο κοντά στο O (Len (set1)) επειδή το `set1` είναι μικρότερο.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα