جلسه ی ۱۸: درهم سازی سرتاسری - درخت جست و جوی دودویی

Σχετικά έγγραφα
جلسه ی ۱۰: الگوریتم مرتب سازی سریع

محاسبه ی برآیند بردارها به روش تحلیلی

روش محاسبه ی توان منابع جریان و منابع ولتاژ

جلسه ی ۵: حل روابط بازگشتی

جلسه ی ۴: تحلیل مجانبی الگوریتم ها

جلسه ی ۳: نزدیک ترین زوج نقاط

جلسه ی ۱۱: درخت دودویی هرم

جلسه ی ۲۴: ماشین تورینگ

مثال( مساله الپالس در ناحیه داده شده را حل کنید. u(x,0)=f(x) f(x) حل: به کمک جداسازی متغیرها: ثابت = k. u(x,y)=x(x)y(y) X"Y=-XY" X" X" kx = 0

تحلیل مدار به روش جریان حلقه

جلسه 9 1 مدل جعبه-سیاه یا جستاري. 2 الگوریتم جستجوي Grover 1.2 مسا له 2.2 مقدمات محاسبات کوانتمی (22671) ترم بهار

دانشکده ی علوم ریاضی جلسه ی ۵: چند مثال

قاعده زنجیره ای برای مشتقات جزي ی (حالت اول) :

جلسه 3 ابتدا نکته اي در مورد عمل توابع بر روي ماتریس ها گفته می شود و در ادامه ي این جلسه اصول مکانیک کوانتمی بیان. d 1. i=0. i=0. λ 2 i v i v i.

مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل

آزمون مقایسه میانگین های دو جامعه )نمونه های بزرگ(

جلسه 14 را نیز تعریف کرد. عملگري که به دنبال آن هستیم باید ماتریس چگالی مربوط به یک توزیع را به ماتریس چگالی مربوط به توزیع حاشیه اي آن ببرد.

تخمین با معیار مربع خطا: حالت صفر: X: مکان هواپیما بدون مشاهده X را تخمین بزنیم. بهترین تخمین مقداری است که متوسط مربع خطا مینیمم باشد:

جلسه 12 به صورت دنباله اي از,0 1 نمایش داده شده اند در حین محاسبه ممکن است با خطا مواجه شده و یکی از بیت هاي آن. p 1

ﯽﺳﻮﻃ ﺮﯿﺼﻧ ﻪﺟاﻮﺧ ﯽﺘﻌﻨﺻ هﺎﮕﺸﻧاد

مدار معادل تونن و نورتن

فصل پنجم زبان های فارغ از متن

معادلهی مشخصه(کمکی) آن است. در اینجا سه وضعیت متفاوت برای ریشههای معادله مشخصه رخ میدهد:

هو الحق دانشکده ي مهندسی کامپیوتر جلسه هفتم

تصاویر استریوگرافی.

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت

تحلیل الگوریتم پیدا کردن ماکزیمم

جلسه 16 نظریه اطلاعات کوانتمی 1 ترم پاییز

جلسه 15 1 اثر و اثر جزي ی نظریه ي اطلاعات کوانتومی 1 ترم پاي یز جدایی پذیر باشد یعنی:

سايت ويژه رياضيات درسنامه ها و جزوه هاي دروس رياضيات

جلسه 22 1 نامساویهایی در مورد اثر ماتریس ها تي وري اطلاعات کوانتومی ترم پاییز

ویرایشسال 95 شیمیمعدنی تقارن رضافالحتی

سلسله مزاتب سبان مقدمه فصل : زبان های فارغ از متن زبان های منظم

جلسه 28. فرض کنید که m نسخه مستقل یک حالت محض دلخواه

فصل اول پیچیدگی زمانی و مرتبه اجرایی

1) { } 6) {, } {{, }} 2) {{ }} 7 ) { } 3) { } { } 8) { } 4) {{, }} 9) { } { }

دبیرستان غیر دولتی موحد

فصل 5 :اصل گسترش و اعداد فازی

عنوان: رمزگذاري جستجوپذیر متقارن پویا

Top Down Parsing LL(1) Narges S. Bathaeian

همبستگی و رگرسیون در این مبحث هدف بررسی وجود یک رابطه بین دو یا چند متغیر می باشد لذا هدف اصلی این است که آیا بین

تمرینات درس ریاض عموم ٢. r(t) = (a cos t, b sin t), ٠ t ٢π. cos ٢ t sin tdt = ka۴. x = ١ ka ۴. m ٣ = ٢a. κds باشد. حاصل x٢

آزمایش 8: تقویت کننده عملیاتی 2

يﺎﻫ ﻢﺘﻳرﻮﮕﻟا و ﺎﻫ ﺖﺧرد فاﺮﮔ ﻲﻤﺘﻳرﻮﮕﻟا ﻪﻳﺮﻈﻧ :سرد ﻲﺘﺸﻬﺑ ﺪﻴﻬﺷ هﺎﮕﺸﻧاد ﺮﺗﻮﻴﭙﻣﺎﻛ مﻮﻠﻋ هوﺮﮔ ﻪﻴﻟوا ﺞﻳﺎﺘﻧ و ﺎﻫﻒ ﻳﺮﻌﺗ

جلسه 2 جهت تعریف یک فضاي برداري نیازمند یک میدان 2 هستیم. یک میدان مجموعه اي از اعداد یا اسکالر ها به همراه اعمال

تمرین اول درس کامپایلر

srmphp.blog.ir موسسه آموزش عالی مهراروند ساختمان داده مهندس سید رسول موسوی تهیه و تنظیم: الهام صباحی

جلسه 2 1 فضاي برداري محاسبات کوانتمی (22671) ترم بهار

آزمایش 1: پاسخ فرکانسی تقویتکننده امیتر مشترك

نویسنده: محمدرضا تیموری محمد نصری مدرس: دکتر پرورش خالصۀ موضوع درس سیستم های مینیمم فاز: به نام خدا

فعالیت = ) ( )10 6 ( 8 = )-4( 3 * )-5( 3 = ) ( ) ( )-36( = m n m+ m n. m m m. m n mn

جلسه دوم سوم چهارم: مقدمه اي بر نظریه میدان

مسائل. 2 = (20)2 (1.96) 2 (5) 2 = 61.5 بنابراین اندازه ی نمونه الزم باید حداقل 62=n باشد.

تئوری جامع ماشین بخش سوم جهت سادگی بحث یک ماشین سنکرون دو قطبی از نوع قطب برجسته مطالعه میشود.

Beta Coefficient نویسنده : محمد حق وردی

فهرست مطالب جزوه ی فصل اول مدارهای الکتریکی مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل تحلیل مدار به روش جریان حلقه... 22

باشند و c عددی ثابت باشد آنگاه تابع های زیر نیز در a پیوسته اند. به شرطی که g(a) 0 f g

محاسبات کوانتمی 1 علم ساخت و استفاده از کامپیوتري است که بر پایه ي اصول مکانیک کوانتم قرار گرفته است.

ارزیابی بهره وری متقاطع DEA بر پایه بهبود پارتو

فصل سوم جریان های الکتریکی و مدارهای جریان مستقیم جریان الکتریکی

6- روش های گرادیان مبنا< سر فصل مطالب

آموزش SPSS مقدماتی و پیشرفته مدیریت آمار و فناوری اطالعات -

Angle Resolved Photoemission Spectroscopy (ARPES)

تلفات خط انتقال ابررسی یک شبکة قدرت با 2 به شبکة شکل زیر توجه کنید. ژنراتور فرضیات شبکه: میباشد. تلفات خط انتقال با مربع توان انتقالی متناسب

هندسه تحلیلی بردارها در فضای R

خالصه درس: نویسنده:مینا سلیمان گندمی و هاجر کشاورز امید ریاضی شرطی. استقالل متغیر های تصادفی پیوسته x و y استقالل و امید ریاضی

7- روش تقریب میانگین نمونه< سر فصل مطالب

هد ف های هفته ششم: 1- اجسام متحرک و ساکن را از هم تشخیص دهد. 2- اندازه مسافت و جا به جایی اجسام متحرک را محاسبه و آن ها را مقایسه کند 3- تندی متوسط

هدف از این آزمایش آشنایی با رفتار فرکانسی مدارهاي مرتبه اول نحوه تأثیر مقادیر عناصر در این رفتار مشاهده پاسخ دامنه

فهرست جزوه ی فصل دوم مدارهای الکتریکی ( بردارها(

نظریه زبان ها و ماشین ها

بسم اهلل الرحمن الرحیم آزمایشگاه فیزیک )2( shimiomd

اصول انتخاب موتور با مفاهیم بسیار ساده شروع و با نکات کاربردی به پایان می رسد که این خود به درک و همراهی خواننده کمک بسیاری می کند.

فصل سوم : عناصر سوئیچ

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت

Delaunay Triangulations محیا بهلولی پاییز 93

به نام ستاره آفرین قضیه ویریال جنبشی کل ذرات یک سیستم پایدار مقید به نیرو های پایستار را به متوسط انرژی پتانسیل کل شان

:موس لصف یسدنه یاه لکش رد یلوط طباور

به نام خدا. الف( توضیح دهید چرا از این تکنیک استفاده میشود چرا تحلیل را روی کل سیگنال x[n] انجام نمیدهیم

درخت. سید ناصر رضوی

فیلتر کالمن Kalman Filter

مارکوف 1.مقدمه: سید مهدی صفوی محمد میکاییلی محمد پویان چکیده ما با مطالعه مدل مخفی میدان تصادفی مارکوف از الگوریتم EM

شاخصهای پراکندگی دامنهی تغییرات:

مود لصف یسدنه یاه لیدبت

ندرک درگ ندرک درگ شور

فصل دهم: همبستگی و رگرسیون

هر عملگرجبر رابطه ای روی يک يا دو رابطه به عنوان ورودی عمل کرده و يک رابطه جديد را به عنوان نتيجه توليد می کنند.

پايداری Stability معيارپايداری. Stability Criteria. Page 1 of 8

پروژه یازدهم: ماشین هاي بردار پشتیبان

تعیین محل قرار گیری رله ها در شبکه های سلولی چندگانه تقسیم کد

می باشد. انشاال قسمت شعاعی بماند برای مکانیک کوانتومی 2.

نمونه برداری از سیگنالهای زمان پیوسته

عوامل جلوگیری کننده از موازی سازی عبارتند از : 1.هزینه I/O 2.هماهنگی/رقابت

یدنب هشوخ یاه متیروگلا

برابری کار نیروی برآیند و تغییرات انرژی جنبشی( را بدست آورید. ماتریس ممان اینرسی s I A

2/13/2015 حمیدرضا پوررضا H.R. POURREZA 2 آخرین گام در ساخت یک سیستم ارزیابی آن است

ثابت. Clausius - Clapeyran 1


به نام خدا. Sparse Coding ستاره فرامرزپور

تئوری رفتار مصرف کننده : می گیریم. فرض اول: فرض دوم: فرض سوم: فرض چهارم: برای بیان تئوری رفتار مصرف کننده ابتدا چهار فرض زیر را در نظر

Transcript:

دانشکده ی علوم ریاضی ساختمان داده ۱۰ ا ذر ۹۲ جلسه ی ۱۸: درهم سازی سرتاسری - درخت جست و جوی دودویی مدر س: دکتر شهرام خزاي ی نگارنده: معین زمانی و ا رمیتا اردشیری ۱ یادا وری همان طور که درجلسات پیش مطرح شد کاربرد درهم سازی زمانی می باشد که تعداد کلید های ممکن بسیار زیاد است ولی ما به ذخیره کردن تعداد محدودی از ا ن ها نیاز داریم برای مثال ذخیره کردن IP-Address ها را برای یک رهیاب ۱ در نظر بگیرید IP-Address ها به صورت چهارتایی مرتب ) ۴ x) ۱, x ۲, x ۳, x می باشند که x i ها عددی در بازه ۰ تا ۲۵۵ هستند در این مساله تعداد کلید های ممکن برابر است با: U = IP Address = ۲۵۶ ۴ = ۲ ۳۲ که عدد بسیار بزرگی می باشد ولی یک رهیاب در واقعیت تقریبا با ۵۰۰ n رهیاب مجاور خود در ارتباط می باشد و نیاز دارد که ۵۰۰ کلید (IP-Address) از میان ۲ ۳۲ کلید ممکن را ذخیره کند در دو جلسه گذشته دو نوع درهم سازی با استفاده از لیست زنجیره ای و ا درس دهی باز را مطرح کردیم حال به درهم سازی زنجیره ای باز می گردیم اگر تعداد کلید های موجود n و حافظه مصرفی باشد α ضریب بار ۲ می باشد که به صورت α = n تعریف می شود نشان دادیم که در این حالت عملیات حذف در زمان (۱)Θ امکان پذیر است و برای رسیدن به انجام عملیات جست وجو در زمان (α ۱)Θ + فرض های زیر را اختیار کردیم: ۱ فرض کردیم حافظه مصرفی از مرتبه n می باشد یعنی O(n) = ۲ فرض کردیم هر کلید شانس یکسانی برای ذخیره شدن در خانه های جدول دارد و کلید ها به صورت مستقل از هم در خانه های جدول ذخیره می شوند این فرض را فرض درهم سازی یکنواخت ساده ۳ نامیدیم ۳ فرض کردیم تابع درهم ساز در زمان (۱)O محاسبه می شود نکته حاي ز اهمیت این است که (α ۱)Θ + مسلما بدترین نمی باشد حالتی را در نظر بگیرید که تمامی کلید ها در یک سطر ذخیره شده باشند در این حالت عملیات جست و جو در زمان O(n) صورت می گیرد با توجه به اینکه الگوریتم مطرح شده برای درهم سازی زنجیره ای الگوریتمی تصادفی نبود نمی توان ی متوسط را برای ا ن محاسبه کرد برای حل این مشکل و پیدا کردن ی متوسط درهم سازی سرتاسری را مطرح می کنیم ۱ Router ۲ Load Factor ۳ Siple Unifor Hashing ۱۸-۱

۲ درهم سازی سرتاسری برای درک بیشتر مشکل موجود در الگوریتم درهم سازی زنجیره ای مساله زیر را در نظر بگیرید: می خواهیم مجموعه کلید های S را از میان مجموعه مرجع U در جدول درهم سازی به اندازه ذخیره کنیم با توجه به اصل لانه کبوتری خانه j ام جدول موجود است به طوری که تعداد عناصری که با نگاشت h به این خانه جدول U نگاشته می شوند حداقل برابر است با U کوچک تر باشد حمله کننده می تواند با دانستن تابع درهم ساز h مجموعه S را به حال اگر اندازه مجموعه S از گونه ای انتخاب نماید که تمامی اعضای ا ن به یک خانه از جدول نگاشته شوند تا بدترین عملکرد سیستم حاصل شود در مثال رهیاب از این ایده در عمل برای اعمال حمله منع سرویس ۴ استفاده شده است در واقع وقتی از تابع درهم ساز ثابتی استفاده شود همواره احتمال وقوع این نوع حمله و رسیدن به بدترین Θ(n) وجود دارد تنها روش حل این مشکل این است که تابع درهم ساز را به صورت تصادفی و مستقل از کلید ها انتخاب کنیم تا به عملکرد مناسبی در حالت متوسط برسیم به این نوع درهم سازی درهم سازی سرتاسری می گوییم مساله مرتب سازی سریع را به یاد بیاورید در الگوریتم QuickSort بدترین ) ۲ O(n بود ولی با انتخاب محور ها به صورت تصادفی و اراي ه الگوریتم Randoized-QuickSort توانستیم به ی متوسط (n O(n log برسیم در اینجا هم با روندی مشابه می خواهیم الگوریتم درهم سازی را تصادفی کنیم و الگوریتمی تصادفی اراي ه دهیم که متوسط ی ا ن (α ۱)Θ + باشد برای اینکار مجموعه ای از توابع درهم ساز را در نظر می گیریم و در ابتدای هر اجرا یک تابع درهم ساز را به صورت تصادفی از این مجموعه انتخاب می کنیم در این جا هم مانند حالت مرتب سازی سریع تصادفی سازی ضمانت می کند که هیچ ورودی نمی تواند همواره بدترین حالت اجرا را حادث شود زیرا تابع درهم ساز را به صورت تصادفی انتخاب کرده ایم و می توانیم با اطمینان برای هر ورودی انتظار ی متوسط را داشته باشیم تعریف ۱ خانواده ای از توابع درهم ساز را برای مجموعه مرجع U به صورت زیر در نظر بگیرید: H = {h : U {۰, ۱, ۲,, ۱}} می گوییم H یک خانواده از توابع درهم ساز سرتاسری است اگر به ازای هر جفت کلید متمایز k ۱ و k ۲ از مجموعه مرجع U تعداد توابع درهم ساز h موجود در مجموعه H که به ازای ا نها ) ۲ h(k (۱ = h(k است حداکثر برابر با H باشد به عبارت دیگر هنگامی که یک تابع درهم ساز به صورت کاملا تصادفی از مجموعه H انتخاب شود احتمال وقوع نخواهد بود دقت کنید اگر تابع درهم ساز به صورت کاملا ۱ برخورد بین کلید های دلخواه و متمایز k ۱ و k ۲ بیشتر از است ۱ تصادفی مقادیر درهم سازی شده را به کلید ها اختصاص دهد احتمال برخورد کلید های دلخواه و متمایز دقیقا مثال ۱ می خواهیم برای مجموعه IP-Address ها که به صورت ۲۵۵}}, ۲, {۰, ۱, i U = {(x ۱, x ۲, x ۳, x ۴ ) : x می باشد یک خانواده از توابع درهم ساز سرتاسری مانند H بسازیم خانواده H را به صورت زیرتعریف می کنیم: H = {h : (x ۱, x ۲, x ۳, x ۴ ) a ۱ x ۱ + a ۲ x ۲ + a ۳ x ۳ + a ۴ x ۴ (od )} که یک عدد اول و a i ها از بازه {۱,,۱,۰} انتخاب می شوند ثابت می کنیم این انتخاب برای H منجر به یک خانواده از توابع درهم سازی سرتاسری می شود برای اثبات دو کلید (IP-Address) متفاوت را به صورت ) ۴ x = (x ۱, x ۲, x ۳, x و ) ۴ y = (y ۱, y ۲, y ۳, y در نظر می گیریم بدون کاسته شدن از کلیت مساله می توان فرض کرد x ۱ y ۱ برای وقوع برخورد باید رابطه h(y) h(x) = برقرار باشد با بسط این رابطه به عبارت زیر می رسیم: a ۱ x ۱ + a ۲ x ۲ + a ۳ x ۳ + a ۴ x ۴ = a ۱ y ۱ + a ۲ y ۲ + a ۳ y ۳ + a ۴ y ۴ (od ) ۴ Denial-of-Service Attack (DoS) ۱۸-۲

a ۱ (x ۱ y ۱ ) + a ۲ (x ۲ y ۲ ) + a ۳ (x ۳ y ۳ ) + a ۴ (x ۴ y ۴ ) = ۰ (od ) a ۱ (x ۱ y ۱ ) = ( a ۲ (x ۲ y ۲ ) + a ۳ (x ۳ y ۳ ) + a ۴ (x ۴ y ۴ ) ) (od ) با توجه به اینکه را عددی اول انتخاب کرده ایم و ) ۱ x) ۱ y مقداری غیر صفر می باشد می توان معادله را به صورت زیر نوشت: a ۱ = (x ۱ y ۱ ) ۱ ( a ۲ (x ۲ y ۲ ) + a ۳ (x ۳ y ۳ ) + a ۴ (x ۴ y ۴ ) ) (od ) این رابطه نشان می دهد که به ازای هر انتخاب دلخواه برای a ۲, a ۳, a ۴ یک مقدار یکتا برای a ۱ وجود دارد که منجر به برقراری h(y) h(x) = می شود بنابراین برای هر جفت کلید متمایز x و y دقیقا به ازای ۳ مقدار ) ۴ (a ۱, a ۲, a ۳, a برخورد رخ می دهد از ا نجا که کل حالت های ممکن ترکیب ) ۴ a) ۱, a ۲, a ۳, a برابر است با ۴ احتمال برخورد کلید های متمایز x و y برابر است با: ۳ ۴ = ۱ پس مجموعه H یک خانواده از توابع درهم ساز سرتاسری می باشد می توان نشان داد با استفاده از درهم سازی سرتاسری عملیات جست وجو در زمان متوسط( α ۱)O + قابل پیاده سازی است ۳ درخت جست و جوی دودویی ۱۳ درخت جست و جو درخت های جست و جو داده ساختار هایی مناسب برای انجام عملیات روی مجموعه های پویا ۵ هستند این داده ساختارها را می توان هم به صورت لغت نامه ۶ و هم به صورت یک صف اولویت ۷ استفاده کرد عملیات ابتدایی روی یک درخت جست و جو زمانی متناسب با ارتفاع درخت را صرف می کند ۲۳ درخت جست و جوی دودویی درخت های جست و جوی دودویی یکی از مهم ترین داده ساختارها برای مجموعه های پویا هستند این داده ساختار بسیاری از عملیات روی مجموعه های پویا را در زمان O(h) انجام می دهد که h ارتفاع درخت است در این داده ساختار هر گره ۸ دارای حداکثر دو فرزند است و دارای مو لفه های زیر است: :key که داده موجود در گره است :left که به گره سمت چپ گره کنونی اشاره می کند :right که به گره سمت راست گره کنونی اشاره می کند p: که به والد گره کنونی اشاره می کند کلید ذخیره شده باید در شرط درخت جست و جوی دودویی بودن صدق کند: ۵ Dynaic Sets ۶ Dictionary ۷ Priority queue ۸ Node ۱۸-۳

اگر گره y در زیر درخت سمت چپ گره x قرار دارد ا ن گاه ykey xkey اگر گره y در زیر درخت سمت راست گره x قرار دارد ا ن گاه ykey > xkey مثال ۲ ا رايه ۱۵,۲,۴,۹,۶,۳,۷,۱۳,۱۷,۲۰,۱۸ را در درخت دودویی زیر طوری وارد کنید که حاصل ویژگی درخت دودویی جست وجو را داشته باشد: شکل ۱: یک درخت دودویی جواب ا رایه مرتب شده را در نظر بگیرید و خود را قانع کنید که پاسخ به صورت زیر است! ۱۵ ۶ ۱۸ ۳ ۷ ۱۷ ۲۰ ۲ ۴ ۱۳ ۹ شکل ۲: درخت جست و جوی دودویی پر شده ۱۸-۴

۱۲۳ پیمایش درخت جست و جوی دودویی درخت جست و جوی دودویی به ما این امکان را می دهد که کلید های موجود در درخت را به صورت مرتب نمایش دهیم برای این منظور لازم است که درخت به نحو مناسبی اصطلاحا پیمایش ۹ شود نحوه پیمایش مناسب برای نمایش ا رایه مرتب متناظر با یک درخت جست و جوی دودویی پیمایش میان ترتیب ۱۰ نامیده می شود که با فراخوانی الگوریتم Inorder-BST-Traverse روی ریشه درخت امکان پذیر است این الگوریتم روی هر گرهی مانند x از درخت قابل فراخوانی است ابتدا بررسی می کند که گره ابتدایی برابر NIL نباشد اگر این گونه نبود به صورت بازگشتی کلید گره های زیر درخت سمت چپ x سپس کلید خود x را و در ا خر به صورت بازگشتی کلید گره های زیر درخت سمت راست x را نمایش می دهد Algorith 1 Inorder-BST-Traverse function Inorder-BST-Traverse(node x) if x NIL then Inorder-BST-Traverse(xlef t) Print xkey Inorder-BST-Traverse(xright) برای یک درخت با n گره هر گره را یک بار بررسی می کنیم در نتیجه از مرتبه Θ(n) خواهد بود مثال ۳ به عنوان مثال الگوریتم پیمایش میان ترتیب درخت را بر روی درخت مثال ۲ اجرا می کنیم برای این کار از ریشه درخت شروع می کنیم و به سراغ زیر درخت سمت چپ ا ن می رویم که مقدار کلید ریشه ا ن برابر است با ادامه الگوریتم به چپ ترین گره می رسیم که مقدار کلیدش برابر ۲ است با توجه به اینکه زیر درخت سمت چپ این گره تهی می باشد این گره خوانده می شود و بعد از ا ن گره با کلید ۳ و سپس گره با کلید ۴ خوانده می شوند با ادامه الگوریتم ا رایه خوانده شده به صورت زیر بدست می ا ید: ۲, ۳, ۴, ۶, ۷, ۹, ۱۳, ۱۵, ۱۷, ۱۸, ۲۰ مشاهده می شود که با پیمایش میان ترتیب درخت جست و جوی دودویی ا رایه خروجی حاصل به صورت صعودی می باشد ۲۲۳ جست و جو در درخت جست و جوی دودویی برای یافتن کلیدی در درخت جست و جوی دودویی از الگوریتم BST-Search استفاده می کنیم برای اینکار از ریشه درخت شروع می کنیم اگر ریشه برابر با NIL باشد درخت تهی می باشد و جست وجو ناموفق خواهد بود در غیر این صورت کلید مورد نظر را با مقدار کلید گره ریشه مقایسه می کنیم اگر برابر بودند گره ریشه همان گره مورد نظر است در غیر این صورت دو حالت پیش خواهد ا مد: مقدار مورد جست و جو از گره ریشه کوچکتر است در این حالت هیچ عنصری در زیردرخت سمت راست وجود ندارد که کلید ا ن برابر با مقدار مورد جست و جو باشد می دهیم بنابراین جست وجو را در زیردرخت سمت چپ ادامه ۹ traverse ۱۰ inorder traversal ۱۸-۵

مقدار مورد جست و جو از گره ریشه بزرگتر است در این حالت هیچ عنصری در زیردرخت سمت چپ وجود ندارد که کلید ا ن برابر با مقدار مورد جست و جو باشد بنابراین جست وجو را در زیردرخت سمت راست ادامه می دهیم سپس باتوجه به یکی از دو حالت فوق زیردرخت سمت چپ یا زیردرخت سمت راست را به روش بازگشتی و با استفاده از این الگوریتم جست وجو می کنیم Algorith 2 BST-Search function BST-Search(node x, key k) if x = NIL or k = xkey then return x if k < xkey then return BST-Search(xlef t, k) else return BST-Search(xright, k) این الگوریتم به صورت بازگشتی گره ها را از ریشه به پایین بررسی می کند در نتیجه از مرتبه O(h) خواهد بود که در ا ن h ارتفاع درخت است ۳۲۳ پیدا کردن بیشینه و کمینه در درخت جست و جوی دودویی شرط درخت جست و جوی دودویی بودن ضمانت می کند که: کلید کمینه در چپ ترین گره موجود است کلید بیشینه در راست ترین گره موجود است با استفاده از این شرط می توانیم درخت را تا جایی که به NIL برسیم از چپ (یا راست) برای رسیدن به کلید کمینه (یا بیشینه) پیمایش کنیم این کار را می توانیم با دو الگوریتم BST-Miniu و BST-Maxiu انجام دهیم Algorith 3 BST-Miniu function BST-Miniu(node x) while xleft NIL do x xleft return x Algorith 4 BST-Maxiu function BST-Maxiu(node x) while xright NIL do x xright return x هر دو الگوریتم مانند الگوریتم پیشین (جست و جو در درخت جست و جوی دودویی) عمل می کنند در نتیجه زمان اجرا از مرتبه O(h) خواهد بود ۱۸-۶

۴۲۳ گره پیشین و پسین در درخت جست و جوی دودویی اگر فرض کنیم هیچ دو کلیدی در درخت جست و جوی دودویی برابر نباشند گره پسین x ۱۱ گره y است که در ا ن ykey کوچک ترین کلید بزرگ تر از xkey است اگر x بزرگ ترین کلید در درخت را داشته باشد ا ن گاه گره پسین ا ن را NIL اعلام می کنیم پس دو حالت وجود دارد: ۱ اگر گره x زیر درختی ناتهی در سمت راست داشته باشد ا ن گاه گره پسین x کلید کمینه در زیر درخت سمت راست x است ۲ اگر گره x زیر درختی تهی در سمت راست داشته باشد ا ن گاه برای پیدا کردن گره پسین x از این گره به سمت ریشه حرکت می کنیم تا به گره ای برسیم که فرزند سمت چپ پدرش باشد پدر این گره گره مورد نظر می باشد با توضیحات بالا الگور یتم BST-Successor را اراي ه می دهیم Algorith 5 BST-Successor function BST-Successor(node x) if xright NIL then return BST-Miniu(xright) y xp while y NIL and x = yright do x y y yp return y مثال ۴ به عنوان نمونه درخت دودویی اراي ه شده در مثال ۲ (شکل ۱) را در نظر بگیرید: گره پسین گره با کلید ۱۵ گره با کلید ۱۷ است یعنی گره کمینه زیر درخت سمت راست ا ن گره پسین گره با کلید ۴ گره با کلید ۶ است این الگوریتم نیز مانند ۳ الگوریتم پیشین به دلیل پیمایش درخت به پایین (یا بالا) دارای از مرتبه O(h) خواهد بود گره پیشین ۱۲ را می توان با الگوریتم مشابه BST-Predecessor پیدا کرد Algorith 6 BST-Predecessor function BST-Predecessor(node x) if xleft NIL then return BST-Maxiu(xlef t) y xp while y NIL and x = yleft do x y y yp return y ۱۱ Successor ۱۲ Predecessor ۱۸-۷