SlideShare a Scribd company logo
1 of 58
Download to read offline
Data Structure
INTRODUCTION
1
1
Prepared by: Mir Omranudin Abhar
Email : MirOmran@Gamil.com
Spring , 2019
Introduction
Structures
‫یک‬
‫روش‬
‫خاص‬
‫برای‬
‫سازماندهی‬
Data
‫میباشد‬
,
‫و‬
‫همچنان‬
Data Structures
‫ارایه‬
‫میکند‬
‫سازماندهی‬
Data
‫را‬
‫در‬
Computer memory
‫و‬
‫یا‬
‫یک‬
‫روش‬
‫است‬
‫که‬
Data
‫خوبتر‬
Stored
,
Processed
,
‫و‬
Received
‫شود‬
.
Data Structures
‫یک‬
‫ساختار‬
‫میباشد‬
‫که‬
‫برای‬
‫ارایه‬
‫کردن‬
‫ارتباطات‬
‫منطقی‬
‫بین‬
Elements
‫از‬
Data
‫بکار‬
‫میرود‬
.
2
Introduction
•
.
‫انواع‬
‫مختلف‬
‫از‬
Data Structures
‫هستند‬
‫که‬
‫برای‬
‫انواع‬
‫مختلف‬
‫از‬
Application
‫ها‬
‫مناسب‬
‫میباشند‬
,
‫و‬
‫بعضی‬
‫از‬
‫انها‬
‫به‬
‫یک‬
‫وظیفه‬
‫خاص‬
‫دیزاین‬
‫شده‬
‫است‬
.
‫بطور‬
‫مثال‬
B-Trees
‫خوب‬
‫و‬
‫مناسب‬
‫برای‬
‫پیاده‬
‫سازی‬
‫در‬
Databases
‫میباشد‬
.
•
Data elements
‫به‬
‫این‬
‫معنی‬
‫که‬
‫چطور‬
‫ما‬
‫میتوانیم‬
data
‫را‬
‫در‬
‫میموری‬
‫تنظیم‬
‫و‬
‫سازماندهی‬
‫نمایم‬
,
‫که‬
‫انواع‬
‫مختلف‬
‫از‬
Data structures
‫وجود‬
‫دارد‬
,
‫که‬
‫بعضی‬
‫از‬
‫انها‬
‫برای‬
‫ذخیره‬
‫کردن‬
‫یک‬
‫نوع‬
‫از‬
Data type
‫بکار‬
‫میرود‬
‫و‬
‫بعضی‬
‫دیگران‬
‫برای‬
‫ذخیره‬
‫کردن‬
‫چندین‬
‫نوع‬
‫از‬
Data
type
‫بکار‬
‫میرود‬
.
‫که‬
Data Structures
‫ترکیب‬
‫شده‬
‫از‬
‫دو‬
‫یا‬
‫بیشتر‬
‫از‬
‫دو‬
Data type
elements
.
3
Introduction – example
4
Introduction – example
5
Introduction – example
6
Introduction – example
7
Introduction – example
8
Introduction – example
9
Introduction – Application
10
‫که‬ ‫های‬ ‫ساحه‬
Data Structures
‫میباشد‬ ‫ذیل‬ ‫قرار‬ ‫دارد‬ ‫کاربرد‬ ‫وسیع‬ ‫بشکل‬
:
• Database Management System
• Compiler Design
• Network Analysis
• Numerical Analyses
• Artificial Intelligence
• Simulation
• Operating System
• Graphics
Introduction – Type
.1
‫تقسیم‬
‫اساس‬ ‫به‬ ‫بندی‬
Size
1. Static Data Structures
‫به‬
Data Structures
‫سایز‬ ‫یک‬ ‫به‬ ‫بتواینم‬ ‫ما‬ ‫یعنی‬ ‫باشد‬ ‫داشته‬ ‫ثابت‬ ‫سایز‬ ‫که‬ ‫میشود‬ ‫گفته‬
‫مشخص‬
Data
‫کنیم‬ ‫ذخیره‬ ‫را‬
.
2. Dynamic Data Structures
‫به‬
Data Structures
‫بر‬ ‫اجرای‬ ‫جریان‬ ‫در‬ ‫میتوانند‬ ‫که‬ ‫نبوده‬ ‫ثابت‬ ‫سایزشان‬ ‫که‬ ‫میشود‬ ‫گفته‬ ‫ها‬
‫نامه‬
‫کردن‬ ‫کم‬ ‫یا‬ ‫و‬ ‫کردن‬ ‫اضافه‬ ‫توانایی‬ ‫یعنی‬ ‫کنند‬ ‫تغیر‬ ‫شان‬ ‫سایز‬
Data
‫باشند‬ ‫داشته‬ ‫خود‬ ‫گاه‬ ‫ذخیره‬ ‫از‬ ‫را‬
.
11
Introduction – Type
.2
‫ها‬ ‫رخداد‬ ‫اساس‬ ‫به‬ ‫بندی‬ ‫تقسیم‬
1. Linear Data Structures
‫به‬
Data Structures
‫گفته‬
‫میشود‬
‫که‬
Data
‫در‬
‫موقعیت‬
‫های‬
‫مسلسل‬
‫در‬
‫میمیوری‬
‫ذخیره‬
‫میشود‬
,
‫و‬
‫همچنان‬
‫هر‬
Element
‫از‬
‫این‬
‫نوع‬
‫ساختار‬
‫دارای‬
‫ماقبل‬
‫و‬
‫مابعد‬
‫های‬
‫خاص‬
‫و‬
‫جدا‬
‫گانه‬
‫میباشد‬
.
2. Non-Linear Data Structures
‫به‬
Data Structures
‫ها‬
‫گفته‬
‫میشود‬
‫که‬
Data
‫در‬
‫موقعیت‬
‫های‬
‫غیر‬
‫مسلسل‬
‫در‬
‫میموری‬
‫ذخیره‬
‫میشود‬
,
‫و‬
‫همچنان‬
‫هر‬
Element
‫از‬
‫این‬
‫نوع‬
‫ساختار‬
‫میتوانند‬
‫دارای‬
‫ماقبل‬
‫و‬
‫مابعد‬
‫های‬
‫یکسان‬
‫داشت‬
‫ه‬
‫باشند‬
,
‫که‬
Data
‫بشکل‬
Graph , Tree
‫وغیره‬
‫در‬
‫میموری‬
‫ذخیره‬
‫میشود‬
.
12
Introduction – Type
13
Data Structure
Logical Data Structure Physical Data Structures
Linear Data Structures Non-Linear Data Structures
· Tree
· Graph
· Int
· Float
· Char
List
Linear List Linked List
· Array
· Stock
· Queue
· Dequeue
· Circular
· One way
· Two way
· Circular
Introduction – Type
3
.
Data Structures
‫اولیه‬ ‫غیر‬ ‫و‬ ‫اولیه‬
1. Primitive Data Structures
Primitive Data Structures
‫عبارت‬
‫است‬
Data Structures
‫های‬
Basic
‫بوده‬
‫که‬
‫مستقیم‬
‫توسط‬
‫ماشین‬
‫اجرا‬
‫میشود‬
,
‫که‬
‫در‬
‫کمپیوتر‬
‫های‬
‫مختلف‬
‫به‬
‫اشکال‬
‫مخلتف‬
‫ارایه‬
‫میشود‬
.
‫که‬
Integers ,
Floating point numbers , characters , string
‫از‬
‫جمله‬
‫انواع‬
‫آن‬
‫میباشد‬
.
2. Non-Primitive Data Structures
Non-Primitive Data Structures
‫عبارت‬
‫است‬
Data Structures
‫های‬
‫بسیار‬
‫پیچیده‬
‫بوده‬
‫که‬
‫از‬
‫آن‬
‫برای‬
‫سازماندهی‬
‫گروپ‬
‫از‬
Data
‫های‬
‫همنوع‬
‫بکار‬
‫میرود‬
‫که‬
‫تشکیل‬
‫شده‬
‫از‬
Primitive Data
structures
‫های‬
‫میباشد‬
.
Array Files, Linked Lists, trees, graph, Lists ,
‫از‬
‫انواع‬
Non-
primitive data Structures
‫میباشد‬
.
14
Introduction – Type
15
Data Structures
Primitive Data Structures Non-Primitive Data Structuers
Integer Float Character Pointer Arrays Lists Files
Linear lists Non-Linear Lists
Stacks Queues Graphs Trees
Introduction– Operation[Data Structure]
‫پروسس‬
‫های‬
‫که‬
‫در‬
‫میموری‬
‫باالی‬
Data
‫انجام‬
‫میشود‬
‫قرار‬
‫ذیل‬
‫میباشد‬
:
1. Creating
‫این‬
‫اولین‬
‫عملیه‬
‫میباشد‬
‫برای‬
‫ایجاد‬
‫کردن‬
‫یک‬
Data Structures
‫در‬
‫میموری‬
.
‫و‬
‫این‬
‫فقط‬
‫عملیه‬
‫اعالن‬
‫کردن‬
‫و‬
‫مقدار‬
‫دهی‬
‫کردن‬
Data Structures
‫و‬
‫گرفتن‬
‫یک‬
‫تعداد‬
‫موقعیت‬
‫ها‬
‫در‬
‫میموری‬
‫برای‬
Element
‫ها‬
‫از‬
Data
‫انجام‬
‫میدهد‬
.
2. Inserting
‫اضافه‬
‫کردن‬
‫یک‬
Record
‫در‬
Structures
.
3. Deleting
‫حذف‬
‫کردن‬
‫یک‬
Record
‫از‬
Structures
.
16
Introduction– Operation[Data Structure]
4. Updating
‫تغیر‬
‫اوردن‬
‫در‬
Value
‫از‬
Data
‫در‬
Data Structures
.
5. Traversing
‫دسترسی‬
‫پیدا‬
‫کردن‬
‫به‬
‫شکل‬
‫واقعی‬
‫به‬
‫هر‬
Record
‫ذخیره‬
‫شده‬
‫در‬
Structures
.
6. Searching
‫جستجو‬
‫کردن‬
‫موقعیت‬
‫یک‬
Record
‫از‬
‫بین‬
‫تمام‬
Record
‫های‬
‫ذخیره‬
‫شده‬
‫در‬
Structures
.
17
Introduction– Operation[Data Structure]
7. Sorting
‫کردن‬ ‫مرتب‬
Data Elements
‫میموری‬ ‫در‬
,
‫نزولی‬ ‫بشکل‬ ‫یا‬ ‫و‬ ‫صعودی‬ ‫بشکل‬
.
8. Merging
‫دادن‬ ‫ترکیب‬
Data Elements
‫ست‬ ‫یا‬ ‫مجموعه‬ ‫دریک‬ ‫مختلف‬ ‫مجموعه‬ ‫دو‬ ‫از‬ ‫ها‬
.
9. Destroying
‫این‬
‫اخرین‬
‫عملیه‬
‫از‬
Data Structures
‫میباشد‬
,
‫زمانی‬
‫استفاده‬
‫میشود‬
‫که‬
‫دیگر‬
‫کاری‬
‫و‬
‫یا‬
‫استفا‬
‫ده‬
‫از‬
Data Structures
‫ایجاد‬
‫شده‬
‫در‬
‫میموری‬
‫نیاز‬
‫نباشد‬
,
‫برای‬
‫از‬
‫بین‬
‫بردن‬
‫و‬
‫یا‬
‫پاک‬
‫کردن‬
‫ان‬
‫از‬
‫ای‬
‫ن‬
‫عملیه‬
‫استفاده‬
‫میشود‬
.
18
Introduction – Algorithm
‫زمانیکه‬
‫ما‬
‫بخواهیم‬
‫یک‬
Data Structures
‫را‬
‫برای‬
‫یک‬
Application
‫خاص‬
‫انتخاب‬
‫کنیم‬
,
‫در‬
‫این‬
‫صورت‬
‫ما‬
‫باید‬
‫یک‬
‫الگوریتم‬
‫را‬
Develop
‫کنیم‬
‫تا‬
Data item
‫های‬
‫مرتبط‬
‫به‬
‫ان‬
‫را‬
‫باهم‬
‫سازگار‬
‫ساخته‬
‫و‬
‫انرا‬
‫ذخیره‬
‫کند‬
.
‫یک‬
‫الگوریتم‬
‫باید‬
‫این‬
‫ویژگی‬
‫های‬
‫ذیل‬
‫را‬
‫داشته‬
‫باشد‬
:
•
‫نباشد‬ ‫مبهم‬ ‫باید‬ ‫الگوریتم‬
•
‫باشد‬ ‫مختصر‬ ‫باید‬ ‫الگوریتم‬
•
‫باشد‬ ‫موثر‬ ‫باید‬ ‫الگوریتم‬
19
Introduction – Algorithm
‫الگوریتم‬
‫یک‬
‫پالن‬
‫دقیق‬
‫میباشد‬
,
‫که‬
‫بواسطه‬
‫اجرا‬
‫کردن‬
‫یک‬
‫سلسله‬
‫از‬
Action
‫ها‬
,
‫برای‬
‫رسیدن‬
‫به‬
‫یک‬
‫هدف‬
‫از‬
‫قبل‬
‫تعین‬
‫شده‬
‫بکار‬
‫میرود‬
.
‫و‬
‫یا‬
‫یک‬
‫سلسله‬
‫از‬
‫عملکرد‬
‫های‬
‫منطقی‬
‫میباشد‬
‫که‬
‫م‬
‫رحله‬
‫به‬
‫مرحله‬
‫انجام‬
‫شده‬
‫باعث‬
‫حل‬
‫یک‬
‫مشکل‬
‫میشود‬
.
‫هر‬
‫الگوریم‬
‫باید‬
‫شامل‬
‫موارد‬
‫ذیل‬
‫باشد‬
:
•
‫باشد‬ ‫داشته‬ ‫ورودی‬
•
‫باشد‬ ‫داشته‬ ‫خروجی‬
•
‫باشد‬ ‫واضح‬
•
‫باشد‬ ‫محدود‬
•
‫باشد‬ ‫داشته‬ ‫موثریت‬
20
Introduction – Algorithm
21
Introduction – Algorithm
‫باید‬ ‫الگوریتم‬ ‫هر‬ ‫در‬
‫اصل‬ ‫چهار‬
‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫اساسی‬
:
1. Generality
‫مشکل‬ ‫یک‬ ‫برای‬ ‫تنها‬ ‫نه‬ ‫باشد‬ ‫شده‬ ‫دیزاین‬ ‫مشکالت‬ ‫از‬ ‫گروپ‬ ‫حل‬ ‫برای‬ ‫باید‬ ‫الکوریتم‬ ‫یک‬
.
‫ی‬
‫عنی‬
‫مشک‬ ‫ان‬ ‫از‬ ‫نوع‬ ‫به‬ ‫حالت‬ ‫هر‬ ‫در‬ ‫و‬ ‫جا‬ ‫هر‬ ‫در‬ ‫باشد‬ ‫داشته‬ ‫عمومیت‬ ‫باید‬ ‫میشود‬ ‫دیزاین‬ ‫که‬ ‫الکوریتم‬
‫بر‬ ‫ل‬
‫بسیازیم‬ ‫حل‬ ‫انرا‬ ‫بتوانیم‬ ‫الکوریتم‬ ‫ان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میخوریم‬
.
22
Introduction – Algorithm
2. Good Structures
‫باشد‬ ‫داشته‬ ‫خوب‬ ‫خیلی‬ ‫ساختار‬ ‫یک‬ ‫باید‬ ‫الکوریتم‬ ‫یک‬
,
‫توسط‬ ‫که‬
Building Block
‫شده‬ ‫ایجاد‬ ‫خوب‬
‫باشد‬
:
•
‫باشد‬ ‫شده‬ ‫داده‬ ‫شرح‬ ‫خوب‬
•
‫باشد‬ ‫فهم‬ ‫قابل‬
•
Test
‫باشد‬ ‫شده‬
•
‫باشد‬ ‫داشته‬ ‫اوردن‬ ‫تغیر‬ ‫و‬ ‫شدن‬ ‫اصالح‬ ‫قابل‬
.
23
Introduction – Algorithm
3. Efficiency
‫باال‬ ‫اش‬ ‫پروسس‬ ‫سرعت‬ ‫مثال‬ ‫لحاظ‬ ‫هر‬ ‫از‬ ‫باشد‬ ‫داشته‬ ‫مفیدیت‬ ‫و‬ ‫موثریت‬ ‫باید‬ ‫الکوریتم‬ ‫یک‬
‫باشد‬
,
‫از‬
‫برسد‬ ‫هدف‬ ‫ان‬ ‫به‬ ‫خوبی‬ ‫به‬ ‫بسیار‬ ‫شده‬ ‫طراحی‬ ‫که‬ ‫هدف‬ ‫هر‬ ‫برای‬ ‫و‬ ‫کند‬ ‫استفاده‬ ‫کمتر‬ ‫حافظه‬
.
4. Ease of use
‫باشد‬ ‫استفاده‬ ‫قابل‬ ‫آسانی‬ ‫به‬ ‫بسیار‬ ‫باید‬ ‫الکوریتم‬ ‫یک‬
.
24
Introduction – Algorithm [example]
25
‫بگیر‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫مستطیل‬ ‫یک‬ ‫مساحت‬ ‫اوردن‬ ‫بدست‬ ‫برای‬ ‫که‬ ‫بنویسید‬ ‫را‬ ‫الگوریتم‬
‫د؟‬
Introduction – Algorithm [example]
26
‫د‬ ‫که‬ ‫اشخاص‬ ‫به‬ ‫مساوی‬ ‫بطور‬ ‫شرکت‬ ‫یک‬ ‫سرمایه‬ ‫کردن‬ ‫تقسیم‬ ‫برای‬ ‫که‬ ‫بنویسید‬ ‫را‬ ‫الگوریتم‬
‫شرکت‬ ‫ر‬
‫استند؟‬ ‫سهیم‬
Introduction – Algorithm [example]
27
‫انتروال؟‬ ‫یک‬ ‫اساس‬ ‫به‬ ‫مسلسل‬ ‫اعداد‬ ‫جمع‬ ‫حاصل‬ ‫اوردن‬ ‫بدست‬ ‫برای‬ ‫که‬ ‫بنویسید‬ ‫را‬ ‫الگوریتم‬
Introduction – Algorithm [example]
28
‫برود؟‬ ‫بکار‬ ‫ها‬ ‫اسم‬ ‫یک‬ ‫ابجد‬ ‫اوردن‬ ‫بدست‬ ‫برای‬ ‫که‬ ‫بنویسید‬ ‫را‬ ‫الگوریتم‬
1
2
Introduction – Analysis [Algorithm]
29
‫بعد‬
‫از‬
‫طراحی‬
‫یک‬
‫الگوریتم‬
‫ما‬
‫مجبور‬
‫هستیم‬
‫تا‬
‫انرا‬
‫تحلیل‬
‫و‬
‫تجزیه‬
‫نمایم‬
‫تا‬
‫بتوانیم‬
‫موث‬
‫ریت‬
‫انرا‬
‫ارزیابی‬
‫کنیم‬
,
‫با‬
‫رسیدگی‬
‫کردن‬
‫موارد‬
‫ذیل‬
‫ما‬
‫میتوانیم‬
‫موثریت‬
‫یک‬
‫الگوریتم‬
‫را‬
‫ارزیابی‬
‫کنیم‬
:
•
‫الگوریتم‬ ‫بودن‬ ‫درست‬
•
Implement
‫الگوریتم‬ ‫کردن‬
•
‫الگوریتم‬ ‫بودن‬ ‫ساده‬
•
‫الگوریتم‬ ‫اجرا‬ ‫به‬ ‫ضرورت‬ ‫تایم‬
,
‫میمیوری‬ ‫در‬ ‫الگوریتم‬ ‫نیاز‬ ‫قابل‬ ‫حافظه‬ ‫مقدار‬ ‫و‬
Introduction – Analysis [Algorithm]
30
•
‫میتوانیم‬
Analysis
‫یک‬
‫الگوریتم‬
‫را‬
‫توسط‬
‫بررسی‬
‫کردن‬
‫مرحله‬
‫به‬
‫مرحله‬
‫دستورات‬
‫آن‬
‫انجام‬
‫بدهیم‬
.
•
‫و‬
‫همچنان‬
‫از‬
‫طریق‬
Test
‫نمودن‬
‫الگوریتم‬
‫به‬
‫اساس‬
‫تکنیک‬
‫های‬
‫ریاضیکی‬
‫که‬
‫به‬
‫اثبات‬
‫بر‬
‫ساند‬
‫درست‬
‫بودن‬
‫الگوریتم‬
‫را‬
,
‫انجام‬
‫بدهیم‬
.
•
‫هر‬
‫الگوریتم‬
‫را‬
‫ما‬
‫با‬
‫بررسی‬
‫نمودن‬
‫سه‬
‫حالت‬
‫ان‬
‫میتوانیم‬
‫در‬
‫باره‬
‫موثریت‬
‫ان‬
‫تصمیم‬
‫بگ‬
‫یریم‬
.
1. Worst case running time
2. Average case running time
3. Best case running time
Introduction – Space Complexity
31
Analysis
‫کردن‬
Space Complexity
‫یک‬
‫الگوریتم‬
‫یا‬
‫پروگرام‬
‫عبارت‬
‫است‬
‫مقدار‬
‫از‬
‫میموری‬
‫میباشد‬
‫که‬
‫آن‬
‫الگوریتم‬
‫یا‬
‫پروگرام‬
‫برای‬
‫اجرای‬
‫مکمل‬
‫خود‬
‫به‬
‫آن‬
‫نیاز‬
‫دارد‬
.
1. Instruction Space
‫مکان‬
‫برای‬
‫ذخیره‬
‫یی‬
‫از‬
‫ساختار‬
‫کلی‬
‫همان‬
‫پروگرام‬
‫یا‬
‫الگوریتم‬
‫ضرورت‬
‫میباشد‬
‫که‬
‫سایز‬
‫این‬
‫ن‬
‫وع‬
‫مکان‬
‫ها‬
‫ثابت‬
‫میباشد‬
.
2. Data Space
‫مکان‬
‫برای‬
‫ذخیره‬
‫یی‬
‫از‬
‫متغیر‬
‫های‬
‫و‬
‫ثابت‬
‫های‬
‫که‬
‫در‬
‫پروگرام‬
‫یا‬
‫الگوریتم‬
‫استفاده‬
‫میشود‬
,
‫ض‬
‫رورت‬
‫میباشد‬
.
3. Environment stack space
‫مکان‬
‫برای‬
‫ذخیره‬
‫یی‬
‫از‬
‫نتیجه‬
‫میتود‬
‫های‬
‫که‬
‫در‬
‫مرحله‬
‫بعدی‬
‫از‬
‫همان‬
‫الگوریتم‬
‫یا‬
‫پروگرام‬
‫نیاز‬
‫ب‬
‫ه‬
‫استفاده‬
‫دوباره‬
‫ان‬
‫میشود‬
.
Introduction – Time Complexity
32
Time Complexity
‫یک‬
‫الگوریتم‬
‫یا‬
‫پروگرام‬
‫عبارت‬
‫است‬
‫مقدار‬
‫از‬
‫زمان‬
‫است‬
‫که‬
‫برای‬
‫اجرا‬
‫شدن‬
‫مکمل‬
‫به‬
‫آن‬
‫یک‬
‫الگوریتم‬
‫یا‬
‫پروگرام‬
‫نیاز‬
‫دارد‬
.
‫که‬
‫در‬
‫حقیقت‬
Time
‫وابسته‬
‫به‬
Implementation
‫یک‬
‫الگوریتم‬
‫یا‬
‫پروگرام‬
,
‫قدرت‬
‫یا‬
‫توانایی‬
Compiler
‫که‬
‫از‬
‫آن‬
‫استفاده‬
‫میشود‬
,
‫سرعت‬
CPU
,
‫و‬
‫دیگر‬
hardware
‫ها‬
‫میباشد‬
.
Introduction – Asymptotic Notation
33
Asymptotic notation
‫یک‬
‫روش‬
‫آسان‬
‫و‬
‫کوتاه‬
‫برای‬
‫ارایه‬
‫نمودن‬
Time Complexity
‫استفاده‬
‫میشود‬
.
• Theta Notation ( Ω )
• Big Oh Notation ( O )
• Omega Notation ( Ө )
Introduction – Theta Notation ( Ω )
34
‫این‬
‫نوع‬
notation
‫برای‬
‫نمایش‬
‫دادن‬
‫یا‬
‫ارایه‬
‫نمودن‬
time complexity
‫بین‬
‫باالترین‬
‫مرز‬
‫و‬
‫پایین‬
‫ترین‬
‫مرز‬
‫زمانی‬
‫یک‬
‫الگوریتم‬
‫بکار‬
‫میرود‬
.
Introduction – Big Oh Notation ( O )
35
‫این‬
‫نوع‬
notation
‫برای‬
‫نمایش‬
‫دادن‬
‫یا‬
‫ارایه‬
‫نمودن‬
time complexity
‫بین‬
‫باالترین‬
‫مرز‬
‫زمانی‬
‫یک‬
‫الگوریتم‬
‫بکار‬
‫میرود‬
.
Introduction – Omega Notation ( Ө )
36
‫این‬
‫نوع‬
notation
‫برای‬
‫نمایش‬
‫دادن‬
‫یا‬
‫ارایه‬
‫نمودن‬
time complexity
‫بین‬
‫پایین‬
‫ترین‬
‫مرز‬
‫زمانی‬
‫یک‬
‫الگوریتم‬
‫بکار‬
‫میرود‬
.
37
𝑜( 1)
⇒ 𝑂(1)
Time Complexity
Space Complexity
n →1
Space Complexity 𝑂(1)
Complexity – example ( 1 )
38
𝑜( 1+1+1)
⇒ 𝑂(3)
Space Complexity
n →1
name →1
i →1 Space Complexity 𝑂(3)
Time Complexity
Complexity – example ( 2 )
39
𝑜( 1+(𝑛 + 1) + 𝑛 )
O(2 + 2𝑛)
⇒ 𝑂(𝑛)
Space Complexity
n →1
Space Complexity 𝑂(1)
Time Complexity
Complexity – example ( 3 )
40
O( 1+(1+ (𝑛 + 1) + 𝑛))
O(2 + 2𝑛)
⇒ 𝑂(𝑛)
Space Complexity
n →1
i →1 Space Complexity 𝑂(2)
Time Complexity
Complexity – example ( 4 )
41
𝑜(1 + 1 + 1 + 𝑛 + 1 + 𝑛)
𝑜(4 + 2𝑛)
⇒ 𝑂(𝑛)
Space Complexity
n →1
name →1
sum →1
i →1 Space Complexity 𝑂(4)
Time Complexity
Complexity – example ( 5 )
42
𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂
𝑛
2
⇒ 𝑜(𝑛 )
𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(1 )
Complexity – example (6)
43
Complexity – example ( 6 )
44
𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 22
𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(2)
Complexity – example ( 7 )
45
Complexity – example ( 7 )
46
𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 46
𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(2)
Complexity – example ( 8 )
47
Complexity – example ( 8 )
48
n →1
𝑖 →1
𝑥 →1 Space Complexity 𝑂 3
Time Complexity 𝑂(𝑛)
Complexity – example ( 9 )
49
Complexity – example ( 9 )
50
Complexity – example ( 10 )
n →1
𝑖 →1
𝑥 →1 Space Complexity 𝑂 3
Time Complexity 𝑂(𝑛2)
51
Complexity – example ( 10 )
Question
.1
‫الگوریتم‬
‫را‬
‫بنوسید‬
‫که‬
‫برای‬
‫بدست‬
‫اوردن‬
‫حاصل‬
‫جمع‬
‫اعداد‬
‫از‬
1
–
n
‫ام‬
‫بکار‬
‫برود‬
,
‫و‬
‫همچنان‬
Time complexity
‫و‬
space complexity
‫انرا‬
‫بدست‬
‫بیاورید؟‬
.2
Time Complexity
‫و‬
Space complexity
‫برنامه‬
‫ذیل‬
‫را‬
‫بدست‬
‫بیاورید؟‬
52
Question
.3
EdgeRank
‫چی‬
‫نوع‬
‫الگوریتم‬
‫میباشد‬
‫و‬
‫در‬
‫کجا‬
‫ها‬
‫استفاده‬
‫شده‬
‫است؟‬
53
54
Complexity – optional
𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 𝑛
𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(1 )
55
𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 𝑛 + 𝑛 + 𝑛 ⇒ O 3n ⇒ O(n)
𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 𝑛 + 1 + 𝑛 + 1 ⇒ 𝑂 2𝑛 + 1 ⇒ 𝑂(𝑛)
Complexity – optional
56
𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂
𝑛 𝑛 + 1
2
= 𝑂(
𝑛2 + 𝑛
2
) ⇒ 𝑜(𝑛2)
𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(2 )
Complexity – optional
57
𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒
⇒ 2𝑘= 𝑛
⇒ 𝑘 = log2 𝑛
⇒ O(log2 𝑛)
𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(1 )
Complexity – optional
58
𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒
⇒ 𝑛 2𝑘 ≥ 1
⇒ 𝑘 = log2 𝑛
⇒ O(log2 𝑛)
𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(1 )
Complexity – optional

More Related Content

Similar to (Ds+alg) 1

Similar to (Ds+alg) 1 (9)

طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی
طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی
طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی
 
Enterprise Resource Planning Implementation Architectures and Frameworks.pdf
Enterprise Resource Planning Implementation Architectures and Frameworks.pdfEnterprise Resource Planning Implementation Architectures and Frameworks.pdf
Enterprise Resource Planning Implementation Architectures and Frameworks.pdf
 
Ordbms پایگاه داده شی گرا-رابطه ای
Ordbms پایگاه داده شی گرا-رابطه ایOrdbms پایگاه داده شی گرا-رابطه ای
Ordbms پایگاه داده شی گرا-رابطه ای
 
معماری سازمانی سیستم های اطلاعاتی
معماری سازمانی سیستم های اطلاعاتی معماری سازمانی سیستم های اطلاعاتی
معماری سازمانی سیستم های اطلاعاتی
 
Big Data and select suitable tools
Big Data and select suitable toolsBig Data and select suitable tools
Big Data and select suitable tools
 
موتور جستجوی درون سازمانی
موتور جستجوی درون سازمانیموتور جستجوی درون سازمانی
موتور جستجوی درون سازمانی
 
Persian Document ITBSC
Persian Document   ITBSCPersian Document   ITBSC
Persian Document ITBSC
 
lunch box plugin
 lunch box plugin  lunch box plugin
lunch box plugin
 
What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟
What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟
What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟
 

More from MirOmranudinAbhar (20)

Dld 2
Dld 2Dld 2
Dld 2
 
Dld 3
Dld 3Dld 3
Dld 3
 
Dld 4
Dld 4Dld 4
Dld 4
 
Dld 1
Dld 1Dld 1
Dld 1
 
java-13
java-13java-13
java-13
 
java-12
java-12java-12
java-12
 
java-11
java-11java-11
java-11
 
java-10
java-10java-10
java-10
 
java-9
java-9java-9
java-9
 
java-8
java-8java-8
java-8
 
java-7
java-7java-7
java-7
 
java-6
java-6java-6
java-6
 
java-5
java-5java-5
java-5
 
java-4
java-4java-4
java-4
 
java-3
java-3java-3
java-3
 
java-2
java-2java-2
java-2
 
java-1
java-1java-1
java-1
 
Software-0
Software-0Software-0
Software-0
 
Net 1
Net 1Net 1
Net 1
 
Net 2
Net 2Net 2
Net 2
 

(Ds+alg) 1

  • 1. Data Structure INTRODUCTION 1 1 Prepared by: Mir Omranudin Abhar Email : MirOmran@Gamil.com Spring , 2019
  • 3. Introduction • . ‫انواع‬ ‫مختلف‬ ‫از‬ Data Structures ‫هستند‬ ‫که‬ ‫برای‬ ‫انواع‬ ‫مختلف‬ ‫از‬ Application ‫ها‬ ‫مناسب‬ ‫میباشند‬ , ‫و‬ ‫بعضی‬ ‫از‬ ‫انها‬ ‫به‬ ‫یک‬ ‫وظیفه‬ ‫خاص‬ ‫دیزاین‬ ‫شده‬ ‫است‬ . ‫بطور‬ ‫مثال‬ B-Trees ‫خوب‬ ‫و‬ ‫مناسب‬ ‫برای‬ ‫پیاده‬ ‫سازی‬ ‫در‬ Databases ‫میباشد‬ . • Data elements ‫به‬ ‫این‬ ‫معنی‬ ‫که‬ ‫چطور‬ ‫ما‬ ‫میتوانیم‬ data ‫را‬ ‫در‬ ‫میموری‬ ‫تنظیم‬ ‫و‬ ‫سازماندهی‬ ‫نمایم‬ , ‫که‬ ‫انواع‬ ‫مختلف‬ ‫از‬ Data structures ‫وجود‬ ‫دارد‬ , ‫که‬ ‫بعضی‬ ‫از‬ ‫انها‬ ‫برای‬ ‫ذخیره‬ ‫کردن‬ ‫یک‬ ‫نوع‬ ‫از‬ Data type ‫بکار‬ ‫میرود‬ ‫و‬ ‫بعضی‬ ‫دیگران‬ ‫برای‬ ‫ذخیره‬ ‫کردن‬ ‫چندین‬ ‫نوع‬ ‫از‬ Data type ‫بکار‬ ‫میرود‬ . ‫که‬ Data Structures ‫ترکیب‬ ‫شده‬ ‫از‬ ‫دو‬ ‫یا‬ ‫بیشتر‬ ‫از‬ ‫دو‬ Data type elements . 3
  • 10. Introduction – Application 10 ‫که‬ ‫های‬ ‫ساحه‬ Data Structures ‫میباشد‬ ‫ذیل‬ ‫قرار‬ ‫دارد‬ ‫کاربرد‬ ‫وسیع‬ ‫بشکل‬ : • Database Management System • Compiler Design • Network Analysis • Numerical Analyses • Artificial Intelligence • Simulation • Operating System • Graphics
  • 11. Introduction – Type .1 ‫تقسیم‬ ‫اساس‬ ‫به‬ ‫بندی‬ Size 1. Static Data Structures ‫به‬ Data Structures ‫سایز‬ ‫یک‬ ‫به‬ ‫بتواینم‬ ‫ما‬ ‫یعنی‬ ‫باشد‬ ‫داشته‬ ‫ثابت‬ ‫سایز‬ ‫که‬ ‫میشود‬ ‫گفته‬ ‫مشخص‬ Data ‫کنیم‬ ‫ذخیره‬ ‫را‬ . 2. Dynamic Data Structures ‫به‬ Data Structures ‫بر‬ ‫اجرای‬ ‫جریان‬ ‫در‬ ‫میتوانند‬ ‫که‬ ‫نبوده‬ ‫ثابت‬ ‫سایزشان‬ ‫که‬ ‫میشود‬ ‫گفته‬ ‫ها‬ ‫نامه‬ ‫کردن‬ ‫کم‬ ‫یا‬ ‫و‬ ‫کردن‬ ‫اضافه‬ ‫توانایی‬ ‫یعنی‬ ‫کنند‬ ‫تغیر‬ ‫شان‬ ‫سایز‬ Data ‫باشند‬ ‫داشته‬ ‫خود‬ ‫گاه‬ ‫ذخیره‬ ‫از‬ ‫را‬ . 11
  • 12. Introduction – Type .2 ‫ها‬ ‫رخداد‬ ‫اساس‬ ‫به‬ ‫بندی‬ ‫تقسیم‬ 1. Linear Data Structures ‫به‬ Data Structures ‫گفته‬ ‫میشود‬ ‫که‬ Data ‫در‬ ‫موقعیت‬ ‫های‬ ‫مسلسل‬ ‫در‬ ‫میمیوری‬ ‫ذخیره‬ ‫میشود‬ , ‫و‬ ‫همچنان‬ ‫هر‬ Element ‫از‬ ‫این‬ ‫نوع‬ ‫ساختار‬ ‫دارای‬ ‫ماقبل‬ ‫و‬ ‫مابعد‬ ‫های‬ ‫خاص‬ ‫و‬ ‫جدا‬ ‫گانه‬ ‫میباشد‬ . 2. Non-Linear Data Structures ‫به‬ Data Structures ‫ها‬ ‫گفته‬ ‫میشود‬ ‫که‬ Data ‫در‬ ‫موقعیت‬ ‫های‬ ‫غیر‬ ‫مسلسل‬ ‫در‬ ‫میموری‬ ‫ذخیره‬ ‫میشود‬ , ‫و‬ ‫همچنان‬ ‫هر‬ Element ‫از‬ ‫این‬ ‫نوع‬ ‫ساختار‬ ‫میتوانند‬ ‫دارای‬ ‫ماقبل‬ ‫و‬ ‫مابعد‬ ‫های‬ ‫یکسان‬ ‫داشت‬ ‫ه‬ ‫باشند‬ , ‫که‬ Data ‫بشکل‬ Graph , Tree ‫وغیره‬ ‫در‬ ‫میموری‬ ‫ذخیره‬ ‫میشود‬ . 12
  • 13. Introduction – Type 13 Data Structure Logical Data Structure Physical Data Structures Linear Data Structures Non-Linear Data Structures · Tree · Graph · Int · Float · Char List Linear List Linked List · Array · Stock · Queue · Dequeue · Circular · One way · Two way · Circular
  • 14. Introduction – Type 3 . Data Structures ‫اولیه‬ ‫غیر‬ ‫و‬ ‫اولیه‬ 1. Primitive Data Structures Primitive Data Structures ‫عبارت‬ ‫است‬ Data Structures ‫های‬ Basic ‫بوده‬ ‫که‬ ‫مستقیم‬ ‫توسط‬ ‫ماشین‬ ‫اجرا‬ ‫میشود‬ , ‫که‬ ‫در‬ ‫کمپیوتر‬ ‫های‬ ‫مختلف‬ ‫به‬ ‫اشکال‬ ‫مخلتف‬ ‫ارایه‬ ‫میشود‬ . ‫که‬ Integers , Floating point numbers , characters , string ‫از‬ ‫جمله‬ ‫انواع‬ ‫آن‬ ‫میباشد‬ . 2. Non-Primitive Data Structures Non-Primitive Data Structures ‫عبارت‬ ‫است‬ Data Structures ‫های‬ ‫بسیار‬ ‫پیچیده‬ ‫بوده‬ ‫که‬ ‫از‬ ‫آن‬ ‫برای‬ ‫سازماندهی‬ ‫گروپ‬ ‫از‬ Data ‫های‬ ‫همنوع‬ ‫بکار‬ ‫میرود‬ ‫که‬ ‫تشکیل‬ ‫شده‬ ‫از‬ Primitive Data structures ‫های‬ ‫میباشد‬ . Array Files, Linked Lists, trees, graph, Lists , ‫از‬ ‫انواع‬ Non- primitive data Structures ‫میباشد‬ . 14
  • 15. Introduction – Type 15 Data Structures Primitive Data Structures Non-Primitive Data Structuers Integer Float Character Pointer Arrays Lists Files Linear lists Non-Linear Lists Stacks Queues Graphs Trees
  • 16. Introduction– Operation[Data Structure] ‫پروسس‬ ‫های‬ ‫که‬ ‫در‬ ‫میموری‬ ‫باالی‬ Data ‫انجام‬ ‫میشود‬ ‫قرار‬ ‫ذیل‬ ‫میباشد‬ : 1. Creating ‫این‬ ‫اولین‬ ‫عملیه‬ ‫میباشد‬ ‫برای‬ ‫ایجاد‬ ‫کردن‬ ‫یک‬ Data Structures ‫در‬ ‫میموری‬ . ‫و‬ ‫این‬ ‫فقط‬ ‫عملیه‬ ‫اعالن‬ ‫کردن‬ ‫و‬ ‫مقدار‬ ‫دهی‬ ‫کردن‬ Data Structures ‫و‬ ‫گرفتن‬ ‫یک‬ ‫تعداد‬ ‫موقعیت‬ ‫ها‬ ‫در‬ ‫میموری‬ ‫برای‬ Element ‫ها‬ ‫از‬ Data ‫انجام‬ ‫میدهد‬ . 2. Inserting ‫اضافه‬ ‫کردن‬ ‫یک‬ Record ‫در‬ Structures . 3. Deleting ‫حذف‬ ‫کردن‬ ‫یک‬ Record ‫از‬ Structures . 16
  • 17. Introduction– Operation[Data Structure] 4. Updating ‫تغیر‬ ‫اوردن‬ ‫در‬ Value ‫از‬ Data ‫در‬ Data Structures . 5. Traversing ‫دسترسی‬ ‫پیدا‬ ‫کردن‬ ‫به‬ ‫شکل‬ ‫واقعی‬ ‫به‬ ‫هر‬ Record ‫ذخیره‬ ‫شده‬ ‫در‬ Structures . 6. Searching ‫جستجو‬ ‫کردن‬ ‫موقعیت‬ ‫یک‬ Record ‫از‬ ‫بین‬ ‫تمام‬ Record ‫های‬ ‫ذخیره‬ ‫شده‬ ‫در‬ Structures . 17
  • 18. Introduction– Operation[Data Structure] 7. Sorting ‫کردن‬ ‫مرتب‬ Data Elements ‫میموری‬ ‫در‬ , ‫نزولی‬ ‫بشکل‬ ‫یا‬ ‫و‬ ‫صعودی‬ ‫بشکل‬ . 8. Merging ‫دادن‬ ‫ترکیب‬ Data Elements ‫ست‬ ‫یا‬ ‫مجموعه‬ ‫دریک‬ ‫مختلف‬ ‫مجموعه‬ ‫دو‬ ‫از‬ ‫ها‬ . 9. Destroying ‫این‬ ‫اخرین‬ ‫عملیه‬ ‫از‬ Data Structures ‫میباشد‬ , ‫زمانی‬ ‫استفاده‬ ‫میشود‬ ‫که‬ ‫دیگر‬ ‫کاری‬ ‫و‬ ‫یا‬ ‫استفا‬ ‫ده‬ ‫از‬ Data Structures ‫ایجاد‬ ‫شده‬ ‫در‬ ‫میموری‬ ‫نیاز‬ ‫نباشد‬ , ‫برای‬ ‫از‬ ‫بین‬ ‫بردن‬ ‫و‬ ‫یا‬ ‫پاک‬ ‫کردن‬ ‫ان‬ ‫از‬ ‫ای‬ ‫ن‬ ‫عملیه‬ ‫استفاده‬ ‫میشود‬ . 18
  • 19. Introduction – Algorithm ‫زمانیکه‬ ‫ما‬ ‫بخواهیم‬ ‫یک‬ Data Structures ‫را‬ ‫برای‬ ‫یک‬ Application ‫خاص‬ ‫انتخاب‬ ‫کنیم‬ , ‫در‬ ‫این‬ ‫صورت‬ ‫ما‬ ‫باید‬ ‫یک‬ ‫الگوریتم‬ ‫را‬ Develop ‫کنیم‬ ‫تا‬ Data item ‫های‬ ‫مرتبط‬ ‫به‬ ‫ان‬ ‫را‬ ‫باهم‬ ‫سازگار‬ ‫ساخته‬ ‫و‬ ‫انرا‬ ‫ذخیره‬ ‫کند‬ . ‫یک‬ ‫الگوریتم‬ ‫باید‬ ‫این‬ ‫ویژگی‬ ‫های‬ ‫ذیل‬ ‫را‬ ‫داشته‬ ‫باشد‬ : • ‫نباشد‬ ‫مبهم‬ ‫باید‬ ‫الگوریتم‬ • ‫باشد‬ ‫مختصر‬ ‫باید‬ ‫الگوریتم‬ • ‫باشد‬ ‫موثر‬ ‫باید‬ ‫الگوریتم‬ 19
  • 20. Introduction – Algorithm ‫الگوریتم‬ ‫یک‬ ‫پالن‬ ‫دقیق‬ ‫میباشد‬ , ‫که‬ ‫بواسطه‬ ‫اجرا‬ ‫کردن‬ ‫یک‬ ‫سلسله‬ ‫از‬ Action ‫ها‬ , ‫برای‬ ‫رسیدن‬ ‫به‬ ‫یک‬ ‫هدف‬ ‫از‬ ‫قبل‬ ‫تعین‬ ‫شده‬ ‫بکار‬ ‫میرود‬ . ‫و‬ ‫یا‬ ‫یک‬ ‫سلسله‬ ‫از‬ ‫عملکرد‬ ‫های‬ ‫منطقی‬ ‫میباشد‬ ‫که‬ ‫م‬ ‫رحله‬ ‫به‬ ‫مرحله‬ ‫انجام‬ ‫شده‬ ‫باعث‬ ‫حل‬ ‫یک‬ ‫مشکل‬ ‫میشود‬ . ‫هر‬ ‫الگوریم‬ ‫باید‬ ‫شامل‬ ‫موارد‬ ‫ذیل‬ ‫باشد‬ : • ‫باشد‬ ‫داشته‬ ‫ورودی‬ • ‫باشد‬ ‫داشته‬ ‫خروجی‬ • ‫باشد‬ ‫واضح‬ • ‫باشد‬ ‫محدود‬ • ‫باشد‬ ‫داشته‬ ‫موثریت‬ 20
  • 22. Introduction – Algorithm ‫باید‬ ‫الگوریتم‬ ‫هر‬ ‫در‬ ‫اصل‬ ‫چهار‬ ‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫اساسی‬ : 1. Generality ‫مشکل‬ ‫یک‬ ‫برای‬ ‫تنها‬ ‫نه‬ ‫باشد‬ ‫شده‬ ‫دیزاین‬ ‫مشکالت‬ ‫از‬ ‫گروپ‬ ‫حل‬ ‫برای‬ ‫باید‬ ‫الکوریتم‬ ‫یک‬ . ‫ی‬ ‫عنی‬ ‫مشک‬ ‫ان‬ ‫از‬ ‫نوع‬ ‫به‬ ‫حالت‬ ‫هر‬ ‫در‬ ‫و‬ ‫جا‬ ‫هر‬ ‫در‬ ‫باشد‬ ‫داشته‬ ‫عمومیت‬ ‫باید‬ ‫میشود‬ ‫دیزاین‬ ‫که‬ ‫الکوریتم‬ ‫بر‬ ‫ل‬ ‫بسیازیم‬ ‫حل‬ ‫انرا‬ ‫بتوانیم‬ ‫الکوریتم‬ ‫ان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میخوریم‬ . 22
  • 23. Introduction – Algorithm 2. Good Structures ‫باشد‬ ‫داشته‬ ‫خوب‬ ‫خیلی‬ ‫ساختار‬ ‫یک‬ ‫باید‬ ‫الکوریتم‬ ‫یک‬ , ‫توسط‬ ‫که‬ Building Block ‫شده‬ ‫ایجاد‬ ‫خوب‬ ‫باشد‬ : • ‫باشد‬ ‫شده‬ ‫داده‬ ‫شرح‬ ‫خوب‬ • ‫باشد‬ ‫فهم‬ ‫قابل‬ • Test ‫باشد‬ ‫شده‬ • ‫باشد‬ ‫داشته‬ ‫اوردن‬ ‫تغیر‬ ‫و‬ ‫شدن‬ ‫اصالح‬ ‫قابل‬ . 23
  • 24. Introduction – Algorithm 3. Efficiency ‫باال‬ ‫اش‬ ‫پروسس‬ ‫سرعت‬ ‫مثال‬ ‫لحاظ‬ ‫هر‬ ‫از‬ ‫باشد‬ ‫داشته‬ ‫مفیدیت‬ ‫و‬ ‫موثریت‬ ‫باید‬ ‫الکوریتم‬ ‫یک‬ ‫باشد‬ , ‫از‬ ‫برسد‬ ‫هدف‬ ‫ان‬ ‫به‬ ‫خوبی‬ ‫به‬ ‫بسیار‬ ‫شده‬ ‫طراحی‬ ‫که‬ ‫هدف‬ ‫هر‬ ‫برای‬ ‫و‬ ‫کند‬ ‫استفاده‬ ‫کمتر‬ ‫حافظه‬ . 4. Ease of use ‫باشد‬ ‫استفاده‬ ‫قابل‬ ‫آسانی‬ ‫به‬ ‫بسیار‬ ‫باید‬ ‫الکوریتم‬ ‫یک‬ . 24
  • 25. Introduction – Algorithm [example] 25 ‫بگیر‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫مستطیل‬ ‫یک‬ ‫مساحت‬ ‫اوردن‬ ‫بدست‬ ‫برای‬ ‫که‬ ‫بنویسید‬ ‫را‬ ‫الگوریتم‬ ‫د؟‬
  • 26. Introduction – Algorithm [example] 26 ‫د‬ ‫که‬ ‫اشخاص‬ ‫به‬ ‫مساوی‬ ‫بطور‬ ‫شرکت‬ ‫یک‬ ‫سرمایه‬ ‫کردن‬ ‫تقسیم‬ ‫برای‬ ‫که‬ ‫بنویسید‬ ‫را‬ ‫الگوریتم‬ ‫شرکت‬ ‫ر‬ ‫استند؟‬ ‫سهیم‬
  • 27. Introduction – Algorithm [example] 27 ‫انتروال؟‬ ‫یک‬ ‫اساس‬ ‫به‬ ‫مسلسل‬ ‫اعداد‬ ‫جمع‬ ‫حاصل‬ ‫اوردن‬ ‫بدست‬ ‫برای‬ ‫که‬ ‫بنویسید‬ ‫را‬ ‫الگوریتم‬
  • 28. Introduction – Algorithm [example] 28 ‫برود؟‬ ‫بکار‬ ‫ها‬ ‫اسم‬ ‫یک‬ ‫ابجد‬ ‫اوردن‬ ‫بدست‬ ‫برای‬ ‫که‬ ‫بنویسید‬ ‫را‬ ‫الگوریتم‬ 1 2
  • 29. Introduction – Analysis [Algorithm] 29 ‫بعد‬ ‫از‬ ‫طراحی‬ ‫یک‬ ‫الگوریتم‬ ‫ما‬ ‫مجبور‬ ‫هستیم‬ ‫تا‬ ‫انرا‬ ‫تحلیل‬ ‫و‬ ‫تجزیه‬ ‫نمایم‬ ‫تا‬ ‫بتوانیم‬ ‫موث‬ ‫ریت‬ ‫انرا‬ ‫ارزیابی‬ ‫کنیم‬ , ‫با‬ ‫رسیدگی‬ ‫کردن‬ ‫موارد‬ ‫ذیل‬ ‫ما‬ ‫میتوانیم‬ ‫موثریت‬ ‫یک‬ ‫الگوریتم‬ ‫را‬ ‫ارزیابی‬ ‫کنیم‬ : • ‫الگوریتم‬ ‫بودن‬ ‫درست‬ • Implement ‫الگوریتم‬ ‫کردن‬ • ‫الگوریتم‬ ‫بودن‬ ‫ساده‬ • ‫الگوریتم‬ ‫اجرا‬ ‫به‬ ‫ضرورت‬ ‫تایم‬ , ‫میمیوری‬ ‫در‬ ‫الگوریتم‬ ‫نیاز‬ ‫قابل‬ ‫حافظه‬ ‫مقدار‬ ‫و‬
  • 30. Introduction – Analysis [Algorithm] 30 • ‫میتوانیم‬ Analysis ‫یک‬ ‫الگوریتم‬ ‫را‬ ‫توسط‬ ‫بررسی‬ ‫کردن‬ ‫مرحله‬ ‫به‬ ‫مرحله‬ ‫دستورات‬ ‫آن‬ ‫انجام‬ ‫بدهیم‬ . • ‫و‬ ‫همچنان‬ ‫از‬ ‫طریق‬ Test ‫نمودن‬ ‫الگوریتم‬ ‫به‬ ‫اساس‬ ‫تکنیک‬ ‫های‬ ‫ریاضیکی‬ ‫که‬ ‫به‬ ‫اثبات‬ ‫بر‬ ‫ساند‬ ‫درست‬ ‫بودن‬ ‫الگوریتم‬ ‫را‬ , ‫انجام‬ ‫بدهیم‬ . • ‫هر‬ ‫الگوریتم‬ ‫را‬ ‫ما‬ ‫با‬ ‫بررسی‬ ‫نمودن‬ ‫سه‬ ‫حالت‬ ‫ان‬ ‫میتوانیم‬ ‫در‬ ‫باره‬ ‫موثریت‬ ‫ان‬ ‫تصمیم‬ ‫بگ‬ ‫یریم‬ . 1. Worst case running time 2. Average case running time 3. Best case running time
  • 31. Introduction – Space Complexity 31 Analysis ‫کردن‬ Space Complexity ‫یک‬ ‫الگوریتم‬ ‫یا‬ ‫پروگرام‬ ‫عبارت‬ ‫است‬ ‫مقدار‬ ‫از‬ ‫میموری‬ ‫میباشد‬ ‫که‬ ‫آن‬ ‫الگوریتم‬ ‫یا‬ ‫پروگرام‬ ‫برای‬ ‫اجرای‬ ‫مکمل‬ ‫خود‬ ‫به‬ ‫آن‬ ‫نیاز‬ ‫دارد‬ . 1. Instruction Space ‫مکان‬ ‫برای‬ ‫ذخیره‬ ‫یی‬ ‫از‬ ‫ساختار‬ ‫کلی‬ ‫همان‬ ‫پروگرام‬ ‫یا‬ ‫الگوریتم‬ ‫ضرورت‬ ‫میباشد‬ ‫که‬ ‫سایز‬ ‫این‬ ‫ن‬ ‫وع‬ ‫مکان‬ ‫ها‬ ‫ثابت‬ ‫میباشد‬ . 2. Data Space ‫مکان‬ ‫برای‬ ‫ذخیره‬ ‫یی‬ ‫از‬ ‫متغیر‬ ‫های‬ ‫و‬ ‫ثابت‬ ‫های‬ ‫که‬ ‫در‬ ‫پروگرام‬ ‫یا‬ ‫الگوریتم‬ ‫استفاده‬ ‫میشود‬ , ‫ض‬ ‫رورت‬ ‫میباشد‬ . 3. Environment stack space ‫مکان‬ ‫برای‬ ‫ذخیره‬ ‫یی‬ ‫از‬ ‫نتیجه‬ ‫میتود‬ ‫های‬ ‫که‬ ‫در‬ ‫مرحله‬ ‫بعدی‬ ‫از‬ ‫همان‬ ‫الگوریتم‬ ‫یا‬ ‫پروگرام‬ ‫نیاز‬ ‫ب‬ ‫ه‬ ‫استفاده‬ ‫دوباره‬ ‫ان‬ ‫میشود‬ .
  • 32. Introduction – Time Complexity 32 Time Complexity ‫یک‬ ‫الگوریتم‬ ‫یا‬ ‫پروگرام‬ ‫عبارت‬ ‫است‬ ‫مقدار‬ ‫از‬ ‫زمان‬ ‫است‬ ‫که‬ ‫برای‬ ‫اجرا‬ ‫شدن‬ ‫مکمل‬ ‫به‬ ‫آن‬ ‫یک‬ ‫الگوریتم‬ ‫یا‬ ‫پروگرام‬ ‫نیاز‬ ‫دارد‬ . ‫که‬ ‫در‬ ‫حقیقت‬ Time ‫وابسته‬ ‫به‬ Implementation ‫یک‬ ‫الگوریتم‬ ‫یا‬ ‫پروگرام‬ , ‫قدرت‬ ‫یا‬ ‫توانایی‬ Compiler ‫که‬ ‫از‬ ‫آن‬ ‫استفاده‬ ‫میشود‬ , ‫سرعت‬ CPU , ‫و‬ ‫دیگر‬ hardware ‫ها‬ ‫میباشد‬ .
  • 33. Introduction – Asymptotic Notation 33 Asymptotic notation ‫یک‬ ‫روش‬ ‫آسان‬ ‫و‬ ‫کوتاه‬ ‫برای‬ ‫ارایه‬ ‫نمودن‬ Time Complexity ‫استفاده‬ ‫میشود‬ . • Theta Notation ( Ω ) • Big Oh Notation ( O ) • Omega Notation ( Ө )
  • 34. Introduction – Theta Notation ( Ω ) 34 ‫این‬ ‫نوع‬ notation ‫برای‬ ‫نمایش‬ ‫دادن‬ ‫یا‬ ‫ارایه‬ ‫نمودن‬ time complexity ‫بین‬ ‫باالترین‬ ‫مرز‬ ‫و‬ ‫پایین‬ ‫ترین‬ ‫مرز‬ ‫زمانی‬ ‫یک‬ ‫الگوریتم‬ ‫بکار‬ ‫میرود‬ .
  • 35. Introduction – Big Oh Notation ( O ) 35 ‫این‬ ‫نوع‬ notation ‫برای‬ ‫نمایش‬ ‫دادن‬ ‫یا‬ ‫ارایه‬ ‫نمودن‬ time complexity ‫بین‬ ‫باالترین‬ ‫مرز‬ ‫زمانی‬ ‫یک‬ ‫الگوریتم‬ ‫بکار‬ ‫میرود‬ .
  • 36. Introduction – Omega Notation ( Ө ) 36 ‫این‬ ‫نوع‬ notation ‫برای‬ ‫نمایش‬ ‫دادن‬ ‫یا‬ ‫ارایه‬ ‫نمودن‬ time complexity ‫بین‬ ‫پایین‬ ‫ترین‬ ‫مرز‬ ‫زمانی‬ ‫یک‬ ‫الگوریتم‬ ‫بکار‬ ‫میرود‬ .
  • 37. 37 𝑜( 1) ⇒ 𝑂(1) Time Complexity Space Complexity n →1 Space Complexity 𝑂(1) Complexity – example ( 1 )
  • 38. 38 𝑜( 1+1+1) ⇒ 𝑂(3) Space Complexity n →1 name →1 i →1 Space Complexity 𝑂(3) Time Complexity Complexity – example ( 2 )
  • 39. 39 𝑜( 1+(𝑛 + 1) + 𝑛 ) O(2 + 2𝑛) ⇒ 𝑂(𝑛) Space Complexity n →1 Space Complexity 𝑂(1) Time Complexity Complexity – example ( 3 )
  • 40. 40 O( 1+(1+ (𝑛 + 1) + 𝑛)) O(2 + 2𝑛) ⇒ 𝑂(𝑛) Space Complexity n →1 i →1 Space Complexity 𝑂(2) Time Complexity Complexity – example ( 4 )
  • 41. 41 𝑜(1 + 1 + 1 + 𝑛 + 1 + 𝑛) 𝑜(4 + 2𝑛) ⇒ 𝑂(𝑛) Space Complexity n →1 name →1 sum →1 i →1 Space Complexity 𝑂(4) Time Complexity Complexity – example ( 5 )
  • 42. 42 𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 𝑛 2 ⇒ 𝑜(𝑛 ) 𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(1 ) Complexity – example (6)
  • 44. 44 𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 22 𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(2) Complexity – example ( 7 )
  • 46. 46 𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 46 𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(2) Complexity – example ( 8 )
  • 48. 48 n →1 𝑖 →1 𝑥 →1 Space Complexity 𝑂 3 Time Complexity 𝑂(𝑛) Complexity – example ( 9 )
  • 50. 50 Complexity – example ( 10 ) n →1 𝑖 →1 𝑥 →1 Space Complexity 𝑂 3 Time Complexity 𝑂(𝑛2)
  • 54. 54 Complexity – optional 𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 𝑛 𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(1 )
  • 55. 55 𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 𝑛 + 𝑛 + 𝑛 ⇒ O 3n ⇒ O(n) 𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 𝑛 + 1 + 𝑛 + 1 ⇒ 𝑂 2𝑛 + 1 ⇒ 𝑂(𝑛) Complexity – optional
  • 56. 56 𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂 𝑛 𝑛 + 1 2 = 𝑂( 𝑛2 + 𝑛 2 ) ⇒ 𝑜(𝑛2) 𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(2 ) Complexity – optional
  • 57. 57 𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ ⇒ 2𝑘= 𝑛 ⇒ 𝑘 = log2 𝑛 ⇒ O(log2 𝑛) 𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(1 ) Complexity – optional
  • 58. 58 𝑡𝑖𝑚𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ ⇒ 𝑛 2𝑘 ≥ 1 ⇒ 𝑘 = log2 𝑛 ⇒ O(log2 𝑛) 𝑠𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 ⇒ 𝑂(1 ) Complexity – optional