Middle
Ինչ է հեշի բախումը և ինչ մեթոդներ կան դրա լուծման համար։
sobes.tech AI
Պատասխան AI-ից
Հաշվի բախում տեղի է ունենում, երբ երկու տարբեր մուտքային արժեքներ տալիս են նույն հեշ-ֆունկցիայի արժեքը: Դա անխուսափելի է, քանի որ հնարավոր մուտքերի հավաքածուն սովորաբար մեծ է հնարավոր հեշ-արժեքների հավաքածուից:
Բախումները լուծելու մեթոդներ՝
- Բաց հասցեագրման մեթոդ — բախման դեպքում որոնվում է հաջորդ ազատ բջիջը որոշակի հաջորդականությամբ (ուղղահայաց, քառակուսային, երկկողմ հեշավորում):
- Շղթայակապում (chaining) — յուրաքանչյուր հեշ աղյուսակի բջիջում պահվում է բոլոր նույն հեշ-արժեքով տարրերի կապված ցանկը:
- Նոր հեշավորում — բախման դեպքում կիրառվում է այլ հեշ-ֆունկցիա:
Python-ում շղթայակապման օրինակ՝
հեշ_թերթ = [[] for _ in range(10)]
def ավելացնել( բանալի, արժեք):
ինդեքս = hash(բանալի) % 10
հեշ_թերթ[indeks].append((բանալի, արժեք))
ավելացնել('խնձոր', 1)
ավելացնել('պամ', 2) # հնարավոր բախում