138
ها داده مان ت خ سا

ساختمان داده ها

Embed Size (px)

DESCRIPTION

ساختمان داده ها. متغیر : نامی است برای قسمتی از حافظه یا سلولی از حافظه . تعریف متغیرها در زبان c دو چیز را مشخص می کند . اول : این که متغیر به چه میزان حافظه نیاز دارد دوم : رشته بیتی ذخیره شده در آن حافظه چگونه تفسیر میشود . - PowerPoint PPT Presentation

Citation preview

Page 1: ساختمان داده ها

داده ساختمانها

Page 2: ساختمان داده ها

حافظه : متغیر از سلولی یا حافظه از قسمتی برای است نامی .

زبان در متغیرها کند .cتعریف مشخصمی را چیز دودارد : اول نیاز حافظه میزان چه به متغیر که این

میشود : دوم تفسیر چگونه حافظه آن در شده ذخیره بیتی رشته .

اعشاری بایت، دو بایت،صحیح یک کاراکتری متغیر هر معموالمضاعف و doubleچهاربایت

گویند می متغیر سایز آن به که کند می اشغال را فضا بایت . هشت

کنیم می استفاده روبرو فرمول از گرها اشاره تعریف : براینوع * ;نام

: مثال Char * p ;

Page 3: ساختمان داده ها

بعدی یک های :آرایه

زبان در که است داده ساختمان ترین ساده می c آرایه استفاده آن ازدارد. مختلفی انواع آرایه شود

آرایه . تعریف دیدگاه از است بعدی یک ی آرایه ، آرایه نوع ترین سادهاست همگن نوع از محدود ای . مجموعه

کنیم می استفاده زیر فرمول از آرایه تعریف :برای[ نوع آرایه] نام آرایه عناصر تعداد ;

:مثالChar x]10[ ;

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

گیریم می :کمکپایین +1 باال - حد حد

Page 4: ساختمان داده ها

بعدی دو های :آرایه . میتوان است جدول یک به نویسشبیه برنامه دیدگاه از بعدی دو ی آرایه یک

برنامه تصور خالف بر اما ، کرد تصور ها آرایه از ای آرایه همانند را آنندارد جدولی شکل . نویسحافظه

:مثالChar x]3[]5[ ;

صورت به دارد جدولی حالت که را منطقی دیدگاه بایست می کامپیوترصورت به که حافظه های سلول در را آرایه و آورد در فیزیکی دیدگاهی

روشمی . دو به منظور بدین کند سازی پیاده هستند ها بایت از ای دنبالهروشستونی و روشسطری کند عمل .تواند

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

آدرس ی روشسطری ]X]i,j محاسبه بهبا برابر آرایه های سطر تعداد کنید با rowفرض برابر ستونها تعداد colو

.باشد :روشسطری

X ]i[ ]j[=base + (I *col+i)*size :روشستونی

X ]i[ ]j[=base + (j *row+i)*size

Page 5: ساختمان داده ها

بعدی سه های : آرایهها سطر row Base + (i*col +j)*size : تعداد

Col : ستونها تعداد H : ارتفاع Base + (k * row * col + I * col + j) * size

k = h X]k[]i[]j[

I = row

J = col

Base + ( l * h* row * col + k * row *col + I * col +j) * size

L = t X]l[]h[]i[]j[

H = k

I = row

J = col

Page 6: ساختمان داده ها

بعدی سه های آرایه در اعداد سازی ذخیره برای روشمختلف چندBase +( k+row * col +I *col +j ) *size

Base +( k+row *col + j *row +i) *size

Base ( i * h * col + k * col +j ) *size

Base ( j * h * row +k * row + i) *size

Page 7: ساختمان داده ها

آرایه کمک به ها ای جمله :نمایشچندپیاده ها آرایه کمک به آنرا توان می بگیرید نظر در را زیر ای جمله چند

توان می مثال دارد وجود کار این برای مختلفی روشهای کرد سازیوجود تواند می ای جمله چند در که ای درجه بزرگترین

عنوان به باشد آرایه Max داشته توان می صورت دراین گرفت درنظرتعداد که کرد تعریف ایبا برابر ان های .باشد Max+1 سلول

4x^5+3x^2_6x+1

5x^2-7

پیاده آرایه در را جمله هر میتوان بدانیم را ای جمله چند درجه اگرضریب واقع در کرد ]A]iسازی

بود X^(n-i) .خواهدمانند اعمالی توان می ها آرایه داخل در ها ای جمله چند ذخیره پساز

داد انجام را ای جمله چند ضرب و ای جمله چند . جمع

باال عبارت دو جمع حاصل 4x^5+8x^2-6x-6

Page 8: ساختمان داده ها

نباشد مناسب است ممکن ای جمله چند سازی ذخیره برای روشقبلشما ای جمله چند مثال برای

است .باشد x^1000+1ممکن

از روش دراین دارد وجود ها ای جمله چند ذخیره برای نیز روشدیگریو سطر دو با آرایه یک

k. شود می استفاده ستون

هاست k : نکته ای جمله چند همه ی دهنده تشیکل جمالت کل .تعداد

Page 9: ساختمان داده ها

اسپارس یا :ماتریسپراکندهماتریس یک ی ذخیره با M*Nبرای بعدی دو ی آرایه یک از توان و m می nسطر

ستون یا استفاده ماتریسخلوت آن به که دارد وجود ماتریسها از گروهی کرد

. این در گوییم اسپارسمیدارند . صفر مقدار عناصر اکثریت ماتریسها

های اندازه موارد دارندوبرخی وجود عمل اسپارسدر ماتریسهای آنجاییکه ازدر آنها ذخیره برای را تری روشبهینه بایست می است بزرگ بسیار آنها

ستون . سه با بعدی دو آرایه ازیک که است روشآن یک کنیم کامپیوترارائهموقعیتسطروستون . آرایه این دوم و اول های ستون کنیم استفاده

ذخیره مقدار سوم ستون و دهند می ماتریساسپارسرانشان مقداردربه .( آرایه آین سطرهای تعداد میدهند رانشان ستون و سطر آن در شده

است ) ماتریساصلی در شده ذخیره مقدار تعداد

Page 10: ساختمان داده ها

کمک ساختمان یک از ماتریساسپارسمیتوان سازی پیاده برای:گرفت

Struct elements

Int row, col ,value ;

;

void main()

Elements s]max[;

S]0[.row=0;

S]0[.col=0;

S]0[.value=7;

Page 11: ساختمان داده ها

( ماتریسمعکوس ( ماتریس ترانهادهها ستون سطرو جای ماتریسباید یک ترانهاده آوردن بدست برای

نتیجه در کنیم راعوضمیمکان روی که مکان [i[]j]عنصری قرارداردبه اولیه [ j[]i]ازماتریس

منتقل ثانویه میشود. درماتریساست این معکوسآن تولید جهت راه ترین ماتریساسپارسساده در

دارد ماتریسقرار صفر ستون در که بگردیم عناصر دنبال ابتدا کهسطروستون جای که ای گونه به کرد منتقل ترانهاده به را آنها

شود انجام کار این غیره و یک ستون سپسبرای .عوضشود

Page 12: ساختمان داده ها

: ساختمانگیریم می کمک زیر فرمول از ساختمان یک سازی پیاده : برای

Struct ساختمان نام

ساختمان اجزای ;

: مثال

Struct rect

Int x,y,s,p ;

;

Page 13: ساختمان داده ها

:Stack یا ها پشتهای یا مجموعه درج عمل که است داده قلم چند از مرتب ای مجموعه پشته

است پذیر امکان پشته الی با از فقط آن از عناصری یا اقالمی حذف( اسلحه( خشاب مثل .

LIFO (last in first out)( ( خروجی اولین ورودی آخرین

زبان ساختارهای C در وسیله به بایست می نداریم پشته مثل ای داده نوعسازی شبیه را پشته موجود

پشته عناصر نگهداری جهت آرایه یک از توان می مثال عنوان به کنیم . پشته باشد نداشته وجود عنصری هیچ آن در که ای پشته کرد استفاده

دارد نام . خالیداد انجام توان می پشته روی عمل دو شد ارائه که ای اساسپشته :بر

1 : کار- این به پشته عنصرجدیددرباالی انجام Pushدرج برای میشود گفتهآن در خواهیم می که ای پشته نام یکی داریم دوپارامترنیاز به عمل این

. شود درج پشته در است قرار که عنصری نام دوم و کنیم درج2 : آن- به که پشته ازباالی حذف عمل Popعمل این انجام برای گوییم، می

. بدانیم را پشته نام است الزم فقط

Page 14: ساختمان داده ها

هر به توان می که است نامحدود فضای یک پشته تئوری دیدگاه ازفضا بودن محدود علت به عمل در اما کنیم درج آن در عنصر تعداد

نیست پذر امکان چیزی .چنین

را حذف عمل خالی پشته یک از توان نمی است واضح که طور هماناطمینان پشته نبودن خالی از باید حذف ی برا بنابراین داد انجام

شود .حاصل

زبان میبایست C در بنابراین ندارد وجود پشته نام به پیشفرضی نوعساختار از استفاده رابا پشته

یک سازی پیاده بنابراین کنیم سازی شبیه زبان این در موجود هایو ای Push, pop ساختارپشته

نویساست برنامه عهده به .همگی

Page 15: ساختمان داده ها

:C زبان در پشته سازی پیادهبایست می کنیم سازی پیاده آرایه کمک به را پشته بتوانیم اینکه برای

پشته بوسیله آرایه های سلول از تعداد چه لحظه این تا که بدانیمموقعیت که کنیم می استفاده متغیری از منظور بدین است پرشده

متغیر این به دهد می نشان ما به آرایه در را پشته عنصر Topباالترینگویند . می

# Define max 100 Struct stackجدید : عنصر درج ++ Top ورود Char items ]max[ ; عنصر حذف-- Top :خروج Int top; ;

اولیه استفاده 1 -باید Top مقدار ها آرایه تمام از بتوان تا شود انتخاباگر بنابراین top),1(-کرد

خالیست پشته که معناست این به .باشد:Empty تابع سازی پیاده

مقدار ( باشد خالی پشته که صورتی در تابع صورت) 1این این غیر در وزند) 0( می برگشت تابع را نوع emptyپس از .INTباید باشد

Page 16: ساختمان داده ها

Int empty (stack *p) کند می دریافت را پشته نوع از متغیر آدرسیک If (p->top==-1) Return (1); Else Return (0);

تابع سازی Push:پیاده void Push (stack *p , char x) If (p->top == max -1) Printf (“stack is full”); Else P->top++;P->items ]p->top[=x;

Page 17: ساختمان داده ها

تابع سازی : Popپیادهchar Pop (stack *p) Char x; If (empty (p)) Printf(“stack is empty”); Else x= p->items ]p->top[; p->top- -; return (x);

Page 18: ساختمان داده ها

پایریز نام به رخدادی وقوع به منجر خالی پشته از حذف تالشبرای )under flow(هرتالشبرای هر و شود یا می موجبسرریز پر پشته در شود) .)Overflowدرج می

: ها پشته کاربردپیشوندی Prefix عبارتهای

میانوندی Infix عبارتهایپسوندی Postfixعبارتهای

آوردن بدست عبارت Postfixبرای نظر Infixازیک در را عمگرها تقدم بایدراه. ترین ساده داشت

تبدیل پرانتزگذاری postfixبه infixبرای عمگرها براساستقدم را عبارت که آنستبه . را عملگر هر موقعیت و کرده شروع داخلی پرانتزهای از سپس کنیم

. کنیم جا به جا نشده اشغال قبال که ای بسته پارانتز نزدیکترین:مثال

(((A / B)-((C * D)/E))+F) infixpostfix= ab / cd *e/-f+

تبدیل بدین Infixبه Postfixبرای گرفت کمک خالی پشته یک از توان میعبارت منظورازابتدای

postfix دیدن با و کنید اضافه پشته باالی به آنرا عملوند هر مشاهده با کرده شروعدو عملگر هر

به مجددا را حاصل کرده اعمال آن راروی عملگر برداشته را پشته باالی عنصرکنیم می اضافه .پشته

Page 19: ساختمان داده ها

:مثال((A * B) + C)

AB * C +

(A + (B / C) : ABC /+ A + B/C

تبدیل شود Infix به Postfix برای می آورده زیر کد . شبه

کد : شود شبه نمی گرفته نظر در آن در جزییات که ای برنامه .

Page 20: ساختمان داده ها

:prefixبه infixتبديل

) infix prefix(

تبديل تبديل prefixبه infixبراي همانند كنيم postfixبه infixنيز مي عملمي آغاز آن انتهاي از كنيم شروع عبارت ابتداي از اينكه جاي به فقط

كنيم.: كنيد توجه زير مثال به

))A+ ((B / C) *E )) - (G * H((

+ -A * / BCE * GH: infix prefix

:infixبه prefixتبديل

)prefix infix (

تبديل همانند نيز تبديل اين آخر infixبه postfixدر از منتهي ميكنيم عمل: . كنيد توجه زير مثال به برسيم آن ابتداي به تا كنيم مي شروع عبارت

* +ABC

prefix infix: A * B+C

Page 21: ساختمان داده ها

است خالی رشته s یکWhile ( ای نرسیده ورودی رشته انتهای ( بهSymb = ورودی رشته در بعدی ;نمادIf ( است عملوند ( symb یک Push (s , symb );Else Op2 = pop (s); Op1 = pop (s); Push (s , op1 symb op2 از حاصل ;(عبارت

Page 22: ساختمان داده ها

تبدیل کد :infixبه prefixشبه

است خالی رشته s یکWhile ( ای نرسیده ورودی رشته ابتدای ( بهSymb = ورودی رشته در قبلی ;نمادIf ( است عملوند ( symb یک Push (s , symb );Else Op2 = pop (s); Op1 = pop (s); Push (s , op2 symb op1 از حاصل ;(عبارت

Page 23: ساختمان داده ها

تبدیل برای کدی عبارت Postfixبه infixشبه ابتدای و infix از کرده شروععملگر هر دیدن با و کنیم می چاپ درخروجی آنرا عملوند هر دیدن با

باال در موجود عملگر تقدم که شرطی به کنیم می اضافه پشته به آنراهای عملگر صورت این غیر در باشد شده مشاهده کمترازعملگر

آنقدر را درپشته که . Popموجود زمانی تا کنیم می چاپ و کنیم مینماییم برخورد کمتری عملگرتقدم با یا کنیم برخورد خالی پشته بهاز پس و افزاییم می پشته به را شده عملگرمشاهده لحظه دراینیکی یکی را پشته در موجود عملگرهای عبارت انتهای به Popرسیدن

کنیم . می مشاهده و کردهها پشته کاربرد از دیگری :مثال

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

یک بسته پرانتز و اضافه واحد یک باز پرانتز هر مشاهدهنمود کم . واحد

(1(2A + (3B / C2)* E1)-F0)(1A + B0) -1)

است معتبر عبارت باشد برقرار زیراگر :شرایطآید اوال : دست به بایستصفر می خاتمه در .نشود ثانیا : دیده منفی شماره گاه هیچ مسیر طول در .

Page 24: ساختمان داده ها

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

است پشته از استفاده عبارتی چنین . تست

A*(B+C)

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

. اضافه پشته باالی آنرابه کننده باز هر دیدن با کنیم می اغاز عبارت ابتدایحذفمی پشته نمادازباالی یک دهنده هرخاتمه مشاهده وبا کنیم می

کنیمداشته مطاقبت شده مشاهده که ای کننده باز با بایست می حذفشده نماد

.باشدعبارت بودن غلط :شرایط

باشد- 1 نداشته مطابقت پشته باالی عنصر با دهنده ( ): مثال خاتمهکنیم- 2 حذف خالی پشته از باشیم مجبور پیمایشعبارت طول (( مثال : در

( باشد- 3 نشده خالی پیمایشپشته خاتمه ( )) مثال:پساز

Page 25: ساختمان داده ها

عبارت بررسیصحت برای کدی : شبهاست خالی رشته s یک

V = 1 ; While ( ای نرسیده رشته انتهای (به Symb = بعدی ورودی ; نمادIf ( symb == ‘)’ || symb == ‘]’ || symb == ‘‘) Push(s,symb);If ( symb == ‘)’ || symb == ‘[’ || symb == ‘’) If (empty (s)) V = 0 ; Break ; Else Symb 2 = pop (s) ;

Page 26: ساختمان داده ها

If ( !match (symb, symb 2)) چک بودن گروه هم نظر از را دونمادmatchکند فرضکنیم

V = 0 ;

Break;

//Else

//if

//while

If (!empty (s))

V = 0 ;

If (v == 0)

Printf (“ است غلط ;(”عبارت

Else

Printf (“ است صحیح ;(”عبارت

Page 27: ساختمان داده ها

:صفابتدايصف از هرعنصر كه است مرتب ازعناصر اي مجموعه صف

شود مي درج صف انتهاي در و .حذفشده

FIFO (First In First Out)

نيز صف . Queueبه شود مي گفته

موقعيت بايست مي شود مي انجام ازدوطرف صف درج كه آنجا ازابتدا عنصر به معموال بدانيم را صف وانتهاي و Front (F)عنصرابتدا

انتهايصف عنصر .Rear ( R )به شود مي گفته

Page 28: ساختمان داده ها

رويصف ابتدايي :اعمال . پارامتر دو به معموال درج عمل انجام براي شود مي گفته -Insert1 نيز

آن به كه صف در درج عملنيازمنديم .

شود الف) درج جديد عنصر آن در است قرار كه صفي .صفشود ب) وارد است قرار كه جديد عنصر .

نبودنصف خالي صورت در عمل ،اين شود مي عمل -Remove2 گفتهآن به كه صف از حذف

صفاست نام هم آن داريم نياز عمل يك را Remove..به اول عنصرعمل انجام كند،براي مي حذف

به عمل در كه شود مي تصور نامحدود فضايي پشته مانند نيز صفنظر در بايد بنابراين نيست گونه اين فضا بودن نامحدود علت

همچنين نشود سرريز باعث صف در شده درج اقالم تعداد كه گرفتبه منجــر چون كرد حذف توان نمي خالي صف يك از كه است واضح

شود مي ريز .پا

Page 29: ساختمان داده ها

: C زبان در صف سازي پيادهنگهداري . جهت گيريم مي كمك آرايه يك از صف سازي پياده براي

دو صف انتهاي و ابتدا كنيم موقعيت مي استفاده آرايه در . F,R هاي نام به متغير

# Define Max 100Struck Queue Char Items ]Max[; Int f, r;;

:Insert تابع سازي پيادهVoid Insert (Queue *q, Char x) If (q r == Max-1) Print f ("Queue is full ");Else q r ++;q Items ]q r[ =x;

Page 30: ساختمان داده ها

:Remove تابع سازي پيادهChar Remove (Queue *q)

Char x;

If (empty (q))

Print f ("Queue is empty");

Else

X=qItems ]qf[;

qf++;

Return(x);

Page 31: ساختمان داده ها

:Empty تابع سازي پيادهInt empty (Queue *q) If (q f >q r) return (1); else return (0);كه است اين وآن دارد ايراداساسي يك شد سازي پياده كه شكلي به صف

و درج عمل تعدادي رسيده پساز انديسآرايه آخرين بهبودن خالي رغم برخورد rباشدوعلي حالتي به است ممكن حذف

كرد اضافه صف به ديگري عنصر از F. نتوان قبل هاي خانهانديستمامي آخرين دارد r به وجود هايي حل راه مشكل اين حل براي

رسيدن ي لحظه توان مي مثالعناصر حذف بارعمل هر با اينكه يا كرد منتقل آرايه ابتداي عناصررابه

استفاده بهتر حل راه است چپ سمت به واحد يك انتقال Shift صفعمل زيادي بسيار تعداد مستلزم پيشنهاد هــردو شود داده

است اي دايره هاي صف . از

Page 32: ساختمان داده ها

( چرخشي ( اي دايره هاي :صفMax ]i[ مي نظر به كه شود مي رفتار اي گونه به آرايه با صفچرخشي دريك

انديس سلول رسدكه اصولي تمامي صورت اين در است گرفته قرار انديسصفر سلول از قبل

بودنصف خالي ي دهنده نشان تواند نمي گفتيم خطي صفهاي f>r درشرط ای دایره های صف در شود اصالح ميبايست

نيز صف داخل عناصر تعداد نيست صف بودن پر دهنده باشد R==max-1 نشانشرط همچنين

آيد دست رابطه R-f+1. به از تواند نمي

F,R است خالي صف كه زماني يعني گيريم مي نظر خالي F==R در شرايطصورت به را صف بودن

آن و آيد پيشمي مشكلي عمل اين اثر در كند مي مراجعه واحدي ي خانه بهآرايه اگـــر كه است اين

متعلق خانه كه كنيم فرضمي مشكلي ازچنين پيشگيري براي خواهدبود برابرF باR پر شود كامال

باشد خالي بايد بهF . همواره

Page 33: ساختمان داده ها

:Insert تابع سازي پيادهVoid Insert (Queue *q , Char x )

If ((qr+1) % Max ==q f)

Print f ("Queue is full ");

Else

q r =(qr+1)% Max ;

q Items ]q r[ =x;

: Empty تابع سازي پيادهInt empty (Queue *q)

if (q f == q r)

Return (1);

Else

Return (0);

Page 34: ساختمان داده ها

: Remove تابع سازي پيادهChar Remove (Queue *q) Char x; If (empty (q)) Print f ("Queue is empty”);Else q f=(qf+1)%Max; x=q Items ]qf[;Return (x);

Page 35: ساختمان داده ها

اولويت :صفاساس . بر خروج تربيت صفها اين در صورت Fifo نيست اولويت به صف در

خروج و ورود تربيتدو به را اولويت ي صفها توان مي تر ساده ديدگاهي از است عناصر اولويت

. صف در كرد بندي دسته نزولي اولويت وصف صعودي اولویت صف شکليك حذف عمل واردشونداما هرترتيبي به توانند مي عناصر صعودي اولويت

پذيرد مي انجام تر كوچك عناصر روي همواره . عنصر

صعودي اولويت صف در حذف و :درجشود . : مي درج صف انتهاي در جديد )عنصر عمل( درج -1 یک

(مقایسه n : حذفمي حذف و شده پيدا عنصر كوچكترين صف در جستجو با) . شود

جو ( ) درج : -n/22(مقایسه و جست كمك به اش منطقي محل در جديد عنصرشود ). درج

)حذف : عمل ( یک صف ابتداي ازاست نکته : بهتــر اول روش از روشدوم مقايسات تعداد نظر از .

:مثال4 2 9 6 8 1

1 8 6 9 2 4روشاول :

9 8 6 4 2 1روشدوم :

Page 36: ساختمان داده ها

: ها آرایه در ها پشته سازی پیاده به راجع ی ا نکتهصورت این در کرد سازی پیاده را پشته دو آرایه یک از استفاده با توان می

به چپ از اول پشتهگیرد . می قرار آرایه در چپ به راست از دوم پشته و راست

اول پشته بودن خالی top1 == -1 : شرط

دوم پشته بودن خالی top2 == max : شرط

پشته : هردو بودن پر Top1 + 1 == top2 شرط

x=Items]top1[ x=Items ]top2[;

از حذف دوم پشته از حذفاول پشته

top1--; top2++;

top1++; top2--;

اول پشته در درج دوم پشته در درج Items]top[=x ; Items]top[=x;

Page 37: ساختمان داده ها

می صورت کرددراین سازی پیاده را پشته چندین توان می آرایه یک دربر تقسیم را آرایه بایست

آرایه اگر فرضا کنیم ها پشته ها 20تعداد پشته تعداد و دارد n=4سلولپشته هر از 5است خانه

کرد . خواهد اشغال را آرایه

max b ]i[ = i * ]max/n[ آرایه های سلول تعدادها پشته n top ]i[ = i * ]max/n[-1تعداد

پشته .max/nهر کند می اشغال سلول

Page 38: ساختمان داده ها

می صورت کرددراین سازی پیاده را پشته چندین توان می آرایه یک دربر تقسیم را آرایه بایست

آرایه اگر فرضا کنیم ها پشته ها 20تعداد پشته تعداد و دارد n=4سلولپشته هر از 5است خانه

کرد . خواهد اشغال را آرایه

max b ]i[ = i * ]max/n[ آرایه های سلول تعدادها پشته n top ]i[ = i * ]max/n[-1 تعداد

پشته .max/nهر کند می اشغال سلول

Page 39: ساختمان داده ها

پيوندي هاي :ليستو مثلصف ساختارهايي سازي پياده جهت كه است آن ها آرايه بزرگ مشكل

استپس نياز مورد حافظه از سلول چند دقيقا كه دانيم نمي پشتهآرايه عناصر تعداد رادرانتخاب برآورد حداكثــر مجبوريم

و رود هــدر حافظه موارد از بسياري در كه شود مي باعث كار اين كنيم اعمالبماند باقي بالاستفاده

است پيوندي هاي ليست از استفاده مساله اين بردن بين از كارهاي راه از يكي.

را بعدي آدرسعنصر خودشان داخل ،در صف يا و پشته عناصر فرضكنيدخطي پيوندي ليست نام به اي داده ساختمان يك ترتيبي چنين باشند داشته

ليست دهنده ازعناصرتشكيل هريك كند مي راايجاددارد نام گره یا پيوندي Node. و

گــره يك از اي ساده : شكل

كند : مي داري نگه را ما نظر مورد بخشinfo اطالعاتمي : اشاره پيوندي ليست در بعدي ي گره به كه است گر اشاره يك

بخشNext. كنداست زير شكل به معموال خطي پيوندي ليست :يك

Page 40: ساختمان داده ها

ليست در گره اولين به خارجي گر اشاره يك از پيوندي ليست به دسترسي برايكند مي اشاره پيوندي

كنيم مي .استفاده،گره گره اين از پس كه است معنا بدان اين دارد تهي در نكته: Null يا گر اشاره

مقدار گره آخرينندارد وجود پيوندي ليست در .ديگري

مثال نكته: عنوان به گرفت كمك ساختمان يك از توان مي گره سازي پياده براياست اي گره زير نوع Char.ساختمان از آن info در بخش كه كند مي تشريح را

Struck node Char info; Node * next; ;

منظور ( و كند مشخصمي را گره ) Info در اطالعاتي به pinfoقسمت گر اشارهباشد اگرp گره

شود مي خارج گره آن در كه است گري از P next .اشارهابتدا كار اين ي برا كنيم اضافه پيوندي ليست به را گــره باشيم خواسته كنيم فرض

گره بايست ميجديد ي گره ايجاد ي وظيفه كه دارد كنيد Get node وجود فرض كنيم ايجاد را جديدي

نام به تابعيمقداردهي را جديد Info , Next آن گره ايجاد از پس دارد عهده به را آن آدرس توليد و

بخشهاي كنيم .مي

Page 41: ساختمان داده ها

P=get node ( );P info=x;P next=list;List=p;

تابع سازي :Get nodeپيادهزبان نام Cدر به دارد وجود صورت mallocتابعي بدين تابع اين كاربرد

عدد اندازه به كه استاينكه براي دهد شمااختصاصمي رابه حافظه آن درپرانتزجلوي شده ذكر

ی اندازه به بتوانيم بتوانيم. كنيم مي استفاده زير شكل به تابع اين از بگيريم فضا گره يك

Malloc (size of (node))بدين شود پيكربندي گره يك قالب در بايست مي شده داده اختصاص فضاي

: بنويسيم بايست مي منظورNode *malloc (size of (node))

جلوی* شده اختصاص nodeذكــر ي آدرسحافظه كه است خاطر بدينتابع ي وسيله به نهايتا و شده توليد شده داده Get nodeداده برگشت

تابع شود :get nodeشکل است زیر صورت شدبه گفته آنچه براساس

Page 42: ساختمان داده ها

Node *get node( )

Return ((node *) malloc (size of (node))

پيوندي ليست ابتداي از گره يك : حذف

P=list;

List= list next; list

X= p Info;

Free (p);

: خطي پيوندي هاي ليست از استفاده با ها پشته سازي پيادهكردن اضافه مانند پيوندي ليست ابتداي به عنصر يك افزودن عمل

و است پشته باالي در عنصريباالي عنصر حذف مانند پيوندي لیست از عنصر عمل اولين حذف عمل

بنابراين باشد مي پشته. push , popتوابع كرد سازي پياده زير شكل به توان مي را

تابع كنيم emptyابتدا مي طراحي . را

Page 43: ساختمان داده ها

تابع سازي :Empty پياده

Int empty (node *p) If (p==Null) Return (1);Else Return (0);

Page 44: ساختمان داده ها

تابع سازي :PushپيادهVoid push (node *list, char x) Node *p; P=Get node (); Pinfo=x; P next=list; list=p;

Page 45: ساختمان داده ها

تابع سازي :PopپيادهChar pop (node *stack) Node *p;Char x;If (empty (stack)) Print f ("stack is empty"); Else P=stack;stack = stack next;x=pinfo;Free (p);Return (x);

Page 46: ساختمان داده ها

خطي پيوندي ي ها ليست كمك به ها صف سازي : پيادهعنصر اولين كه شود مديريت اي گونه به خطي پيوندي ليست اگر

خروجي عنصر اولين ، وروديمجبوريم نتيجه در است شده سازي پياده صف يك گفت توان مي باشد

عمل پيوندي ليست طرف يك از. دهيم انجام را درج عمل آن ديگر طرف در و حذف

Page 47: ساختمان داده ها

تابع سازي :InsertپيادهVoid Insert (node *p , char x) P=Get node (); Pinfo=x; P next=Null;If (r==Null) f=P; r=P; Else r next=P; r =P;

Page 48: ساختمان داده ها

تابع سازي :Remove پياده

Char Remove (node *p )

Char x;

If (f==Null)

Print f ("Queue is empty");

Else

P=f;

f=f next;

X=pinfo;

Free (p);

If (f==null)

f=null;

Return (x);

Page 49: ساختمان داده ها

: پيوندي هاي ليست از استفاده با پشته و سازيصف پياده معايبتلفمي 1- بيشتري فضاي آرايه سلول هر از پيوندي ليست در گره هر

كند.-2. است تر مشكل آرايه به نسبت پيوندي هاي ليست مديريت

ارزيابي مورد توان مي را ها آرايه و پيوندي ها ليست كلي طور به. داد قرار

ها : آرايه به نسبت پيوندي ليست مزاياينه ميا از حذف و درج پيوندي هاي ليست در شد گفته كه آنچه بر عالوه

سادگي به پيوندي ليست يبه نياز حذف عمل هر و درج عمل هر ها آرايه در اما است پذير امكان

Shift دارد آرايه عناصر دادنپيوندي : ليست به نسبت آرايه مزاياي

شكل به آرايه عناصر از يك هر به دسترسي شد گفته که آنچه بر عالوهدر اما شود مي انجام مستقيم

گره به رسيدن براي پيوندي های بايست nليست مي پشت n-1ام گرهباشد . پيمايششده آن سر

Page 50: ساختمان داده ها

اگر پيوندي ليست يك در كه بنویسید كدي اشاره p شبه اي گره بهكند حذف را آن بعداز شدگره با : كــرده

Delafter (p)

If ( p next ==Null)

Print f ("can not remove ")

Else

q= p next;

P next= q next;

Free (q);

A B C ED

q

p

Page 51: ساختمان داده ها

كه اي گره از بعد شيم با خواسته كنيد گره Pفرض كند مي اشاره آن به. كنيم درج را جديدي

Insafter (p, x)

q=Get node ();

q Info = x;

q Next = p next;

P Next = q;

پيمايششود نكته : پيوندي ليست بايست مي كاربردها از بسياري درهاي پيمايشليست براي معموال

يكديگر دنبال به كه كنيم مي استفاده كمكي گر اشاره دو يا يك از پيونديكنند مي حركت ليست . درون

حاوي مثال: كه را هايي گره ي كليه صحيح عدد حاوي پيوندي ليست يك در

كنيد 4عدد حذف را هستند

q

next;

Page 52: ساختمان داده ها

While (list info == 4 && list! = Null)

Pop (list);

p = list;

q = list Next;

While (q! = Null)

If (q info == 4)

Delafter (p);

q = p Next;

Else

p = p Next;

q = q Next;

Page 53: ساختمان داده ها

مرتب :ليستباشند گرفته قرار بزرگتر ازعناصر کوچکترقبل عناصر درآن كه ليستي

عنصر. بخواهيم اگر بنابراينترتيبشهم كه باشد ای گونه به بايست مي كنيم اضافه آن به جديدي

نخورد.

مرتب ليست داخل در جديد عنصر يك درج براي كدي شبه خواهيم میبنويسيم .

است .1- كوچكتر ليست عناصر تمامي از جديد عنصر-2. گيرد مي قرار ليست ميان در كه است اي گونه به جديد مقدار-3. است بزرگتر ليست عناصر تمام از جديد عنصر

Page 54: ساختمان داده ها

1) 2 )

If (x< list info) If (x< list info)

Push (list, x); Push (list, x);

Else Else

p=list; p=list;

q=list Next; q=list Next;

While (qinfo < x) While (qinfo < x && q! =Null)

p=p Next; p=p Next;

q=q Next; q=q Next;

Insafter (p, x) Insafter (p, x)

Page 55: ساختمان داده ها

پياده جهت گيرد مي واقعيشقرار محل در را جديد عنصر كه آنجا از فوق الگوريتمصفهاي سازي

را الگوريتم اين رود کار به كنيم Place اولويت مي گذاري .نام

بكنيم؟ بايد كار چه باشد تهي ما پيوندي ليست اگرIf (x< list info || list == Null)

استفاده نکته : پيوندي ليست سازي پياده از توان مي اولويت سازيصف پياده برايخود اولويتصعودي صف از توان مي باشد اولويتصعودي صف اگر فرضا كنيم

كنيم . استفادهشد نکته : گفته سازيصفصعودي پياده در كه مواردي با مشابه نزولي اولويت صف

سازي پياده ستاقابل .

كلمه Link استفاده جاي Next از به ي Data و كلمه Info از به نکته: كتابها از بعضي در جای

شود . ميمثل دستوراتي جاي به پاسكال زبان كدهاي از p nextو info pاز p infoدر

p info. شود مي استفادهتفاوت پيوندي ليست انتهاي يا ميانه در درج عمل با ليست ابتداي در درج عمل

،براي داشت ساختارياز ابتدا در از استفاده Push, Insertدرج ميانه يا انتها در درج وبرای شود Insafterمی

شود . مي استفاده

Page 56: ساختمان داده ها

صورت ( به همواره درآيد يكسان درج اينكه براي مواقع برخي ) insafterدرنام به اضافه گره يك

پيوندي ليست كه زماني حتي گيريم درنظرمي ليست راسدرابتداي گرهراس وگره است تهي

. است موجود

برخي Infoبخش در و گيرد مي قرار بالاستفاده موارد راسدربرخي درگرهاطالعاتي موارد از ديگر

موجود هاي گره تعداد توان مي مثال گيرد مي قرار گره در پيوندي ليست از. كنيم ثبت آن در را

به ديگري و ابتدا به يكي گر اشاره دو تواند راسمي گره ديگر برخي در و. باشد داشته پيوندي ليست ي انتها

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

. بود بخشخواهد سه شامل

Page 57: ساختمان داده ها

. كنيد جمع هم با را آنها خواهيد مي و داريد اي جمله چند دو فرضكنيد

7x^5 + 3x^3 – 6x^2+ 4

5x^6-4x^5+2x^4+2x^2-x

باشد داشته وجود تواند مي زير حالتهاي اي جمله چند دو جمع : هنگام

هم : (1 با ضرايب باشند توان هم هستيم مواجه آن با كه اي جمله دوگذاریم راپشتسرمی وهردوجمله شوند .جمع

سر (2 پشت و شده انتخاب جمله آن دارد بيشتري توان جمالت از يكيشود مي . گذاشته

Page 58: ساختمان داده ها

p=list1;

q=list2;

List3=Get node ();

If ( p t = = q t)

List3 t= p t

List3 z=p z + q z;

p=p Next;

q=q Next;

Else if (p t > q t)

List3 t=p t;

List3 z=p z;

p=p Next;

Page 59: ساختمان داده ها

Else

List3 t=q t;

List3 z=q z;

q=q next;

r=list3;

While (p! =Null && q! =Null)

If (p t==q t)

Insafter (r, p z + q z, p t);

p= p Next;

q= q next;

r = r Next;

Page 60: ساختمان داده ها

Else if (p t >q t) Insafter (r, p z, p t);r=r Next;ElseInsafter (r, q z, q t);r=r Next; //whileIf (p! =Null)While (p! =Null) Insafter (r, p t, p z);

Page 61: ساختمان داده ها

r= r Next;p=p Next; If (q! =Null) While (q! =Null);Insafter (r, q t, q z);r= r Next;q= q Next;//while

Page 62: ساختمان داده ها

ي ا دايره پيوندي هاي :ليستجاي به گره آخرين از شده خارج گر اشاره ابتدايي Nullاگر گره به

نام به جديدي ساختار كند اشاره. آيد مي پديد اي دايره پيوندي ليست

از توان مي ليست بودن بسته خاطر به اي دايره پيوندي هاي ليست در. كرد پيدا دسترسي ديگر نقاط به ليست نقطه هر

به خارجي گر اشاره شود انجام تر ساده ليست مديريت آنكه برايفرضمي گره آخرين روي را ليست

. بود خواهد اول ي گره آن از بعد ي گره نتيجه در گيريمها وصف ها پشته ميتوان اي دايره هاي ليست ي وسيله پياده به را

. كرد سازياي : دايره پيوندي هاي درليست ها پشته

A

B

C

Page 63: ساختمان داده ها

تابع براي كدي :PushشبهVoid push (stack, x)p=Get node ( );p info=x;If (stack! =Null)p Next =stack next;Stack next=p;Elsep Next=p;Stack=p;

Page 64: ساختمان داده ها

تابع براي كدي :PopشبهChar pop (stack)If (stack == Null)Print f ("stack is empty);ElseP= stack Next;Stack Next=p Next;X=p info;If (p==stack)Stack=Null;Free (p);Return (x);

Page 65: ساختمان داده ها

ای دایره پیوندی هاي ليست از استفاده با ها صف سازي پيادهتابع سازي :Insertپياده

Void Insert (queue, x) p=Get node ( ); p info = x;If (queue! =Null)p Next = queue Next;queue Next=p;Else p Next=p;queue =p; queue = queue Next;

nullB

f r

A Cq

q

q

q

Page 66: ساختمان داده ها

تابع سازي :Removeپياده

Char remove (queue)

If (queue == Null)

Print f ("queue is empty");

Else

p=queue Next;

queuenext=p Next;

X=p Info;

If (p==queue)

queue == Null;

Free (p);

Return (x);

Page 67: ساختمان داده ها

پيوندي دو هاي :ليستاي ( ) دايره خواه باشد خطي خواه پيوندي یک هاي ليست بزرگ مشكالت از يكي

امكان كه است آندو هاي ليست ي وسيله به مشكل اين ندارد وجود ها آن پيمايشمعكوسدر

. است حل قابل پيوندي.نكته : گويند مي نيز طرفه دو پيوندي هاي ليست گاهي را پيوندي دو هاي ليست

. است زير شكل به پيوندي دو هاي ليست در گره هر شكل

هاي نكته : گر ترتيب Left, Rightاشاره به ها كتاب بعضي در Prev , Nextراتعريف

. اند كردهگره به نقطه هر از توان مي پيوندي دو ي ها ليست در شد گفته كه طور همان

قبلي ويا بعدي . در هاي ليست روي توان مي سادگي به كه كارهايي جمله از كرد پيدا دسترسي

حذف داد انجام پيونديكه است اي گره .pمستقيم كند مي اشاره بدان

گره حذف باعث دستورات مجموعه زير پيوندي دو ليست يك در مثال عنوان pبه. شود مي

r

Page 68: ساختمان داده ها

L=p left;

R=p right;

L right =r;

R left=l;

X=p info;

Free (p);

كه راستي سمت پيوندي دو ليست يك در باشيد خواسته فرضكنيدكنيم درج را جديدي گره كند مي اشاره بدبن .گره

Q=Get node ();

Q Info=x;

r= p right;

Q Right=r;

Q Left=p;

P right=q;

R left=q;

Page 69: ساختمان داده ها

:درختهادودویی : درخت

تشکیل مجموعه سه از که باشد می درخت شکل ترین ساده دودویی درخت یکاست شده

درختچپ زیر نام به دیگر مجموعه دو و دارد ریشه نام به عنصر یک اول مجموعهراست درخت زیر و

باشد . تهی تواند می ها درخت زیر از یک هر است .موسومباشد می راست درخت زیر و c . ریشه چپ درخت زیر درخت B ریشه ریشه ، A در

فوق شکلراست و چپ درخت زیر بینید می شکل در که هستند. E , D شامل Bهمانطور

قبل . مثال در شود می نامیده گره دودویی درخت عنصر دارد . 9هر وجود گرهدرخت زیر که ای گره

شود . می نامیده برگ باشد داشته خالی راست و چپراست یا پسرچپ B و B را پدر آنگاه A را باشد آن راست یا چپ درخت زیر Bریشه

و اگرA ریشهtuuuA. نامیم می

Page 70: ساختمان داده ها

چپ . B پسر اگر نامیم ی A می گره B باشد Aراجد B و B رانوه پدرچند یااگرA پدر B باالتراز

tuuu A چپ پسر ی نوه آنگاه Aیا چپ Bباشد ی شود . Aنوه می محسوب. داد ارائه توان می نیز راست ی نوه برای تعریفمشابهی

. برادرند هم با باشند پدر یک راست و چپ فرزندان گره دو اگر

یا نکته: والد ازکلمه پدر جای به کتابها برخی می ) parent(در استفادههمزاد واژه از برادر جای وبه فرزند واژه از پسر جای به شود

. شود می استفادهمحض دودویی :درخت

دارد فرزند دو یا ندارد فرزند یا آن گره هر که .درختیدارد 2 گره n-1 باشد داشته n برگ اگر محض دودویی درخت یکشود گذاری شماره زیر شکل به تواند می کامل دودویی درخت :یک

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

Page 71: ساختمان داده ها

پر دودویی : درختداشته قرار یکسطح در آن های برگ تمام و محضباشد که درختی

.باشدهای 1شکل 2 3، ولیشکل ، پر هم محضهستند محضاست 4هم فقط

.

باشد داشته مثلثی ساختار باید پر دودویی . درخت

با است برابر آن های گره تعداد عمقی D: باشد پر دودویی درخت اگربا برابر

D عمق tn ها گره تعداد1 1

3 2 tn = 2 ^ d – 1 D = 2 ^ d = tn + 1 d =

7 3

)1(

2log

tn

Page 72: ساختمان داده ها

کامل دودویی : درختاست کامل باشد داشته زیر کامل D. شرایط دودویی درخت اگر

باشد شده -D1 و D-1.واقع در حداکثر آن برگهای سطح 2کلیه 2- شود پر راست به چپ از . درخت

3- شود می پدیدار پر درخت یک حذفشود درخت برگهای سطر آخرین . اگرشود گذاری شماره روبرو شکل به تواند می کامل دودویی درخت :یک

شماره 1ریشهچپ پدرش 2هرفرزند برابر

راست فرزند پدرش +2هر 1برابرکرد سازی پیاده آرایه کمک به توان می را کامل دودویی درخت . یک

درموقعیتهای آرایه ازعناصر هریک وراست چپ فرزندان صورت این درقرار ++ برابر دو و دوبرابر

را آن به اندیسمربوط کافیست گره هر پدر کردن پیدا برای همچنین ، داردبر جزء 2تقسیم و کرده

نمود . انتخاب آنرا صحیح

1

2 3

4 5 6 7

Page 73: ساختمان داده ها

دودویی درخت روی ابتدایی : اعمالاین شرح از قبل داد انجام توان می دودویی درخت روی را ابتدایی عمل چند

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

باشد . پیوندی دو لیست

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

. توان می نتیجه در شود می ایجاد گره در باال سمت به گری اشاره موارد از ایساختمان با را گرهکرد : سازی پیاده Struct nodeزیر

Char info;Node *left,*right,*father;

Page 74: ساختمان داده ها

تمامی در که است واضح همچنین fatherبرابرnull است در توجه : فقط که است واضعریشه هستند گره .null برابر right,left گرهای ها اشاره برگ

داشت .نکته: خواهد برادر گر اشاره گره یک نادری بسیار موارد درداد خواهد صورتی Trueبرگشت Isright (p) در کرد به Isright (p) طراحی تابعی توان می

نامگره خود وگرنه p که باشد پدرش راستی سمت گره دهد . Falseفرزند می برگشت

چپ فرزند برای منتهی تابعIsleft (p) مشابه: Isright (p). استکند x راایجادمی حاوی گره یک تابع این سازد می را درخت ریشه یعنی گره اولین

Make tree(x)گره این از شده خارج گر اشاره سه بر Nullهر را شده ساخته پسآدرسگره است

. دهد می گشتTree=maketree(a);

جدیدی گره نباشد موجود ای :p گره گره چپ سمت که صورتی های )p,x( در پارامتر باSetleft

کند می حاویx سمتچپ p.ایجادباشد می راست سمت فرزند setright مشابهsetleft. برای

دودویی درخت کاربرد از ای :نمونهبسیار طرفه دو گیریهای تصمیم فرایند در که است ای داده ساختمان دودویی درخت

است کاربرد . پربه آن های شاخه تمامی که بسازیم هایی درخت مایلیم همواره ها درخت با کار هنگام

رشد نرمال شکل

Page 75: ساختمان داده ها

به آن های برگ تفاوتسطح که است درختی نرمال درخت یکی از ما منظور باشد کردهزیاد کلی طور

باشیم . کامل یا پر درخت یک دنبال حالت بهترین در که است واضح نباشدرابطه نکته : از پر درخت عمق شد گفته آنچه طبق بگیریم نظر در را آل ایده حالت این اگر

بدست زیر. آید می

tn= =tn+1 d=( درخت نرمال : (عمق درخت یک ≈ d در

یا یافته را تکراری عناصر ، عناصر از لیستی میان در باشید خواسته که فرضکنید حالکنید .حذف

درختی چنین در درج nگره مقایسات : برای تعداد ≈ ( عناصر (nتعدادمسیر این ودر کنیم مقایسه باقیمانده عنصر n-1 عنصر که است این اینکار برای روش یک

با را اولمقایسات ( عناصر تعداد کنیم چاپ را با) n-1تکراری را سپسعنصردوم عنصر n-2 باشد

باقیماندهصورت این در که کنیم لیست n-2 مقایسه انتهای تا کار این شود می انجام دیگر مقایسه

تکرار بایدآید : می بدست زیر رابطه از مقایسات کل تعداد صورت این در شود

مقایسات کل =1+…+(n-3)+(n - 2) + (n - 1) = تعداددرخت ریشه لیست اول روشعنصر دراین است دودویی درخت ازیک بهتراستفاده روش

سازد می راچپ های نوه از درخت زیر هر ریشه که شوند می درخت وارد ای گونه به باقیمانده عناصر

بیشتر کمتر . راست های نوه از و باشد

1

2log

tn

nodsofnumber

2log

nn

2log

2

1nn

d212

Page 76: ساختمان داده ها

6 3 9 1 4 7 8 7 2 1 5 10

Log (n) گره عمق با است برابر مقایسات تعدادبا است برابر گره یک برای فوق مثال در مقایسات : تعداد

جدید ≈ گره یک برای مقایسات ها (تعداد گره )تعداد

درختی چنین در درج ≈ N گره برای مقایسات ) تعداد عناصر (nتعداد

N=100

: اول 500000 ≈ 2)/999*1000(روش

دوم : 10000=1000 * 1000روش

2log

6

3 9

1 4 7 10

2 5 8

nn 2log

2log

Page 77: ساختمان داده ها

تکراری عناصر کد : شبهباشد عنصر اگرxاولین

Tree=maketree(x);While( دارد وجود لیست در (عددیX= لیست بعدی ;عددp=tree;q=tree;While(q!=null && p info !=x)p=q;If (x>pinfo)

q=qright;Else q=qleft;//whileIf(x==pinfo)

printf(“%c”,x);Else if(x>pinfo)

setright(p,x);else

setleft(p,x);

Page 78: ساختمان داده ها

: پیمایشدرخت هاست گره تمام مالقات و درخت سر تا سر در حرکت . پیمایشدرخت

دارد وجود درختها پیمایشدر روش : سه

(VLR) Preorder1- پیشترتیب (LVR) Inorder 2- ترتیب میان

(LRV) Postorder 3- پسترتیب پيمايش : Preorderبراي شود انجام بايد زير عمل سه

ريشه) 1 مالقاتروش) 2 به چپ درخت preorderپيمايشزير

روش) 3 به راست درخت preorder پيمايشزير

Preorder : ABDFGHEICJKL

Page 79: ساختمان داده ها

پيمايش : Inorder براي شود انجام بايد زير عمل سهروش )1 به چپ درخت inorderپيمايشزير

ريشه )2 مالقاتروش )3 به راست درخت inorder پيمايشزير

inorder : DGFHBIEAJCLK

شود انجام باید زیر عمل postorder:سه پیمایش برایروش) 1 به چپ درخت postorderپيمايشزير

روش) 2 به راست درخت postorder پيمايشزير

ريشه) 3 مالقات

Postorder : GHFDIEBJLKCA

Page 80: ساختمان داده ها

درخت نكته: اگر است دودويي درختان از استفاده سازي مرتب روشهاي از يكينيز تكراري عناصر كه كنيم ايجاد اي گونه به را تكراري اعداد کردن پیدا به مربوط

پيمايش با د شو درج درخت ترتيبصعودي Inorderداخل به ،اعداد مي sortآنهاشود.

دودويي جوي و درختجست ، درختي چنين مي )binary search tree(به محضگفتهشود.

درخت نكته: يك ي وسيله رابه وعملگرها عملوندها حاوي عبارت يك توان ميپيمايش محض دودويي

.كردترين داخلي از سپس و کرده گذاري پرانتز را ابتداعبارت منظور بدين

سازیم می را پرانتزهازیردرخت. کنیم می تكميل باال به پایین از را ودرخت

(((A*B)-((C/D)*E)) + (F*G))پيمايش سه باشد شده ايجاد درستي به درخت آن Inorder ,postorder ,preorderاگر

به معادل .Infix, postfix, prefixترتيب كند مي توليد را عبارت

نخي : دودويي هاي درختگر اشاره كه ديد خواهيد كنيد دقت درختي ساختارهاي در تمامي Left,Rightاگر

مي Nullبرگها گر اشاره يك صاحب دارند فرزند يك فقط كه هايي گره همچنين نيز Nullباشد

هستند.

Page 81: ساختمان داده ها

هاي گر اشاره زياد توليد Nullتعداد براي اي ايده اند مانده بالاستفاده كهدرختان نام به درختاني

. گر اشاره هر نخي درختان در است شده به Nullنخي شود مي خارج گره از كهپيمايش در كه کرد خواهد اشاره اي محسوب Inorderگره قبلی یا بعدی گره

گر اشاره در rightشوداگر که کند می وصل ای گره به را آن باشد تهیمي inorderپیمایش وصل ماقبل گره به وگرنه شده محسوب ما بعدی گره

كنيم.کنیم مثال : می اضافه درخت به را نخی اشارهگرهای زیر درخت . در

Inorder : DGFHBIEAJCLK

: دودويي درختان از استفاده با پيوندي هاي نمايشليستبه رسيدن پيوندي ليست يك در داريد خاطر به كه طور عنصر Kهمان امين

پيمايش به K-1مستلزم

. است ماقبل عنصرعنصر يك يافتن كه اي گونه به كرد سوار درخت يك روي را ليست يك توان مي

سرعت با خاص: کنید . توجه زیر مثال به شود انجام بيشتري

Page 82: ساختمان داده ها

: بگيريد نظر در را زير ليست مانند ليستيA B C D E F G H I J

با داد قرار دودويي درخت يك هاي برگ عنوان به را ليست اين عناصر توان ميپيمايش با كه شرط از Inorderاين نمونه يك شود حفظ لیست عناصر ترتيب

: است زير شكل به درختي چنين

موجود هاي برگ ي دهنده نشان كه گيرد مي قرار عددي برگ غير گره هر داخلدرختچپ زير در

. است گره آنبه اگر كنيم طي را درخت زير كدام كه گويد مي ما به گره هر در شده نوشته عدد

عنصري دنبالسمت ي شاخه زير وگرنه چپ سمت ي شاخه زير است كمتر آن از كه هستيد

كنيد انتخاب را راستاز بايست مي گره ي شماره ي اندازه به شود انتخاب راست درختسمت زير اگر

كم جو و جست عددسمتچپ . باشد برابر يا و كمتر واگر كنيد

Page 83: ساختمان داده ها

. كرد ارائه را زير كد شبه توان خاصمي ي گره يك يافتن برايدنبال .kبه گردیم می گره امین

r=k;p=tree;

)P . است نرسيده برگي (WhileبهIf (r<=p Info)p=p left;

Else

r=r- p Info; p=p right;

Page 84: ساختمان داده ها

مقايسات تعداد شد خواهد بيشتر دستيابي درختيسرعت چنين در است واضحشكل به درخت واگر بود خواهد آن عمق ي اندازه به حداكثر درخت دراین

با است برابر درخت عمق باشد كرده رشد تعداد log nنرمال حداكثر يعنيبا برابر يك log nمقايسات داخل در مقايسات تعداد حداكثر اما شد خواهد

با برابر . nليست بود خواهدعمومي : هاي درخت

است تهي غير ليست يك عناصر از اي مجموعه كلي طور به عمومي درخت يكبه ها آن از يكي كهبه بقي ما و ريشه يك m>=0نام هر كه شود مي تقسيم مجزا ي مجموعه زير

باشد مي درخت. شود مي ناميده گره درخت هرعنصر

در شده گفته مفاهيم همانند وعمق سطح ، نوه ، جد ، ،برادر پسر پدر، مفاهيماست . دودويي درختان

گره . آن فرزندان تعداد با است برابر گره هر ي درجه. درخت كل در موجود ي درجه بيشترين با است برابر درخت ي درجه

: مرتب درختداده تشكيل را مرتبي ي مجموعه آن ي گره هر درخت زير كه است درختي

است. ... پسر تا و دوم پسر ، اول پسر نام به معموال گره هر پسران مرتب درخت در

اين شود مي ناميده آخرشود . مي انجام راست به چپ از معموال نامگذاري

. است پسر ترين جوان پسر آخرين و پسر پيرترين پسر اولين

Page 85: ساختمان داده ها

دودويي : به عمومي درخت تبديلمي) 1 قطع فرزند اولين جز فرزندانشبه کلیه هرپدربا بين ارتباط

شود.آيد) .2 مي وجود به فرزند آخرين تا فرزند اولين بين جديدي ارتباطاند) 3 شده جديد اتصال حاوي كه هايي حركت 45گره جهت در درجه

مي دوران ساعت هاي عقربهكنند.

Page 86: ساختمان داده ها

پیمایش می preorder,inorderاگر باشند داده ما رابه دودویی درختتوجه زیر مثال به بسازیم را آن معادل دودویی درخت توانیم

کنید:

Preorder: A B C D E F G H I

Inorder: C B D A G F I H E

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

. کنیم تعیین را ریشه وراست چپ درخت زیر در موجودبایست می شود می مشاهده که طور و B,C,Dهمان چپ درخت زیر

.E,F,G,H,Jهمچنین راست سمت در

A

B E

C D F

G H

I

A

B C D E FG H I

Page 87: ساختمان داده ها

بین که گرفت گرفت نتیجه پیمایش دو از توان می ادامه ، B,C,Dدر B ریشه . راست درخت زیر در همچنین است . Eریشه توان می مجددأ است

پیمایش در چون کرد عمل قبل شکل از inorder ، Cبه گرفته Bقبل قرارچپ دلیل Bفرزند همین به و بود راست Dخواهد .Bفرزند شد خواهد

به همواره ما درخت یک تشکیل برای واقع هر 3در در اوال نیازمندیم اطالعپیمایش طریق از ریشه کردن پیدا بود خواهد چه ، ریشه مرحله

preorder . زیر بود خواهد چگونه چپ درخت زیر ثانیا شود می معلومطریق از چپ راست inorderدرخت درخت زیر ثالثا تشخیصاست فایل

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

طریق- 1 از .preorderریشه کنید پیداطریق- 2 از را راست وزیردرخت چپ درخت .inorderزیر کنید پیدا

داشته عنصر یک حداکثر یا بوده خالی ها گره تمام که زمانی تا کار این. یابد می ادامه باشند

A

B F

C D F G H I

A

B E

C D

G

F

I H

Page 88: ساختمان داده ها

. preorder,inorderمثال: را حاصل درخت است زیر شکل به درختیآورید؟ بدست

Preorder: A B C D E F G H I

Inorder: B C A E D G H F I A

B C D E F G H I

A

B D

C E F G H I F

G H I

F

G H

I

Page 89: ساختمان داده ها

کمک: به توان می فوق مشابه روشی از استفاده با نکتهpostorder,preorder. آورد دست به دودویی درخت یک

پیمایشهای: دهد preorder,inorderنکته می نشان را درخت یک فقطپیمایشهای ازای به یک inorder,postorderهمچنین تنها نیز

پیمایشهای داشتن با آیداما می وجود به درختpreorder,postorder. آید پدید درخت یک بیشاز است ممکن

وسیله: به درخت nتوجه ترکیب تعداد به توان می متمایز مقدار. کرد ایجاد متمایز

ترکیب : = فرمول

=

1

2

n

nn

nm )!!*(

!

mnm

n

4

)36!*(3

!6

4

63

Page 90: ساختمان داده ها

جنگل. است مرتب هاي درخت از مرتب اي مجموعه جنگل

. دارد وجود جنگل پيمايشدرختان روشبراي سه preorder , Inorder , postorderروش

:preorderپيمايش 1(. كنيد مالقات را جنگل اول درخت ريشهبه )2 وجود صورت در را درخت اولين هاي درخت زير توسط شده تشكيل جنگل

preorderشكل . پيمايشكنيد

صورت )3 در را جنگل باقيمانده هاي درخت زير توسط شده تشكيل جنگلشكل به preorderوجود

. پيمايشدهيد

Page 91: ساختمان داده ها

Preorder : ( خودم فرزندانم ( برادرانم ( قبل( صفحه شکل ABECFGDHIKJ LMORPQN STUWXYZVطبق

درخت دوم درخت درختسوماول

: Inorderپيمايش صورت) 1 در را جنگل درخت اولين هاي درخت زير توسط شده تشكيل جنگل

شكل به .Inorderوجود پيمايشكنيد 2. جنگل) اول درخت ريشه مالقاتبه) 3 وجود صورت در را جنگل باقيمانده هاي درخت توسط شده تشكيل جنگل

. Inorderشكل پيمايشدهيد Inorder : فرزندانم) خودم برادرانم )

( قبل( صفحه شکل EBFGCHKIJDA ROPQMNLطبقTXYZWUVS

اول درخت دوم درخت درختسوم :Postorderپيمايش

صورت) 1 در را جنگل درخت اولين هاي زيردرخت توسط شده تشكيل جنگلشكل .postorderوجودبه پيمايشكنيد

وجود) 2 صورت در را شده تشكيل هاي درخت زير توسط شده تشكيل جنگلشكل Postorderبه

. پيمايشدهيد 3. كنيد) مالقات را جنگل درخت اولين ريشه

Page 92: ساختمان داده ها

Postorder : فرزندانم) برادرانم (خودم ( قبل( صفحه شکل EGFKJIHDCB RQPONM ZYXWVUTSLAطبق

درخت دوم درخت درختسوماول

نكته:سه هر درخت دو هر در كنيد دودويي به تبديل را عمومي درخت يك اگر

ي نتيجه بايست پيمايشمي. باشد داشته بر در يكساني

Preorder:ABECFGDHIKJInorder:EBFGCHKIJDA

Postorder:EGFFKJIHDCBA

: هافمن كدهايبا موجود nالفبايي الفبا اين نمادهاي از طوالني پيام يك دارد وجود عالمت

را پيام خواهيم مي است. درآوريم رمز به ها بيت از طوالني اي رشته صورت به

Page 93: ساختمان داده ها

از مثال: شما الفباي . A,B,C,Dحرف 4فرضكنيد باشد شده تشكيلكردن كد براي باشند شده انتخاب فوق شكل به ها نماد به 8اگر حرف

16. نيازمنديم بيتنماد کد

A 11 B 10 A B A C C D A A = 111011010100111116 bit C 01 D 00

كردن كد براي باشند شده انتخاب فوق شكل به ها نماد به 8اگر حرف16. نيازمنديم )16=2*8(بيت

صورت اين به گيرد مي قرار نظر مد تكرارعال||يم تعداد روشهافمن درمي ايجاد دودويي درخت كه

سپسفرزند . است ريشه در موجود عاليم تمام آن ي ريشه كه شودكه است نمادي همان درخت چپ

. است مانده باقي نمادهاي آن راست فرزند و دارد را تكرار بيشترين. يابد مي توسعه قانون همين به بنا نيز راست سمت هاي درخت زير

. آيد مي پديد صورت بدين درخت عاليم تكرار فوق اساسرشته بر

Page 94: ساختمان داده ها

: كنيم مي عمل روشزير به نماد هر كردن پياده برايدرخت باالي سمت به و كرده شروع نظر مورد عالمت حاوي برگ از

پيشروي مسير در كنيد حركترسيديد ( ريشه به چپ درخت زير از حاصل) 0اگر كد چپ سمت به را

وگرنه ( كنيد اضافه) 1اضافه را. كند مي پيدا ادامه درخت اصلي ي ريشه به رسيدن تا كار اين كنيد

A = 0

C = 10

B = 110

D = 111

Page 95: ساختمان داده ها

ها پيچيدگي بر : مروريمعيارهايي الگوريتم هر اند شده مختلفطراحي اعمال انجام براي مختلفي هاي الگوريتم

مي كه داردمثال عنوان به كرد مقايسه يكديگر با را مختلف الگوريتم چند معيارها آن ي وسيله به توان

روش دردارد را خاصخود كارايي يك هر كه هستيم مواجه مختلفي هاي الگوريتم با ما جو و جست

اگربراي استاندارد روشي بايست مي بسنجيم يكديگر با را مختلف هاي الگوريتم باشيم خواسته

سنجش . معيارهايي بايد ها الگوريتم مقايسه براي باشد پذيرشهمگان مورد كه باشيم داشته ها آن

انتخاب . بحث نباشد آن امثال و نويسي برنامه زبان ، نويس برنامه ، كامپيوتر به وابسته كه شود

پيچيدگي پيچيدگي كردن پيدا براي باشد الگوريتم سختي درجه معناي به تواند مي ها الگوريتم

ها الگوريتم. كنيد توجه زير مثال به بزنيم حدس را الگوريتم اصلي عمل ابتدا كه است آن راه ترين ساده

1الگوريتم :Int search (into s ] [,int n,int x) Int i=0; While (s ]i[! =x && i <=n-1) i++;If (i>=n) Return (-1);Else Return (i);

Page 96: ساختمان داده ها

روشعنصر اين در است معروف خطي جوي و روشجست به فوق الگوريتمجو ( و جست ) Xمورد

نام به عناصر از اي بازه در است مورد Sقرار عنصر اگر شود مي جو و جستي آرايه در Sنظر

شامل كه را آرايه انديس وگرنه Xقرارداشت شد خواهد برگشت 1-استشود ( می داده .) 1برگشت الگوريتم- در نداشت وجود نظر مورد عنصر يعني

عنصر انديس Xفوق اولين با مقايسه Sابتدا نبود برابر اگر ميشود مقايسه . مي پيدا ادامه اي لحظه تا مقايسات انجام شد خواهد انجام عنصربعدي با

ي محدوده از اينكه يا باشد شده پيدا عنصر يا كه در . Sكند باشيم كرده عبور. است الگوريتم اصلي عمل مقايسه عمل فوق الگوريتم

2الگوريتم :Int max (int s ] [, int n)Int max=0, i;Max=s]0[;For (i=0, i<= n-1, i++) If (max < s]i[) max=s]i[; Return (max);

مقايسه اصلي عمل نيز فوق الگوريتم دستور ]S]iبا Maxدر باشد ميmax=s]i[ ; اوقات بعضي دستور اين زيرا شد با اصلي عمل توانست نميتوان انجام پسمي شود نمی ازمواردانجام امادربرخی شود مي

الگوريتم : در را تكرار تعداد بيشترين كه است دستوري اصلي دستور گفت. شد با دارا

Page 97: ساختمان داده ها

3الگوريتم :Int Sum (int s ] [, int n)Intiه, sum=0;For (i=0, i< =n, i++) Sm = sm+s]i[; Return (sm);

جمع عمل اصلي عمل فوق الگوريتم پساز ]S]iبا Smدر باشد ميبايست مي اصلي عمل شناخت

بر تعداد اين ها الگوريتم اكثر در آوريد بدست را آن هاي تكرار تعدادآيد (nاساس مي ) nبدست ي ها الگوريتم در است عناصروروی تعداد

اصلي عمل تكرار تعداد سوم و اول nدوم الگوريتم در باشد مي مرتبهيا ... يا دو يا يك تواند مي اصلي اعمال تكرار باشد nتعداد بوده مرتبه

اساس بر اي رابطه معموال اصلي عمل هاي تكرار تعيين پيدا nپسازاساس بر اي جمله چند يك معموال شود چند nمي در شود مي پيدا

كرده انتخاب را جمله بزرگترين است كافي آمده بدست اي جملهالگوريتم پيچيدگي آيد مي بدست كه آنچه كنيد حذف را آن ثابت ضرايب

است . شمابرابر اصلی اعمال تعداد دوم الگوريتم گفت nدر توان پسمي است

الگوريتم . nپيچيدگي باشد مي

Page 98: ساختمان داده ها

هستيم . مواجه ها الگوريتم از گروه دو با كلي طور به پيچيدگي كردن پيدا هنگاممثال )1 عنوان به نيست ورودي مقادير به وابسته ها آن پيچيدگي كه هايي الگوريتم

یا سوم در sumالگوريتم مقداري چه كه اين به توجه هم Sبدون با را آنها دارند قرارالگوريتم در چنين هم كنند عناصر maxجمع مجبور ]S]iاگرچه الگوريتم هستند مهم

بتواند تا كند بررسي را ها آن تمام .max است بيابد راتعداد )2 مثال عنوان به است ورودي مقادير به وابسته ها آن پيچيدگي كه هايي الگوريتم

ها تكرارالگوريتم كجاي Searchدر در جو و جست مورد عناصر كه است اين به واقع Sوابسته

با شدهاز. اول گروه نيست ورودي مقادير به وابسته ها آن پيچيدگي كه هايي الگوريتم شد

ما هاي الگوريتمنماد با را ها الگوريتم اين پيچيدگي . T(n)بودند دهيم مي نشان

T (n) اساس بر نظر مورد الگوريتم زماني پيچيدگي از است عنصر nعبارتالگوريتم . ورودي

پيچيدگي زير نماد سه با است ورودي مقادير به وابسته ها آن زماني پيچيدگي كه هايينشان را ها آن

. دهيم ميحالت بهترين B (n)

متوسط حالت A (n)

حالت بدترين W (n)

Page 99: ساختمان داده ها

جوي ( و جست خاص عنصر يك كردن پيدا الگوريتم مثال عنوان بهدر ) بگيريد نظر در را خطي

بنابراين شود مي پيدا نظر مورد عنصر مقايسه يك با حالت Bبهترين(n)=1 با حالت بدترين شود nدر مي پيدا نظر مورد عنصر مقايسه

w(n)=n شود مي مقايسه عناصر از نيمي تقريبا متوسط حالت در ومقادير . به اصلي اعمال تعداد جمع حاصل الگوريتم در

ورودي همواره و نيست صورت . nوابسته اين در شود انجام بايد جمع عمل

گوييم در T(n)=nمي عنصر بزرگترين كردن پيدا براي چنين همالگوريتم اين و شود مقايسه بايد ليست عناصر تمامي ليست ميانبر آن اصلي اعمال پستعداد نيست وابسته ورودي مقادير به نيز

شود .T(nاساس( مي بيانبگيريد مثال: نظر در را حبابي سازي مرتب .

1+2+3+…+ (n-2) (n-1)اول= ) n-1(مقايسه مرحلهدوم= ) n-2(مقايسه مرحلهسوم= ) n-3(مقايسه مرحله

2

nnA

21n

n

Page 100: ساختمان داده ها

حبابي مرتبسازي الگوريتم تعداد . )bobel sort(در است مقايسه عمل ، اصلي عملحالت در الگوريتم پيچيدگي يعني با است برابر الگوريتم اين در مقايسات

شد . با مي معموليدودويي مثال : جوي و )binnary search(جست

وقراراست هستند مرتب موجود عناصر كه شود فرضمي دودويي جوي و روشجست درعنصري

عنصر با نظر مورد عنصر جو و جست به بخشيدن سرعت براي شود پيدا ها آن ميان درليست ميان

كه ميشود بررسي وگرنه يابد مي خاتمه جو و جست باشد برابر ميشوداگر مقايسهاز ليست ميانه

بزرگتر جو و جست عنصر از ليست ميانه اگر كوچكتر يا است بزرگتر نظر مورد عنصرو جست باشد

جو و ليستجست راست ي زه با در وگرنه كنيم مي تكرار ليست چپ ي بازه در را جوميشود انجام

ميشود . تكرار آن نشدن پيدا يا و نظر مورد عنصر به رسيدن تا كار اين

مقايسات nاگر تعداد حداكثر دودويي جوي و روشجست در باشد ما اختيار در عنصربرابر

. در اصلي اعمال تعداد است ممكن كه ميشود مشاهده فوق مثال دو از بود خواهديك

مثل همواره از. An+bالگوريتم تواني اصلي اعمال تعداد است ممكن يا nنباشد Log nو . آيد بدست

= =

n

2log

2

1nn

2

1nn

2

1nn 1

2

1 nn nn2

122

1

Page 101: ساختمان داده ها

مي بندي دسته هايي گروه در را ها آن استاندارد طور به ها الگوريتم سنجش برايگروه اين به كنند

: از . اند عبارت معروف پيچيدگي هاي گروه گوييم مي پيچيدگي هاي گروه ها C n n^2 n^2log n n^3 … 2^n 3^n n!

ثابت عدداز پيچيدگي هاي گروه در ها الگوريتم بندي دسته مي 3هنگام استفاده زير نماد

شود: Big O:

گروه در پيچيدگي بدترين Oاگر در الگوريتم كه است معنا اين به بگيرد قرار بزرگپيچيدگي حالتي محدوده مثال : Oاشدر عنوان به است شده واقع €O

به متعلق كه الگوريتمي نمودار ، نموداري ديدگاه نمودار Oاز زير باشد پيچيدگي يكپيچيدگي گروه

. گرفت خواهد O n€ قرارΩ: امگا

( كند ( مي بيان را اصلي اعمال تعداد كه است اي رابطه منظور پيچيدگي تابع يك اگربه يك Ωمتعلق

ذكرشده گروه پيچيدگي گروه در حالت بهترين در شما پيچيدگي تابع گاه آن باشدبه شد خواهد واقع

مي واقع شده ياد پيچيدگي گروه باالي نموداري نظر از شما پيچيدگي تابع ديگر بيان.شود

N € O :پيچيدگي تابع €Ω (n) : پيچيدگي گروه

n

2log

nn

2log

nn2

122

1 2n 2n

2n 2N

Page 102: ساختمان داده ها

:Өنماد پيچيدگي گروه در هم بتواند پيچيدگي تابع هم پيچيدگي Oاگر گروه در Ωهم

مي گاه آن شود واقعبه متعلق پيچيدگي تابع گفت روش . Өتوان ترين ساده است پيچيدگي گروه

حد Өشناخت از استفادهيا باشد Limو . مي

اگر پيچيدگي = / تابع پيچيدگي گروه ثابت Limمقداري

گاه ∞nآنپيچيدگي( ) پيچيدگي € Өگروه تابع

با: برابر اصلي اعمال تعداد خطي جوي و جست در بدترين ( nمثال در بوديعني ) حالت ترين بد در پيچيدگي تابع . F(n)=nحالت كه جا آن از بود خواهد

Lim n/n=1 در خطي جوي و روشجست پيچيدگي گفت توان مي گاه آنبه متعلق حالت حالت n Ө( )بدترين ترين بد ي كلمه چون چنين هم است

به گفت توان مي است شده .O (n)ذكر دارد تعلقدوم مثال با Maxدر برابر اصلي اعمال به nتعداد متعلق آن پيچيدگي و است

Ө(n). استسوم مثال به )sum(در متعلق الگوريتم .n( Ө(پيچيدگي بود خواهدچهارم مثال ) )در بدست زير ي رابطه از اصلي اعمال تعداد حبابی سازی مرتب

. آيد مي

به متعلق الگوريتم اين باشد Өپيچيدگي F . مي(n)=

nn2

122

1 2n

Page 103: ساختمان داده ها

حالت بدترين در الگوريتم پيچيدگي دودويي جوي و جست خواهد Өدرمي نيز جا اين بود

به متعلق پيچيدگي گفت . Oتوان بود خواهددرختی نکته : نرمال درخت یک که بودیم گفته نرمال درختان با رابطه در

شاخه تمامی عمق که استدرخت . نام به دقیقتری تعریف باشد اندازه هم تقریبا آن وجود AVLهای

دارد .با :AVLدرخت برابر آن درخت زیر دو هر ارتفاع تفاضل که 1یا 0درختی

باشد .

درخت زیر ، 0برابر Aتفاضلدرخت زیر و 1برابر B تفاضلدرخت زیر است. 1برابر C تفاضل

: سازي مرتب روشهايشده لعه مطا ها آن از برخي كه دارد وجود زيادي سازي مرتب هاي الگوريتم

مثال عنوان به اندپيچيدگي با حبابي سازي و روشمرتب جست درخت يك از استفاده ونيز

و دودويي جوي(Inorderپيمايش پيچيدگي با .nlog nآن شد ) بررسي قبال

n2

log

2n

nlog

Page 104: ساختمان داده ها

يا ساده درج سازي : Insertion sortمرتبيكي را ها آن داريم قصد دارد وجود مرتب نا اعداد از روشليستي اين در

يكصف و برداشته يكيليست ابتداي از جديد عنصر هر كنيم ايجاد ها آن ي وسيله به صعودي اولويت

مي آغاز مقايساتشرا. گردد مي اشدرج منطقي محل در ليست در پيشروي وبا كند

حالت: وبهترین حالت بدترین در بود؟ θمثال خواهد جه الگوریتم7 2 9 4 6 8 372 72 7 92 4 7 92 4 6 7 92 4 6 7 8 92 3 4 6 7 8 9

روش هستند مرتب نزولي شكل به عناصر كه زماني يعني حالت بهترين دربا تنها درج سازي مرتب

n-1 پيچيدگي گفت توان مي نتيجه در كند مرتب را اعداد است قادر مقايسهبهترين در الگوريتم

ي درجه از یا nحالت شد با .)Ωn(مي حالت بهترین برای

Page 105: ساختمان داده ها

عنصر هر دارند صعودي ساختاري عناصر كه زماني يعني حالت بدترين درتمام با است مجبور جديد

آن شودوپیچیدگی مقايسه ليست .( )O عناصر شود می1 2 3 4 5

11 2

1 2 3 1+2+3)+...+n-1(1 2 3 4 = Ө ( )

1 2 3 4 5

يا سريع سازي : Quick sortمرتبمحوري عناصر عنوان به را ليست در موجود عناصر از يكي روش اين در

تمام . كنند مي انتخابباشد كوچكتر عنصري اگر شوند مي مقايسه محوري عنصر با ليست عناصر

سمت وگرنه چپ سمتمحوري عنصر از بزرگتر و كوچكتر اعداد گيرد مي قرار ليست 2راست

آورند مي وجود به را مجزاتا كار اين كنيد تكرار را فوق عمل آمده بدست هاي ليست از هريك براي

از عناصر تمام كه زمانيتا دارد ادامه شوند جدا . nيكديگر آيد مي وجود به عنصري تك ليست

1234

2n

nn2

122

1 2n

2

1nn

Page 106: ساختمان داده ها

5 7 3 9 1 4 6 8

گیریم : می نظر در صعودی صورت به را اعداد1 2 3 4 5

تعدادمقایسات ) n-1(

) n-2 (1+…+(n-1)) n-3= (

= = O 1

كامال محور طرف يك هربار كه است زماني حالت بدترين روش اين درمثال عنوان به باشد خالي

تعداد( ) مجموع صورت اين در باشند داشته صعودي شكلي اعداددست به زير ي رابطه از مقايسات

. آيد )n-1+…+ (2+1مي

2

1nn

nn2

122

1 2n

Page 107: ساختمان داده ها

روش پيچيدگي گفت توان حالت Quick sortپسمي بدترين مي bigOدرباشد.

و راست سمت عناصر تعداد كه است اي گونه به عنصر حالت بهترين درحداكثر صورت اين در است برابر تقريبا آن الزم چپ مرحله

حداكثر مرحله هر در شود جدا كامال عناصر تا مي nاست انجام مقايسهبا است برابر مقايسات كل گفت توان مي بنابراين شود

پيچيدگي گفت توان حالت Quick sortپسمي است Өn log nدربهترينويا

روش . در كرد ثابت توان مي باشد متوسط Quick sortمي حالت درنيست .nlog nپيچيدگياش بيشتر

روش نكته : باشد تصادفي كامال اعداد سازي Quick sortاگر روشمرتب در . هاست بهترين جزيا ادغام سازي : Merge sortمرتب

حاوي هاي روشليست اين هر nدر ليست دوزير به عنصرحاوی ليست يك عنصرزیر دو از هريك شود مي شكسته عنصر

ادامه قدر آن عمل اين شد خواهد بخششكسته دو به مجدداكه كند مي ليست nپيدا از هريك آيد پديد عنصري تك ليست

عمل شوند مي ادغام يكديگر در دو به دو عنصري تك هايمرتب صورت به را ليست زير دو هر كه ایست گونه به ادغام

آن ها ليست زير ادغام عمل نمايد مي ادغام ليست زير در شده. آيد پديد شده مرتب ليست يك كه شود مي تكرار قدر

n

2log

2n

2lognn

2n

Page 108: ساختمان داده ها

روش كه گفت توان مي تر ساده ديدگاه مقادير Merge sortاز نوع بهندارد وابستگي ورودي

پيچيدگي گفت توان مي الگوريتم تحليل با لحظه Merge sortمشابه تاعنصري تك ها ليست كه اي

) با برابر شوند رسيدن )n log nمي تا تركيب اعمال طرفي از شود ميآن پيچيدگي پس است بخشفوقاني از انعكاسي نيز واحد ليست به

همان ( n log nنيز مراحل كل پيچيدگي اينكه نتيجه بود n logخواهدn( ) زيرا پيچيدگي 2n log n(است چون ( )n log n(با است يك 2 برابر

به ) پسنهايتا است ثابت .Ө( nlog n )ضريب رسيديم يا هرمي سازي : heap sortمرتب

درخت :heapتعريف. ( است ( كمتر فرزندانشبيشتر از مقدارش پدر كه است درختي

درختان از گونه دو تعريففوق . heapبراساس دارد وجود1 (Max heap 2) Min heap

Max heap: دودويي درخت يك ساختارشمثل اوال كه است درختيمقدار آن بر عالوه و است كامل

. باشد فرزندانشبيشتر از پدر گره هرMin heap : دودويي درخت يك ساختارشمثل اوال كه است درختي

پدرازفرزندانش ی مقدارهرگره برآن عالوه و است كاملکمتراست.

Page 109: ساختمان داده ها

براي را داد . Min heapتعريفمشابهي ارائه توان مي نيزروش رشد heap sortدر كامل درخت يك همانند دودويي درخت كه كنيم فرضمي

گره هر كند ميدرج پساز داشت خواهد خود در را جديدي مقدار شود مي اضافه درخت به كه جديد

مي جديد مقدارو فرزند جاي شد چنين اگر باشد نخورده هم به درخت قانون كه كنيم بررسي بایست

يكديگر با را پدر. شود تكرار مرحله چندين است ممكن كار اين كنيم عوضمي

درخت مثال: يك در را زير دهيد؟ Min heapاعداد قرار

5 9 3 4 7 6 1 2

يك ايجاد از درخت Min heapپس از زير شكل به را ها آن توانيم مي ورودي اعداد ازكنيم حذف

. با را ريشه محتواي باشند داشته ترتيبصعودي حذفشده اعداد كه اي گونه بهبه كه اي گره آخرين

مقدار كوچكترين عنوان به را گره سپسآخرين كنيد جا به جا شده اضافه درختاين نماييد حذف

. نماند باقي درخت در اي گره كه كنيد تكرار قدر آن را اعمالجا به جا را گره مقادير باشيد مجبور است ممكن مرحله هر در كه باشيد داشته توجه

كنيد.

Page 110: ساختمان داده ها
Page 111: ساختمان داده ها

پيچيدگي : heap sortتحليلدرختان تقريب heapدر طور به همواره درخت به عمق جديد اي گره اگر است

درخت درخت اينكه براي شود مرتبا Min heapاضافه جديد گره آن مقدار است ممكن بماند باقي

جا ها جايي به جا اين تعداد كند پيدا ادامه درخت ي ريشه تا جايي به جا اين اگر شده جا به

با متناسبتقريبا درخت كه log nعمق كنيم فرض اگر حال شد به nخواهد است قرار جديد گره

اضافه درختتقريبا ها جايي به جا كل پذيرد انجام جايي به جا حداكثر شدن اضافه هر وبا شود

با برابرn log n يك ساخت پيچيدگي نتيجه در شد ي ( min heapخواهد O (n lognحداكثرازدرجه

كه باشيم داشته ها گره جايي به جا به نياز است ممكن نيز ها گره حذف هنگام بود خواهدتعداد اين

آمده باال تحليل در كه آنچه همانند نتيجه در باشد داشته ادامه درخت عمق تا تواند مي نيزپيچيدگي

با برابر ها گره ي همه روش O( n log n )حذف كل بودپيچيدگي با heap sortخواهد برابرآن پیچیدگی که درخت ساخت قسمت به مربوط هاي پيچيدگي قسمت n log nمجموع و

آن پيچيدگي كه آن پيچيدگي) )nlog nتخريب اين كه شد با خواهد) ) n log nمي پي در راداشت .

n log n + n log n= 2 n log n nlog n ساخت پیچیدگی تخریب پیچیدگی کامل پیچیدگی

n2log

n2log

Page 112: ساختمان داده ها

يا مبنا سازي :Radix sortمرتبشوند مي مرتب مكانشان ارزشترين عناصربراساسكم ابتدا روش دراين

آيد مي بدست سپسآنچهين پرارزشتر تا اعمال اين كنند مي مرتب ارزشبيشتر با اساسمكان بر را

. يابد مي ادامه مكانروش مثال: به را زير كنيد؟ Radix sortاعداد مرتب

125,290,43,321,443,118,12,20,39,110,256اساسیکان بر اساسدهگان بر اساسصدگان بر

0 290,20,110 0 0 12,20,39,431 321 1 110,12,118 1 110,118,125

2 12 2 20,321,125 2 256,2903 43,443 3 39 3 3214 4 43,443 4 443

5 125 5 256 56 256 6 67 7 78 118 8 8

9 39 9 290 9 عددو mاگر بزرگترین ارقام به nتعداد آن الگوریتم پیچیدگی باشد اعداد تعداد

: است زیر صورتT(n) € (m,n)

Page 113: ساختمان داده ها

: بازگشتي توابعشود . مي فراخواني تابع آن خود تابع بدنه در كه هستند توابعي

فاكتوريل مثال: بازگشتي توابع از استفاده كنيد؟ nبا محاسبه را

n* fact (n-1) n>=1 n>=1 n * (n-1)

n!= fact (n)=

1 n ==0 1 n = 0

int fact(int n)

if (n==1)

return(1);

else

return (n*fact(n-1));

Page 114: ساختمان داده ها

: بازگشتي توابع از ديگري هاي مثال

بازگشتي :1مثال توابع از استفاده كنيد؟ a^bبا محاسبه را

b>=1

=

1 b=0

int power (int a , int b)

If (b==0)

return (1);

else

return (a * power(a , b-1));

1* baaba

Page 115: ساختمان داده ها

م : 2مثال م بازگشتيب توابع از استفاده كنيد؟) )a , bبا حساب را

b if a%b ==0

bmm(a,b)=

bmm (b , a%b) a%b !=0

int bmm (int a , int b)

If ( a%b ==0 )

return (b);

else

return (bmm (b , a%b ));

Page 116: ساختمان داده ها

سازي : 3مثال پياده بازگشتي توابع از استفاده با را دودويي جستجويكنيد؟

int binsearch ( int s]n[ , x )

x ليست وسط عنصر با كن .sرا مقليسهباشد برابر اگر

را وسط انديسعنصر بده بازگشت

باشد بزرگتر اگر وگرنه , x;( راست سمت binsearch ( s نيمه

, x;( سمتچپ binsearch ( s نيمه

توابع quick sortو merge sortروشهاي كمك به توان مي نيز را . كرد سازي پياده بازگشتي

Page 117: ساختمان داده ها

ها :گرافگراف هاي Gهر نام به مجموعه دو باشد . V,Eشامل مي

V: . باشد رئوسمي از تهي غير و هي متنا اي مجموعهE : . شود مي گفته يال آن به كه راسها زوج از اي مجموعه :V (G) گراف راسهاي از اي Gمجموعه :E (G) گراف هاي يال از اي Gمجموعه

. كنند مي عمل زير شكل به گراف نمايشيك برايجهت : بدون گراف

دهند مي نشان را يال يك كه رئوسي زوج آن در كه است گرافياگر مثال است اهميت بي ترتيبشان

v,u گاه آن باشند يال يك راسطرفين را ) u,v) , (v,u(دو يال يك دو هر. دهند مي نشان

است . جهت بدون گراف يك از نمايشي زير مثال

V(G)=v1,v2,v3,v4

E(G)=(v1,v2),(v2,v4),(v2,v3),(v4,v2)

Page 118: ساختمان داده ها

: دار گرافجهتمثال عنوان به شود مي داده نشان مرتب زوج يك با يال هر دار گرافجهت در

يك > u,v<يال دراز كه است يالي دار به uگرافجهت و شده شود . vآغاز مي ختم

است : دار گرافجهت يك از اي نمونه زير مثال V(G2)=V1,V2,V3,V4,V5 E(G2)=<V1,V2>,<V2,V1>,<V1,V3>,<V5,V3> ,<V5,V4>,<V4,V1>,<V2,V4>

شود .نكته: مي نوشته آن ي راسفقطشماره هر داخل در معموالاگر گيريم مي نظر در را زير هاي محدوديت كنيم مي كار آن با كه هايي گراف در

مي ها گراف چه. باشند نداشته را محدوده اين توانند

1( ) هايي يال چنين به ندارد يالي خودش راسبه هر از گراف یا Self edgeيك( . شود مي گفته خودیالی

هايي )2 گراف چنين به شود تكرار نبايد يال يك گراف يك مي Multi graphدر گفتهاين به شود

. شود مي گفته نيز كاره چند گراف ، ها گراف

Page 119: ساختمان داده ها

n|

شامل جهت بدون گراف يك با nاگر برابر آن هاي يال تعداد حداكثر باشيم داشته راسn(n-1)/2 . باشد مي

n e1 02 13 34 65 10

آن هاي يال تعداد جهت بدون وجود گراف با ناميده nباشد كامل راسگراف . در شود مي

برابر ها ل يا تعداد راس بدون دار جهت گراف . n(n-1)يك باشد ميمانند گراف يك در صورت Gاگر به رئوس ) u,v(يالي گاه آن باشد داشته را u,vوجود

مجاور يال و روي ) u,v(گويند متالقي يال يك هاي u,vرا يال گفت توان مي واقع نامنددر مي

روي متالقيراس vراس ها آن طرف يك كه هستند هايي زير vيال گراف مثال عنوان به باشد مي

نظر در رابگيريد.

2

1nn

2

1nn

Page 120: ساختمان داده ها

گرافراس اين رئوس 0,1در همچنين و ) ,3,2) ,(0,3(مجاورندراس )0,2( اما هستند هم مجاور دو به دو نمي 1,2هريك هم مجاور

راس روي متالقي هاي يال گراف اين در از : 0باشند اند عبارت)1,0),(2,0),(3,0(.

يال اگر شود مي مطرح نيز دار گرافجهت يك در فوق > u,v<مفاهيمگاه آن باشد دار جهت يال يك

راس uراس به مجاور راس vرا راس vو از مجاور گويند uرا مييال دو > u,v<همچنين روي

.u,vراس است متالقيراس مثال: زير گراف راس 0در . 1,3به است مجاورراس 3راس از راس 0مجاور روي متالقي ي ها يال اند 0است عبارت

از :<0,1> , <2,0>,<0,3>

Page 121: ساختمان داده ها

گراف از گراف زير :Gيك

مانند كه Gگرافي نحوي به داريم باشد. E(G) E(G), V(G) V(G)راي ها گراف زير از تعدادي بگيريد نظر در را زير گراف مثال عنوان Gبه

از : اند عبارت

Page 122: ساختمان داده ها

يا : Pathمسيرراس از مسير يك جهت بدون گراف يك راس U در رئوس Vبه از اي دنباله

كه Ui1 i2 … ik Vمثل طوري به باشد يال ) u,i1),(i1,i2).…,(ik, V(مي همگيي مجموعه در باشد . E(G)هايي مي

0 , 3 , 2 , 1 , 4 از 4 , 1 , 3 , 0 4تا 0مسیری

0 , 4

رئوس گراففوق در مثال عنوان از 0,3,2,1,4به را مشخصمي 4تا 0مسيريكنند

از ( توان مي نيز ديگري كرد ) 4به 0مسيرهاي پيدافقط آن تفاوت كرد تعريف را مسيري توان مي نيز دار گرافجهت يك در

بايست مي كه است اينهاي يال ي ي > u,i1>,<i1,i2>,…<ik,v<مجموعه مجموعه در وجود E(G)همگي

داشته باشد.

: مسير طول. مسير آن در موجود هاي يال تعداد از است عبارت مسير طول

مسیر طول مسیر 4تا 0مثال مسیر 4برابر 4 , 1 , 2 , 3 , 0از از 4 , 1 , 3 , 0و.3برابر است

Page 123: ساختمان داده ها

: ساده مسيررئوسمتمايز تمام راس آخرين و اولين جز احتماال كه است مسيري

باشد.. باشد جهت بدون يا دار جهت تواند مي مسير يك

ساده 5 , 3 , 2 , 1 , 0 : مسیرساده 5 , 3 , 2 , 1 , 4 , 3 , 2 , 1 , 0: غیر مسیر

:( چرخه ( سيكلدر . مثال عنوان به است يكي آن خر وآ راساول كه است ساده مسيري

باال گراف . ( )1,2,3,4(اين يك در است آورده وجود به را سيكل يك( هستند تكراري خر وآ رئوساول فقط سيكل

. كرد اعمال را سيكل توان مي جهت بدون هم و دار گرافجهت در هم

اضافه دار جهت ي كلمه فوق تعاريف به معموال دار جهت هاي گراف در ( ) يك در دار جهت مسير يا دار جهت سيكل گويند مي مثال شود مي

مثل جهت بدون بتوان Gگراف كه صورتي در گوييم همبند راسرا دوكنيم . پيدا ديگري به يكي از مسيري

راسآن دو هر بين بتوان كه است گرافي همبند جهت بدون گرافمثال عنوان به كرد پيدا مسيري

. است همبند غير گراف يك زير گراف

Page 124: ساختمان داده ها

مانند اتصال ي مولفه از Hيك است عبارت جهت بدون گراف يك ازآن در همبند گراف زير بزرگترين

اتصال. مولفه روبرو گراف در مثال عنوان به چون G2گراف ميشودعناصر .G1از G2تعداد است بيشتر

. است چرخه بدون و بند هم گراف يك درخت

: همبند كامال گرافهرزوج ازاي به كه داراست جهت داراز u,vگرافي جهت مسيري بتوان

u بهv وازv بهu . كرد پيدا: جهت بدون گراف درجه

راس آن روي متالقي هاي يال ازتعداد است راسعبارت يك ي درجهراس ي درجه فوق 4=5درمثال

.1=0و باشد مي: وارده ي درجه

يال تعداد از است عبارت دار گرافجهت راسدر يك به وارده ي درجهمي راسختم آن به كه هايي

شود .

درج راس ه

درجه وارده

درجه خارجه

1 3 2 1

0 1 1 0

2 2 0 2

3 2 1 1

Page 125: ساختمان داده ها

خارجه : درجهبا Gاگر جهت بدون گراف راس nيك ي درجه كه باشد با Iراس برابر تعداد eو di ام

هاي يال. دارد صحت زير ي رابطه است گراف يك

e = ( ∑ di )/2 رئوس تمام درجه جمع نصفحاصل. است جهت بدون گراف يك منظور نشود گفته دار جهت ي كلمه اگر معموال

: نمايشگراف ماتريسمجاورتي) :1

گراف يك و nبا Gبراي بعدي دو اي آرايه آن n*nراسماتريسمجاورتي كه باشد ميمي Aرا

اگر يال ) i,j(ناميم يا جهت بدون گراف آن > i,j<در باشد داشته وجود دار گرافجهت درگاه

A(i,j)=1 0وگرنه . بود خواهداز باشيم jبه iاگر نداشته A]i[]j[=0يال

از باشيم jبه iاگر نداشته A]i[]j[=1 يال

در توجه : اما است متقارن اصلي قطر روي جهت بدون هاي گراف ماتريسمجاورتيهاي گراف

بيت . يك تواند مي ماتريسمجاورتي از سلول هر نباشد متقارن است ممكن دار جهترا حافظه از

دار گرافجهت يك براي نتيجه در كند .n^2اشغال است الزم بيت

0 0 0 0

1 0 0 0

0 1 0 1

0 1 0 0

Page 126: ساختمان داده ها

مجاورتي) :2 ليستروش ين ي nدرا وسيله به را ماتريسمجاورتي ليست nسطر

واقع در دهند مي نشان پيونديگراف از راس هر . Gبراي دارد وجود پيوندي ليست يك

Page 127: ساختمان داده ها

: دار وزن هاي ياليال هر وزن كه شود مي داده نسبت عددي يال هر به كاربردها از بسياري در

ي دهنده نشان دار جهتمي . ماتريسمجاورتي هايي گراف چنين در باشد راسبوده دو هر ي فاصله

ها يال وزن حاوي تواند. بود خواهد زير شكل به ماتريسمجاورتي زير گراف در مثال عنوان به باشد

شود گرفته كار به دار وزن هاي نمايشگراف براي تواند مي مجاورتي ليستگره هر به است كافي

. كنيم اضافه آن وزن جهت فيلدي پيوندي ليست در

.شبكه : باشد داشته وزن آن هاي يال كه است گرافي

0 12 15 ∞12 0 13 14

15 13 0 17

∞ 14 17 0

Page 128: ساختمان داده ها

هاي نكته: گره تعداد با است برابر جهت بدون گراف يك رأسدر هر درجه . تعداد كه است واضح آن به مربوط مجاورتي ليست رأسدر آن به مربوط

با است برابر مجاورتي ليست كل در موجود هاي ها .2گره يال تعداد برابرتعداد نكته: با برابر مجاورتي ليست هاي گره كل تعداد دار گرافجهت يك در

. باشد گرافمي هاي يالرا نكته: هايي گره مجاورتي ليست كرديم بررسي كه داري جهت هاي گراف در

. بودند ما موردنظر گره از مجاور كه داد مي نشان

: معكوس مجاورتي ليستمشخص را رأسموردنظرمان به رئوسمجاور خواهيم مي موارد از برخي در

در . . شود مي معكوساستفاده مجاورتي ليست از مواردي درچنين كنيمرأسرئوس هر ازاي به شد گفته كه معكوسهمانطور مجاورتي ليست

. گيرد مي قرار پيوندي ليست در آن به مجاور: ايم كرده ايجاد معكوسرا مجاورتي ليست ، گراففوق به توجه با

5

2

34

1

Page 129: ساختمان داده ها

پيمايشگراف : . درخت پيمايشيك پيمايشكرد نيز را ها گراف توان مي ها درخت همانند

پذيراست .2به انجام شكلاز :2اين روشعبارتند

عمقي- 1 )DFS(روشجستجوي )BFS(روشجستجويسطحي- 2

هر خواهيم 2در كه ترتيبي به و كنيم مي آغاز را رأسكار يك با روش. كرد خواهيم پيشروي گفت

اين توجه : را 2اگرچه آن ما است امكانپذير دار جهت هاي روشدرگرافدهيم . مي جهتشرح بدون هاي گراف در

Page 130: ساختمان داده ها

عمقي :) DFS (روشجستجوي

رأس با روش اين رأس Bدر يعني كنيم مي آغاز را مي Bكا مالقات رامانند سپسرأسي رأس Wكنيم با كه كنيم مي پيدا است Bرا مجاور

رأس . براي كار اين نشده مشاهده قبال و Wو شود مي تكرار نيزبه رئوسمجاور تمام كه كنيم مي تكرار را فوق اعمال آنقدر

از گره . Bدورترين مانده مالقات براي رأسي اگر باشد شده مالقات. كنيم مي تكرار نيز آن براي را عمل واين برگشته عقب به باشد

: كنيد توجه زير مثال به

پيمايش خواهيم مي .DFSفرضكنيد كنيم آغاز صفر گره از را0 , 1 , 3 , 7 , 4 , 5 , 2 , 6

0

1 2

3 4 5 6

7

Page 131: ساختمان داده ها

رأس اگر كار اين روي )u,v(براي را پيمايشها از يكي بگيريد درنظر رارأس uرأس اگر دهيد اين vانجام باشد پيمايشموجود آن در 2نيز

. خير وگرنه دارند قرار همبند مؤلفه يك رأسدر

: پوشا درختو . بوده جهت بدون گراف اين فرضكنيد بگيريد درنظر را گراف يك

. رئوسرا تمام كه است درختي گراف يك در پوشا درخت است همبند ). همبند گراف يك خود درخت كه باشيد داشته توجه باشد پوشانده

(. باشد نداشته دوره يا سيكل كه شرط اين با است

1

2

3

4

5

6 7

Page 132: ساختمان داده ها

گرافشامل يك nاگر دقيقا آن پوشا درخت خواهد )n-1(رأسباشد يالداشت.

را نكته: پوشا درخت توان مي سطحي يا عمقي جستجوي از استفاده با. آورد بدست

DFSپيمايش : 6 , 2 , 5 , 4 , 7 , 3 , 1 , 0

BFSپيمايش : 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0

از كه رأسجديدي هر با مرتبط يال است كافي فوق شكل به توجه با. كنيد اضافه درخت به را شود مي مشاهده قبلي طرف

0

1 2

3 4 5 6

7

Page 133: ساختمان داده ها

:( ) طرفه دو اتصالی دو های مولفهیا ( مجزا گراف زیر دو آنها به منتهی یالهای و آنها حذف با که گراف از رئوسی بهنظر) . در را زیر گراف مثال عنوان به گویند محوری رأس آید می پدید بیشتر

بگیرید:

شماره رئوس فوق گراف محوری 7,5,3,1در رئوس. باشد می

. باشد نداشته محوری نقطه که است همبندی ،گراف اتصالی دو گرافهزینه کمترین با یا کمینه پوشای ):minimum spaning tree( درخت

می که پوشایی درختان بین از بگیرید نظر در را دار وزن جهت بدون گراف یککرد پیدا را درختانی یا درخت توان می گرفت نظر در گرافی چنین برای توان

پوشا درختان آن یالهای وزن مجموع .minimumکه باشد

0

1

2 3

4

5

6

7

8

9

Page 134: ساختمان داده ها

دارد : وجود مختلف الگوریتم سه کمینه پوشای درخت کردن پیدا برای

1 ) کروسکال- راشال ):kruskalالگوریتم

می نظر در هم از جدای را رئوسگراف تمامی ابتدا الگوریتم این درگرافشامل ( اگر واقع در عنصری nرأسباشد nگیریم تک مجموعه

(. مرتبمی ترتیبصعودی به را یالها سپس داشت خواهیمکه. زمانی تا حال نشده )n-1(کنیم انتخاب یالها مجموعه بین از یال

: ( کنید ( تکرار را زیر اعمال نگرفته قرار درخت در و است

یالها: 28 25 24 22 18 16 14 12 10 وزن مجموع

) n-1 :(E(T)=(0,5),(2,3),(1,6),(1,2),(4,3),(4,5)یال

T

Page 135: ساختمان داده ها

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

(. بود نخواهد مجاز کند ایجاد سیکل کهرا آن وگرنه کنید اضافه درخت به را ،آن یال بودن مجاز صورت در

. بگذارید کنار2: پرچم- الگوریتم

در رأسشروع عنوان به را رئوسگراف از یکی الگوریتم این دررأسبه . آن کند می پیدا را آن رأسبه ترین نزدیک میگیرد نظر

ساختار کندبه می وصل رأسشروع به را آن که یالی همراهشامل ( آمده وجود به درخت حالت این در گردد می اضافه درخت

2 (. را حاصل درخت رأسبه ترین سپسنزدیک بود رأسخواهدمی اضافه درخت به مربوطه یال همراه به را کندآن می پیدا

نیز. رئوسدیگر تمام اینکه تا شود می تکرار آنقدر فوق اعمال کند ). شکل در باشد شده اضافه درخت گره 1به می 6رأسشروع

باشد)

1 2

Page 136: ساختمان داده ها

داشته نکته: کمینه پوشای درخت یک بیشاز است ممکن گراف یکبایست . می باشد داشته کمینه پوشای درخت چند گرافی اگر باشد

. باشد بوده برابر کمینه پوشای درختان تمام در یالها مجموع وزندلخواه نکته: گراف هر در که کند می تضمین پرچم و راشال الگوریتم

. ( آورد( می دست به را کمینه پوشای درخت ،همبند جهت بدون3: سولین- الگوریتم

می گرفته نظر در هم از مجزای شکل به ها گره ابتدا الگوریتم این درانتخاب آن روی متالقی وزن کمترین با یال گره هر سپسبه شود

آید . می پدید گراف در درخت چند صورت این در شود میبوده کمینه آن وزن که شود می انتخاب یالی مجزا درخت دو هر بین

درخت یک به رسیدن تا کار این کند وصل هم به را درخت دو وبتواندشکل .( در شود می تکرار گره 1واحد میباشد)0رأسشروع

1 2

Page 137: ساختمان داده ها

تولید نکته: را کمینه پوشای درخت که کند می تضمین نیز فوق الگوریتمکند.

است نکته: ممکن باشد داشته کمینه پوشای درخت یک از بیش گراف اگربرسد . آنها از یکی به خود شیوه به الگوریتم هر

: فراموششده های نکته:( – ) ترتیب پیمایشسطح دودویی درختان پیمایشترتیبسطحی

است . کافی است پیمایشترتیبسطحی ، پیمایشها ترین ساده از یکی ( سپسفرزندان ( و کنید مالقات را آن کنید شروع اول سطح ریشه از

( سطح ( سپسدر کنید مالقات راست به چپ از بعدی سطح را ریشه. آخر تا طور همین و بعدی

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

به) دهید قرار صف در راست به چپ از ترتیب به را آن فرزندان کنیدفرزندان ( ) و کنید چاپ کرده حذف را آن ابتدا بایست می فرزند هر ازایشدن اضافه تا کار این کنید اضافه صف انتهای به راست به چپ از را آن

. شود می تکرار صف از ها آن تمام حذف صفو به ها گره تمام

A B C D E F G H

A

B C

D E F

G H

Page 138: ساختمان داده ها

پایان