Matritsada qidiruv algoritmlari
Mavzu: “Matritsada qidiruv algoritmlari” Mundarija Mavzu: Matritsada qidiruv algoritmlari ......................................................................................................... 2 Kirish ............................................................................................................................................................. 2 I BOB.Matritsa haqida tushuncha .................................................................................................................. 4 1.1.Matritsalarni qayta ishlash .................................................................................................................. 5 1.2. Matritsani kiritish-chiqarish algoritmi ................................................................................................ 5 1.3. Matritsalarni qayta ishlash algoritmlariga misollar ............................................................................. 6 II BOB.Matritsalarni qidirish algoritmi tarixi va uning dasturi ........................................................................ 7 2.1.Matritsada muntazam qidiruv ............................................................................................................. 8 2.2.Matritsada ikkilik qidiruv ................................................................................................................... 11 2.3.Matritsada qidirsh algoritm dastulari c++ va phytonda kodlari tahlili ............................................... 14 2.4.Matritsalarni tartiblash algoritm ....................................................................................................... 16 III BOB.Matritsalarni qo’shish,ayirishva ko’paytirish ................................................................................... 18 3.1.Matirtsalarni qo’shish ........................................................................................................................ 18 3.2. Matirtsalarni ayirish .......................................................................................................................... 19 3.3.Matritsalarni ko’paytirish .................................................................................................................. 20 Foydalanilgan adabiyotlar ........................................................................................................................... 22 Ilovalar ........................................................................................................................................................ 23
Mavzu: Matritsada qidiruv algoritmlari Kirish Universitetga matematika bilan bog'liq mutaxassislik bo'yicha kirgan har qanday odam matritsalarni o'rganishga duch keladi. Matritsa operatsiyalari algebraning eng muhim bo'limidir. C + da dasturlash kursini o'rganar ekanmiz, biz faqat eng oddiy vazifalardan foydalandik, masalan, yig'indi va farqni topish, shuningdek, qatorlar / ustunlar bo'yicha saralashning har xil turlari va boshqalar. Bugungi kunda matematik dasturlash barcha dasturlashning muhim tarkibiy qismi hisoblanadi. Oddiy dasturlar tufayli katta va murakkab hisob-kitoblar oddiy holga keladi. Mikroelektronika fan va texnikaning eng tez va samarali rivojlanayotgan sohalaridan biridir. Biroq, sxemalarning rivojlanishi bilan birga, ishlab chiqilgan sxemalarning murakkabligi ham ortadi. Mantiqiy modeli matritsa, xususan, mantiqiy modeli bo'lgan sxema elementlari mavjud. Mikrosxemaning maydoni va uning ishlashi ko'p jihatdan matritsaning parametrlariga bog'liq. Shuning uchun, ustuvor vazifa, masalan, Mantiqiy matritsalarning eng qisqa qopqog'ini topish orqali elementning hajmini kamaytirishdir. Eng qisqa qamrovlarni izlashning maqsadga muvofiqligi mantiqiy funktsiyalarning DNF ni minimallashtirishda, mantiqiy sxemalarning ayrim turlarini sintez qilishda, mantiqiy tenglamalar tizimini echishda, eng oddiy diagnostika testlarini qidirishda, shuningdek, boshqa ko'plab muammolarni hal qilishda yuzaga keladi. bo'lib chiqadigan hal qilish usullarining samaradorligi Eng qisqa qoplamalarni topish algoritmlari, ayniqsa, nisbatan katta matritsa o'lchamiga ega bo'lgan odam uchun mashaqqatli ishdir, shuning uchun men ishlab chiqqan dastur bu ishni juda osonlashtiradi. Ushbu ishning dolzarbligi shundaki, bugungi kunda Yer sayyorasi aholisining yarmidan ko'pi kompyuterdan foydalanadi. Ularning ko'pchiligi o'z ishini turli manbalardan kerakli ma'lumotlarni, xoh u Internet, ma'lumotlar bazalari yoki mahalliy diskdagi fayllarni qidirishdan boshlaydi va agar qidiruv vaqti hatto bir soniyaga ko'paytirilsa, unda umumiy vaqt sarflangan kerakli ma'lumotlarni qidirayotgan barcha foydalanuvchilar 200 yildan oshadi. Shuning uchun qidiruv vaqtini minimal darajaga qisqartiradigan qidiruv algoritmlarini ishlab chiqish, saqlash va amalga oshirish juda muhimdir. Google infratuzilma bo‘yicha vitse-prezidenti Urs Xölzlening so‘zlariga ko‘ra, “Tezlikni saqlab qolish uchun bizda bitta oddiy qoida bor: qidiruv jarayonini sekinlashtiradigan funksiyalarni ishlatmang. Siz ajoyib yangi algoritm ixtiro qilishingiz mumkin, lekin agar u qidiruvni sekinlashtirsa, siz bu haqda unutishingiz, tuzatishingiz yoki sekinlashuvning o'rnini bosadigan boshqa o'zgarishlarni o'ylab topishingiz kerak bo'ladi. Bizda oilaviy byudjetga o'xshash "qat'iy kechikish byudjeti" mavjud. Agar siz 2
chiroyliroq ta'tilga chiqmoqchi bo'lsangiz-u, lekin byudjetingiz kengaymasa, boshqa joyni qisqartirishingiz kerak." Aynan shuning uchun ko'plab o'zini o'zi hurmat qiladigan dasturiy ta'minot ishlab chiqaruvchi kompaniyalarda umuman dasturiy ta'minot tezligiga va ayniqsa samarali qidiruv algoritmlarini ishlab chiqishga alohida e'tibor beriladi, ishlab chiqish guruhi darajalarni ko'rishi uchun ishlash doimiy ravishda nazorat qilinadi. xizmatlarning kechikishi. Shuning uchun ham bir necha yil oldin ishlar sekinlasha boshlaganida, asosiy e’tibor mahsulotlarni tezroq ishlab chiqarishga qaratildi. Tezlik muhandislik madaniyatining muhim qismidir. Tez qidiruvning asosi nafaqat ma'lumotni tezda topish, balki ushbu ma'lumotlarning so'rovga mos kelishiga ishonch hosil qilish imkonini beruvchi samarali qidiruv algoritmlarini ishlab chiqishdir, shuning uchun ushbu kurs ishining maqsadi qidiruv algoritmlarini o'rganish va tahlil qilishdir. 3
I BOB.Matritsa haqida tushuncha Matritsa - bu halqa yoki maydon elementlarining to'rtburchaklar jadvali (masalan, butun, haqiqiy yoki murakkab sonlar) shaklida yozilgan matematik ob'ekt bo'lib, uning elementlari kesishgan joyda joylashgan qatorlar va ustunlar to'plamidir. Matritsaning satrlari va ustunlari soni matritsaning hajmini aniqlaydi. Masalan, uchburchak matritsalar tarixan ko'rib chiqilgan bo'lsa-da, bugungi kunda faqat to'rtburchaklar matritsalar haqida gapiriladi, chunki ular eng qulay va umumiydir. Matritsalar matematikada chiziqli algebraik yoki differentsial tenglamalar tizimini ixcham tasvirlash uchun keng qo'llaniladi. Bunda matritsa qatorlari soni tenglamalar soniga, ustunlar soni esa noma’lumlar soniga mos keladi. Natijada chiziqli tenglamalar sistemalarining yechimi matritsalar ustidagi amallarga qisqaradi. Matritsa uchun quyidagi algebraik amallar aniqlanadi: 1. bir xil o'lchamdagi matritsalarni qo'shish; 2. mos o'lchamdagi matritsalarni ko'paytirish (ustunlari bo'lgan matritsa o'ng tomonda satrli matritsaga ko'paytirilishi mumkin ); 3. shu jumladan vektor matritsa bilan ko'paytirish (matritsani ko'paytirishning odatiy qoidasiga ko'ra; vektor bu ma'noda matritsaning maxsus holatidir); 4. matritsani asosiy halqa yoki maydonning elementi (ya'ni skaler) bilan ko'paytirish. Qo'shishga nisbatan matritsalar abel guruhini tashkil qiladi; agar biz skaler bilan ko'paytirishni ham ko'rib chiqsak, u holda matritsalar mos keladigan halqa (maydon ustidagi vektor fazosi) ustida modul hosil qiladi. Kvadrat matritsalar to'plami matritsani ko'paytirishda yopiladi, shuning uchun bir xil o'lchamdagi kvadrat matritsalar matritsani qo'shish va matritsani ko'paytirishda birlik bilan assotsiativ halqa hosil qiladi. 4
n o'lchovli chiziqli fazoda harakat qiluvchi har bir chiziqli operator n tartibli yagona kvadrat matritsa bilan bog'lanishi mumkinligi isbotlangan; va aksincha - n-tartibli har bir kvadrat matritsasi bu fazoda harakat qiluvchi yagona chiziqli operator bilan bog'lanishi mumkin. Matritsaning xossalari chiziqli operatorning xossalariga mos keladi. Xususan, matritsaning xos qiymatlari operatorning tegishli xos vektorlarga mos keladigan xos qiymatlari hisoblanadi. 1.1.Matritsalarni qayta ishlash Matritsa ikki o'lchovli massiv bo'lib, uning har bir elementi ikkita indeksga ega: qator raqami - i ; ustun raqami - j . Shuning uchun matritsa elementlari bilan ishlash uchun ikkita halqadan foydalanish kerak. Agar birinchi tsikl parametrining qiymatlari matritsa satrlari raqamlari bo'lsa, ikkinchisi parametrining qiymatlari ustunlar bo'ladi (yoki aksincha). Matritsani qayta ishlash shundan iboratki, dastlab birinchi qator (ustun) elementlari navbatma- navbat, keyin ikkinchisi va boshqalar ko'rib chiqiladi. oxirigacha. Masalalarni yechishda matritsalar ustida bajariladigan asosiy amallarni ko'rib chiqing. 1.2. Matritsani kiritish-chiqarish algoritmi Matritsalar, massivlar kabi, element bo'yicha kiritilishi (chiqish) kerak. Matritsa elementlarini kiritish blok diagrammasi rasmda ko'rsatilgan. 1-rasm. Matritsaning chiqishi kirishga o'xshash tarzda tashkil etilgan. 1-rasm 2-rasm Matritsalarni qayta ishlashning bir qancha masalalarini ko'rib chiqamiz. Ularni yechish uchun matritsalarning ayrim xossalarini o‘quvchiga eslatib o‘tamiz (2-rasm): agar elementning satr raqami ustun raqamiga to'g'ri kelsa (i = j) , bu element matritsaning asosiy diagonalida joylashganligini anglatadi; 5