data structure intro

33
รายวิชา ง 40206 โครงสร้าง ข้อมูลและขั้นตอนวิธี โรงเรียนมหิดลวิทยานุสรณ์

Upload: korn-kpt

Post on 07-Jul-2015

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Data structure intro

รายว ชา ง40206 โครงสร างข อม ลและขนตอนวธ

โรงเรยนมหดลวทยานสรณ

Page 2: Data structure intro

ความร เบ องต นของโครงสร างข อมลและขนตอนวธ

Page 3: Data structure intro

“ความหมาย โครงสราง”ขอมล

• การรวมประเภทขอมล (Data Type) เขาไวดวยกน จนกลาย

เปนกลมประเภทขอมล และมนยามความสมพนธภายในกลมขอมล

อยางชดเจน•การรวมกลมนอาจเปนการรวมกลม

กนระหวางขอมลประเภทเดยวกน ตางประเภทกน หรอตางโครงสราง

ขอมลกนกได

Page 4: Data structure intro

“ ”ความหมาย อลกอรธม

• ลำาดบขนตอนวธในการทำางานของโปรแกรมเพอแกปญหาใดปญหา

หนง ซงถาปฏบตตามขนตอนอยาง ถกตองแลว จะตองสามารถชวยแก

ปญหาหรอประมวลผลตามตองการไดสำาเรจ

Page 5: Data structure intro

ประเภทของโครงสรางขอมล• ดานกายภาพ

– Primitive Data Type เช น char, int, float– Structure Data Type เช น array, struct

• ดานตรรกกะ- Linear Data Structure - Non-linear Data Structure

A C K S5

3 8

-1 4 12

-1 3 4 5 8 12

Page 6: Data structure intro
Page 7: Data structure intro

วตถประสงคของการศกษาโครงสรางขอมลและขนตอนวธ

โปรแกรมทำางานไดอยางรวดเร ว

ใชเน อท หนวยความจำานอยทสด

Page 8: Data structure intro

เทคนคทชวยในการออกแบบ

• ผงงาน (Flowchart)– ผงงานระบบ (System Flowchart)– ผงงานโปรแกรม (Program Flowchart)

• รหสเทยม (Pseudocode)– ใชอธบายการทำางานของอลกอรธม ทำาใหไมตองเขยน

อธบายดวย code– ไมขนกบภาษาคอมพวเตอรภาษาใดภาษาหนง– อาจเปนภาษาไทยหรอภาษาอนกได แตการใชภาษาองกฤษจะสะดวกทสด

Page 9: Data structure intro

Pseudocode• เปนคำาสงทมลกษณะการเขยนใกลเคยงกบภาษา

องกฤษ แตมโครงสรางเกอบจะเปนภาษาโปรแกรมเชน– เรมตนอาจใหมคำาวา BEGIN จบลงใหใช END– อาน เขยนขอมลอาจใช READ และ PRINT – การทดสอบเงอนไขอาจใช IF , ELSE , ELSEIF – การทำาซำาอาจใช WHILE , DO ENDWHILE เปนตน

Page 10: Data structure intro

ตวอยาง Pseudocode

BEGIN

READ A, B

SUM = A+B

IF SUM > 10 THEN

PRINT SUM

ELSE

PRINT A-B

END

Page 11: Data structure intro

ตวอยาง PseudocodeAlgorithm arrayMax(A,n)

Input: An array A storing n integers.

Output: The maximum element in A.

currentMax < A[0]

for I <- 1 to n-1 do

if currentMax < A[i] then

currentMax <- A[i]

return currentMax

Page 12: Data structure intro

ตวอยาง Pseudocode

Page 13: Data structure intro

การวเคราะหประสทธภาพของอลกอรธม

• Space/Memory :

ใชเนอทความจำามากนอยแคไหน• Time

เวลาทใชในการประมวลผล

Page 14: Data structure intro

การว เคราะห Space Complexity การวเคราะหวาจะตองใชหนวยความจำา

ทงหมดเทาไรในการประมวลผลอลกอรธมนน • รองร บจ ำานวนขอม ลท ส งเข ามาประมวลผล (Input Data) ได มากทส ดเท าใด เพ อให อ ลกอร ธมน นสามารถประมวลผลไดอย

•ทราบขนาดของหนวยความจำาท จะต องใชในการ ประมวลผลอลกอร ธ ม เพ อไม ให กระทบกบการ

ทำางานของคนอน

•เพ อเล อกค ณลกษณะของคอมพวเตอร ท จะใชต ดต งโปรแกรมทพ ฒนาขนได อย างเหมาะสม

Page 15: Data structure intro

องคประกอบของ Space Complexity • Instruction Space

– จำานวนของหนวยความจำาทคอมไพเลอร จ ำาเป นต องใชขณะทำาการคอมไพลโปรแกรม

• Data Space – จำานวนหนวยความจำาทต องใชส ำาหร บเก บค า

คงท และต วแปรทงหมดทต องใชในการประมวลผลโปรแกรม

• Environment Stack Space – จำานวนหนวยความจำาทต องใชในการเก บ

ผลลพธ ของขอม ลเอาไว เพ อรอเวลาทจะน ำา ผลลพธ น นกล บไปประมวลผลอกคร ง ( พบใน

recursive function)

Page 16: Data structure intro

Data Space• Static memory allocationStatic memory allocation

จำานวนของหนวยความจำาท ต องใชอย างแนนอน ไมม การเปล ยนแปลง ประกอบดวยหนวยความจำาท ใช เก บค า

คงทและต วแปรประเภท array – เช น การประกาศตวแปร int a, b; char s[10], c;

• Dynamic memory allocationDynamic memory allocation

จำานวนของหนวยความจำาท ใช ในการประมวลผล สามารถเปล ยนแปลงได และจะทราบจำานวนหนวยความ

จำาท จะใชก ต อเม อโปรแกรมกำาล งท ำางานอย– เช น การใช pointer และม การจองเน อท ในหนวยความจ ำาด วยค ำาส ง malloc();

int *p;

p = malloc(sizeof(int)*2);

Page 17: Data structure intro

ตวอย างการว เคราะห Space Complexity {

int num1, num2, temp;

temp = num1;

num1 = num2;

num2 = temp;

} ใชหนวยความจำา 6 bytes

Page 18: Data structure intro

ตวอย างการว เคราะห Space Complexity int factorial(int n)

{

if (n==0)

return 1;

else

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

} ใชหนวยความจำา 4 × Max{1, n}

คา 4 คำานวณมาจาก หนวยความจำาส ำาหร บเก บ address 2 bytes และต วแปร ชนด integer อก 2 bytes

Page 19: Data structure intro

factorial(4)

4 x factorial(3)

factorial(0) = 1

1

1x1=1

2x1=2

3x2=6

4x6=24

หาคา 4! โดยใชrecursive

3 x factorial(2)factorial(3)

2 x factorial(1)factorial(2)

1 x factorial(0)factorial(1)

Page 20: Data structure intro

การว เคราะห Time Complexity คอ เวลาทเคร องคอมพวเตอร ต องใช

ในการประมวลผลอลกอร ธม

ว เคราะหเพ อ ... ประมาณเวลาทงหมดทต องใชในโปรแกรมได มงประเด นการแกไขไปทอ ลกอร ธ มท ใช เวลาใน

การประมวลผลนานๆ ทำาให ไม ต องแก ไขทงโปรแกรม

โปรแกรมคอมพวเตอร ท ท ำางานแบบ Interactive เล อกค ณลกษณะของคอมพวเตอร ท จะใชต ดต ง

โปรแกรมทพ ฒนาขนได อย างเหมาะสม

??

Page 21: Data structure intro

เวลาในการประมวลผลของโปรแกรมCompile TimeCompile Time คอ เวลาทใชในการตรวจ

สอบไวยากรณ (syntax) ของ code วาเขยนได ถกตองหรอไม

Run Time Run Time หรอ หรอ Execution TimeExecution Time คอเวลาทเครองคอมพวเตอรใชในการประมวลผล

Page 22: Data structure intro

การว เคราะห Time Complexity ดวยว ธ การนบต วด ำาเน นการ

แบบ Linear Loops แบบ Logarithmic Loops แบบ Nested Loops

Page 23: Data structure intro

แบบ Linear Loops อลกอรธมมการทำางานแบบวนรอบ (Loop) โดย

แตละ loop จะมการเพมหรอลดคาในปรมาณทคงทเชน x = 1

Loop (x <= 2000) x = x+5

x = 1Loop (x <= 2000) x = x+1

ถาให f(n) แทนประสทธภาพ และ n แทนจำานวนรอบ การทำางาน สามารถเขยนเปนสมการวดประสทธภาพขอ

งอลกอรธมแบบ Linear loop ไดดงนf(n) = n

Page 24: Data structure intro

แบบ Logarithmic Loops อลกอรธมจะทำางานแบบ Loop โดยการทำางาน

ภายในแตละ loop จะเพมหรอลดคาเปนเทาตว x = 1Loop (x < 1000)

x = x*2

x = 1000Loop (x >= 1)

x = x/2

ถาให f(n) แทนประสทธภาพ และ n แทนจำานวนรอบ การทำางาน สามารถเขยนเปนสมการวดประสทธภาพได

ดงน f(n) = [logn]

Page 25: Data structure intro

แบบ Nested Loops

คอ อ ลกอร ธ มท ม loop ซอนอยภายในloop โดยประส ทธ ภาพของอลกอร ธ มก จะมค า

เทาก บจ ำานวน loop ทงหมดทจะต องประมวลผล ซงหาไดจากการเอาจ ำานวน loop ทซอนก นมา

คณกน

f(n) = n2 f(n) = n3

Page 26: Data structure intro

Big-O Notation

• การวเคราะหอลกอรธม จะใชวธหาจำานวนครงของ การทำางานของโปรแกรม โดยมกจะสนใจคาโดย

ประมาณเทานน ซงจะใชสญลกษณวา O เรยกวา บกโอ (big O) ซงเปนสญลกษณทางคณตศาสตร

ทมาจากคำาวา Order of Magnitude

•O(N), O(logN), O(N2), O(1)

Page 27: Data structure intro

Big-O Notation

• แนวความคดของบกโอ จะดจากคาทมผลกระทบมากทสดเพยงคาเดยว

• คาอนๆทเกยวของจะมผลตอฟงกชนนอยกวา จง ไมสนใจ และไมสนใจคาคงทดวย

ตวอยาง หาคาบกโอของ N4 + 10N – 5

ถา f(N) = N4 + 10N – 5

O(f(N)) = O(N4)

Page 28: Data structure intro

ตวอยาง หาคาบกโอของ 100N +1

ถา f(N) = 100N +1

O(f(N)) = O(N)

ตวอยาง หาคาบกโอของ N/5 +100

ถา f(N) = N/5 +100

O(f(N)) = O(N)

Page 29: Data structure intro

ตวอยาง หาคาบกโอของ N3 + 2N3 + 10

ถา f(N) = N3 + 2N3 + 10

O(f(N)) = O(N3)

ตวอยาง หาคาบกโอของ 100

ถา f(N) = 100

O(f(N)) = O(1)

Page 30: Data structure intro

การวเคราะหความเรวของ Algorithm

log n n n log n n2 n3 2n

0 1 0 1 1 21 2 2 4 8 42 4 8 16 64 163 8 24 64 512 2564 16 64 256 4096 65,5365 32 160 1,024 32,768 4,294,967,296

เร ว ชา

Page 31: Data structure intro

log n n n log n n2 n3 2n

0 1 0 1 1 21 2 2 4 8 42 4 8 16 64 163 8 24 64 512 2564 16 64 256 4096 65,5365 32 160 1,024 32,768 4,294,967,296

1

10

100

1000

10000

100000

n

n2

n log n

n

log n

n32n

Page 32: Data structure intro

Running time calculationsA simple Example

int sum(int n)

{ int i, partialSum;

partialSum = 0; //1

for(i=1;i<N;i++) //2

partialSum += i*i*i; //3

return partialSum;

}

-> Count for 1 unit per time executed

-> Count for 2N+1 units

-> 4N units

The total is 6N+2

This function is O(N)

Page 33: Data structure intro

Running time calculationsA simple Example

int factorial(int n)

{ int fac

if((n==0)||(n=1))

fac = 1;

else

fac = n*factorial(n-1);

}

-> Running time = 1

-> เรยกตวเอง N ครง

This function is O(N)