Tree Sort.

Slides:



Advertisements
Similar presentations
Awe sim.
Advertisements

زبان برنامه نویسی پرولوگ
سید احمد موسوی Line Maze Algorithm زمستان 90 بسمه تعالی.
معاونت درمان امور مامایی اردیبهشت 90. برای ثبت اطلاعات در برنامه نرم افزاری نظام مراقبت مرگ پریناتال ابتدا لازم است برنامه نرم افزار info-path وپرنیان.
الگوریتم ژنتیکی. تعریف  الگوریتم ژنتیکی، رویه ای تکراری است که راه حل های انتخابیش را بصورت رشته ای از ژنها که کروموزوم نامیده می شوند، بازنمایی می کند.
Definition. قانون بیز P(b|a) = P(a|b)P(b)/P(a) P(b|a) = P(a|b)P(b)/P(a) این قانون برای استنتاج آماری استفاده می شود. این قانون برای استنتاج آماری استفاده.
Decision Tree.
فایل پردازی در C File based Programming in C. انواع فایل متنی –سرعت بالا –حجم کمتر –امکان دسترسی تصادفی –حفظ امنیت داده ها دودویی (باینری) –امکان باز.
Database Laboratory: Session #4 Akram Shokri. DB-Lab 2 Lab Activity You must already created all tables You have to have inserted proper data in tables.
موضوع: دبير مربوطه: آموزشگاه : اجرا : عبارتهای جبری خانم مقصودی
مظفر بگ محمدی دانشگاه ایلام Generics. کدهای عمومی 2 یکی از اهداف OOP ایجاد قابلیت نوشتن برنامه های عمومی با قابلیت استفاده ی مجدد است. کدهای چندریخت تا.
Stepper Motor Configuration
ساختمان داده‌ها پیمایش گراف. مرور °مشکل: چگونه تمام نودهای گراف را مشاهده کنیم؟ °جستجوی اول عمق دنبال کردن مسیرهای بین راسها. °جستجوی اول سطح دیدن تمام.
Arrangements of Lines C omputational Geometry By Samaneh shafi naderi
آشنايي با سيستم اعداد.
LINEAR CONTROL SYSTEMS Ali Karimpour Associate Professor Ferdowsi University of Mashhad.
[c.
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
راهبرد عقبگرد (Backtracking)
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
تمرین هفتم بسم الله الرحمن الرحیم درس یادگیری ماشین محمدعلی کیوان راد
هیدروگراف(Hydrograph) تهیه : دکتر محمد مهدی احمدی
ویژگی های DHCP جلوگیری از Conflict سرعت بخشیدن به کارها مدیریت متمرکز
بنام خدا زبان برنامه نویسی C (21814( Lecture 12 Selected Topics
مبانی کامپیوتر و برنامه سازی
SY800 router mode [AD-14-TB ].
کوئیز از جلسه قبل) در کامپیوتری برای ضرب استراسن فرایند تقسیم نمونه‌‌ای به اندازه n به نمونه‌های کوچکتر، بارگذاری در پشته، فراخوانی از آن، جمع‌ها و تفریق‌ها.
ساختمان داده ها جداول درهم سازی
ساختمان داده‌ها الگوریتمهای کوتاهترین مسیر
روش حریصانه در طراحی الگوریتم
آزمایشگاه پایگاه داده ها قیود در جداول یک پایگاه داده در SQL Server
Odd-even merge sort مرتب سازی.
چگونه بفهمیم آیا ژورنالی ISI است؟ ایمپکت فاکتور دارد یا خیر؟
فصل دوم جبر بول.
Route configuration for 5400W ADSL Router
Natural language Understanding James Allen
1.
آشنایی با پایگاه داده mysql
Ali Karimpour Associate Professor Ferdowsi University of Mashhad
Fundamentals of GA Part 10
کوئیز از جلسه قبل) کارخانه ای در حال خرید قطعه‌ای برای یکی از ماشین‌آلات خود می باشد اگر نرخ بهره 10% برای محاسبات فرض شود، دو مدل از قطعه ماشین در دسترس.
مدارهای منطقی فصل سوم - خصوصیات توابع سويیچی
ساختمان داده‌ها پیمایش درخت دودویی
درخت جستجوی دودویی درخت جستجوي دودويي: درخت دودويي صفر نود يا بيشتر
سميرا قانوني زهرا معدني
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
Bucket sort اكرم منوچهري زهرا منوچهري
راهنمای استفاده از ابزار Mailings در Ms Word
راهبرد شاخه و حد (Branch and bound)
با تشکر از دکتر جواد سلیمی
اهداف درس این جلسه حل مساله کوله پشتی با رویکرد حریصانه مقایسه رویکرد حریصانه با برنامه‌نویسی پویا در حل مساله.
پشته و صف پیوندی Give qualifications of instructors: DAP
بسم الله الرحمن الرحیم هرس درخت تصمیم Dr.vahidipour Zahra bayat
جستجوی منابع الکترونیک
به نام خدا Koha برنامه.
IN THE NAME OF GOD MATH SABA KARBALAEI
Angular Kinetics مهدی روحی بهار 85.
فصل ششم مدارهای ترتیبی.
ساختمان داده‌ها درختان و درختان دودویی
دکتر مظفر بگ محمدی دانشگاه ایلام
مدار منطقي مظفر بگ محمدي
توزیع میانگین نمونه سعید موسوی.
مراحل پیش رو : 1- الگوریتم عقبگرد برای مسئله کوله پشتی صفر و یک
نسبت جرم فرمولی ”جرم اتمی و فرمول تجربی
برنامه ریزی خطی پیشرفته (21715( Advanced Linear Programming Lecture 7
ساختمان داده ها مرتب سازی درجی
پشته و صف پیوندی Give qualifications of instructors: DAP
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
ساختمان داده ها گرافها.
Presentation transcript:

Tree Sort

درخت جستجوی دودویی(Binary Search Tree) درخت جستجوی دودویی یک درخت دودویی است که ممکن است تهی باشد. اگر تهی نباشد دارای خاصیت زیر است: مقدار هر گره بزرگتر از هر مقدار در زیر درخت چپ و کوچکتر از هر مقدار در زیر درخت راست آن می باشد. هر گره دارای یک کلید است و دو گره نباید دارای کلید یکسان باشند(کلیدها منحصر به فردهستند).

در شکلهای زیر: شکل الف BST نیست چرا که فرزند راست گره 15 (یعنی 10) از آن کوچکتر است در حالی که باید بزرگتر باشد. شکل ب یک درخت BST می باشد. 30 20 5 40 15 25 12 10 2 (الف) (ب)

جستجوی یک عنصر در BST فرض کنید بخواهیم دنبال عنصری با کلید x بگردیم . ابتدا از ریشه شروع می کنیم .اگر ریشه تهی باشد، درخت جستجو فاقد هر عنصری بوده و جستجو ناموفق خواهد بود. در غیر این صورت، x را با مقدار کلید ریشه مقایسه می کنیم. اگرx کمتر از مقدار کلید ریشه باشد، زیر درخت چپ را جستجو می کنیم. اگر x بزرگتر از مقدار کلید ریشه باشد آنگاه زیر درخت راست را جستجو می کنیم. در زیر الگوریتم جستجو را بیان می کنیم:

Function search (t: BSTpointer; x:integer):boolean; Var found: boolean; Begin found:=false; if (t<>nill) then begin found=TRUE if data(t) = x then else if data(t) > x then found := search (Lchild(t) , x) else if data(t) < x then Search (Rchild (t), x); found := end; Search := found; End;

نکته: اگر h ارتفاع یا عمق یک درخت جستجوی دودویی باشد، با استفاده از تابع search می توانیم عمل جستجو را در O(h) انجام دهیم. البته در روش بازگشتی به یک پشته اضافی به میزان O(h) نیاز خواهیم داشت.

اضافه کردن یک عنصر به BST برا ی درج عنصر جدید x، باید ابتدا مشخص نمود که آیا این عنصر با عناصر موجود متفاوت می باشد یا خیر. برای انجام این کار باید درخت را جستجو کرد. اگر جستجو ناموفق باشد پس ما عنصر را در محلی که جستجو خاتمه پیدا کرده است درج می کنیم. بنابراین الگوریتم اضافه کردن شبیه الگوریتم جستجو است و برای این کار باید به انتهای الگوریتم جستجو خط زیر را اضافه کنیم: if (not found ) then insert (x ,q);

تابع insert به صورت زیر است: Procedure insert ( x: integer ; q: BSTpointer); Var t: BSTpointer; Begin new (t); data(t) := x; Lchild (t):=nil; Rchild (t):=nil; if (data (q) > x) then Lchild (q):=t else if (data(q) < x) then Rchild(q):=t; End;

مرتب سازی درختی Tree Sort در این روش از درختهای جستجوی دودویی BST برای مرتب سازی استفاده می شود. اگر درخت BST به صورت inorder پیمایش شود، دنباله حاصل به صورت صعودی مرتب خواهد شد. در این الگوریتم ابتدا عناصر آرایه یک به یک داخل یک درخت BST که در ابتدا تهی است درج می کنیم. سپس همزمان با پیمایش این درخت، عناصر پیمایش شده را در یک آرایه قرار می دهیم تا مرتب شوند.

40,60,50,33,55,11 40 11 < 40 33 < 40 55 > 40 50 > 40 60 > 40 11 33 40 50 55 60 33 60 11 < 33 50 < 60 55 < 60 11 50 55 > 50 55

بهترین حالت حالت متوسط بدترین حالت O(n log n) O (n^2) پیچیدگی اجرایی O(n log n) O (n^2)

نکته مهم آن است که اگر اعداد داده شده با ترتیب مختلفی داده شده باشند، آن گاه درختهای حاصل ممکن است با هم فرق می کنند و عمق مختلفی داشته باشند.

حذف یک عنصر از BST حذف یک عنصر از BST نسبتا دشوارتر از درج آن است. زیرا وقتی گره ای حذف می شود که دارای فرزند است باید گره دیگری انتخاب شود تا جایگزین گره حذف شده شود. اگر این انتخاب درست انجام نشود خواص BST نقض می شود. گره ای که باید حذف شود ابتدا در BST جستجو می شود سپس به نحوی جایگزین می شود که خواص درخت حفظ شود.

حالت 1. گره ای که باید حذف شود برگ باشد و فرزندی نداشته باشد حالت 1. گره ای که باید حذف شود برگ باشد و فرزندی نداشته باشد. در این حالت حذف به سادگی انجام می پذیرد و کافی است اشاره گر والد برابر تهی شود.

90 90 50 95 50 95 20 20 5 25 5

حالت 2.گره ای باید حذف شود تنها دارای یک فرزند چپ است که می تواند جایگزین آن شود. 90 50 95 90 20 20 95 5 25 5 25

حالت3. فرزند راست گره ای که باید حذف شود فرزند چپی ندارد حالت3. فرزند راست گره ای که باید حذف شود فرزند چپی ندارد. بنابراین فرزند راست جایگزین آن می شود. 90 90 50 175 50 150 20 125 20 125 175 140 140

حالت4. فرزند راست گره ای که باید حذف شود فرزند چپ دارد حالت4.فرزند راست گره ای که باید حذف شود فرزند چپ دارد. در این حالت چپ ترین فرزند راست گره جایگزین آن می شود. یعنی کوچکترین مقدارزیر درخت راست گره. برای مثال اگر بخواهیم گره 50 را حذف کنیم چپ ترین فرزند راست آن یعنی 66 را حذف می کنیم.

90 90 50 150 66 150 20 75 20 75 5 66 80 5 80

پیمایش inorder به صورت زیر است: 15,25,33,44,50,60,66,75

جانشینی گره 33 به جای 25 در حافظه تنها با تغییر اشاره گرها انجام می شود و نه با جا به جایی محتوای یک گره از یک مکان به مکان دیگر. البته بجای گره 33 می توانیم گره 15 را جانشین 25 کنیم. در نتیجه درخت BST حاصل از عمل حذف یکتا نمی باشد. 60 33 75 15 50 66 44

عمل حذف می تواند در زمان O(h) انجام گیرد که h عمق درخت می باشد عمل حذف می تواند در زمان O(h) انجام گیرد که h عمق درخت می باشد. در یک درخت BST با ارتفاع متوسط Log 2n، کوچکترین عنصر را میتوان حذف کرد.

منبع: ساختمان دادها حمیدرضا مقسمی www.HPKClasses.ir

تهیه کنندگان: مونا امامی سمانه نوع جو استاد راهنما: استاد کسمایی