Chapter 1 โครงสร้างข้อมูลและอัลกอริธึมส์ ณัฐพล ชัยทวิชธานันท์ E-mail : nattapol_ctwtn@yahoo.com 13-102-252 : อัลกอริธึมส์ ( Algorithms ) ภาควิชาเทคโนโลยีคอมพิวเตอร์ คณะศึกษาทั่วไป มหาวิทยาลัยเทคโนโลยีราชมงคลล้านนา วิทยาเขตพิษณุโลก ภาคการศึกษาที่ 1 ปีการศึกษา 2549
จุดประสงค์การสอน (Objective) ทำความรู้จักพื้นฐานของโครงสร้างข้อมูล ทำความรู้จักพื้นฐานของอัลกอริธึมส์
หัวข้อ (Topics) ความหมายของโครงสร้างข้อมูลและอัลกอริธึมส์ ประเภทของโครงสร้างข้อมูล คุณสมบัติของอัลกอริธึมส์ พื้นฐานทางคณิตศาสตร์ ลำดับและอนุกรม รหัส Pseudo
ความหมายของโครงสร้างข้อมูลและอัลกอริธึมส์ โครงสร้างข้อมูล หมายถึง การรวมประเภทข้อมูล (Data Type) เข้าไว้ด้วยกันจนกระทั่งกลายเป็นกลุ่มประเภทข้อมูลและมีการกำหนด คำนิยามของความสัมพันธ์ภายในกลุ่มข้อมูลไว้อย่างชัดเจน อัลกอริธึมส์ หมายถึง ลำดับขั้นตอนวิธีในการทำงานของโปรแกรม เพื่อแก้ปัญหาใดปัญหาหนึ่ง ซึ่งเมื่อเราปฏิบัติตามขั้นตอนอย่างถูกต้อง จะทำให้สามารถแก้ปัญหาได้ตามที่ต้องการ
ประเภทของโครงสร้างข้อมูล โครงสร้างข้อมูลสามารถแบ่งตามลักษณะใหญ่ๆ ได้เป็น 2 ประเภท ได้แก่ 1. โครงสร้างข้อมูลแบบเชิงเส้น (Linear Structure) โครงสร้างที่มีการจัดเก็บข้อมูลในลักษณะต่อเนื่องกัน ถ้าทราบ ตำแหน่งแรกของข้อมูลก็สามารถทราบตำแหน่งข้อมูลตัวถัดไปหรือ ข้อมูลตัวอื่นได้ ทางคณิตศาสตร์จะเรียกว่า เวกเตอร์ (Vector) ข้อมูลมี ลักษณะเป็น 1 มิติ เช่น อาเรย์, สแตก, คิว, ลิสต์
ประเภทของโครงสร้างข้อมูล 100 200 300 400 D(1) D(2) D(3) D(4) อาเรย์ (Array) D(5) D(4) D(3) D(2) In Out D(1) โครงสร้างของสแตก
ประเภทของโครงสร้างข้อมูล D(1) D(2) D(3) D(4) D(5) Out In คิว (queue) D1 D2 D3 Dn Header ลิสต์ โครงสร้างของลิสต์
ประเภทของโครงสร้างข้อมูล 2. โครงสร้างข้อมูลแบบไม่เชิงเส้น (Non-Linear Structure) โครงสร้างที่ไม่มีคุณสมบัติของเชิงเส้น สามารถใช้แสดงความ สัมพันธ์ของข้อมูลที่ซับซ้อนได้มากกว่าโครงสร้างข้อมูลแบบเชิงเส้น เช่น ทรี, กราฟ
พื้นฐานทางคณิตศาสตร์ (con.) เนื้อหาด้านอัลกอรึธึมส์จำเป็นต้องใช้พื้นฐานทางคณิตศาสตร์ โดย ส่วนใหญ่จะเน้นไปที่หลักการของ Discrete Mathematic โดยหัวข้อที่ยก มานี้จะเป็นเพียงส่วนหนึ่งที่มีการใช้งานกันบ่อยๆ ซึ่งประกอบไปด้วย - เลขยกกำลังและฟังก์ชั่น Exponential - ฟังก์ชั่น Logarithm - ฟังก์ชั่น Factorial - การ Modular
พื้นฐานทางคณิตศาสตร์ (con.) เลขยกกำลังและฟังก์ชั่น Exponential ความสัมพันธ์ที่เกี่ยวข้องกันของเลขยกกำลังกับฟังก์ชั่น Exponential คือ ฟังก์ชั่น Exponential เป็นส่วนหนึ่งของเลขยกกำลัง และมีคุณสมบัติ หลายข้อที่ต้องอาศัยพื้นฐานของเลขยกกำลังมาเป็นองค์ประกอบ
พื้นฐานทางคณิตศาสตร์ (con.) ทฤษฏีที่เกี่ยวข้องกับเลขยกกำลัง ถ้า a, b เป็นจำนวนจริง โดยที่ a≠0, b≠0 และ m, n เป็นจำนวนเต็ม 1. aman = am + n 2. (am) n = amn 3. (ab) m = ambm 4. (a/b) m = am/bm 5. am/an = am - n
พื้นฐานทางคณิตศาสตร์ (con.) ทฤษฏีที่เกี่ยวข้องกับฟังก์ชั่น Exponential ถ้า a, b เป็นจำนวนจริงบวก โดยที่ a≠1, b≠1 และ x, y เป็นจำนวน จริง, ตัวแปร หรือนิพจน์ทางคณิตศาสตร์ 1. กฏของเลขยกกำลัง (Exponent Laws) 1.1 axay = am + n 1.2 (ax) x = axy 1.3 (ab) x = axbx 1.4 (a/b) x = ax/bx 1.5 am/an = am - n
พื้นฐานทางคณิตศาสตร์ (con.) 1.6 a-x = 1/ax 1.7 a0 = 1 2. ax = ay ก็ต่อเมื่อ x = y 3. ถ้า x≠0 แล้ว ax = by ก็ต่อเมื่อ a = b
พื้นฐานทางคณิตศาสตร์ (con.) ฟังก์ชั่น Logarithms ฟังก์ชั่น Logarithm เป็นส่วนกลับกันของ ฟังก์ชั่น Exponential คือ โดเมนของ ฟังก์ชั่น Exponential กลายเป็นเรนจ์ (Range) ของฟังก์ชั่น Logarithms ในทางกลับกันเรนจ์ของฟังก์ชั่น Exponential จะกลายเป็น โดเมนของฟังก์ชั่น Logarithm
พื้นฐานทางคณิตศาสตร์ (con.) ทฤษฏีที่เกี่ยวข้องกับฟังก์ชั่น Logarithms กำหนด M, N, a และ b เป็นจำนวนจริงบวก โดยที่ a≠1, b≠1และ มี n เป็นจำนวนจริงแล้ว สามารถสรุปได้ ดังนี้ 1. loga MN = loga M + loga N 2. loga M/N = loga M - loga N 3. loga 1 = 0 4. loga Mn = nloga M 5. loga a = 1
พื้นฐานทางคณิตศาสตร์ (con.) 6. loga M = loga N ก็ต่อเมื่อ M=N 7. loga M = logb M / logb a 8. a loga M = M 9. logan M = 1/n loga M 10. log1/a M = - loga M 11. loga M = 1/ logMa เมื่อ M ≠ 1
พื้นฐานทางคณิตศาสตร์ (con.) ฟังก์ชั่น Factorial ค่า Factorial n (n Factorial) หมายถึง ผลคูณของจำนวนเต็มบวก ตั้งแต่ 1 ถึง n เมื่อ n เป็นจำนวนเต็มบวกใดๆ เช่น factorial 8 มีค่า เท่ากับ 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 เป็นต้น หรือ factorial n คือ ผลคูณของ จำนวนเต็มบวก n กับจำนวนที่ลดลงจาก n ทีละ 1 จนกระทั่งถึง 1 นั่นเอง โดยสัญลักษณ์ที่กำหนด คือ n! n! = n x (n-1) x (n-2) x (n-3) x … x 2 x 1 หรือ n! = 1 x 2 x 3 x … x (n-1) x n
พื้นฐานทางคณิตศาสตร์ (con.) การ Modular การ Modular จะคล้ายกันกับการหาร (Division) แต่จะแตกต่างจาก การหารตรงที่ผลลัพธ์ของการคำนวณ โดยที่ Modular เป็นเศษที่เหลือจาก การหาร กำหนดให้ a เป็นจำนวนเต็ม และ m เป็นจำนวนเต็มบวกแล้ว ค่า a mod n มีค่าเท่ากับเศษที่เหลือจากการหาร a ด้วย m
ลำดับและอนุกรม ลำดับ (Sequence) คือ ฟังก์ชั่นที่มีโดเมนเป็นเซตของจำนวนเต็มบวก เขียนแทนด้วย n แบ่งเป็น 2 ประเภท คือ 1. ลำดับจำกัด คือ ลำดับที่มีโดเมนเป็นเซตของจำนวนเต็มบวก n ตัว แรก เช่น 1, 2, 3, 4, …, n 2. ลำดับอนันต์ (Infinite Sequence) คือ ลำดับที่มีโดเมนเป็นเซตของ จำนวนเต็มบวก จนกระทั่งถึงอนันต์ เช่น 1, 2, 3, 4, … (ไม่ทราบพจน์ สุดท้าย)
ลำดับและอนุกรม (con.) อนุกรม (Series) คือ ผลรวมของพจน์ทุกพจน์ของลำดับนั้นๆ ใช้ สัญลักษณ์ ∑ ตัวการแทนสัญลักษณ์เขียนได้ดังนี้ 1+2+3+4+…+n = ∑ i = ∑ n
รหัส Pseudo รหัส Pseudo จะมีลักษณะคล้ายภาษาอังกฤษ ก้ำกึ่งระหว่างภาษา อังกฤษกับภาษาคอมพิวเตอร์ใช้ในการอธิบายลักษณะโครงสร้างข้อมูล และการทำงานของอัลกอริธึมส์ที่เราเขียนขึ้น Open file linesPrint = 0 Loop (not end of file) read file if (full page) from feed add 1 to PageNumber Write page heading write report line