GoDasturchi
Trie Fundamentals

Trie Fundamentals

Trie (prefiks daraxti) asoslari

Telefoningizda xabar yozayotganda, birinchi bir necha harfni terishingiz bilanoq, u qolgan so'zni taklif qiladi. Bu qanday ishlaydi? Ko'pincha buning ortida Trie ("prefiks daraxti", inglizcha "retrieval" so'zidan, "tray" deb talaffuz qilinadi) degan tuzilma yotadi.

Trie — bu maxsus daraxt: har bir tugun bitta harfni ifodalaydi, va ildizdan biror tugungacha bo'lgan yo'l bitta prefiksni (so'zning boshlanishi) hosil qiladi. Masalan "go" va "gopher" so'zlari qo'shilsa, ular g -> o gacha bo'lgan yo'lni baham ko'radi, keyin "gopher" uchun yo'l davom etadi: p -> h -> e -> r.

misol.txt
      (ildiz)
        |
        g
        |
        o  <- bu yerda "go" so'zi tugaydi (isEnd=true)
        |
        p
        |
        h
        |
        e
        |
        r  <- bu yerda "gopher" so'zi tugaydi (isEnd=true)

Har bir tugun ikkita narsani biladi: qaysi harflar bilan davom etish mumkinligi (bolalar xaritasi) va shu yergacha bo'lgan yo'l to'liq bir so'zni tashkil qiladimi (isEnd bayrog'i). Aynan shu isEnd bayrog'i muhim: "go" so'zidan keyin ham yo'l davom etishi mumkin ("gopher"ga), lekin "go"ning o'zi ham to'liq, mustaqil so'z ekanini bilishimiz kerak.

Trie'ning eng katta afzalligi — prefiks bo'yicha qidirish juda tez: "go" bilan boshlanadigan hamma so'zni topish uchun shunchaki g -> o yo'lidan pastga tushib, o'sha yerdan boshlab hamma "filial"larni yig'ish kifoya — butun lug'atni tekshirib chiqish shart emas. Aynan shu sabab bilan trie'lar avtomatik to'ldirish, imlo tekshiruvchi va IP-manzil marshrutlash kabi tizimlarda keng qo'llaniladi.

Key Takeaway

Key Takeaway:

Trie — har bir tugun bitta harfni ifodalaydigan, umumiy prefikslarni baham ko'radigan daraxt; u so'z qidirish va avtomatik to'ldirish kabi "prefiks bo'yicha qidirish" vazifalarini juda tezlashtiradi.

NEXT UP

Implementing a Trie

Trie Fundamentals

Trie (prefiks daraxti) asoslari

Telefoningizda xabar yozayotganda, birinchi bir necha harfni terishingiz bilanoq, u qolgan so'zni taklif qiladi. Bu qanday ishlaydi? Ko'pincha buning ortida Trie ("prefiks daraxti", inglizcha "retrieval" so'zidan, "tray" deb talaffuz qilinadi) degan tuzilma yotadi.

Trie — bu maxsus daraxt: har bir tugun bitta harfni ifodalaydi, va ildizdan biror tugungacha bo'lgan yo'l bitta prefiksni (so'zning boshlanishi) hosil qiladi. Masalan "go" va "gopher" so'zlari qo'shilsa, ular g -> o gacha bo'lgan yo'lni baham ko'radi, keyin "gopher" uchun yo'l davom etadi: p -> h -> e -> r.

misol.txt
      (ildiz)
        |
        g
        |
        o  <- bu yerda "go" so'zi tugaydi (isEnd=true)
        |
        p
        |
        h
        |
        e
        |
        r  <- bu yerda "gopher" so'zi tugaydi (isEnd=true)

Har bir tugun ikkita narsani biladi: qaysi harflar bilan davom etish mumkinligi (bolalar xaritasi) va shu yergacha bo'lgan yo'l to'liq bir so'zni tashkil qiladimi (isEnd bayrog'i). Aynan shu isEnd bayrog'i muhim: "go" so'zidan keyin ham yo'l davom etishi mumkin ("gopher"ga), lekin "go"ning o'zi ham to'liq, mustaqil so'z ekanini bilishimiz kerak.

Trie'ning eng katta afzalligi — prefiks bo'yicha qidirish juda tez: "go" bilan boshlanadigan hamma so'zni topish uchun shunchaki g -> o yo'lidan pastga tushib, o'sha yerdan boshlab hamma "filial"larni yig'ish kifoya — butun lug'atni tekshirib chiqish shart emas. Aynan shu sabab bilan trie'lar avtomatik to'ldirish, imlo tekshiruvchi va IP-manzil marshrutlash kabi tizimlarda keng qo'llaniladi.

Key Takeaway

Key Takeaway:

Trie — har bir tugun bitta harfni ifodalaydigan, umumiy prefikslarni baham ko'radigan daraxt; u so'z qidirish va avtomatik to'ldirish kabi "prefiks bo'yicha qidirish" vazifalarini juda tezlashtiradi.

NEXT UP

Implementing a Trie