Dataxtlar, ikki tomonlama daraxtlar, ikkilik daraxtlarning vakilligi, ikkilik daraxtlarning o’tishi
2“Dataxtlar, ikki tomonlama daraxtlar, ikkilik daraxtlarning vakilligi, ikkilik daraxtlarning o’tishi” MUNDARIJA Kirish ……………………………………... …………………………….……..…….3 I. NAZARIY QISM 1.1. Daraxtlar haqida ma’lumot…………………………………………..….…….4 1.2. Ikki tomonlama daraxtlar …………………………………………..…….…..14 II. AMALIY QISM 2.1. Ikkilik daraxtlarning vakili .............................................… ……………...… …21 2.2. Ikkilik daraxtlarning o’tishi ………………………………………………...….23 2.3. Ikkilik daraxtlarga misollar…………………………………………….……...29 Xulosa ……………………………………………………………………….….….32 Foydalanilgan adabiyotlar ………………….……………………………….……33
3 Kirish. Ko'pchilik uchun "algoritm" so'zi maktab matematikasi bilan yoqimsiz aloqalarni keltirib chiqaradi. Darhaqiqat, algoritmlar dasturlashda qo'llanila boshlanganidan ancha oldin odamlar ulardan foydalanishni boshladilar va ularning faoliyat sohasi faqat matematika bilan cheklanmaydi. Non pishirganda, siz retseptdan foydalanasiz va shuning uchun algoritmga amal qilasiz. Algoritmlar tosh davridan beri inson hayotining ajralmas qismi bo'lib kelgan. Mualliflar kognitiv fan, matematika va iqtisod sohalaridagi fanlararo tadqiqotlar bilan yaxshi tanish. Himoya qilishdan oldin tezis tadqiqotda ingliz tilidan, Brayan o'qigan Kompyuter texnologiyalari va falsafani o'rgandi va har uch mutaxassislik chorrahasida martaba qurdi. Tom Berklidagi Kaliforniya universitetida professor bo'lishdan oldin psixologiya va statistikani o'rganish bilan ko'p yillar davomida shug'ullangan va u erda deyarli barcha vaqtini insonning aqliy faoliyati va hisoblash operatsiyalari o'rtasidagi munosabatlarni o'rganishga bag'ishlaydi. Bundan tashqari, hayot uchun algoritmlarni qidirishda mualliflar so'nggi 50 yil ichida eng mashhur algoritmlarni ishlab chiqqan odamlar bilan suhbatlashdi. Va ular o'zlarining tadqiqotlari hayotiy muammolarni hal qilishda yondashuvlariga qanday ta'sir qilganini so'rashdi. Zero, u aytganidek, “ilm shunchaki bilimlar majmuasidan ko‘ra ko‘proq ma’lum fikrlash tarzidir”. Har bir inson har kuni juda ko'p muammolarga duch keladi, eng oddiy va eng ma'lum bo'lganidan tortib eng qiyinigacha. Ko'pgina vazifalar uchun ijrochiga ushbu vazifani qanday hal qilishni tushuntiradigan muayyan qoidalar (ko'rsatmalar, retseptlar) mavjud. Inson ushbu qoidalarni oldindan o'rganishi yoki muammoni hal qilish jarayonida o'zini shakllantirishi mumkin. Muammolarni hal qilish qoidalari qanchalik to`g`ri va aniq tasvirlangan bo`lsa, odam ularni shunchalik tez o`zlashtiradi va qo`llashda samaraliroq bo`ladi. Inson ko'plab vazifalarning echimini texnik qurilmalarga - avtomatik mashinalarga, robotlarga, kompyuterlarga o'tkazishi mumkin.
41.1. Daraxtlar haqida malumot . Algoritmlarning daraxtlar bilan ishlash samaradorligi . "Daraxtlar - rekursiv algoritmlar" va "makon-vaqt" juftligi o'rtasida o'xshashliklarni yaratish mumkin. Rekursiv dastur ishlayotganda funktsiya chaqiruv daraxti o'z vaqtida kengaytiriladi va daraxt ma'lumotlar tuzilishi sifatida rekursiv algoritm bajarilishining xotirada xaritalangan natijasiga o'xshaydi. Shuning uchun rekursiv algoritmlarning samaradorligi to'g'risidagi xulosalar daraxtlarga taalluqlidir: - daraxtning to'liq rekursiv o'tishi chiziqli; - samarali ochko'zlik algoritmlari. Daraxtga nisbatan ochko'zlik har bir tepada bitta bolani tanlashdan iborat. Rekursiv chaqiruv davri o'rniga, barcha avlodlar uchun bitta qo'ng'iroq bo'lishi kerak. Siz har bir qadamda tanlangan bolaga borib, rekursiv algoritmni dumaloq algoritm bilan almashtirishingiz mumkin. Aniq uchun asosochko'z tanlov - daraxtga ortiqcha narsalarni kiritish (tepalikdagi qo'shimcha ma'lumotlar) yoki undagi ma'lumotlarni buyurtma qilish. Daraxtlarning to'liq rekursiv o'tishiga asoslangan algoritmlar. Dastlab, daraxtda ma'lumotlar qanday tashkil qilinganligidan qat'i nazar, eng oddiy algoritmlarni ko'rib chiqamiz. Daraxtning to'liq rekursiv o'tishi daraxtning barcha tepalarini bosib o'tishni va butun daraxt tuzilishining umumiy xususiyatlarini olishdan iborat. Siz darhol bypass natijasini shakllantirishning texnologik usullari haqida to'xtalishingiz kerak: - rekursiv funktsiyani aniq natijasi rekursiv funktsiyadan tushadigan zanjirning bajarilishi paytida uning to'planishini nazarda tutadi (ya'ni, natijaning to'planishi teskari yo'nalishda - avlodlardan ajdodgacha). Bundan tashqari , har bir tepalik, avlodlardan olingan natijalarni o'ziga xos "malhamda uchib" qiladi, ya'ni. subtrees natijalarini o'zi bilan birlashtiradi; - rekursiv chaqiriqlar zanjiri bo'ylab uzatiladigan rasmiy parametr - zvenodan foydalanish mumkin. Bunday holda, barcha rekursiv chaqiriqlar natijani to'plash
5uchun ishlatiladigan global ma'lumotlarning rolini o'ynaydigan umumiy o'zgaruvchiga ishora qiladi. Ro'yxatlar va massivlar bilan dastlabki taqqoslash. Daraxtdagi ma'lumotlarni tashkil qilish tafsilotlariga kirmasdan ham , biz uchun ma'lum bo'lgan uning vakili shakllariga asoslanib, dastlabki xulosalar chiqarishimiz mumkin. Birinchidan, ichidaAlgoritmik ravishda daraxt taniqli so'zlarni "o'rmonga - ko'proq o'tin" ga amal qiladi. Bu holda "o'tin" bu daraxtning "chuqurligi" o'sishi bilan sonning eksponent o'sishi bo'lgan tepalardir. Agar bir vaqtning o'zida "ortiqcha" daraxtlarni kesishni samarali tashkil etish imkoniyati mavjud bo'lsa, unda elementlarni qiymatlari bo'yicha topish va ularga mantiqiy raqamlar bo'yicha kirishning samarali algoritmlariga umid qilish mumkin. Bu erda ro'yxatlarga nisbatan aniq ustunlik mavjud, bu erda barcha algoritmlar to'liq qidirishga asoslangan (chiziqli qidirish). Ikkinchidan, texnologik jihatdantepaliklarning tartibini yoki daraxtlarga joylashishini o'zgartirish, ro'yxatlarda bo'lgani kabi, alohida tepalardagi bog'lanishlarni (filiallarni) qayta tashkil etish orqali ham amalga oshirilishi mumkin. Bu elementlarning massiv harakatini (siljishini) talab qiladigan massivlarga nisbatan aniq ustunlikka ega. Shunday qilib, samaradorlik nuqtai nazaridan daraxt bu ikkita haddan tashqari: qator va ro'yxat o'rtasidagi kelishuvdir. Muvozanat kabi xarakterli daraxtni tanishtiramiz.Balans daraxt shoxlari uzunliklarida tarqalishini xarakterlaydi. Aniqrog'i, biz ildiz shoxidan tepalikka qadar erkin shox bilan masofalar haqida gapiramiz. Maksimal va minimal novdalar uzunligi 1dan ko'p bo'lmagan farq qilsa , daraxt muvozanatli deb ataladi, bunday daraxt novdaning uzunligi bilan daraxtning tepalari soni o'rtasidagi eksponent (yoki teskari, logaritmik) bog'liqlik bilan tavsiflanadi : N = 1 + m + m 2 + m 3 +… + m L < m L , L <log m N Eng yomon holatda, har bir tepada bittadan bola bo'lsa, daraxt tanazzulga uchraydi , bu holda novdalar uzunligi 1 ga teng bo'lmagan tepalar soniga teng bo'ladi. Bundan tashqari, bir martalik o'qqa asoslangan barcha algoritmlar, to'liq rekursiv o'tish, chiziqli murakkablikka ega bo'ladiT = N . Ularning yaxshilanishi faqatgina
6"botirish chuqurligini" cheklashdan iborat bo'lishi mumkin, agar buning uchun etarli asoslar mavjud bo'lsa. Yana bir narsa shundaki , unga asoslangan algoritmlardallanma. Har bir tepada ular mumkin bo'lgan bolalardan faqat bittasini tanlaydilar. Bunday algoritmlar deyiladiochko'zlik ("8.7. Rekursiv algoritmlarning samaradorligi" ga qarang). Siz darhol ularning murakkabligi ular tanlagan daraxt novdasi uzunligiga teng ekanligini darhol ko'rishingiz mumkin. Balanslangan daraxt uchun qaramlik logaritmik bo'ladi. T = L <log m N, daraxtlar ro'yxatiga kirib borishi uchun u chiziqli. Bu erda ikkita muammo mavjud. Birinchidan, muvozanatli daraxtni saqlash. Buning ikkita echimi mavjud: - odatdagidan ancha murakkab bo'lgan daraxt muvozanatini saqlaydigan algoritmlardan foydalanish, chunki ular qo'shni daraxtlar vertikallari guruhlarining turli xil topologik transformatsiyalaridan foydalanadilar (bundan tashqari, rekursiv); - daraxtning davriy hizalanishi (muvozanati), ehtimol qo'shimcha ma'lumotlar tuzilishi yordamida. Ushbu echim daraxt bilan ishlash uchun oddiy algoritmlardan foydalanishga imkon beradi , lekin uning muvozanatini kuzatishni talab qiladi (xuddi shu algoritmlar buni amalga oshirishi mumkinligiga e'tibor bering, masalan, ma'lum bir qiymatni qidirishda filial uzunligini aniqlash). Balanslash protsedurasi ancha vaqt talab qilishi mumkin , ammo bu nisbatan kamdan-kam hollarda deyiladi. Kundalik darajada ushbu alternativani "ideal tartib yoki davriy umumiy tozalash " sifatida shakllantirish mumkin . Shunga o'xshash holat har qanday dinamik resurslarni taqsimlash va ulardan foydalanish tizimida uchraydi: dinamik xotirani ajratish tizimida (2.6), ikkilik faylni rejalashtirishda (9.2), operatsion tizimning fayllarni boshqarish tizimida, u o'xshash echimlarga ega. Ikkinchi muammo algoritmda har bir tepada bitta avlodni aniq tanlash uchun asoslar yotadi (badiiy o'xshashlik - "chorrahada ritsar"). Bu erda yana ikkita yondashuv mavjud: - tepada qo'shimcha (ortiqcha) ma'lumotlarning mavjudligi , bu "bu erda va