• O’rtacha holat tahlili.
  • Qidiruv algoritmlari




    Download 102.53 Kb.
    bet2/3
    Sana29.09.2022
    Hajmi102.53 Kb.
    #26577
    1   2   3
    Bog'liq
    Qidiruv algoritmlari

    SequentialSearch (list, target,N)
    list // qidirish amalini bajarish uchun ro‘yxat
    target //kalit qiymati
    N //ro‘yxatdagi elementlar soni
    for i=1 to N do
    if (target=list[i]) return i
    end if end for return 0
    Algoritmning tahlili. Ketma-ket qidiruv algoritmida ikki eng yomon holat mavjud. Birinchi holatda qidiruvdagi element ro‘yxat oxirida joylashgan bo‘ladi. Ikkinchi holatda esa, qidiruvdagi element ro‘yxatda mavjud bo‘lmaydi. Har ikki holatda ham necha marta taqqoslash amali bajarilishini qarab chiqamiz. Ro‘yxat elementlarining kalit qiymati unikal (takrorlanmas) deb qaraydigan bo‘lsak, qidiruvdagi elementga moslik oxirgi yozuvda uchrasa, u holda oxirgi taqqoslash keraksiz bo‘lishi mumkin. Lekin algoritm oxirgi elementga qadar taqqoslash amalini bajaradi. Natijada N ta taqqoslash amalga oshiriladi (bu yerda N- ro‘yxatdagi elementlar soni).
    Qidirilayotgan qiymatning ro‘yxatda yo‘qligini tekshirish uchun uni ro‘yxatning barcha elementlari bilan taqqoslab chiqishga to‘g‘ri keladi. Agar biror element bilan taqqoslash qoldirilsa, u holda qidirilayotgan element rostdan ham ro‘yxatda yo‘qligini aniqlab bo‘lmaydi. Bu esa ro‘yxatning barcha elementlarini qarab chiqishni talab etadi va bu holatda ham N marta taqqoslash amalga oshiriladi.
    Umuman olganda, qidirilayotgan element ro‘yxatning oxirgi elementi yoki unda mavjud emasligini aniqlash uchun N marta taqqoslash amali bajariladi. N har qanday qidiruv algoritmining eng yuqori chegarasi hisoblanadi, agar taqqoslashlar N dan ko‘p bajarilsa, hech bo‘lmaganda ro‘yxatning bitta elementi bilan ikki marta taqqoslash bajarilganligini bildiradi. Bundan kelib chiqadiki, ortiqcha ish bajarilgan va algoritmni yaxshilash talab etiladi.
    O’rtacha holat tahlili. Qidiruv algoritmi uchun ikkita o‘rtacha holat mavjud. Birinchi holatda qiqdiruv muvaffaqiyatli, ikkinchi holatda qidiruv samarasiz, ya‘ni qidirilayotgan element ro‘yxatda mavjud bo‘lmasligi mumkin.
    Agar qidirilayotgan element ro‘yxatda bo‘lsa, u holda N marta mumkin bo‘lgan holatlardan biriga teng bo‘ladi: birinchi, ikkinchi, uchinchi va h.k. Bu holatlarning barchasini teng ehtimolli deb faraz qilamiz, ya‘ni qidirilayotgan element mavjud holatlarning birida uchrashi ehtimoli 1/N ga teng bo‘ladi.
    Ushbu xulosalardan kelib chiqqan holda quyidagi savollar tug‘iladi:

    1. Agar qidirilayotgan element ro‘yxatda birinchi turgan bo‘lsa, necha marta taqqoslash bajariladi?

    2. Ikkinchi bo‘lsa-chi?

    3. Uchinchisi bo‘lsa-chi?

    4. N-element bo‘lsa-chi?

    Agar yuqorida aytilgan fikrlardan kelib chiqadigan bo‘lsak, ushbu savollarga javob tayyor, chunki har bir holat uchun mos ravishda 1, 2, 3 va N marta taqqoslash bajariladi. Bu esa N ta holatdan har biri qidirilayotgan elementning ro‘yxatda joylashish tartibiga mos kelishini bildiradi. Natijada, o‘rtacha holatlar uchun quyidagi tenglikga erishamiz:


    A(N) = 1 f, = 1.N(N +1) = N+1 , (i)
    N : N 2 2 ' ’
    Agar qidirilayotgan element ro‘yxatda mavjud bo‘lmasa taqqoslashlar soni N+1 gacha oshib ketadi. Element ro‘yxatda mavjud bo‘lmasa, u holda qidiruv uchun N ta taqqoslash zarurligini yuqorida ko‘rib chiqdik. Agar barcha N+1 taqqoslashlar teng ehtimolli deb faraz qilsak, u holda quyidagi formula kelib chiqadi:







    A( N) =

    N
    :,+N

    i=1

    N
    :,+
    i=1

    N (N +1) N
    2 N +1

    (2)

    Agarda ro‘yhat elementlari soni N juda katta son bo‘lsa u holda 1/(N+1) ning qiymati 0 ga yaqin son bo‘ladi.


    Indeksli ketma-ket qidiruv algoritmi
    Bu qidirish usulida ikkita jadval tashkil etiladi: o‘z kalitlariga ega bo‘lgan ma‘lumotlar jadvali (o‘sish tartibida joylashtirilgan) va ma‘lumotlar kalitlaridan tashkil topgan indekslar jadvali. Bu kalitlar asosiy jadvaldan oldindan aniqlangan intervalda olinadi (2-rasm).




    2-rasm. Indeksli ketma-ket qidirish usuliga misol.

    Bu yerda birinchi berilgan argument bo‘yicha indekslar jadvalidan ketma- ketlikda qidirish amalga oshiriladi. Kalitlarni ko‘rib chiqishda berilgan kalitdan kichigi topilsa, u holda ushbu kichik kalitni asosiy jadvaldagi qidirishning eng quyi chegarasi - low ga joylashtiramiz, xuddi shunday berilgan kalitdan katta deb topilgan kalitni (kind > key) yuqori hi ga joylashtiramiz. Misol uchun, key = 101.






    Download 102.53 Kb.
    1   2   3




    Download 102.53 Kb.