More Related Content Similar to (ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا - محب الله امان (20) More from Muhibullah Aman (6) (ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا - محب الله امان1. ""امان هللا محب :وترتیب تهیهسال بهار4931خورشیدی هجری
کابل دانشگاه
کمپیوترساینس دانشکدهء
دیتا ساختارهای
Data Structure
ویرایشدوم
2. Page 2 of 23 ""امان هللا محب :وترتیب تهیه
هستی پروگرامر یگانه نام به
Data Structure Using Java
سافتآن ساختن زمان در ویر سافت ابعاد تمام با انجنیرینگ ویرسافت از بخش یک حقیقت در هم سترکچر دیتا و است ارتباط در
.میکند بحث دیتا داخلی ساختار از که بوده انجنیرینگ ویرع به وباهای روش دیگر بارتذکمپیوتر اصلی حافظهء در را دیتا خیرهء
(RAM( دیتا ساختار نام به )Data Structure).میکنند یاد
چیست؟ دیتا
برای که است شدهء ارایه معلومات از عبارتcommunication.میباشد آماده ماشینها یاپراسس و انسانها وتحلیل تجزیه ؛
: که میکند هدایت ما به سترکچر دیتا
.شود ذخیره باید دیتا چگونه
باید چگونهorganizeگردد
چگونهRetrieve.شود
چگونهrepresent.گردد
مفی ویر سافت یک تابرای سترکچر دیتا .نگردد دیتا وخرابی پراسسر وقت شدن ضایع باعث که آید بدست ومؤثر استفاده قابل ، د
organize( اصلی حافظهء در دیتا کردنRAM)مانند ساختارهایی ازArray،Stack،Queue،Linked List،Graph،
Treesباالی مذکور هرساختار که میکنند استفاده وغیرهData Sorting،Data Searching،Hash table،Graph
algorithm،Data Compressingوغیرهapply.میگردد
سترکچر دیتا فواید
Ease of Useقابل آسان مذکوررا ویر وسافت ساخته کم را ویر سافت یک های پیچیدگی سترکچر دیتا از استفاده یعنی :
.سازد می استفاده
Speedکمپیوتر میموری در منظم بسیار طور به دیتا سترکچر دیتا از استفاده با چون :organizeو وقت بنأ میگردد
.باالمیرود سرعت و نگردیده ضایع پراسسر سرعت
Efficiency:.میکند کمک میشود ساخته که هدفی خاطر به پروگرام یک مؤثریت در سترکچر دیتا از استفاده یعنی
Efficient Use of Memory:در دیتا نمایش و ذخیره متفاوت های روش با آشناییRAMطوری ما که میگردد باعث
ر حافظه کمترین که کنیم ذخیره حافظه در را دیتا.باشد داشته نیاز دسترسی روش بهترین با ا
Reusability( شدن استفاده بار بار قابلیت ساختارها تمام :reusabilityکه باشد می دارا را )ساختن در سهولت باعث
.شود می ها پروگرام
Type of Operationمذکور های ساختار در میکنیم استفاده ها پروگرام ساختن برای ستاندارد ساختارهای از ما زمانیکه :
.گردد تطبیق عملیات مختلف انواع میتوانند
:سترکچر دیتا انواع
.باشد می دونوع به سترکچر دیتا
Primitive Structureساختارهای از عبارت :built inتنها کدام هر که باشد میSingle valueمانند .میکند ذخیره را
int, char, String, double, float, Boolean.وغیره
Non Primitive Structureمجموعهء از :چندینPrimitive Data Typeچندین تواند می هرکدام که میگردد تشکیل
: از عبارتند که میگردد تقسیم دوبخش به خود نوبت به ساختارها نوع واین .نماید ذخیره نام یک تحت درخود را قیمت
Linear Data Structureش به را دیتا ها ساختار نوع این :کمپیوتر حافظهء در )(مسلسل خطی کلذخیره
مانند .میکندArray،stack،Queue.وغیره
Non-Linear Data Structureمختلف اشکال به دیتارا :کمپیوتر حافظهء در،ها گراف مانند میکند ذخیره
وغیره ها چارت
3. Page 3 of 23 ""امان هللا محب :وترتیب تهیه
Object Oriented Design
( گرا شی نویسی پروگرام های ازلسان یکی جاوا میدانیم قسمیکهObject-Oriented Programming language.باشد می )یعنی
( مشخصات وتمام شده مشخص کار طرح یا نقشه اوال نویسی پروگرام های لسان نوع دراینattributes( اعمال و )behaviorنرم )
چندین سپس و میگردد معرفی درآن افزارobjectرا ومشخصات خواص تمام و نموده استفاده مذکور کار طرح و نقشه از توانند می
بخو را شده ذکر طرح در که.بگیرند د
یعنیOOA (object oriented Approach)و نموده طرح ها کالس قالب در آنرا مربوطهء عملیات و دیتا که میدهد اجازه ما به
نهایت بی میتوانیم آن ازobject.بسازیم:از عبارتند گرا شی نویسی پروگرام های لسان اساسی جزء دو بنأ
Classesفنکشن و مشخصات از مجموعهء :که باشند می هایو داشته آنرا باید افزار نرم یک.دهند انجامکار طرح ویک
(blue printبرای نمونه ویا )Object.بگیرند کالس از شانرا خصوصیات تمام تا باشد می ها
Objectلمس قابل اشیای بعضی از عبارت درلغت :(کتابباشد می )وغیره فشار ،(زمان لمس قابل وغیر )کمپیوتر ، قلم ،
، نویسی پروگرام های لسان دراصطالح وObjectمشخصات و ها میتود که شوند می گفته افزار نرم از بخش به ها
وهر .نمایند می تطبیق هارا کالس در شده معرفیObject.است بخش سه شامل
oAttribute
oBehavior
oUnique Identity
یک موتر :مثال بطورObjectکه استattributeباشد می آن تولید سال و ، نوع ؛ سایز ؛ رنگ از عبارت آن های
درحالیکهbehaviorیاmethodگرفتن سرعت ، نمودن توقف ،کردن مصرف تیل ، گرفتن سرعت از عبارت آن های
.باشد می .....وunique Identityهمان پلیت نمبر هم آن.است موتر
Object Oriented Programming Languageاصول نام به میکنند.که استفاده ها مادل سازی ساده منظور به میکانیزم سه از
:از وعبارتند .شود می نامیده گرا شی نویسی پروگرام های لسان
4.Inheritance:و مشخصات ها کالس از بعضیbehaviorشانرااین که میگیرند ارث به را دیگر های کالس از
نام به خاصیتinheritance.یادمیگرددچندین دارای کالس چندین ویا دو ممکن یعنیattributeوbehaviorمشترک
به مذکور کالس از را خصوصیات این ها کالس وسایر شوند می معرفی ها کالس از یکی در مشترک اجزای این که باشند
میگی ارثنام به میگردند معرفی درآن مشترک خصوصیات که کالس و .رندsuper class،base classویاParent
classنام به ها کالس سایر درحالیکه میگردد یادChild class،sub class.یادمیگردند
عمر ؛ نام قبیل از مشترک مشخصات بعضی دارای سه هر ومعلم دکتور ، انجنیر کالس سه :مثالوهمچنین وزن ، قد ،
دارایbehaviorیک سهولیت خاطر به بنأ .باشند می کردن مطالعه ، کردن خواب ، آشامیدن ، خوردن مانند مشترک های
نام تحت کالسHumanکالس سه حالت ودرین .میکنیم اضافه آن در را مشترک افعال و خصوصیات این که سازیم می
خصوص توانند می الذکر فوقخ خاص یاتباشند داشته نیز را ودش.کلیدی کلمهء استعمال با درجاوا (extendsمیتوانیم
.)کنیم دیگرمعرفی کالس وارث را کالس یک
2.Encapsulation:ازپنهان عبارتکردنAttributeو هاbehaviorیک مورد بی هاییObjectآشکار و دادن وبروز
که مشخصات ساختنحاضر درحالیک ممکن یعنی .است نیاز آن بهobjectم دارایباشد زیادی های متود و ها شخصه
ولیمختلف حاالت نظربهاستفاده حالت همان به مربوط های متود و مشخصات ازمی.نمایند
یک منحیث من مثال بطورObjectو مشخصات دارایBehaviorچون .باشم می مختلفی هایکابل دانشگاه در زمانیکه
داخلنا با میشومام شده ثبت بودنم محصل مشخصات و م) خواندن درس محصل؛ تخلص ، محصل پدر اسم ، محصل (اسم
) دادن درس ، معلم تخلص ؛ معلم پدر اسم ، معلم اسم ( معلمی ومشخصات نام با مکاتب از یکی در حال درعینشده ثبت
امبو معلم همچون مشخصات به کابل دانشگاه وقتی هیچ یعنی .نداشته کار میکنم راتدریس مضامینی کدام یااینکه و دنم
.ندارد کاری دارم نمره چقدر مضامین درکدام واینکه بودنم محصل به هم مکتب ودرمقابل
9.Polymorphism:( مشخصاتattributesویا )Behaviorعمل مختلفی اشکال به ولی بوده مشابه نام تحت که هایی
مارفیسم پولی نام به میکنند.یادمیگردند.است آورده بار به معاصر نویسی برنامه در را زیادی سهولیات کهمثال بطور
یک کاربن که میدانیمObject.ذغال ویا باشد الماس میتواند باشد حالت چندین دارای میتواند ولی است
4. Page 4 of 23 ""امان هللا محب :وترتیب تهیه
که نویسیم می را پروگرام : مثال طوروهمچن نماید ذخیره را مختلفی های کمپیوتر مشخصاتبه انuserمشخصات این تا دهد اجازه
.بدهد تغییر و رادیده
نام به کالس یک اوالPCsRecordهر تا سازیم میPC.بگیرد کالس این از خودرا مشخصات میشود اضافه که
کالسیک صرف فوقblue printمشخصات وخواص تمام که باشد میObject.است شده معرفی درآنکهنهایت بی میتوانیم
Objectهر که بسازیم فوق کالس ازobjectو مشخصات تمام کالس اینmethodهایبخود را شده معرفیال .میگیردبته
Objectداخل همیشه هامتودmainمیگردد معرفیوحال .دارای که سازیم می را دیگری کالسmain methodآن در و بوده
object.میکنیم معرفی ذیل طور کالس این نوع از هارا
5. Page 5 of 23 ""امان هللا محب :وترتیب تهیه
پروگرام نتیجهء.کرد خواهید مالحظه ذیل شکل به را فوق
را ذیل کالس :دوم مثالcoding.نمایید
Date
Day
Month
Year
Min Year
Return Day()
Return Month()
Return Year()
Return Serial of Day()
6. Page 6 of 23 ""امان هللا محب :وترتیب تهیه
Array
نام به میگردد ذخیره مسلسل شکل به درمیموری که مشابه بانام را همنوع ومتحولین عناصر از یامجموعهء و لیستarrayیاد
میکنمشابه متحولین این که .ندFixed sizeو بودهاز استفاده باindexو فرق دیگر یک از هاaccessباالی .میگردندarray
را مختلفی عملیات میتوانیمقبیل ازinsertion،Deletion, sorting, searchingعناصر .دهیم انجام را وغیرهArrayبه مطابق
.میگردند دخیره حافظه در ذیل شکل
20302214678865339872
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
نام فوق درحالتArrayاز عبارتaکه باشد می[]حجره هر اندیکس نشاندهندهءArray.باشد می
7. Page 7 of 23 ""امان هللا محب :وترتیب تهیه
فوایدarray
Array( ساختار یکdata structureرا مختلفی عملیات و گردیده معرفی آسانی به که بوده ساده )supportوهمچنین .میکند
در ها اندیکس از استفادهarrayپراسهءaccessتمام همزمان میتوانیم ما که زیرا است ساخته سریع بسیار دیتارا کردنelement
هاییarrayتوسط آسانی بسیار به راindexشان هایaccess.کنیم
نواقصArray
Arrayآن نقص مهمترین جمله از میباشد نیز نواقص دارایfixed sizeکه استیم مجبور ما یعنی .است آن بودنarrayه رامیشه
معموال .میگردد حافظه ضیاع باعث عمل این که باشیم نداشته نیازی اینکه ولو کنیم معرفی نیاز مورد موقعیت مقدار تراز اضافه
سرعتsearchدرarrayشکل به که هایunsortedترتیب همین وبه بوده پایین بسیار میباشدinsertionدرarrayتنظیم هایی
( شدهsortedسخ بسیار ).است تدر هم درحالیکهsorted arrayدر وهمunsorted arrayعملیهءdeletion.است دشوار کار
طرزمعرفیArray
DataType ArrayName[] = new DataType[ArraySize];
String name[]=new String[50];
int list[]=new int[15];
List[5]=70;
List[10]=list[5]+100;
System.out.println(“Index 44”+list[44]);
موضوع شدن ساده برایاتکار ومراحل روش تعیین ووکودنویسیالگوریتم باید اوالفلوچارت ویا ها.بسازیم
چیست؟ الگوریتم
از مجموعهءactivityآمدن بدست منجربه که مسلسل هاییoutputنام به میگردند دلخواهalgorithmو میگردد یاداز اصل در
پروگرام یک نمودن تکمیل مراحل دیگر عبارت به ویا .است خوارزمی موسی بن محمد به منسوب که شده گرفته )(الخوارزم کلمهء
شکل به کهstepبهstep:مثال .میگردد یاد الگوریتم نام به میشود بیان ورق روی
Step1: start
Step2: Declare
Step3:initialize
Step4:increment
step5:Display
Step6:stop
چیست؟ فلوچارت
شکل به را پروگرام یک شدن تکمیل مراحل که است دیاگرامvisualشروع دیاگرام درین که .میدهد نمایش ها چارت از استفاده وبا
:ذیل شکل قرار میشود داده نشان بیضوی توسط کار وختم
8. Page 8 of 23 ""امان هللا محب :وترتیب تهیه
نمرات و نام که نویسیم می را پروگرام :مثال طور.دهد نشان را نمرات و نام این سپس و کرده ثبت را شاگردان تمام
:الگوریتم
دوarray.کنیم معرفی
داخل را نمرات و نامarray.برساند ثبت به
.دهد نمایش را ونمرات نام
import java.util.Scanner;
public class List {
int size;
int score[];
public List(int s) {
size = s;
score = new int [size];
}
Scanner keyboard = new Scanner(System.in);
public void insert(int n) {
for(int i=0; i<n; i++)
score[i]=keyboard.nextInt();
}
public void display(int m) {
9. Page 9 of 23 ""امان هللا محب :وترتیب تهیه
for(int i=0; i<m; i++)
System.out.println(score[i]);
}
}
دومی کالس
public class arrayapp {
public static void main(String[] args) {
List SwE5 = new List(45);
List IS5 = new List (55);
List IT5 = new List(60);
SwE5.insert(45);
SwE5.display(45);
IS5.insert(55);
IS5.display(55);
IT5.insert(60);
IT5.display(60);
} }
Searching Algorithm
( عنصر یک کردن جستجو برای دوروشelementدر )array:دارد زیاد اهمیت
Linear Search
Binary Search
درlinear searchدر موجود عناصر تک تک با شده خواسته عنصرarrayدر را نتیجه بودن مساوی ودرصورت میگردد مقایسه
.یابد می
public student find(String searchname) {
int j;
for(j=0; j<nelems; j++)
if( a[j] = searchname)
break;
if( j == nelems)
return null;
else
return a[j];
}
درbinary searchهای لیست در عموما کهsortشده خواسته عناصر و نموده دریافت را وسطی اندیکس اوال میگیرد صورت شده
عین و نگرفته مدنظر را وسط عنصر از تر کوچک بود وسط عنصر از تر بزرگ درصورتیکه .میکند مقایسه وسط عنصر با را
.کند می اجرا وسط عنصر از تر بزرگ عناصر باالی را پراسه
10. Page 10 of 23 ""امان هللا محب :وترتیب تهیه
public boolean find(int searchkey) {
int lowerBound = 0;
int upperBound = n-1;
int middle=0;
while(true) {
middle = (lowerBound + upperBound) / 2;
if (student[middle] == searchkey)
return true;
else if(lowerBound>upperBound)
return false;
else {
if(student[middle] < searchkey)
lowerBound = middle + 1;
else
upperBound = middle - 1;
} } }
11. Page 11 of 23 ""امان هللا محب :وترتیب تهیه
Stack
Stack( دیتا ساختار از وعبارت بوده گاه ذخیره معنی به درلغتdata structureبوده )کهمجموعهء ازitemهاییorderشده
باشد شده تشکیل طوریکهinsertionوdeletionنام به و .میگیرد صورت آن انجام یک از تنهاLIFO (Last In First Out)ویا
FILO (First In Last Out).میگردد یاد همگ وبرای اند شده چیده سربسر که کنید فرض را کفتریا های ظرف :مثال بطوری رفتنکی
رادور فوقانی ظروف تازمانیکه .بگیریم را پاییننی ظرف ونمیتوانیم میگیریم دارد قرار ظرفها همه باالی در راکه ظرف ، ازظروف
.باشیم نکرده
آورن بدست بخاطر شما و گرفته قرار سیا ، سفید ، سرخ های رنگ به دیگری بلوز چند زیر تان آبی دلخواه بلوز که کنید فرض ویا
).است مثال یک (فقط .بیاورید بدست را آبی بلوز سپس و چیده دیگر طرف در را دیگر های بلوز باید اوال تان دلخواه بلوز
میتوانیم گفته فوق های مثال درروشنیstackپذیر امکان آن فوقانی قسمت از تنها دیتا پراسس میباشدکه دیتای ساختار از عبارت
ساختا دیگر عبارت به است.وبامنظور به درآن که است رaccessویا عناصر کردنremoveفوقانی قسمت به تنها عناصر کردن
.مینماییم مراجعه آن
که میتوانیم گفتهstackرا عناصر میتوانیم صرف درآن زیراکه میتواند داده انجام ها ساختار سایر به نسبت را محدودی عملیات
insertوremoveکه .کنیمInsertنمودنvalueدر هاراstackنام بهpushوگرفتنvalueنام به هاراpop.میکنند یادکه
فوقانی قسمت از هردوعملیه(top of stack).میگیرد صورتیا و بودن خالی که داریم نیاز دیگری عملیهء یک به وهمچنان
پربودنstackآنرا دراینجا که کند بررسی راisEmpty.مینامیم
12. Page 12 of 23 ""امان هللا محب :وترتیب تهیه
ب عموم طورها پروگرام اجراشدن اstackمیتوانیم ما و میباشد خالیعناصرstackتعریف با راconstructorصفر بهinitialize
حالت این که .کنیمstackنام رابهstack underflowهای حجره زمانیکه و یادمیکنندstackفوقانی درقسمت و باشد شده اشغال
برای جاییpushنام به را حالت این باشد نداشتهstack overflowحالت این که .یادمیکنندexceptionمتود تعریف با میتوان را
نام به دیگریisFull()( کنترولhandle.کرد )
ازstackقبیل از مهم درمواردیWeb Browsers،Undo mechanism،paste mechanismدکمهء ،backدرweb
browserو هاwindowمیرویم مختلف عناصر بین ها گراف در زمانیکه مسیر نگهداشتن ، هااستفاده دیگر مورد وصدها
.میگردد
از استفاده وابتدایی ساده شکل ذیل پروگرامStack.میدهد رانشان
( اصلی متود حال وmain methodدرآن و ساخته را )objectکالسStackمیکن استفاده آن از و ساخته را.یم
13. Page 13 of 23 ""امان هللا محب :وترتیب تهیه
Balanced Parentheses
از استفاده موارد از یکیstackبکار ها قوس ریاضیکی عملیات دراکثر شک بدون باشد می ها وقوس ریاضیکی عملیات بررسی ،
الجبری افاده یک تا سازیم می را پروگرام بخش درین لذا .میکند کمک زیاد مسایل حل در ها قوس بجای پایان و آغاز و میشوند برده
ویاخیر؟ است درست که کند بررسی و گرفته را
او منظور بدین.کند بررسی هارا قوس بجابودن که میکنیم دیزاین را کالس ال
14. Page 14 of 23 ""امان هللا محب :وترتیب تهیه
وحالمتودisBalanced.میکنیم نوشته ، فوق دستورهای ادامه به میکند چیک را ها قوس بودن درست که را
کالس وحالstackراهمانند.مینویسیم آن مربوطهء عملیات و ها متود با شد ذکر قبال که کالس
15. Page 15 of 23 ""امان هللا محب :وترتیب تهیه
Queue
ساخبه مشابه تقریبا که است دیگر تارstackتفاوت این با وتنهاکهساختار درینitemبار اولین کهواردپراسس بار اولین باشد شده
میشود(First in First Out).وهدفروش تا ها دیتا ویا ها پراسه دادن قرار صف در هم ساختار این اصلیFIFOتطبیق آن باالی
.گرددمثال( صف در نفر چندین ذیل درشکلQueue)صف از بار اولین گرفته قرار درصف بار اولین که شخصی دارند قرار
آخری است پیوسته صف به بار آخرین که شخصی ترتیب همین به و میشود خارج.میگیرد قرار پراسس مورد بار ن
16. Page 16 of 23 ""امان هللا محب :وترتیب تهیه
ازساختارQueueحا روزمره زندگی در آید می عمل به زیادی های استفادهصف در اشخاص ویا اشیا که میشود واقع زیادی الت
(queueمثال .میگیرند قرار )نانوایی صف،صفب برایازرسیوغیره ، محافظان توسطکه .ساختار از استفاده با ماQueue
.کنیم مادلینگ مذکوررا حاالت میتوانیم آسانی به بسیار
همچناناز استفاده با تنها که میشود پیش حاالت بسیار نیز کمپیوتری های درسیستمqueue.کنیم کنترول آنهارا میتوانیممثالprint
یعنی .وغیره ازکیبورد حروف تایپ ، ها فایل شدنفایل به وسپس شده چاپ باید اول آمده شدن چاپ برای اول که فایل حاالت درین
.برود دومیوبه.شود داده نمایش صفحه درروی سپس و شده پراسس اوال باید میشود فشارداده اول کیبورد از که دکمهء ترتیب همین
برای( قطار کنترولqueueهای نام به دومتحول از ما )firstوlastکه میکنیم استفادهابتدا درfirst=0وlast=-1.باشد می
م:ثال
class Queue {
private int maxSize;
private long[] queArray;
private int first;
private int last;
private int nItems;
public Queue(int s) {
maxSize = s;
queArray = new long[maxSize];
first = 0;
last= -1;
nItems = 0;
}
public void insert(long j) {
if(last == maxSize - 1)
last = -1;
queArray[++last] = j;
17. Page 17 of 23 ""امان هللا محب :وترتیب تهیه
nItems++;
}
public long remove() {
long temp = queArray[first++];
if(first == maxSize)
first = 0;
nItems--;
return temp;
}
public long peekFirst() {
return queArray[first];
}
public boolean isEmpty() {
return (nItems ==0);
}
public boolean isFull() {
return (nItems==maxSize);
}
public int Size() {
return nItems;
}
public static void main(String[] args) {
Queue theQueue = new Queue(5);
theQueue.insert(10);
theQueue.insert(20);
theQueue.insert(30);
theQueue.insert(40);
theQueue.remove();
theQueue.remove();
theQueue.remove();
theQueue.insert(50);
theQueue.insert(60);
theQueue.insert(70);
theQueue.insert(80);
while( !theQueue.isEmpty() ) {
long n = theQueue.remove();
System.out.print(n);
System.out.print(" ");
}
System.out.println(" ");
}
}
18. Page 18 of 23 ""امان هللا محب :وترتیب تهیه
Greedy Algorithm
است الگوریتمازاینرو .نمیکند را پراسس بعدی مراحل فکر وجه هیچ وبه نموده انتخاب را حالت بهترین پراسس مرحلهء هر در که
( حریص های الگوریتم نام بهgreedy algorithmداشته زیاد استعمال موارد ها الگوریتم نوع این .میشوند یاد )اپلیکیشن مثال بطور
از ها پرابلم حل منظور به ذیل هایgreedy algorithm:میکنند استفاده
MST (Minimum Spanning Tree)
OSPF (Open Shortest Path First)
File Compression & Hoffman Algorithm
A simple scheduling algorithm
Greedy algorithmمانند های ساختار درgraphوTree.شود تطبیق میتواند
Graph
( میموری در دیتا ذخیره های ازروش یکیdata structureسایر برخالف و میگردد استفاده زیاد مسایل در که باشد می )
شکل به دیتارا خواندیم که سترکچرهایnon linearمیموری درrepresent.میکندجا عناصر درآن که میموری های قسمت یعنی
شده ثبت مسلسل غیر شکل وبه حافظه از مختلف های درقسمت بلکه نگردیده ذخیره پیوسته شکل وبه مستقیم خط یک باالی میگیرد
تباط ار شان همجوار عناصر طریق از ویاهم مستقیم لینک از استفاده با یا شان دیگر باهم عناصر ولی.دارند
مجموعهء از که است ساختار گراف که میتوانیم گفته پسnodeو ) (عناصر هاedgeاین و است شده ها)ساخته (لینک هاnode
شان بایکدیگر هاتوسطedgeها.دارند ارتباطویااصطالحات اگرchildوparentازbinary treeهر طوریکه شود حذف
عناصر از هریکی به بتواند عنصر(میگردد یاد گراف بنام ذیل ساختار شود وصل دیگرbinary treeهر که است ساختارchild
یک تنهاparentچندین وchildمیتوا داشتهند.)
Vertices or Nodes
Nodeیک آن کدام هر که باشد حافظه از های موقعیت میتواند هرکدام عناصر ویا هاtaskاکثرا عناصر این و .میدهد رانشان
منحیثobject.شود تمثیل جاوا های کالس درآن از سپس و بسازیم هارا کالس عناصر بخاطر باید ما یعنیobjectبسازیم
وهرobjectیک منحیثnode.میگردد معرفی
Edgesدو که های الین از مجموعهء :nodeنام به میکند وصل باهم راedgeمیگر یاددرصورتیکه .ددedgeدار جهت ها
(directed edgeکدام که دهد می نشان باشند )taskویاnodeاز قبلtask.شود پراسس دیگری
Adjacency verticesیک توسط که میشوند گفته همجوار زمانی دوعنصر :edge.باشد داشته ارتباط مستقیم شکل به
Pathاز مجموعه :verticesدو که متصل هایnodeنام به میسازد وصل باهم راpathبین ارتباط ذیل درشکل مثال .میگردد یاد
عناصرGوAهم به متصل عناصر از استفاده باDوBگرفته صورتنام به مسیر این کهpath.میشود نامیده
19. Page 19 of 23 ""امان هللا محب :وترتیب تهیه
Completed or connected Graphزمانی ها گراف :completedهر که میشوند نامیدهnodeتمام بهnodeدیگر های
از استفاده با درگرافedges:باشند.مثال داشته ارتباط جداگانه های
Directed Graph
جهات که اند های گرافedgeتحت دیگری عنصر از قبل عنصر کدام که میدهد نشان وجهات .است مشخص عناصر بین ها
.قرارگیرد پراسس
Undirected Graphج که اند های گراف :.باشد نگردیده مشخص عناصر بین هت
Weighted Graph( ها لینک درآن که های گراف :edgesنام به باشد وزن دارای )weighted Graphمیتواند میگردد.وزن یاد
.باشد وغیره قیمت ، فاصله:مثال
)نیست منطقی والیات موقعیت شود واضح دار وزن های گراف تا است مثال یک فوق (شکل
20. Page 20 of 23 ""امان هللا محب :وترتیب تهیه
معرفیدرمیموری گراف ونمایش
.پردازیم می ها پروگرام در فوق اجزای از یک هر معرفی چگونگی به حال
از استفاده با است بهتر گراف عناصر کردیم ذکر قبال همانطوریکهobjectدا نمایش هادارای عناصر تمام دیگر طرف واز .شود ده
بناء باشند می مشابه مشخصات و خواصobjectشکل به هاarrayداشته را کالس یک باید اوال که است واضح .میگردد معرفی
آن از بتوانیم تا باشیمobject.میکنیم دیزاین ذیل طور عناصر برای را کالسی بناء .کنیم معرفی هارا
( ها راه تمثیل برایedgesاز ).میگردد استفاده ذیل روش دو
Adjacency Matrix(یاarray)دوبعدی های
Adjacency list
Adjacency matrixدرحقیقتtwo dimensional Arrayراه عنصر دو بین آیا که کند می مشخص آن جزء هر که باشد می
دارای گراف ویاخیر.ودرصورتیکه دارد وجودNکامل تمثیل برای ما درینصورت باشد عنصرedgeباید میموری در هاNxN
dimensional arrayنمایی معرفی را.ماز استفاده با و گرفته مدنظر میباشد عنصر چهار دارای راکه ذیل گراف مثال بطور
adjacency matrix.میدهیم نشان را عناصر ارتباط ذیل طوری
A B C D
A 0 1 1 1
B 1 0 0 1
C 1 0 0 0
D 1 1 0 0
21. Page 21 of 23 ""امان هللا محب :وترتیب تهیه
.دهیم شرح گراف در را افغانستان مختلف شهر چند میخواهیم :مثال بطور
بناءدارای که باشد می ها شهر گراف این در عناصر و نگهدارد درخود را عناصر خصوصیات که میسازیم را کالس اوال
.میکنیم اکتفا ) شده دیده شهر (آیا و )شهر (نام آن مشخصه دو به تنها ما باشدولی می زیاد خصوصیات
نام به را دیگری کالس وحالgraphکالس از که میسازیمVerticesو نموده استفادهedges.نماید تمثیل هارا
.کنیم اضافه درآن راهارا و شهرها که میسازیم را کالس مرحله درین
22. Page 22 of 23 ""امان هللا محب :وترتیب تهیه
گراف در جستجوSearch in Graph
شامل میشود عناصر که است عناصر دربین جستجو شود ارایه گراف توسط میتواند که اساسی بسیار عملیات از یکیObjectهای
ها شبکه جستجوی یعنی ها روتر جستجوی که کند تمثیل درشبکه را روتر میتواند عناصر مثال باشد مختلفروت کدام واینکهباهم ها ر
دارند )(همجوار مستقیم ارتباط.کند تمثیل نقشه یک در را شهرها میتواند عناصر ترتیب همین به .از استفاده با کهsearching
دریابیم میتوانیمویاخیر؟ است موجود راه شهر دو بین آیا که
.میکند استفاده ستراتیژی دو از گراف کار این وبرای شود دیده مکمل بطور گراف باید عنصر یک جستجوی برایعبارتن که:از د
DFS (Depth-First Search)
BFS (Breadth-First Search)
می بررسی را گراف یک موجود عناصر تمام ذیل روش هردوولی کندDFSاز عملیه اجرای برایStackدرحالیکه میکند استفاده
BFSازQueue.میکند استفاده
23. Page 23 of 23 ""امان هللا محب :وترتیب تهیه
DFS (Depth-First Search)
دراین( آغاز نقطهء یک اوال که میگیرد صورت طوری ، گراف در جستجو روشnode)شروع جستجو ازآن باید کهمثالAرا
و نموده انتخاباولین به سپسnodeهمجوارAرفتهمثالBآنرا وvisit.میکنیم نشانی و نمودهوسپسهمسایه اولین بهBرفته
وآنراvisitوبدین .میکنیم ونشانیمید ادامه ترتیب.هیمودرهرمرحلهnodeدر هاراStuck( داخلpush)تا .میکنیمبه زمانیکه
آخرینnodeرسیدیمnodeهاراpopتا .بیاییم عقب به و نمودهتمامNode.شود جستجو همجوار های