1.27k likes | 1.82k Views
Discrete Mathematics. San Ratanasanya. บางส่วนของเอกสารนี้มาจากเอกสารประกอบหน้งสือของ Rosen, เอกสารประกอบการสอนของ ดร.ทิพยรัตน์ ประโยชน์ และ ดร. อรรจน์ โกญจนาท @ rsu.ac.th. Course Overview. Compulsory and intensive BUT short 3 classes @ 3 hrs. Total = 9 hrs.
E N D
Discrete Mathematics San Ratanasanya บางส่วนของเอกสารนี้มาจากเอกสารประกอบหน้งสือของ Rosen, เอกสารประกอบการสอนของ ดร.ทิพยรัตน์ ประโยชน์และดร. อรรจน์ โกญจนาท@rsu.ac.th
Course Overview • Compulsory and intensive • BUT short 3 classes @ 3 hrs. Total = 9 hrs. • Covers basic and some interesting topics • Topics are not discussed in order • In-class exercises, homework,andquizzes • Collaborative study and work: SSD • Any textbook in Discrete Mathematics will do • Kenneth Rosen, Discrete Mathematics and its Applications, 6th ed. • Steven G. Krantz, Discrete Mathematics Demystified • Edward A. Bender and S. Gill Williamson,A Short Course in Discrete Mathematics
Background Inquiries • Logic and Proof • Sets and Matrices • Counting • Probability • Algorithm • Boolean • Automata • Graph and Tree • Number Theory • CS • CPE • IT • Others
Discrete Mathematics (DM) • DM คืออะไร? • ครอบคลุมหลายหัวข้อทางคณิตศาสตร์ • เป็นพื้นฐานที่สำคัญของ CS ที่เกี่ยวกับ สมมติฐาน ความคิดต่างๆ และการพิสูจน์ความคิดเหล่านั้น (proofs and ideas and abstraction) • ไม่ต่อเนื่อง, เต็มหน่วย, สามารถนับได้, ปริมาณ • ทำอย่างไรจึงเข้าใจ DM? • พยายามคิดในเชิงนามธรรม ตั้งสมมติฐาน นิยาม • เชื่อมโยงนิยามต่างๆ เข้ากับการใช้งานจริง
Discrete Mathematics(DM) • ทำไมเราต้องใช้DM? • ใช้ในการเชื่อมโยงทฤษฎีต่างๆกับปัญหาในชีวิตประจำวัน • เพื่อแก้ปัญหาเหล่านั้นด้วยวิธีการที่เหมาะสม • Examples • Internet, Computer Network, Computer Graphics, A.I., Database, Robotics, Image Processing and Computer Vision, Computer Security, etc.
Chapter 1: Basic Foundations Logics, Predicate Logics, Rules of Inference, and Proofs
Logics • Logics หมายถึง เหตุผล หรือ ระบบการใช้เหตุผล • เราใช้ logic ในชีวิตประจำวันเสมอ • ประโยคที่เราสามารถบอกได้ว่าเป็นจริงหรือเป็นเท็จเรียกว่าประพจน์ หรือ ถ้อยแถลง หรือ proposition • เมื่อเรามีประพจน์มากกว่าหนึ่ง และต้องการนำประพจน์เหล่านั้นมาใช้ในการแสดงเหตุผลร่วมกัน เราสามารถทำได้โดยใช้ตัวดำเนินการทางตรรก(logical operator) ต่างๆ เช่น • and (), or (), not (), xor (), conditional (), และ bidirectional () ซึ่งแต่ละตัวจะมีลำดับความสำคัญต่างกัน • เราเรียกประโยคที่มีประพจน์มากกว่าหนึ่งว่า ประพจน์ประกอบ หรือ ประพจน์ผสม หรือcompound proposition เช่น • ถ้าเราซื้อของราคา 10 บาทแล้วจ่ายเงินไป 100 บาทจะได้เงินทอน 15 บาท
Logics • เราเรียกประพจน์ผสมที่มีค่าความจริงเป็นจริงทุกกรณีว่า สัจนิรันดร์ หรือ tautology และ ประพจน์ผสมที่มีค่าความจริงเป็นเท็จทุกกรณีว่า ข้อขัดแย้ง หรือ contradiction • เราเรียกประพจน์ผสมที่ไม่เป็นทั้ง tautology หรือ contradiction ว่า สิ่งที่เป็นไปได้ หรือ contingency • เราสามารถตรวจสอบได้ว่าประพจน์ผสมใดมีค่าความจริงเป็นอย่างไร โดยการสร้างตารางค่าความจริง (truth table) • ในทางคณิตศาสตร์ เราใช้ตัวอักษรภาษาอังกฤษในการแทนประพจน์เพื่อความสะดวกในการอ้างถึง เช่น • p: พระจันทร์สีเหลือง • Logical Equivalenceหรือ การสมมูล เป็นการการเท่ากันทางตรรกศาสตร์ เมื่อประพจน์ หรือประพจน์ผสมใดๆ มีค่าความจริงเท่ากันทุกประการ เราบอกว่าประพจน์เหล่านั้น สมมูล กัน • Bitwise operation เป็นการกระทำทางตรรก ในระดับ bit
Predicate Logics • ประพจน์ใดที่มีตัวแปรมาเกี่ยวข้อง เราจะไม่สามารถทราบค่าความจริงของประพจน์นั้นได้ในทันที เราเรียกประพจน์ที่มีลักษณะดังนี้ว่า ภาคแสดงหรือ Predicate เช่น • P(x) = x is greater than 3 • Predicate หมายถึง คุณสมบัติ ของตัวแปรนั้นๆ ดังนั้นค่าความจริงของ ประพจน์เปิด จึงขึ้นอยู่กับคุณสมบัติของตัวแปรในประพจน์นั้น • Quantifiersหรือตัวบ่งปริมาณ ใช้ในการบอกปริมาณของตัวแปรในประพจน์
Rules of Inference • ทฤษฎีบท (theorems) หรือ ข้อโต้แย้ง(arguments) ประกอบด้วยประพจน์ และ/หรือ ประพจน์ผสม หลายๆ ประพจน์ เราเรียกประพจน์เหล่านั้นว่า หลักฐาน(premises) • เมื่อเราต้องทำการพิสูจน์ (proof) ทฤษฎีบท หรือ ข้อโต้แย้งต่างๆ เราจะใช้ กฎของการอนุมาน หรือrules of inference ช่วยในการพิสูจน์ หรือนำไปสู่บทสรุป(conclusion) ว่าทฤษฎีบทนั้น หรือ ข้อโต้แย้งนั้น มีเหตุผล หรือไม่มีเหตุผล (valid or invalid) ด้วยการนิรนัย(deduction) • ทฤษฎีบท หรือ ข้อโต้แย้งต่างๆ จะมีเหตุผลก็ต่อเมื่อ หลักฐานต่างๆทั้งหมดเป็นจริงและบทสรุปก็ต้องเป็นจริงด้วย
(Informal) Proofs • วิธีในการพิสูจน์มีหลายวิธีการ เช่น • การพิสูจน์โดยการแจกแจงด้วยตารางค่าความจริง • การพิสูจน์โดยตรง (direct proof) • พิสูจน์ว่า p q เป็นจริง • การพิสูจน์โดยอ้อม (indirect proof) • การพิสูจน์โดยใช้รูปขัดแย้ง (proof by contraposition) • ใช้รูปขัดแย้ง (contrapositive) ของ p q ในการพิสูจน์ • การพิสูจน์โดยใช้ข้อขัดแย้ง (proof by contradiction) • พิสูจน์ว่า p q เป็นจริง โดยการพิสูจน์ว่าข้อขัดแย้งของ p q เป็นท็จ ซึ่งสามารถทำได้โดย ให้ p เป็นเท็จ แล้วทำการหาบทสรุป ถ้าบทสรุปเป็นเท็จ แสดงว่า p q เป็นจริง • การพิสูจน์โดยการพิจารณากรณี (proof by cases) • การพิสูจน์เพียงบางส่วน (trivial proof and vacuous proof) • Trivial: แสดงให้เห็นว่า q เป็นจริง จะสรุปได้ว่า p q เป็นจริง • Vacuous: แสดงให้เห็นว่า p เป็นเท็จ จะได้ p qเป็นจริง • ฯลฯ • การพิสูจน์เชิงอุปนัย (proof by induction)
Chapter 2: Basic Structures Sets, Functions, Sequences, and Sums
Sets • เซต หรือ Set คือกลุ่มของสิ่งของต่างๆซึ่งมีกฎเกณฑ์ชัดเจนว่าสิ่งใดอยู่ในเซตและสิ่งใดไม่ได้อยู่ในเซต สิ่งที่อยู่ในเซตเรียกว่าสมาชิก(member หรือ element) ของเซต • เราใช้ตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่แทนชื่อของเซต และตัวอักษรภาษาอังกฤษตัวพิมพ์เล็กเมื่อกล่าวถึงสมาชิกในเซตเมื่อไม่ได้เจาะจงว่าเป็นตัวใด • เราเขียนสมาชิกของเซตอยู่ภายในวงเล็บปีกกา {} • a A แปลว่า a เป็นสมาชิกของ A, A = {1,2,3} หมายถึงเซต A มีสมาชิกเป็น 1 2 3 • โดยทั่วไป เราสามารถเขียนเซตได้ 3 วิธี • ด้วยการใช้ถ้อยคำอธิบาย • A เป็นเซตของจำนวนเต็มบวกที่มีสมาชิกตั้งแต่ 1 ถึง 100 • ด้วยการแจกแจงสมาชิกทั้งหมด • A = {1,2,3,4,5,6,….,100} • ด้วยการใช้คุณสมบัติของสมาชิก หรือ เรียกว่า Set builder • A = {x | xZ+ and 0 < x 100}
Sets • ขนาดของเซตหมายถึงจำนวนสมาชิกของเซต (cardinality) เราใช้สัญลักษณ์ |A| แทนจำนวนสมาชิกของเซต A • เราเรียก เซต A ที่มีสมาชิกทุกตัวเป็นสมาชิกของเซต B ว่า A เป็นเซตย่อย (subset) ของ B เขียนแทนด้วย A B • เซตว่างคือเซตที่ไม่มีสมาชิกเลย และเป็น subset ของทุกเซต • เซตกำลัง หรือ P(A) คือเซตที่มีสมาชิกเป็น subset ของ A
Set Operations • การดำเนินการบนเซต หรือ Set operation ได้แก่ Union (), Intersect (), Complement (¯ หรือ ’), Difference (-), Symmetric Difference () • เราสามารถใช้แผนภาพเวนน์ (Venn Diagram)ในการแสดงการกระทำบนเซตได้ ซึ่งในแผนภาพเวนน์นี้จะใช้หลักของการเพิ่มเข้าและตัดออก (inclusion and exclusion)ด้วย • การเท่ากัน หรือการสมมูลกัน ของเซตจะเกิดขึ้นก็ต่อเมื่อสมาชิกของเซตสองเซตนั่นเหมือนกันทุกประการ • เราสามารถพิสูจน์ว่าเซตสองเซตใดๆเท่ากันได้โดยใช้ Set Identities, Set Builder, หรือ Set Membership Table • ผลคูณคาร์ทีเซียน (Cartesian) เป็นความสัมพันธ์ระหว่างเซตสองเซต โดยเป็นการจับคู่กันระหว่างสมาชิกของเซตแรกกับสมาชิกของเซตที่สอง เขียนแทนด้วย X Y โดยที่แต่ละค่าของ x ใน X จะมี y ใน Y ที่แตกต่างกัน ผลคูณฯ จะเป็นเซตที่มีสมาชิกที่มีลักษณะเหมือนคู่อันดับ (x, y)
Functions • ฟังก์ชัน (function) คือความสัมพันธ์จากเซตหนึ่งไปยังอีกเซตหนึ่ง หรือเรียกว่าเป็นการจับคู่ (mapping) หรือ การแปลง (transformation) จากเซตแรกไปสู่เซตที่สอง โดยที่เซตแรกเรียกว่าโดเมน (domain) เซตที่สองเรียกว่า โคโดเมน (codomain) • เราบอกโดเมนกับโคโดเมนด้วยสัญลักษณ์ f: RRหมายถึงฟังก์ชัน f เป็นการแปลงจากเซตของจำนวนจริง (R)ไปยังเซตของจำนวนจริง f จึงมีRเป็นทั้งโดเมนและโคโดเมน • เราแทนฟังก์ชันด้วยสัญลักษณ์ f(x) = y หมายถึงฟังก์ชัน f เป็นการแปลงจาก x ไปเป็น y • เรนจ์ (range) ของฟังก์ชันคือเซตที่มีสมาชิกทั้งหมดที่ใช้สำหรับการแปลงจากโดเมนมาสู่โคโดเมน ดังนั้น range จึงเป็น subset ของcodomain • การแปลงมี 2 ลักษณะ ได้แก่ • หนึ่งต่อหนึ่ง (One-to-one) : ถ้า x1 และ x2 เป็นสมาชิกของโดเมนของ f แล้ว f (x1) = f (x2) ก็ต่อเมื่อ x1 = x2 และ • ทั่วถึง (Onto) : ถ้า y เป็นสมาชิกใดๆของโคโดเมนของ f แล้วจะมี x อย่างน้อย 1 ตัว ซึ่ง f (x) = y
Functions • ฟังก์ชันที่เป็นทั้ง one-to-one และ onto จะเรียกว่าbijection • เราจะสามารถหาฟังก์ชันผกผัน (inverse function) ของฟังก์ชันใดๆได้ก็ต่อเมื่อฟังก์ชันนั้นเป็นbijection • ฟังก์ชัน f: X → Y และ g:Y → Z สามารถประกอบกันได้ ซึ่งจะได้ผลเป็น ฟังก์ชันประกอบ (composite function)gof: X → Z ซึ่งมีนิยามคือ (g o f) (x) = g (f (x)) • ฟังก์ชันเพดาน และฟังก์ชันพื้น (ceiling and floor functions) เป็นฟังก์ชันที่ใช้ในการประมาณค่าจำนวนจริงให้เป็นจำนวนเต็มโดยการปัดเศษขึ้นหรือลงตามลำดับ ใช้สัญลักษณ์ และ ตามลำดับ • เราสามารถอธิบายฟังก์ชันได้ด้วยกราฟของฟังก์ชัน ซึ่งคือการวาดภาพความสัมพันธ์ของสมาชิกในโดเมนและเรนจ์นั่นเอง
Sequences • ลำดับ หรือ Sequence เป็นรายการของสิ่งของที่มีการเรียงลำดับแล้ว • มีส่วนที่คล้ายกับ Set มีพจน์ ซึ่งเป็นสมาชิกในลำดับ และจำนวนสมาชิกคือความยาวของลำดับ • ส่วนที่แตกต่างจาก Set คือ สมาชิกทุกตัวมีลำดับ ดังนั้น พจน์ที่เหมือนกัน จะเกิดขึ้นต่างลำดับกัน • เราแทนสมาชิกตัวที่ n ของลำดับด้วย anโดยที่ n = 1,2,3, … • เราสามารถแบ่งลำดับตามจำนวนสมาชิกได้ดังนี้ • ลำดับอนันต์ คือลำดับที่มีจำนวนสมาชิกไม่จำกัด • ลำดับจำกัด คือลำดับที่มีจำนวนสมาชิกจำกัด
Sequences • เราสามารถแบ่งลำดับตามความสัมพันธ์ของสมาชิกได้หลายประเภท เช่น • ลำดับเลขคณิต : คือลำดับที่มีผลต่างระหว่างพจน์ที่ n+1 กับพจน์ที่ n มีค่าคงตัว ค่าคงตัวนี้เรียกว่า ผลต่างร่วม (common diference) สามารถเขียนสูตรของพจน์ที่ n ในรูปของพจน์ที่ 1 ได้ดังสมการ an= a1 + (n-1)d โดยที่ d คือ ผลต่างร่วม • ลำดับเรขาคณิต : คือ อัตราส่วนระหว่างพจน์ที่ n +1 กับ พจน์ที่ n มีค่าคงตัว ค่าคงตัวนี้เรียกว่า อัตราส่วนร่วม (common ratio) สามารถเขียนพจน์ที่ n ใดๆ ในรูปของพจน์ที่ 1 ดังนี้ an = a1 * rn − 1โดยที่ r คืออัตราส่วนร่วม • ลำดับฮาร์โมนิก : หมายถึง ลำดับที่มีพจน์แต่ละพจน์เป็นส่วนกลับของพจน์ในลำดับเลขคณิต • ลำดับฟีโบนักชี : คือลำดับของจำนวนเต็มบวก ซึ่งมีคุณสมบัติว่า an = an − 1 + an − 2
Summations • ผลบวก หรือ summation คือผลบวกของของเซตของจำนวน ในบางครั้งเราอาจเรียกว่า series • Series เป็นผลบวกของพจน์ใน sequence • เราใช้สัญลักษณ์ แทนผลบวกของสมาชิกในเซตหรือลำดับ • และใช้สัญลักษณ์ แทนผลคูณของสมาชิกในเซตหรือลำดับ • คุณสมบัติที่น่าสนใจของผลบวก เช่น • ca = c a เมื่อ c เป็นค่าคงที่ • a + b = (a+b)
Chapter 3: Algorithms Algorithms and Analysis, (Algorithms on) The Integers, and Matrices
Algorithms • ขั้นตอนวิธี หรือ อัลกอริทึม (algorithm) หมายถึงกระบวนการแก้ปัญหาที่สามารถเข้าใจได้ มีลำดับหรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอนและ ชัดเจน เมื่อนำเข้าอะไร แล้วจะต้องได้ผลลัพธ์เช่นไร • ในการทำงานอย่างเดียวกัน เราอาจจะเลือกขั้นตอนวิธีที่ต่างกันเพื่อแก้ปัญหาได้ โดยที่ผลลัพธ์ที่ได้ในขั้นสุดท้ายจะออกมาเหมือนกันหรือไม่ก็ได้ และจะมีความแตกต่าง ที่จำนวนและชุดคำสั่งที่ใช้ต่างกันซึ่งส่งผลให้ เวลา (time) , และขนาดหน่วยความจำ (space) ที่ต้องการต่างกัน หรือเรียกได้อีกอย่างว่ามีความซับซ้อน (complexity) ต่างกัน • การนำขั้นตอนวิธีไปใช้ ไม่จำกัดเฉพาะการเขียนโปรแกรมคอมพิวเตอร์ แต่สามารถใช้กับปัญหาอื่น ๆ ได้เช่น การออกแบบวงจรไฟฟ้า, การทำงานเครื่องจักรกล, หรือแม้กระทั่งปัญหาในธรรมชาติ เช่น วิธีของสมองมนุษย์ในการคิดเลข หรือวิธีการขนอาหารของแมลง
Pseudocode • รหัสเทียม (Pseudocode) เป็นภาษาที่ใช้ในการเขียนอธิบาย algorithm โดยอยู่ในรูปที่ใกล้เคียงกับภาษาที่ใช้ในการเขียนโปรแกรม
Analysis of Algorithms • ความซับซ้อน (Complexity) ของ algorithm • เชิงเวลา (time complexity) หมายถึงเวลาที่ใช้ในการทำงานของโปรแกรม โดยทั่วไปจะขึ้นอยู่กับขนาดของ input • เชิงพื้นที่ (space complexity) หมายถึงขนาดของพื้นที่ในหน่วยความจำที่ถูกใช้สำหรับการทำงานของโปรแกรม
Analysis of Algorithms • การเติบโตของฟังก์ชัน (Growth of Function) • Big O • Big Theta • Big Omega
Algorithms on the Integers • Division • Modular • GCD • LCM
Algorithms on the Integers • Cryptology • Caesar’s • RSA
Matrices • เมตริกซ์ (Matrices) เป็นการแสดงสมาชิกของเซตในรูปแบบของแถวและหลัก (row and column) • ขนาดของเมตริกซ์หาได้จาก จำนวนแถว x จำนวนหลัก • เมตริกซ์ใดๆ จะเท่ากันได้ก็ต่อเมื่อมีขนาดเท่ากันและสมาชิกทุกตำแหน่งมีค่าเท่ากัน • การบวกเมตริกซ์ • เป็นการบวกกันของสมาชิกที่อยู่ในตำแหน่งเดียวกันของเมตริกซ์ 2 เมตริกซ์ใดๆ ดังนั้นเมตริกซ์จะบวกกันได้ก็ต่อเมื่อเมตริกซ์ใดๆ 2 เมตริกซ์นั้นมีขนาดเท่ากัน • การคูณเมตริกซ์ • จะทำได้ก็ต่อเมื่อ จำนวนแถวของเมตริกซ์ตัวที่สองเท่ากับจำนวนหลักของเมตริกซ์ตัวแรก และผลลัพธ์จะได้เมตริกซ์ที่มีขนาดเป็น จำนวนแถวของเมตริกซ์ตัวแรก x จำนวนหลักของเมตริกซ์ตัวที่สอง
Chapter 4: Induction and Recursion Induction and Recursion
Mathematical Induction • อุปนัยเชิงคณิตศาสตร์ (Mathematical Induction) เป็นการพิสูจน์แบบหนึ่ง โดยใช้กรณีเฉพาะมาทำการอุปนัยให้ได้บทสรุป โดยทั่วไปมักใช้ในการสร้างทฤษฎีจากผลของการทดลอง • อุปนัยเชิงคณิตศาสตร์จะใช้กับการพิสูจน์คุณสมบัติบางประการของจำนวนเต็มบวก หรือจำนวนนับ
Mathematical Induction • อุปนัยเชิงคณิตศาสตร์มี 2 ขั้นตอน • ขั้นมูลฐาน (basis step) เป็นการแสดงว่าประพจน์เป็นจริงเมื่อกล่าวกับจำนวนเต็มบวกตัวแรก • ขั้นชักนำ (inductive step) เป็นการใช้กรณีหนึ่งเพื่อไปสรุปอีกกรณีหนึ่ง คือใช้สมมติฐานว่าประพจน์เป็นจริงกับจำนวนเต็มบวก k และทำการพิสูจน์เพื่อนำไปสู่บทสรุปว่าประพจน์เป็นจริงกับจำนวนเต็มบวกที่ถัดจาก k หรือ k+1 เมื่อพิสูจน์ได้ว่าประพจน์เป็นจริงกับจำนวนเต็มบวก k+1 แล้วจะสามารถสรุปได้ว่าประพจน์นี้เป็นจริงกับจำนวนเต็มบวกทุกตัว
Strong Induction and Well-Ordering • จากหลักการอุปนัยทางคณิตศาสตร์สำหรับ P(n) ที่ขึ้นกับจำนวนนับ n ถ้าเราสามารถพิสูจน์ได้ว่า1. P(1) จริง และ2. สำหรับจำนวนนับi 1 ใด ๆ P(i) P(i+1)แล้ว P(n) เป็นจริงสำหรับทุก ๆ จำนวนนับ n • หลักการนี้ไม่สามารถใช้พิสูจน์ได้ทุกกรณี เนื่องจากอาจมีค่าบางค่าที่อยู่ระหว่าง 1 ถึงiใดๆ โดยที่i < n ที่ทำให้ P(i) มีค่าเป็นเท็จ • ดังนั้น เราจึงต้องทำการพิสูจน์ให้เห็นว่า ช่วงระหว่าง 1 ถึงiใดๆนั้นประพจน์ยังมีค่าความจริงเป็นจริงอยู่ แล้วค่อยทำการพิสูจน์ต่อจาก iนั้นๆ ไปยัง i+1 หลักการนี้เรียกว่าอุปนัยเชิงคณิตศาสตร์แบบแข็งแกร่ง (Strong Induction)
Strong Induction and Well-Ordering • Well-orderingเป็นหลักการที่กล่าวว่า สำหรับเซตทุกเซตที่ไม่ใช่เซตว่าง เซตนั้นๆจะต้องมีสมาชิกที่มีค่าน้อยที่สุด • เราใช้หลักการ well-ordering นี้ในการพิสูจน์แบบ induction ได้ เนื่องจากมีความคล้ายคลึงกัน แต่โดยส่วนมากแล้วเราจะพิสูจน์โดยใช้ข้อขัดแย้ง
Recursive Definition • วิธีในการแก้ปัญหาอย่างหนึ่ง โดยประยุกต์ใช้หลักของการอุปนัยเชิงคณิตศาสตร์ เรียกว่า การเวียนเกิด หรือrecursion • ในการแก้ปัญหาแบบนี้ คำตอบจะขึ้นอยู่กับคำตอบของปัญหาย่อยๆ ที่มีลักษณะเดียวกับปัญหาใหญ่ • เราต้องนิยามการเวียนเกิดของปัญหาก่อน และเรียกนิยามนี้ว่านิยามเวียนเกิดหรือ recursive definition • ดังนั้นวิธีในการพิสูจน์ หรือการนิยามการเวียนเกิดจึงใช้การอุปนัยเชิงคณิตศาสตร์เช่นกัน
Recursive Definition • การพิสูจน์แบบเวียนเกิดมี 2 ขั้นตอน • ขั้นมูลฐาน (basis step) ทำการพิสูจน์ว่า P(1) เป็นจริง • ขั้นชักนำ หรือ ขั้นเวียนเกิด (inductive or recursive step) ทำการนิยาม นิยามเวียนเกิด เพื่อนำไปสู่การแก้ปัญหา และทำการพิสูจน์ว่า P(k) P(k+1)
Recursive Algorithms • เป็น algorithm ที่ใช้การเวียนเกิด (recursion) ในการแก้ปัญหา • การแก้ปัญหาแบบเวียนเกิดมี 2 ขั้นตอน • ขั้นมูลฐาน (basis step) กำหนดค่าเริ่มต้นของการเวียนเกิด • ขั้นชักนำ หรือ ขั้นเวียนเกิด (inductive or recursive step) ทำการนิยาม นิยามเวียนเกิด เพื่อนำไปสู่การแก้ปัญหา โดยการสร้างกฎสำหรับการหาคำตอบโดยเริ่มจากจำนวนนับที่น้อยๆ ก่อน
Program Correctness • เป็นการพิสูจน์ว่าโปรแกรมที่เขียนขึ้นมานั้นมีความถูกต้องเมื่อเทียบกับ input และ output ที่กำหนดให้ • โปรแกรมจะมีความถูกต้องก็ต่อเมื่อได้ให้ output ที่ถูกต้องสำหรับทุกๆ input ที่เป็นไปได้ • Initial assertion คือคุณสมบัติของ input ที่กำหนดให้ • Final assertion คือคุณสมบัติที่ output ควรจะมี • การพิสูจน์ความถูกต้องของโปรแกรม (program verification) แบ่งได้เป็น 2 ส่วน • โปรแกรมจะมีความถูกต้องบางส่วน (partial correctness) เมื่อโปรแกรมสามารถให้ output ที่ถูกต้องหลังจากโปรแกรมหยุดทำงาน (terminate) ได้ • ถ้าโปรแกรมสามารถจบการทำงานได้ โปรแกรมจะมีความถูกต้องทั้งหมด (total correctness) • โดยทั่วไปจะใช้สัญลักษณ์ของ Hoare (Hoare Notation) ในการพิสูจน์
In-Class Exercises • Homework
Chapter 5: Counting Counting, Pigeonhole Principle, Permutation, and Combination
Basic Rules of Count • กฎของผลคูณและผลบวก (Rules of Product and Sum) • ถ้า E1, E2, E3, …, Ekเป็นลำดับของเหตุการณ์ซึ่งจำนวนวิธีของการเกิดเหตุการณ์แต่ละอย่างไม่ขึ้นกับวิธีการเกิดของเหตุการณ์ที่เกิดก่อน • ถ้าจำนวนวิธีของการเกิด Ei = ni, i = 1, 2, 3, …, k แล้ว • จำนวนวิธีของการเกิดเหตุการณ์ทั้งลำดับ คือ n1n2n3…nk • จำนวนวิธีของการเกิดเหตุการณ์เพียงอย่างใดอย่างหนึ่ง คือ n1 + n2 + n3 + … + nk • หลักของการเพิ่มเข้าและตัดออก (Inclusion-Exclusion Principle) ใช้ในกรณีที่มีการนับขาด หรือนับเกิน
Pigeonhole Principle • หลักการรังนกพิราบ (Pigeonhole Principle) • ถ้ามีรังนกพิราบ n รังและมีนกพิราบ m ตัว ถ้า n+1 แล้วจะมีอย่างน้อย 1 รังที่มีนกพิราบมากกว่า 1 ตัว • เราสามารถขยายหลักการนี้ให้ใช้งานได้มากขึ้นโดย • ถ้ามีนกพิราบ N ≥ k+1ตัวต้องการเข้ารังkรัง ดังนั้นต้องมีอย่างน้อยที่สุด 1 รังที่มีนกพิราบอย่างน้อยที่สุด N/k ตัว