Sobes.tech
Middle

Ինչ է հեշի բախումը և ինչ մեթոդներ կան դրա լուծման համար։

sobes.tech AI

Պատասխան AI-ից

Հաշվի բախում տեղի է ունենում, երբ երկու տարբեր մուտքային արժեքներ տալիս են նույն հեշ-ֆունկցիայի արժեքը: Դա անխուսափելի է, քանի որ հնարավոր մուտքերի հավաքածուն սովորաբար մեծ է հնարավոր հեշ-արժեքների հավաքածուից:

Բախումները լուծելու մեթոդներ՝

  1. Բաց հասցեագրման մեթոդ — բախման դեպքում որոնվում է հաջորդ ազատ բջիջը որոշակի հաջորդականությամբ (ուղղահայաց, քառակուսային, երկկողմ հեշավորում):
  2. Շղթայակապում (chaining) — յուրաքանչյուր հեշ աղյուսակի բջիջում պահվում է բոլոր նույն հեշ-արժեքով տարրերի կապված ցանկը:
  3. Նոր հեշավորում — բախման դեպքում կիրառվում է այլ հեշ-ֆունկցիա:

Python-ում շղթայակապման օրինակ՝

հեշ_թերթ = [[] for _ in range(10)]

def ավելացնել( բանալի, արժեք):
    ինդեքս = hash(բանալի) % 10
    հեշ_թերթ[indeks].append((բանալի, արժեք))

ավելացնել('խնձոր', 1)
ավելացնել('պամ', 2)  # հնարավոր բախում