SlideShare a Scribd company logo
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

PDF
Crisp dm.1.0
PPTX
data base 3 dade paygah va azmayesh.pptx
PDF
Sql tuning
PDF
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
PDF
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
PPT
اسلايد آموزشي هوش تجاري
PDF
Machine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
PDF
(ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ...
Crisp dm.1.0
data base 3 dade paygah va azmayesh.pptx
Sql tuning
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
اسلايد آموزشي هوش تجاري
Machine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
(ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ...

Similar to (Ds+alg) 1 (11)

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

(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