Εδώ είναι γιατί:
* Εφαρμογή: Τα σύνολα 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` είναι μικρότερο.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα