รายวิชา ง40 206 ...

33
รรรรรรร ร40206 รรรรรรรรร รรรรรรรรรรรรรรรรรรรร โโโโโโโโโโโโโโโโโโโโโโโโ

Upload: chessa

Post on 15-Jan-2016

62 views

Category:

Documents


0 download

DESCRIPTION

รายวิชา ง40 206 โครงสร้างข้อมูลและขั้นตอนวิธี. โรงเรียนมหิดลวิทยานุสรณ์. ความรู้เบื้องต้นของโครงสร้างข้อมูลและขั้นตอนวิธี. ความหมาย “โครงสร้างข้อมูล”. การรวมประเภทข้อมูล (Data Type) เข้าไว้ด้วยกัน จนกลายเป็นกลุ่มประเภทข้อมูล และมีนิยามความสัมพันธ์ภายในกลุ่มข้อมูลอย่างชัดเจน - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

รายวิ�ชา ง40206 โครงสร�างข้�อมู�ลและข้��นตอนวิ�ธี�

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

Page 2: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

ควิามูร��เบื้��องต�นข้องโครงสร�างข้�อมู�ลและข้��นตอนวิ�ธี�

Page 3: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

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

• การรวิมประเภทข้�อม�ล (Data Type) เข้�าไวิ�ด�วิยก�น จนกลายเป!นกล�"มประเภทข้�อม�ล และม�นยามควิามส�มพั�นธ์�ภายในกล�"มข้�อม�ลอย"างชั�ดเจน

• การรวิมกล�"มน�(อาจเป!นการรวิมกล�"มก�นระหิวิ"างข้�อม�ลประเภทเด�ยวิก�น ต่"างประเภทก�น หิร*อต่"างโครงสร�างข้�อม�ลก�นก+ได�

Page 4: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

“ ”ควิามหิมาย อ�ลกอรธ์,ม• ล-าด�บข้�(นต่อนวิธ์�ในการท-างานข้องโปรแกรมเพั*/อ

แก�ป0ญหิาใดป0ญหิาหิน,/ง ซึ่,/งถ้�าปฏิบ�ต่ต่ามข้�(นต่อนอย"างถ้�กต่�องแล�วิ จะต่�องสามารถ้ชั"วิยแก�ป0ญหิาหิร*อประมวิลผลต่ามต่�องการได�ส-าเร+จ

Page 5: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

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

– 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: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี
Page 7: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

วิ�ต่ถ้�ประสงค�ข้องการศึ,กษาโครงสร�างข้�อม�ลและข้�(นต่อนวิธ์�

โปรแกรมูทำ!างานได้�อย�างรวิด้เร$วิ

ใช�เน��อทำ�&หน�วิยควิามูจำ!าน�อยทำ�&ส)ด้

Page 8: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

เทคนคท�/ชั"วิยในการออกแบบ

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

• รหิ�สเท�ยม (Pseudocode)– ใชั�อธ์บายการท-างานข้องอ�ลกอรธ์,ม ท-าใหิ�ไม"ต่�องเข้�ยนอธ์บาย

ด�วิย code– ไม"ข้,(นก�บภาษาคอมพัวิเต่อร�ภาษาใดภาษาหิน,/ง– อาจเป!นภาษาไทยหิร*อภาษาอ*/นก+ได� แต่"การใชั�ภาษาอ�งกฤษจะ

สะดวิกท�/ส�ด

Page 9: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Pseudocode• เป!นค-าส�/งท�/ม�ล�กษณ์ะการเข้�ยนใกล�เค�ยงก�บภาษา

อ�งกฤษ แต่"ม�โครงสร�างเก*อบจะเป!นภาษาโปรแกรม เชั"น– เร/มต่�นอาจใหิ�ม�ค-าวิ"า BEGIN จบลงใหิ�ใชั� END– อ"าน เข้�ยนข้�อม�ลอาจใชั� READ และ PRINT – การทดสอบเง*/อนไข้อาจใชั� IF , ELSE , ELSEIF – การท-าซึ่-(าอาจใชั� WHILE , DO ENDWHILE เป!นต่�น

Page 10: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

ต่�วิอย"าง Pseudocode

BEGIN

READ A, B

SUM = A+B

IF SUM > 10 THEN

PRINT SUM

ELSE

PRINT A-B

END

Page 11: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

ต่�วิอย"าง 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 doif currentMax < A[i] then

currentMax <- A[i]return currentMax

Page 12: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

ต่�วิอย"าง Pseudocode

Page 13: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การวิเคราะหิ�ประสทธ์ภาพัข้องอ�ลกอรธ์,ม

• Space/Memory :

ใชั�เน*(อท�/ควิามจ-ามากน�อยแค"ไหิน• Time

เวิลาท�/ใชั�ในการประมวิลผล

Page 14: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การวิ�เคราะห* Space Complexity การวิเคราะหิ�วิ"าจะต่�องใชั�หิน"วิยควิามจ-าท�(งหิมด

เท"าไรในการประมวิลผลอ�ลกอรธ์,มน�(น

•รองร�บื้จำ!านวินข้�อมู�ลทำ�&ส�งเข้�ามูาประมูวิลผล (Input Data)ได้�มูากทำ�&ส)ด้เทำ�าใด้ เพื่�&อให�อ�ลกอร�ธี-มูน��นสามูารถประมูวิลผลได้�อย��

•ทำราบื้ข้นาด้ข้องหน�วิยควิามูจำ!าทำ�&จำะต�องใช�ในการประมูวิลผลอ�ลกอร�ธี-มู เพื่�&อไมู�ให�กระทำบื้ก�บื้การทำ!างานข้องคนอ�&น

•เพื่�&อเล�อกค)ณล�กษณะข้องคอมูพื่�วิเตอร*ทำ�&จำะใช�ต�ด้ต��งโปรแกรมูทำ�&พื่�ฒนาข้-�นได้�อย�างเหมูาะสมู

Page 15: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

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

– จำ!านวินข้องหน�วิยควิามูจำ!าทำ�&คอมูไพื่เลอร*จำ!าเป2นต�องใช�ข้ณะทำ!าการคอมูไพื่ล*โปรแกรมู

• Data Space – จำ!านวินหน�วิยควิามูจำ!าทำ�&ต�องใช�ส!าหร�บื้เก$บื้ค�าคงทำ�& และ

ต�วิแปรทำ��งหมูด้ทำ�&ต�องใช�ในการประมูวิลผลโปรแกรมู

• Environment Stack Space – จำ!านวินหน�วิยควิามูจำ!าทำ�&ต�องใช�ในการเก$บื้ผลล�พื่ธี*ข้อง

ข้�อมู�ลเอาไวิ� เพื่�&อรอเวิลาทำ�&จำะน!าผลล�พื่ธี*น��นกล�บื้ไปประมูวิลผลอ�กคร��ง (พื่บื้ใน recursive function)

Page 16: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

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: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

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

int num1, num2, temp;

temp = num1;

num1 = num2;

num2 = temp;

} ใช�หน�วิยควิามูจำ!า 6 bytes

Page 18: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

ต�วิอย�างการวิ�เคราะห* 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: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

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: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การวิ�เคราะห* Time Complexity ค�อ เวิลาทำ�&เคร�&องคอมูพื่�วิเตอร*ต�องใช�ในการประ

มูวิลผลอ�ลกอร�ธี-มู

วิ�เคราะห*เพื่�&อ... ประมูาณเวิลาทำ��งหมูด้ทำ�&ต�องใช�ในโปรแกรมูได้� มู)�งประเด้$นการแก�ไข้ไปทำ�&อ�ลกอร�ธี-มูทำ�&ใช�เวิลาในการประมูวิลผล

นานๆ ทำ!าให�ไมู�ต�องแก�ไข้ทำ��งโปรแกรมู โปรแกรมูคอมูพื่�วิเตอร*ทำ�&ทำ!างานแบื้บื้ Interactive เล�อกค)ณล�กษณะข้องคอมูพื่�วิเตอร*ทำ�&จำะใช�ต�ด้ต��งโปรแกรมูทำ�&

พื่�ฒนาข้-�นได้�อย�างเหมูาะสมู

??

Page 21: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

เวิลาในการประมูวิลผลข้องโปรแกรมูCompile TimeCompile Time ค*อ เวิลาท�/ใชั�ในการต่รวิจสอบ

ไวิยากรณ์� (syntax) ข้อง code วิ"าเข้�ยนได�ถ้�กต่�องหิร*อไม"

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

Page 22: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การวิ�เคราะห* Time Complexity ด้�วิยวิ�ธี�การน�บื้ต�วิด้!าเน�นการ

แบื้บื้ Linear Loops แบื้บื้ Logarithmic Loops แบื้บื้ Nested Loops

Page 23: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

แบื้บื้ Linear Loopsอ�ลกอรธ์,มม�การท-างานแบบวินรอบ (Loop) โดย

แต่"ละ loop จะม�การเพั/มหิร*อลดค"าในปรมาณ์ท�/คงท�/ เชั"น 1x=

( < =2000) 5x=x+

= =1 ( < =2000) = ===1ถ้�าใหิ� f(n) แทนประสทธ์ภาพั และ n แทนจ-านวินรอบการ

ท-างาน สามารถ้เข้�ยนเป!นสมการวิ�ดประสทธ์ภาพัข้องอ�ลกอรธ์,มแบบ Linear loop ได�ด�งน�(f(n) = n

Page 24: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

แบื้บื้ 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: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

แบื้บื้ Nested Loops

ค�อ อ�ลกอร�ธี-มูทำ�&มู� loop ซ้�อนอย��ภายใน loop โด้ยประส�ทำธี�ภาพื่ข้องอ�ลกอร�ธี-มูก$จำะมู�ค�าเทำ�าก�บื้จำ!านวิน loop ทำ��งหมูด้ทำ�&จำะต�องประมูวิลผล ซ้-&งหาได้�จำากการเอาจำ!านวิน loop ทำ�&ซ้�อนก�นมูาค�ณก�น

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

Page 26: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Big-O Notation

• การวิเคราะหิ�อ�ลกอรธ์,ม จะใชั�วิธ์�หิาจ-านวินคร�(งข้องการท-างานข้องโปรแกรม โดยม�กจะสนใจค"าโดยประมาณ์เท"าน�(น ซึ่,/งจะใชั�ส�ญล�กษณ์�วิ"า O เร�ยกวิ"า บ9กโอ (big O) ซึ่,/งเป!นส�ญล�กษณ์�ทางคณ์ต่ศึาสต่ร�ท�/มาจากค-าวิ"า Order of Magnitude

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

Page 27: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Big-O Notation

• แนวิควิามคดข้องบ9กโอ จะด�จากค"าท�/ม�ผลกระทบมากท�/ส�ดเพั�ยงค"าเด�ยวิ

• ค"าอ*/นๆท�/เก�/ยวิข้�องจะม�ผลต่"อฟั0งก�ชั�นน�อยกวิ"า จ,งไม"สนใจ และไม"สนใจค"าคงท�/ด�วิย

ต่�วิอย"าง หิาค"าบ9กโอข้อง N4 + 10N – 5ถ้�า f(N) = N4 + 10N – 5

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

Page 28: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

ต่�วิอย"าง หิาค"าบ9กโอข้อง 100N +1

ถ้�า f(N) = 100N +1

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

ต่�วิอย"าง หิาค"าบ9กโอข้อง N/5 +100

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

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

Page 29: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

ต่�วิอย"าง หิาค"าบ9กโอข้อง N3 + 2N3 + 10

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

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

ต่�วิอย"าง หิาค"าบ9กโอข้อง 100

ถ้�า f(N) = 100

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

Page 30: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การวิเคราะหิ�ควิามเร+วิข้อง 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: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

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: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

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: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

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)