a) Qalabka ee Python. Waayo, Marka Sida loo isticmaali karaa in PHP, in C++. Harta hash waxaa laga yaabaa in mid ka mid ah xawaaraha xawaaraha sare oo dhan. Oo waxaa laga yaabaa oo ah! Ma aha oo aan ka heli karaa data oo ka mid ah waqti oo dhan? Haddii aad u shaqeeyaan la mid ah macluumaadka badan ama macluumaadka Leetcode, sidoo kale waxaa laga yaabaa in ka mid ah shuruudaha data this. laakiin waxa uu ku yaabaa, iyo sida ay u shaqeeyaan ka mid ah shuruudaha ah? dict map Object Map Dictionary<TKey, TValue> Ma rabtaa wax soo saarka? Shuruudaha dhismaha ugu badan, dhismaha dhismaha ah, ama dhismaha dhismaha ah waa dhismaha dhismaha ah oo loo yaqaan dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha, dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha. Markaas, xawaaraha waqtiga ah ee mid ah waa O(1), oo waa in la yaabaa in ay ku habboon karaa oo dhan! Feature this makes hash maps probably the most used data structure in programming, however, there are some warnings to this, as we’ll see later. Qalabka dhismaha ugu caawin ah ee wax soo saarka waa O(n), oo waxaa laga yaqaan O(n), oo ka mid ah in ay ku saabsan wax soo saarka, in ay ka mid ah in ay ka mid ah in ay ka mid ah wax soo saarka. Sida loo yaabaa : Wikipedia xawaaraha A hash table is a data structure that implements an associative array, also called a dictionary or simply map; a associative array is an abstract data type that maps keys to values. A hash table uses a hash function to calculate an index, also called a hash code, into an array of buckets or slots, from which the desired value can be found. A hash table is a data structure that implements an associative array, also called a dictionary or simply map; a associative array is an abstract data type that maps keys to values. A hash table uses a hash function to calculate an index, also called a hash code, into an array of buckets or slots, from which the desired value can be found. Waayo, waxaan ka mid ahay ka mid ah dhismaha dhismaha dhismaha ah. Sidee waa wax ka mid ah hash function? A hash function is a function that takes an input (or "key") and typically returns an integer that is used to index the data in the hash map. The key is transformed into an integer, which is then used to determine the index in the underlying array where the value is stored. A good hash function waa mid ka mid ah mid ka mid ah: Deterministic: wax soo saarka ugu horeysay waa in la soo saarka ugu horeysay. Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha Shuruudaha: Shuruudaha Shuruudaha Shuruudaha waxaa laga yaabaa in la soo saarka, sidoo kale in la soo saarka. Shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha ugu fiican ee shuruudaha. Shuruudaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha Markaas ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah. Sida loo yaabaa, waxaa laga yaabaa in la soo bandhigay in la soo bandhigay in la soo bandhigay in la soo bandhigay. 23 % 10 = 3 33 % 10 = 3 Ma rabtaa in bucket? A bucket is a slot in the hash table where a key-value pair is stored. In case of a collision, where two different keys produce the same hash code, bucket can store multiple key-value pairs. This is often done using a linked list or another data structure to handle collisions. Taariikhda ugu horeysay waa in aad u shaqeeyaan: Haku Marka aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay in aad u baahan yahay. Qalabka Factor The load factor is a measure of how full the hash table is. It is calculated as the number of elements in the hash table divided by the number of buckets (or slots) in the underlying array. A higher load factor means that there are more elements in the hash table relative to the number of buckets, which can lead to more collisions and slower performance. Resolutiyada Collision Markaas ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah: : In this method, each bucket contains a linked list (or another data structure) of all key-value pairs that hash to the same index. When a collision occurs, the new key-value pair is simply added to the list in the appropriate bucket. This is the most common method for handling collisions. Chaining : Average O(1) for all operations, worst-case O(n) if all keys hash to the same bucket Complexity : Simple to implement, handles high load factors well, deletion is straightforward Pros : Extra memory overhead for pointers, poor cache performance due to scattered memory access Cons Open Addressing: In this method, ka mid ka mid ah wax soo saarka, tababarka hash ka mid ah wax soo saarka ugu horeysay oo la soo saarka in ay ku soo saarka ugu horeysay oo ka mid ah wax soo saarka ugu horeysay oo ka mid ah wax soo saarka ugu horeysay. If a collision occurs, algorithm shahaado xawaaraha next in the array ka mid ah in ay ka mid ah ka mid ah. Linear Probing Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Saxiix: Saxiix ah, wax soo saarka ugu fiican ee cache for access nearby Sidee: Clustering primary (slots kala duwan oo ka mid ah oo ka mid ah oo ka mid ah oo ka mid ah) : Waayo, sidoo kale loo yaqaan 'slot next', waxaa loo yaqaan 'slot next' oo loo yaqaan 'slot next' (1, 4, 9, iwm) oo ay ku yaalaa xawaaraha ugu horeysay. Quadratic Probing Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka: Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Sidee: Clustering sekundaar (ka mid ka mid ah hash waa mid ka mid ah shuruudaha shuruudaha), sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale. : Isticmaalka wax soo saarka ah waxaa loo isticmaali karaa si ay u isticmaali karaa wax soo saarka wax soo saarka ah oo loo isticmaali karaa wax soo saarka wax soo saarka. Ku saabsan Shuruudaha shuruudaha ugu horeysay ee shuruudaha shuruudaha ugu horeysay ee shuruudaha shuruudaha ugu horeysay ee shuruudaha shuruudaha ugu horeysay ee shuruudaha shuruudaha ugu horeysay ee shuruudaha shuruudaha ugu horeysay ee shuruudaha shuruudaha ugu horeysay ee shuruudaha shuruudaha ugu horeysay ee shuruudaha shuruudaha ugu horeysay ee shuruudaha shuruudaha ugu horeysay ee shuruudaha. iyo , oo ka dib markii ay u aragto index 7, 10, 13, 16, iwm. Double Hashing index = (hash1(key) + i * hash2(key)) % table_size i hash1(key) = 7 hash2(key) = 3 : Average O(1), best performance among open addressing methods Complexity : Minimizes clustering, uniform distribution of probe sequences, visits all slots when properly implemented Pros : More complex implementation, requires computing two hash functions, and slightly more overhead per operation Cons : If the load factor becomes too high, the hash table can be resized and all existing key-value pairs can be rehashed into the new table. This helps to maintain efficient performance as the number of elements grows. Rehashing : O(n) for the rehashing operation itself, but amortizes to O(1) per insertion over time Complexity : Maintains optimal performance by keeping the load factor low, prevents performance degradation Pros : Temporary performance spike during rehashing, requires additional memory during the resize operation Cons Waxaad ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ah mid ka mid ah mid ah mid ah mid ah mid ah mid ka mid ah. Sida loo yaabaa, waxaa laga yaabaa in ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah: Feature Chaining Linear Probing Quadratic Probing Double Hashing Average Time Complexity O(1) O(1) O(1) O(1) Worst-case Time Complexity O(n) O(n) O(n) O(n) Memory Overhead High (pointers) Low Low Low Cache Performance Poor Good Good Moderate Implementation Complexity Simple Simple Moderate Complex Clustering Issues None Primary clustering Secondary clustering Minimal Load Factor Tolerance High (>1.0) Low (<0.7) Low-Medium (<0.7) Medium (<0.8) Deletion Complexity Simple Complex (tombstones) Complex (tombstones) Complex (tombstones) Space Efficiency Lower Higher Higher Higher Performance Degradation Gradual Rapid at high load Moderate at high load Slow at high load Hash Function Requirements One One One Two Best Use Cases Unknown load factors, frequent deletions Cache-friendly applications, low load Better than linear, moderate load High performance, predictable load Average Time Complexity Haku (1) Haku (1) Haku (1) Haku (1) Worst-case Time Complexity QEEBE QEEBE QEEBE QEEBE Memory Overhead Qalabka (Pointers) Qalabka Qalabka Qalabka Cache Performance QEEBE Haku Haku QEEBE Implementation Complexity Haku Haku QEEBE Qalabka Clustering Issues Haku Qalabka primary Qalabka Cluster Minimaalka Load Factor Tolerance Qalabka (>1.0) Qalabka (<0.7) Qalabka Qalabka (<0.7) Qalabka (<0.8) Deletion Complexity Haku Qalabka Qalabka (Tombstones) Qalabka Qalabka (Tombstones) Qalabka Qalabka (Tombstones) Space Efficiency Haku Haku Haku Haku Performance Degradation Qalabka Shuruudaha ugu badan Qalabka Qalabka Qalabka Qalabka Shuruudaha ugu badan Hash Function Requirements One Oona Oona 2 maalmood Best Use Cases Qalabka wax soo saarka ah, wax soo saarka ah Cache-friendly apps, soo saarka low Qalabka ugu fiican ee linear, wax soo saarka Qalabka dhismaha, dhismaha dhismaha Qalabka real-world Programming Language waxaa loo isticmaali karaa Waayo, waxaa loo isticmaali karaa in ay u isticmaali karaa macluumaadka macluumaadka macluumaadka macluumaadka macluumaadka macluumaadka macluumaadka macluumaadka macluumaadka macluumaadka macluumaadka macluumaadka macluumaadka. Dict ee Python waxay isticmaalaa addressing open iyo probing randomized, rehashing ka dib markii factor load waa ka mid ah 0.66. HashMap ee Java waxaa loo isticmaali karaa cajiibka iyo lists linked (wax yar oo ka mid ah macluumaadka ugu badan ee Java 8+), waxaa loo isticmaali karaa 0.75 load factor. Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Database Systems Dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha Dhismaha dhismaha kala duwan oo loo isticmaalaa hash indexing waa: PostgreSQL: dhismaha hash, laakiin waxaa lagu isticmaali karaa in ka mid ah B-tree. MongoDB: waxaa loo isticmaalaa index hash ee sharding iyo si ay u isticmaalaa queries ugu weyn ee fields hashed. Redis: Dhammaan dhismaha hash sida dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha. Waayo, waxaa laga yaabaa in la isticmaali karaa mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah. Xafiiska Version Control Git waxaa loo isticmaali karaa macluumaadka hash si ay u isticmaali karaa macluumaadka hash si ay u isticmaali karaa macluumaadka files iyo macluumaadka macluumaadka. Git waxaa loo isticmaali karaa macluumaadka SHA-1 ee macluumaadka, oo loo isticmaali karaa macluumaadka unique ee macluumaadka commit. Waxaa loo isticmaali karaa si ay u isticmaali karaa macluumaadka commits, macluumaadka iyo macluumaadka kale ee repository. Qalabka dhismaha iyo dhismaha dhismaha iyo dhismaha dhismaha Sida loo yaqaan "Hash maps" waxaa loo yaqaan "Hash maps" oo loo yaqaan "Hash maps" waxaa loo yaqaan "Hash maps" oo loo yaqaan "Hash maps" oo loo yaqaan "Hash maps" oo loo yaqaan "Hash maps" waxaa loo yaqaan "Hash maps" oo loo yaqaan "Hash maps" oo loo yaqaan "Hash maps" oo loo yaqaan "Hash maps". Sida loo yaqaan Python isticmaalka addressing dhismaha la isticmaalaa in la isticmaalaa in la isticmaalaa dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dict Bad Implementation (waxeeyey Python's Dict) def count_words_bad(text): word_counts = {} words = text.split() for word in words: # This is inefficient with open addressing! if word in word_counts: # First lookup word_counts[word] += 1 # Second lookup + assignment else: word_counts[word] = 1 # Third lookup + assignment return word_counts Shuruudaha dhismaha oo dhan Problems: Shuruudaha ugu badan oo ka mid ah wax soo saarka ah oo ka mid ah wax soo saarka ah oo ka mid ah wax soo saarka ah. Open addressing waxay ka caawinayaan checks-key-wax yar Ma ahaatee, waxaa laga yaqaan "Python's dict optimizations". Good Implementation (Works With Python's Dict) from collections import defaultdict, Counter def count_words_good_v1(text): # defaultdict eliminates key existence checks word_counts = defaultdict(int) words = text.split() for word in words: word_counts[word] += 1 # Single operation! return dict(word_counts) def count_words_good_v2(text): # Counter is optimized specifically for Python's dict implementation words = text.split() return Counter(words) def count_words_good_v3(text): # dict.get() with default avoids the membership test word_counts = {} words = text.split() for word in words: word_counts[word] = word_counts.get(word, 0) + 1 # Single lookup return word_counts Shuruudaha dhismaha oo dhan Why These Are Better: Shuruudaha dhismaha ah ee dhismaha ah ee dhismaha ah ee dhismaha Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay. Waxaa loo isticmaali karaa optimizations ku yaalaa sida Counter, oo waxaa loo isticmaali karaa si ay u isticmaali karaa Python. wax soo saarka Shuruudaha ugu fiican waa mid ka mid ah 2-3x ka badan, kaliya ka mid ah in la arki karaa iyo loo isticmaali karaa shuruudaha Dict ee Python ka mid ah in ka mid ah in ka mid ah. Typical Results: Qalabka Dhismaha dhismaha waa mid ka mid ah macluumaadka dhismaha ugu weyn oo ku yaalaa in macluumaadka macluumaadka, si ay u dhismaha dhismaha macluumaadka ah oo loo yaabaa in ay ka mid ah dhismaha dhismaha macluumaadka ah. In ka mid ah dhismaha dhismaha dhismaha dhismaha ah, waxaan ku yaalaa in ay u dhismaha dhismaha dhismaha dhismaha ah. Qalabka dhismaha waa in la "magic" ee dhismaha dhismaha ah ma ahaatee ma ahaatee maqaar ah oo dhan - waxaa loo yaqaan 'algorithms' iyo 'data structures' oo loo isticmaali karaa. Key Takeaways: Shuruudaha shuruudaha waxaa loo yaqaan 'hash function' oo loo yaqaan 'shuruudaha shuruudaha shuruudaha', waxaa loo yaqaan 'shuruudaha shuruudaha shuruudaha shuruudaha'. Qalabka dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha Qalabka wax soo saarka ah oo ku yaalaa in ay ku yaalaa wax soo saarka ah oo ku yaalaa wax soo saarka ah. Shuruudaha dhismaha waxaa loo isticmaali karaa si ay u isticmaali karaa codka 2 - 3 maalmood. Ma rabtaa in aad si ay u optimize a script Python, debugging wax soo saarka in Java, ama si ay u sameeyaan qaabka dhismaha for a database system, this understanding of HashMap internals gives you the tools to make informed choices. Haku iyo Waxaad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan yahay. dict HashMap unordered_map Haddii loo yaqaan "Hash maps" waa ugu fiican - iyo sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale sidoo kale.