Rivojlantirish vazirligi muhammad al xorazmiy nomidagi
/*Ifodalar daraxti uchun infiks ifodasini chop eting
Download 134.08 Kb.
|
algaritm2
- Bu sahifa navigatsiya:
- /*Ifoda daraxti uchun postfiks ifodasini chop eting. Pre : tree - ifoda daraxtiga korsatgich Xabar: postfiks ifodasi chop etildi*/
- /*Ifoda daraxti uchun postfiks ifodasini chop eting. Pre : tree - ifoda daraxtiga korsatgich Xabar: postfiks ifodasi chop etildi
/*Ifodalar daraxti uchun infiks ifodasini chop eting.
Pre : tree - ifoda daraxtiga ko'rsatgich Xabar: infix ifodasi chop etildi*/ if (tree not empty) if (tree token is operator) print (open parenthesis) end if infix (tree left subtree) print (tree token) infix (tree right subtree) if (tree token is operator) print (close parenthesis) end if end if end infix Postfiksdan oʻtish[tahrir | manbasini tahrirlash] Postfiks ifodasi har qanday binar daraxtning asosiy buyruqdab keyingi oʻtish orqali hosil boʻladi. Qavslar kerak emas. Algoritm postfiks ( daraxt ) Algorithm postfix (tree) /*Ifoda daraxti uchun postfiks ifodasini chop eting. Pre : tree - ifoda daraxtiga ko'rsatgich Xabar: postfiks ifodasi chop etildi*/ if (tree not empty) postfix (tree left subtree) postfix (tree right subtree) print (tree token) end if end postfix Prefiks oʻtish[tahrir | manbasini tahrirlash] Psevdokod: Algoritm prefiks ( daraxt ) Algorithm prefix (tree) /*Ifoda daraxti uchun postfiks ifodasini chop eting. Pre : tree - ifoda daraxtiga ko'rsatgich Xabar: postfiks ifodasi chop etildi*/ if (tree not empty) print (tree token) prefix (tree left subtree) prefix (tree right subtree) end if end prefix Ifodalar daraxtini qurish manbasini tahrirlash Daraxtning qurilishi postfiks ifodasini bir vaqtning oʻzida bitta belgini oʻqish orqali amalga oshiriladi. Agar belgi operand boʻlsa, bitta tugunli daraxt yaratiladi va uning koʻrsatkichi stekga suriladi. Agar belgi operator boʻlsa, ikkita T1 va T2 daraxtiga koʻrsatgichlar stekdan chiqariladi va ildizi operator boʻlgan va chap va oʻng sonlari mos ravishda T2 va T1 ni koʻrsatadigan yangi daraxt hosil boʻladi. Keyin ushbu yangi daraxtga koʻrsatgich stekka suriladi[2]. Misol[tahrir | manbasini tahrirlash Postfiks yozuvidagi kirish: ab + cde + * * Birinchi ikkita belgi operandlar boʻlganligi sababli, bitta tugunli daraxtlar yaratiladi va ularga koʻrsatgichlar stekga suriladi. Qulaylik uchun stek chapdan oʻngga oʻsadi. Stek chapdan oʻngga oʻsadi Keyingi belgi „+“ belgisidir. U ikkita koʻrsatgichni daraxtlarga koʻchiradi, yangi daraxt hosil boʻladi va unga koʻrsatgich stekga suriladi. Yangi daraxtning shakllanishi Keyin c, d va e oʻqiladi. Har biri uchun bitta tugunli daraxt yaratiladi va mos keladigan daraxtga koʻrsatgich stekga suriladi. Bir tugunli daraxt yaratish Davom etishda „+“ belgisi oʻqiladi va u oxirgi ikkita daraxtni birlashtiradi. Endi „*“ oʻqiladi. Oxirgi ikkita daraxt koʻrsatkichi ochiladi va ildiz sifatida „*“ belgisi bilan yangi daraxt hosil boʻladi. Ildiz bilan yangi daraxtni shakllantirish Nihoyat, oxirgi belgi oʻqiladi. Ikki daraxt birlashtiriladi va oxirgi daraxtda koʻrsatgich stekda qoladi. Ab + cde + * * ifoda daraxtini yaratish bosqichlari ((5 + z) / −8) * (4 ^ 2) ga ekvivalent ikkilik algebraik ifoda daraxti Algebraik ifodalar[tahrir | manbasini tahrirlash Algebraik ifoda daraxtlari raqamlar, oʻzgaruvchilar va birlik va ikkilik operatorlarni oʻz ichiga olgan ifodalarni ifodalaydi. Baʼzi umumiy operatorlar × (koʻpaytirish), ÷ (boʻlish), + (qoʻshish), — (ayirish), ^ (koʻrsatkich) va — (inkor). Operatorlar daraxtning ichki tugunlarida, raqamlar va oʻzgaruvchilar barg tugunlarida joylashgan boʻladi[3]. Ikkilik operatorlar tugunlarida ikkita tugun, birlik operatorlarda esa bitta tugun mavjud. Ikkilik mantiqiy ifoda daraxtiga ekvivalent ((rost {\displaystyle \lor } yolgʻon) {\displaystyle \land } {\displaystyle \neg } yolgʻon) {\displaystyle \lor } (rost {\displaystyle \lor } yolgʻon)) Binar daraxtda har bir tugun-elementdan ko’pi bilan 2 ta shox chiqadi. Daraxtlarni xotirada tasvirlashda uning ildizini ko’rsatuvchi ko’rsatkich berilishi kerak. Daraxtlarni kompyuter xotirasida tasvirlanishiga ko’ra har bir element (binar daraxt tuguni) to’rtta maydonga ega yozuv shaklida bo’ladi, ya’ni kalit maydon, informatsion maydon, ushbu elementni o’ngida va chapida joylashgan elementlarning xotiradagi adreslari saqlanadigan maydonlar. Shuni esda tutish lozimki, daraxt hosil qilinayotganda, otaga nisbatan chap tomondagi o’g’il qiymati kichik kalitga, o’ng tomondagi o’g’il esa katta qiymatli kalitga ega bo’ladi. Har safar daraxtga yangi element kelib qo’shilayotganda u avvalambor daraxt ildizi bilan solishtiriladi. Agar element ildiz kalit qiymatidan kichik bo’lsa, uning chap shoxiga, aks holda o’ng shoxiga o’tiladi. Agar o’tib ketilgan shoxda tugun mavjud bo’lsa, ushbu tugun bilan ham solishtirish amalga oshiriladi, aks holda, ya’ni u shoxda tugun mavjud bo’lmasa, bu element shu tugunga joylashtiriladi. Mantiqiy ifodalar[tahrir | manbasini tahrirlash Mantiqiy ifodalar algebraik ifodalarga juda oʻxshash tarzda ifodalanadi, yagona farq maxsus qiymatlar va ishlatiladigan operatorlardir. Mantiqiy ifodalar oʻzgarmas qiymatlar sifatida true(rost) va false(yolgʻon) dan foydalanadi va quyidagi operatorlarni oʻz ichiga oladi: {\displaystyle \land } (AND), {\displaystyle \lor } (OR), {\displaystyle \neg } (NOT). Xulosa Ko’rish maydonidagi obyektlar soni bittadan ko’p bo’lgan holda ularni geometrik xarakteristikalarini hisoblab bo’lmaydi. Bunday xolda ularning topologik xarakteristikalaridan foydalanib murakkab obyektni sodda obyektlarga ajratish mumkin. Binar tasvirlarning ikki elementlari o’rtasida bog’liqlikning xar tomonlama tahlil va qilindi va tasvirni turli kompanentalariga belgi qo’yish usullari ishlab chiqildi. Bu usullar tasvir elementlarining o’zaro bog’liqlik (qo’shni) tushunchasini kiritish muxiti va ularni ko’rib chiqish ketma-ketligi bilan bir-biridan farq qiladi. Binar tasvirlarning berilish usullari va xarateristikalarini o’rganib chiqdim. To’lqinli algoritmnin yutug’i shundaki, uning yordamida ixtiyoriy labirintda va ixtiyoriy sondagi to’siqlarda trassani topish mumkin. Foydalanilgan adabiyotlar ↑ Bruno R. Preiss. „Expression Trees“ (1998). 19-yanvar 2017-yilda asl nusxadan arxivlandi. Qaraldi: 20-dekabr 2010-yil. ↑ Mark Allen Weiss,Data Structures and Algorithm Analysis in C,2nd edition, Addison Wesley publications ↑ Bruno R. Preiss. „Expression Trees“ (1998). 19-yanvar 2017-yilda asl nusxadan arxivlandi. Qaraldi: 20-dekabr 2010-yil. Bruno R. Preiss (1998). „Expression Trees“. Archived from the original on January 19, 2017. Retrieved December 20, 2010. Download 134.08 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling