1.3. ทฤษฎีที่เกี่ยวข้องกับระบบตัวเลข 13 โดย L คือ จำนวนของอักขระในภาษานั้น และ R คือ ค่า อัตราสัมบูรณ์ ของภาษา ตัวอย่างของภาษาอังกฤษ ซึ่ง มี อักขระทั้งหมด 26 ตัว จะมี ค่า อัตราสัมบูรณ์ ของภาษา อยู่ที่ 4.7 บิตต่อหนึ่งตัวอักษร ซึ่งจะเห็นว่าค่าอัตราสัมบูรณ์นั้นมีค่ามากกว่าค่าอัตราใน ความเป็นจริงมาก ซึ่งส่วนต่างนี้ จะเรียกว่า ความซ้ำซ้อน (Redundancy) ของภาษา ซึ่ง สามารถหาได้จาก D =R−r (1.5) โดย D คือ ความซ้ำซ้อนของภาษา สำหรับภาษาอังกฤษแล้ว ก็จะมีความซ้ำซ้อนอยู่ที่ 3.4 บิตต่หนึ่งตัวอักษร ซึ่งจะเห็นว่ามีค่าสูงมากเมื่อเทียบกับอัตราของภษาและหมายความ ว่า ภาษาอังกฤษไม่ใช่ภาษาที่ดีนักสำหรับการสื่อสาร เพราะว่ามีความสิ้นเปลืองในการ สื่อสารค่อนข้างมาก เมื่อเทียบกับสารสนเทศน์ที่สามารถถ่ายทอดได้ 1.3 ทฤษฎีที่เกี่ยวข้องกับระบบตัวเลข ทฤษฎีที่เกี่ยวข้องกับระบบตัวเลข (Number System) เป็นพื้นฐานความรู้ในด้านความ ปลอดภัยของสารสนเทศน์และระบบเครือข่ายแต่อย่างไรก็ตาม ทฤษฎีที่เกี่ยวข้องกับระบบ ตัวเลขนั้น ก็ ค่อนข้า ที่ จะเป็น นามธรรม จึง อาจจะทำความเข้าใจได้ ไม่ ง่ายนัก ซึ่ง ก็ ควรจะ ศึกษาเพิ่มเติมจากตัวอย่าง หรือการนำไปใช้งาน 1.3.1 จำนวนเฉพาะ และ จำนวนเฉพาะสัมพัทธ์(Prime Number and Relatively Prime Number จำนวนเฉพาะ (Prime Number) คือ เลขจำนวนเต็ม มากกว่า หนึ่ง ที่ มี เฉพาะตัว มัน เอง และหนึ่งเท่านั้นที่หารลงตัว โดยจำนวนเฉพาะมีสำคัญในเรื่องการเข้ารหัสลับ พื้นฐานของจำนวนเฉพาะคือการหารที่ลงตัว โดยถ้า b หาร a ลงตัว หรือว่าไม่เหลือ เศษ (remainder) จะสามารถเขียนเป็นสัญลักษณ์ได้ว่า b|a ซึ่งความสัมพันธณ์ระหว่าง a และ b จะอยู่ในรูปของ a = kb เมื่อ k คือเลขจำนวนเต็ม โดยจะพบว่า • ถ้า a|1 แล้ว จะพบว่า a = ±1 • b ที่ไม่เท่ากับศูนย์ใด ๆ จะหารศูนย์ลงตัวเสมอ • ถ้า a|b และ b|a แล้ว จะพบว่า a = ±b 14 บทที่ 1. บทนำและความรู้พื้นฐานทางคณิตศาสตร์ • ถ้า b|f และ b|g แล้ว จะพบว่า b|(mf + ng) สำหรับจำนวนเต็ม m และ n จำนวนเฉพาะเป็นองค์ประกอบพื้นฐานของเลขจำนวนเต็ม โดยเลขจำนวนเต็มทุกจำนวน สามารถแยกตัวประกอบออกมาเป็นจำนวนเฉพาะหลาย ๆ จำนวนได้ หรือสามารถเขียน ให้อยู่ในรูปของสมาการได้ว่า a = pα1 1 pα2 2 . . . pαt t (1.6) เมื่อ a คือจำนวนเต็มที่มากกว่าศูนย์ และ p1 , p2 , . . ., pt คือจำนวนเฉพาะซึ่ง p1 > p2 > . . . > pt ลองดูตัวอย่าง 90 = 21 × 32 × 5 91 = 71 × 131 11011 = 7 × 112 × 131 สมาการ 1.6 สามารถเขียนในรูปย่อได้ดังนี้ a= Y pap เมื่อap > 0 (1.7) P สมาการ 1.7 แสดงให้เห็นว่า เลขจำนวนเต็มบวกที่มากกว่าหนึ่ง สามารถแยกตัวประกอบ ออกมาเป็นผลคูณของจำนวนเฉพาะหลาย ๆ จำนวนได้ ซึ่งสามารถเขียนอยู่ในรูปที่สามารถ เข้าใจได้ ง่าย โดยระบุ เฉพาะกำลัง ของจำนวนเฉพาะแต่ละจำนวน ที่ นำมาประกอบกัน เช่น 90 เกิดจาก 21 × 32 × 5 ซึ่งสามารถเขียนเป็นรูปย่อได้ว่า a2 = 1, a3 = 2, a5 = 1 ลองดูตัวอย่างอื่น 18 สามารถแทนด้วย a2 = 1, a3 = 2 26 สามารถแทนด้วย a2 = 1, a13 = 1 11011 สามารถแทนด้วย a7 = 1, a1 1 = 2, a13 = 1 ซึ่งการเขียนในรูปนี้ จะช่วยให้การทำงานกับตัวเลขจำนวนเต็มบางอย่างง่ายขึ้น เช่น การ คูณกันระหว่างจำนวนเต็มสองจำนวน k = mn → kp = mp × np ตัวอย่างเช่น สำหรับทุก p (1.8) 1.3. ทฤษฎีที่เกี่ยวข้องกับระบบตัวเลข 15 k = 18 × 26 = 468 และ 18 = a2 = 1, a3 = 2 26 = a2 = 2, a13 = 1 จะได้ว่า k2 = 1 + 2, k3 = 2, k13 = 1 468 = a2 = 3, k3 = 2, k13 = 1 468 = 23 × 32 × 131 จากสมาการ 1.8 แสดงให้เห็นว่าถ้า m เป็นตัวประกอบของ k จะได้ว่า mp จะต้องน้อย กว่า kp หรือสรุปเป็นเงื่อนไขได้ว่า a|b → ap ≤ bp สำหรับทุก p (1.9) ลองดูตัวอย่าง a = 12; b = 216; 12|216 12 = 22 × 3; 216 = 23 × 33 a2 = 2 = b 2 a3 = 1 ≤ 3 = b 3 1.3.2 ตัวหารร่วมมาก (Greatest Common Devisor) ตัวหารร่วมมากหมายถึงจำนวนเต็มที่มากที่สุด ที่หารเลขจำนวนเต็มอีกสองตัวลงตัว ซึ่ง สามารถเขียนเป็นสมาการคือ gcd(a, b) = arg max k|a, k|b k (1.10) สมาการ 1.10 แสดงให้เห็นว่า k เป็นจำนวนเต็มที่มากที่สุด ที่หาร a และ b ลงตัว ซึ่ง ค่าของตัวหารร่วมมาก หรือว่า gcd จะต้องเป็นเลขจำนวนเต็มบวก ดังนั้น gcd(a, b) = gcd(a, −b) = gcd(−a, b) = gcd(−a, −b) เหรือเขียนสรุปได้ว่า gcd(a, b) = gcd(|a|, |b|) ลองดูตัวอย่าง gcd(60, 24) = gcd(60, −24) = 12 16 บทที่ 1. บทนำและความรู้พื้นฐานทางคณิตศาสตร์ นอกจากนั้น เนื่องจากว่าจำนวนเต็มทุกจำนวนต่างก็หารศูนย์ลงตัว ดังนั้น gcd(a, 0) = |a| เมื่อ นำสมาการ 1.8 และ 1.10 จะได้ ส มาการใหม่ ที่ ใช้ อธิบายการหาค่า gcd ของ จำนวนเต็มสองจำนวนได้เป็น k = gcd(a, b) → kp = min(ap , bp ) สำหรับทุก p (1.11) ลองดูตัวอย่าง 60 = 22 × 31 × 51 24 = 22 × 31 × 50 gcd(60, 24) = 22 × 31 × 50 = 12 จำนวนเฉพาะสัมพัทธ์ (Relatively Prime Number) หมายถึง จำนวนเฉพาะสอง จำนวนที่มีค่า gcd เท่ากับหนึ่ง ซึ่งหมายความว่า จำนวนเต็มสองจำนวนนี้ไม่มีตัวประกอบ รวมกันที่มากกว่าหนึ่งเลย ตัวอย่างเช่น 56 และ 15 เป็นต้น 1.3.3 Modular Arithmetic ถ้าหารจำนวนเต็มจำนวนหนึ่ง (a) ด้วยจำนวนเต็มอีกจำนวนหนึ่ง (n) จะได้ผลหาร (quotient: q) และเศษหาร (remainder: r) หรือว่า สามารถเขียนให้ อยู่ ในรูป ของความ สัมพันธ์ได้เป็น a = qn + r 0 ≤ r < n; q = ba/nc (1.12) จากความสัมพันธ์ 1.12 แสดงให้เห็นว่าถ้ามีค่า a และ n ก็สามารถหา q และ r ที่ทำให้ ความสัมพันธ์นี่เป็นจริงได้เสมอ โดยความสัมพันธ์ 1.12 ยังแสดงความสัมพันธ์ระหว่าง q กับ a และ n ได้ คือ q = ba/nc ส่วนความ สัมพันธ์ ระหว่าง r กับ a และ b สามารถเขียนให้อยู่ในรูปของ r = a mod n โดย mod นั้นย่อมาจาก modulo ดังนั้น จึงสามารถเขียนสมาการในความสัมพันธ์ 1.12 ได้ใหม่ว่า a = ba/nc × n + (a mod n) (1.13) นอกจากนั้น ถ้า a mod n = b mod n จะเรียกว่า a และ b เป็น Congruent modulo กับ n ซึ่งแสดงให้เห็นว่า จำนวนเต็ม a และ b เมื่อหารด้วยจำนวนเต็ม n แล้ว 1.3. ทฤษฎีที่เกี่ยวข้องกับระบบตัวเลข 17 จะได้เศษของการหารเท่ากัน ซึงจากสมาการ 1.13 จะแสดงให้เห็นว่า ถ้า a mod n = b mod n แล้ว a − ba/nc × n = b − bb/nc × n (a − b)/n = ba/nc − bb/nc และเนื่องจากว่า bxc จะเป็นจำนวนเต็มเสมอ ดังนั้น จะได้ว่า (a − b)/n จะได้ออกมา เป็นจำนวนเต็ม หรืออาจจะกล่าวได้ว่า ถ้า a และ b เป็น Congruent modulo กับ n จะ พบว่า n หาร a − b ลงตัวเสมอ ซึ่งสามารถเขียนแทนโดยใช้สัญลักษณ์ ≡ หรือเขียน ออกมาเป็นความสัมพันธ์ได้เป็น a ≡ (b mod n) ถ้า n|(a − b) หรือ (1.14) a ≡ (b mod n) ถ้า a mod n = b mod n (1.15) ตัวอย่างเช่น 27 ≡ (12 mod 5) เนื่องจาก 27 − 12 = 15 = 5 × 3 −13 ≡ (11 mod 8) เนื่องจาก −13 − 11 = −24 = 8 × −3 ในการคำนวณที่ เกี่ยวข้องกับ Modular Arithmetic นั้น ก็ จะมี คุณสมบัติ ที่ น่า สนใจ ดังต่อไปนี้ [(a mod n) + (b mod n)] mod n = (a + b) mod n (1.16) [(a mod n) − (b mod n)] mod n = (a − b) mod n (1.17) [(a mod n) × (b mod n)] mod n = (a × b) mod n (1.18) (w + x) mod n = (x + w) mod n (1.19) (w × x) mod n = (x × w) mod n (1.20) [(w + x) + y] mod n = [w + (x + y)] mod n (1.21) [(w × x) × y] mod n = [w × (x × y)] mod n (1.22) [w × (x × y)] mod n = [(w × x) × (w × y)] mod n (1.23) (0 + w) mod n = w mod n (1.24) (1 × w) mod n = w mod n (1.25) 18 บทที่ 1. บทนำและความรู้พื้นฐานทางคณิตศาสตร์ โดย สมาการ 1.20 และ 1.21 เรียกว่า Commutative Law ส่วน สมาการ 1.22 และ 1.23 เรียกว่า Associative Law สมาการ 1.24 คือ Distributive Law และ สมาการ 1.25 เรียกว่า Identities ของ Modular Arithmetic 1.3.4 ทฤษฎีบทของแฟร์มาต์ (Fermat’s Theorem) แฟร์มาต์2 นักคณิตศาสตร์ชาวฝรั่งเศสเป็นผู้ระบุว่า ถ้า p เป็นจำนวนเฉพาะ และ a เป็น จำนวนเต็มบวกและไม่สามารถหารด้วย p ลงตัว จะพบว่า ap−1 ≡ (1 mod p) (1.26) ซึ่งเรียกกันว่า ทฤษฎีบทของแฟร์มาต์ และสามารถเขียนได้ในอีกลักษณะหนึ่งว่า ap ≡ (a mod p) (1.27) ลองดูตัวอย่าง a = 3, p = 5; 35 = 243 ≡ (3 mod 5) a = 10, p = 5; 105 = 100000 ≡ (10 mod 5) ≡ (0 mod 5) 1.3.5 ทฤษฎีบทของออยเลอร์ (Euler’s Theorem) ออยเลอร์3 ได้เสนอแนวคิดที่เรียกว่าทฤษฎีบทของออยเลอร์ ซึ่งเป็นการพัฒนาสืบเนื่องมาจากทฤษฎีบทของ แต่ก่อนที่จะกล่าวถึงทฤษฎีบทของออยเลอร์จะต้องกล่าวถึงฟังก์ชันทอเทียนต์ของออยเลอร์ (Euler’s totient function) เสียก่อน ฟังก์ชันนี้เป็นพื้นฐานของทฤษฎีบทของออยเลอร์และ สามารถเขียนแทนด้วยสัญลักษณ์ φ(n) ซึ่งหมายถึงจำนวนตัวเลขเต็มบวกที่น้อยกว่า n และเป็นจำนวนเฉพาะสัมพัทธ์กับ n เช่น π(10) มีจำนวนเฉพาะสัมพัทธ์สี่ตัวคือ 1 3 7 และ 9 ดังนั้น π(10) = 4 และเนื่องจากว่า φ(p) = p − 1 2 ปิแยร์ เดอ เฟอร์มาต์ (Piere de Fermat) มี อายุ อยู่ ใน ช่วง ปี คศ. 1601-1665 มี ชื่อเสียง จาก ทฤษฎีบทสุดท้ายชองแฟร์มาต์ (Fermat’s Last Theorem) ที่ ใช้เวลากว่า 350 ปี จึง สามารถถูก พิสูจน์ ได้ 3 เลออนฮาร์ด ออยเลอร์ (Leonhard Euler) นัก คณิตศาสตร์ ชาวสวิส มี อายุ อยู่ ในช่วงปี คศ. 17071783 1.3. ทฤษฎีที่เกี่ยวข้องกับระบบตัวเลข n 1 2 3 4 5 6 7 8 9 10 φ(n) 1 1 2 2 4 2 6 4 6 4 n 11 12 13 14 15 16 17 18 19 20 19 φ(n) 10 4 12 6 8 8 16 6 18 8 n 21 22 3 24 25 26 27 28 29 30 φ(n) 12 10 22 8 20 12 18 12 28 8 ตารางที่ 1.1: ตารางแสดงฟังก์ชันทอเทียนต์ของจำนวนเต็มตั้งแต่หนึ่งถึงสามสิบ เมื่อ p คือจำนวนเฉพาะใด ๆ และ φ(n) = φ(pq) = φ(p) × φ(q) ดังนั้น จะสามารถหาฟังก์ชัน ทอเที ยนต์ ของออยเลอร์ของจำนวนเต็ม ใด ๆ ที่มากกว่า ศูนย์ได้จาก φ(n) = φ(pq) = φ(p) × φ(q) = (p − 1)(q − 1) ออยเลอร์ได้ขยายทฤษฎีบทของแฟร์มาต์ให้สามารถใช้กับตัวเลขจำนวนเต็มใด ๆ ก็ได้ โดยอาศัย ฟังก์ชัน ทอเที ยนต์ ของออยเลอร์ในการแปลงจากจำนวนเต็ม มากกว่า ศูนย์ ให้ กลายเป็นจำนวนเฉพาะ เพื่อให้สามารถใช้กับทฤษฎีบทของแฟร์มาต์ได้ โดยทฤษฎีบทของออยเลอร์กล่าว ว่า aφ(n) ≡ (1 mod n) (1.28) เมื่อ a และ n คือจำนวนเต็มที่มากกว่าศูนย์ใด ๆ จะเห็นว่าออยเลอร์ได้ขยายทฤษฎีบทของแฟร์มาต์จาก ที่ จำกัด อยู่ ที่ ap−1 ≡ (1 mod p) เมื่อ p เป็น จำนวนเฉพาะ กลายเป็น aπ(n) ≡ (1 mod n) เมื่อ n เป็นจำนวนเต็มที่มากกว่าศูนย์ ตัวอย่างเช่น ให้ a = 3 และ n = 10 จะได้ ว่า φ(n) = φ(10) = 4 ดังนั้น π a (n) = 34 = 81 ≡ (1 mod 10) 20 1.3.6 บทที่ 1. บทนำและความรู้พื้นฐานทางคณิตศาสตร์ ทฤษฎีบทเศษเหลือของจีน (Chinese Remainder Theorem) ทฤษฎีบทเศษเหลือของจีน ระบุไว้ว่า ถ้ามี p และ q ซึ่งเป็นจำนวนจริง และมี a และ b ซึ่งเป็นจำนวนเต็มที่น้อยกว่า p และ q ตามลำดับ จะพบว่ามี x ที่ทำให้ x < pq และ x ≡ (a mod p) และ x ≡ (b mod q) ลองดูตัวอย่าง ถ้าให้ p และ q คือ 11 และ 13 ตามลำดับ และให้ a และ b มีค่าเป็น 5 และ 6 ตามลำดับ 1.3.7 ขั้นตอนวิธีของยูคลิด (Euclid’s Algorithm) ขั้นตอนวิธีของยูคลิดเป็นที่รู้จักกันอย่างกว้างขวางและเป็นระยะเวลายาวนาน โดยขั้นตอน วิธีของ ยูคลิดเป็น วิธีการที่ จะหาตัวหารร่วมมาก (Greatest Common Divisor: gcd) ของตัวเลขจำนวนเต็มบวกสองจำนวนที่มีจำนวนมาก ๆ ได้อย่างง่ายดาย โดยการใช้ Modular Arithmetic มาช่วย โดย Euclid’s Algorithm กล่าวไว้ว่า ถ้ามีตัวเลขจำนวนเต็ม บวก a และ b จะได้ว่า gcd(a, b) = gcd(b, amodb) (1.29) วิธีการพิสูจน์ ก็ให้ d = gcd(a, b) ดังนั้น d|a และ d|a และจะสามารถหาความสัมพันธ์ ระหว่าง a กับ b ได้ว่า a = kb + r ≡ r mod ba mod b = r 1.4 ทฤษฎีความซับซ้อน ทฤษฎีความซับซ้อนเป็น เครื่องมือ ที่ ใช้ วิเคราะห์ความซับซ้อนในการคำนวณ (Computational Complexity) ของวิธีการหรือขั้นตอนวิธีต่าง ๆ โดยความซับซ้อนของขั้นตอน วิธีหนึ่งจะสามารถหาได้จากความต้องการในการคำนวณเพื่อที่จะให้ได้ผลของขั้นตอนวิธีนั้น โดยความต้องการสามารถวัด ได้ ในรูป ของเวลาที่ ใช้ ในการคำนวณ หรือ เรียกว่า ความ ซับซ้อนด้านเวลา (Time complexity) และพื้นที่หน่วยความจำที่ต้องใช้ในการคำนวณ หรือเรียกว่า ความซับซ้อนด้านพื้นที่ (Space complexity) ถ้าเทียบกับการคำนวณของ มนุษย์ที่ใช้กระดาษกับดินสอในการคำนวณอะไรสักอย่าง ความซับซ้อนด้านเวลา ก็คือ 1.4. ทฤษฎีความซับซ้อน 21 เวลาที่ ต้องใช้ ทั้งหมดในการคำนวณ ส่วนความซับซ้อนด้านพื้นที่ ก็ คือ จำนวนกระดาษ ทั้งหมดที่ต้องใช้ในการทดตัวเลขในการคำนวณนั่นเอง การระบุความซับซ้อนของขั้น ตอนวิธีหนึ่ง ๆ ไม่ นิยมใช้ หน่วยวัดสัมบูรณ์เช่น เป็น วินาที สำหรับความซับซ้อนด้านเวลา หรือไบต์สำหรับความซับซ้อนด้านพื้นที่ เนื่องจาก ถ้า ขนาดของข้อมูล มี ขนาดไม่ เท่า กัน ขั้น ตอนวิธีหนึ่ง ก็ อาจจะใช้เวลาประมวลผลไม่ เท่า กัน ยิ่งไปกว่านั้น ในขั้นตอนวิธีเดียวกันก็อาจจะใช้เวลาไม่เท่ากันในการประมวลผลข้อมูล เดียวกันอีกด้วย ดังนั้นการระบุความซับซ้อนจึงนิยมใช้หน่วยวัดสัมพัทธ์กับขนาดของข้อมูล เข้า (Input) ของขั้นตอนวิธี โดยคิดถึงกรณีที่เลวร้ายที่สุด (Worse Case) เช่นทำงานช้า ที่สุดหรือว่าใช้พื้นที่มากที่สุด ว่าจะใช้เวลาหรือพื้นที่ในการประมวลผลสัมพัทธ์กับปริมาณข้อมูล เข้าได้อย่างไร เช่น ถ้าข้อมูลเข้ามีขนาด 1 หน่วย ขั้นตอนวิธีหนึ่งอาจจะใช้เวลาประมวลผล 1 หน่วยเวลาเช่นกัน และถ้าข้อมูลเข้ามีขนาด 2, 3, . . . n หน่วย ขั้นตอนวิธีนี้ใช้เวลา ประมวลผล 2, 3, . . . n หน่วยเวลาตามลำดับ (คิดในกรณีที่ขั้นตอนวิธีทำงานช้าที่สุด) จะเห็นว่า ขั้นตอนวิธีนี้ ใช้เวลาประมวลผลเป็นความสัมพันธ์เชิงเส้นตรง (Linear Relationship) กับปริมาณข้อมูลเข้า จึงบอกได้ว่า ความซับซ้อนด้านเวลา ของขั้นตอนวิธีนี้ สามารถเขียนออกมาเป็นฟังก์ชันเส้นตรง f(n) = n เมื่อ n คือขนาดของข้อมูลเข้า สำหรับการระบุฟังก์ชันของความซับซ้อนจะนิยมใช้สัญกรณ์ตัวโอใหญ่ (O Notation) เช่น จากตัวอย่างด้านบน สามารถระบุ ได้ ว่า ขั้น ตอนวิธีดังกล่าวมี ความซับซ้อนด้าน เวลาเป็น O(n) เป็นต้น สำหรับในกรณีที่ฟังก์ชันความสัมพันธ์มีความซับซ้อนมาก เช่น ถ้าขั้นตอนวิธีหนึ่งมีฟังก์ชันของความซับซ้อนด้านเวลาเป็น 4n2 +7n+12 ในการระบุสัญกรณ์ตัว โอใหญ่ จะใช้กรณีที่เลวร้ายที่สุด ซึ่งก็คือ n2 โดยไม่คิดถึงสัมประสิทธิ์ ดังนั้นความซับซ้อนด้าน เวลาของ ขั้นตอนวิธีนี้คือ O(n2 ) ตาราง 1.2 แสดงสัญลักษณืตัว O และชื่อเรียก โดยเรียงตามอัตราการเติบโต (Growth rate) เมื่อเทียบกับจำนวนข้อมูลเข้า (n) และ m คือจำนวนเต็มบวกใด ๆ และจะเห็นว่า O(nm ) เป็นกรณีทั่วไปของ O(n), O(n2 ) และ O(n3 ) เมื่อ m คือ 1, 2 และ 3 ตาม ลำดับ สัญกรณ์ตัวโอใหญ่สามารถใช้ในการเปรียบเทียบความซับซ้อนของสองขั้นตอนวิธีได้ เช่นถ้า ขั้นตอนวิธีหนึ่งมีความซับซ้อนด้านเวลาเป็น O(n) ในขณะที่อีกขั้นตอนวิธีหนึ่ง เป็น O(n2 ) จะสามารถกล่าวได้ว่า ขั้นตอนวิธีแรกมีความซับซ้อนด้านเวลาต่ำกว่า ซึ่งจะ เห็นว่า ถ้าขนาดข้อมูลเข้า (n) มีประมาณน้อย ๆ เช่น n = 1 จะไม่สามารถเห็นความ แตกต่างได้ แต่ถ้า n เพิ่มขึ้นมาก ๆ ความแตกต่างก็จะเห็นได้ชัด ตาราง 1.3 แสดงความสัมพันธ์ระหว่างเวลาที่ต้องใช้ในการประวลผลสำหรับขั้นตอน 22 บทที่ 1. บทนำและความรู้พื้นฐานทางคณิตศาสตร์ สัญกรณ์ตัวโอใหญ่ ชื่อฟังก์ชันภาษาไทย ชื่อฟังก์ชันภาษาอังกฤษ O(1) O(n) O(log n) O((log n)m ) O(n log n) O(n2 ) O(n3 ) O(nm ) O(mn ) Constant Linear Logarithm Polylogarithm Loglinear Quadratic Cubic Polynomial Exponential ค่าคงที่ เส้นตรง ลอการิทึม โพลีลอการิทึม ลอคลิเนียร์ กำลังสอง กำลังสาม พหุนาม เอกซ์โพเนนเชียล ตารางที่ 1.2: ตารางแสดงสัญกรณ์ตัวโอใหญ่ และชื่อเรียก เรียงตามอัตราการเติบโต วิธีที่ มีสัญกรณ์ตัว โอใหญ่ แบบต่าง ๆ โดยคิด ว่า สำหรับข้อมูล เข้าหนึ่ง ตัว จะต้องใช้ การ ประมวลผลหนึ่ง ครั้ง และ เครื่องคอมพิวเตอร์ ที่ ใช้ทดสอบ สามารถประมวลผลได้ 106 คำสั่งต่อวินาที นอกจากจะใช้สัญกรณ์ตัวโอใหญ่ที่ใช้ระบุความซับซ้อนของขั้นตอนวิธีในการแก้ปัญหา หนึ่ง ๆ แล้ว ยัง อาจจะใช้ความซับซ้อนของตัวปัญหาเองได้ อีก ด้วย ความซับซ้อนของ ปัญหาสามารถจำแนกโดยใช้เวลาที่ น้อยที่สุด หรือ พืน ที่ ที่ น้อยที่สุด ในการแก้ ปัญหาโดย ใช้เครื่องจักรของทัวริง(Turing Machine)เครื่องจักรของทัวริงคือ เครื่องจักรสมมุติที่สามารถ อ่านและเขียนข้อมูลได้ทีละหนึ่งข้อมูลบนแถบกระดาษที่มีความยาวไม่จำกัน เครื่องจักรนี้ รู้เพียงสถานะภายในและข้อมูลที่ตำแหน่งปัจจุบันบนแถบกระดาษ มันไม่สามารถเดาได้ ว่า ข้อมูล ถัด ไปบนแถบกระดาษคือ อะไร ดังนั้นเครื่องจักรก็ จะสามารถตัดสินใจได้ เพียง ทางเดียวโดยอาศัยสถานะภายในและข้อมูลปัจจุบัน สำหรับการจำแนกโดยใช้เครื่องจักรของทัวริงจะ จำแนกออกเป็นคลาส (Class) ซึ่งในปัจจุบัน ก็ยังมีการถกเถียงกันอยู่ว่าแต่ละคลาสนั้น แยกกันโดยเด็ดขาดหรือไม่ อย่างไรก็ตาม ในที่นี้จะยึดตามการจำแนกทีได้รับการยอมรับ มากที่สุด ซึ่ง ในที่นี้ จะสนใจกลุ่ม ของปัญหาการตัดสินใจ (Decision problem) ที่ จะมี คำตอบเพียงแค่ ใช่ หรือ ไม่ใช่ ตัวอย่างเช่น ปัญหาที่ถามว่า จำนวนหนึ่ง ๆ เป็นจำนวน เฉพาะหรือไม่ โดยปัญหาในกลุ่มอื่น ๆ ก็สามารถปรับให้เป็นปัญหาในกลุ่มนี้ได้ คลาสพี (P:Polynomial time) คือกลุ่มของปัญหาการตัดสินใจที่สามารถหาคำตอบ 1.4. ทฤษฎีความซับซ้อน 23 ชื่อ ความซับซ้อน จำนวนคำสั่งประมวลผลสำหรับ n = 106 เวลา ค่าคงที่ O(1) 1 คำสั่ง 1 มิลิวินาที เส้นตรง O(n) 106 คำสั่ง 1 วินาที 2 12 กำลังสอง O(n ) 10 กำลังสาม O(n3 ) 1018 คำสั่ง 32, 000 ปี 10301,030 คำสั่ง 10301,006 เท่าของอายุจักรวาล เอกซ์โพเนนเชียล O(2n ) คำสั่ง 11.6 วัน ตารางที่ 1.3: ตารางแสดงเวลาที่ ต้องใช้ สำหรับ การประมวลผลขั้น ตอนวิธีที่ มีความ ซับซ้อนในระดับต่าง ๆ (ดัดแปลงจาก [Sch96]) ได้ในเวลาที่เป็นฟังก์ชันพหุนามเมื่อเทียบกับขนาดข้อมูลเข้า (เหมือนกับ O(nm ) นั่นเอง) โดยใช้เครืองจักร์ของทัวริงแบบเชิงกำหนด คลาสเอ็นพี (NP:Non-deterministic polynomial time) คือปัญหาการตัดสินใจที่ หาคำตอบได้ในช่วงเวลาพหุนามเมื่อเทียบกับขนาดข้อมูลเข้า (เหมือนกับ O(nm ) นั่นเอง) โดยใช้เครื่องจักรของทัวริงแบบเชิงไม่กำหนด4 จะเห็นว่าปัญหาในคลาสพีและเอ็นพี จะ ต่างกันตรงเครื่องจักรที่ใช้ในการแก้ปัญหา ซึ่งถ้าใช้เครื่องจักรของทัวริงแบบเชิงกำหนดไป แก้ปัญหาในคลาสเอ็นพี ก็อาจจะไม่สามารถหาคำตอบได้ในช่วงเวลาพหุนาม แต่ว่าสามารถ ใช้ในการตรวจคำตอบได้ในฟังก์ชันพหุนามของเวลา คลาสเอ็นพีบริบูรณ์(NP-Complete) เป็นกรณีพิเศษของคลาสเอ็นพี และปัญหาในคลาสนี้ จะแก้ยากกว่า ปัญหาในคลาสเอ็นพี โดยถ้าสามารถหาวิธีแก้ปัญหาเอ็นพีบริบูรณ์ได้อย่าง มีประสิทธิภาพได้ ก็สามารถนำวิธีนั้นไปแก้ปัญหาในคลาสเอ็นพีได้อย่างมีประสิทธิภาพ ด้วย ในปัจจุบัน ถ้า ปัญหาใดถูก จัด ว่า อยู่ ในคลาสเอ็น ดีบริบูรณ์ นักวิทยาศาสตร์ ก็ จะไม่ หาวิธีที่จะหาคำตอบของปัญหาโดยตรงอย่างมีประสิทธิภาพ แต่จะเปลี่ยนไปใช้การหาขั้น ตอนวิธีแบบการประมาณ(Approximation algorithm) หรือใช้วิธีศึกษาสำนึก(Heuristic algorithm) แทน คลาสพีสเปซ (PSPACE) เป็นปัญหาที่แก้ได้โดยใช้พื้นที่เป็นฟังก์ชันพหุนามเมื่อสัมพันธ์ กับปริมาณข้อมูลเข้า แต่อาจจะไม่สามารถใช้เวลาแก้เป็นฟังก์ชันพหุนาม รูป 1.6 แสดงความสัมพันธ์ของปัญหาในคลาสต่าง ๆ โดยปัญหาที่อยู่ในคลาสพี ก็ 4 เครื่องจักรแบบนี้จะสามารถตัดสินใจได้หลายแบบโดยอาศัยสถานะภายในและข้อมูลปัจจุบันเดียวกัน โดยเครื่องจักรจะสามารถเดาได้ว่าการตัดสินใจแบบไหนจะดีที่สุด 24 บทที่ 1. บทนำและความรู้พื้นฐานทางคณิตศาสตร์ PSPACE problems NP−complete problems NP problems P problems รูปที่ 1.6: ความสัมพันธ์ของปัญหาในคลาสต่าง ๆ จะถือ ว่า เป็น ปัญหาในคลาสเอ็น พี ด้วย เพราะสามารถใช้เครื่องจักรของทัวริงแบบเชิง ไม่ กำหนดในการแก้ปัญหาในช่วงเวลาที่เป็นฟังก์ชันพหุนามของจำนวนข้อมูลเข้าได้เช่นกัน แต่ในปัจจุบัน ยังไม่มีใครทราบว่า ทุกปัญหาในคลาสเอ็นพี สามารถทำให้อยู่ในคลาสพี ได้หรือไม่ ถ้าสามารถพิสูจน์ได้ นั่นจะหมายถึงว่า P = NP และขั้นตอนวิธีในด้านความ ปลอดภัยหลาย ๆ อัน ก็ จะใช้ไม่ได้ ทันที เพราะว่าขั้น ตอนวิธีเหล่านั้น มี ความปลอดภัย โดยอาศัยหลักการที่ว่ามันเป็นปัญหาในคลาสเอ็นพี ที่แก้ได้ยากเมื่อมีจำนวนข้อมูลมาก ๆ เช่นกัน ปัญหาในคลาสเอ็นพี ก็อยู่ในคลาสพีสเปซด้วย และยังไม่มีใครสามารถพิสูจน์ ได้ว่า PSPACE = NP หรือไม่
© Copyright 2026 Paperzz