500 likes | 738 Views
461191 Discrete Math Lecture 12: Boolean Algebra. San Ratanasanya CS, KMUTNB. Today’s topics. Review of Trees Boolean Algebra Quizzes Final Exam is in 3 weeks! Please be prepared!. 2. Trees. No circuit No multiple edges No loops
E N D
461191 Discrete MathLecture 12: Boolean Algebra San Ratanasanya CS, KMUTNB
Today’s topics • Review of Trees • Boolean Algebra • Quizzes • Final Exam is in 3 weeks! Please be prepared! 2
Trees • No circuit • No multiple edges • No loops • Tree คือ Connected Undirected Graph ที่ไม่มี Simple Circuit • สำหรับ Undirected Graph ที่ไม่มี Simple Circuit แต่ไม่ Connect กัน เราสามารถเรียกว่าเป็น Tree หลายอัน และในกรณีนี้ เราเรียก Tree เหล่านั้นว่า Forest Simple Graph
Rooted Tree • เป็น Tree ที่มีหนึ่ง Vertex กำหนดให้เป็น Root และทุกๆ Edge จะมีทิศทางออกมาจาก Root นั้น • Root • Ancestor, Descendant • Parent, Child, Sibling • Internal Vertex, Leaf • Subtree • Level, Height
More Trees • M-ary Tree คือ Tree ที่ทุกๆ Internal Vertex มี Childrenไม่เกิน m children และจะเรียกว่าเป็น Full M-aryTree ก็ต่อเมื่อ ทุกๆ Internal Vertex มี mchildren • Ordered Root Tree คือ Rooted Tree ที่ Children ในแต่ละ Internal Vertex มีการจัดลำดับ ซึ่งปกติเราจะจัดเรียงจากซ้ายไปขวา • Balanced Tree คือ Tree ที่มี Leaf อยู่ที่ Level h หรือ h-1 เท่านั้น
Tree Properties • Tree ที่มี nvertex จะมี n-1 edges • Full m-ary Tree ที่มี i Internal Vertices จะมี vertex ทั้งหมด n = mi + 1 vertex • ถ้า Full m-ary Tree มี n vertices, จะมี i = (n - 1)/m internal vertices และ l = ((m - 1)n + 1)/m leaves • ถ้า Full m-ary Tree มี i internal vertices, จะมี n = mi + 1 vertices และ l = (m - 1)i + 1 leaves • ถ้า Full m-ary Tree มี l leaves, จะมี n = (ml – 1)/(m – 1) vertices และ i = (l - 1)/(m - 1) internal vertices • M-ary Tree ที่มีความสูง h จะมี leaf ได้มากที่สุดเท่ากับ mh • M-ary Tree ที่มีความสูง h และมี l leaves, จะได้ว่า h logml ถ้าเป็น Full M-ary Balanced Tree, h = logml
Tree Modeling and Applications • Binary Search Tree • Decision Tree • Prefix Code: Huffman Coding • GameTrees
Tree Traversal • Preorder • Inorder • Postorder 723*-4^93/+ = ?
Spanning Tree (ต้นไม้ทอดข้าม) • ถ้าให้ G เป็น Simple Graph แล้ว เราจะเรียก Tree ที่ประกอบไปด้วย vertex ทุก vertex ใน G ว่า Spanning Tree ซึ่งก็คือ Subgraph ของ G นั่นเอง จะเห็นได้ว่าเราสามารถหา Spanning Tree ของ G ได้หลายอัน • เราสามารถหา Spanning Tree ได้จาก Depth-First Search หรือ Breadth-First Search
Minimum Spanning Tree • ถ้าหากว่า Graph มีน้ำหนักแล้ว Spanning Tree ก็จะมีน้ำหนักด้วย ดังนั้น Minimum Spanning Tree คือ Spanning Tree ที่มีน้ำหนักน้อยที่สุด ซึ่งคำนวณจากผลรวมของน้ำหนักของเส้นเชื่อมทั้งหมด โดยทั่วไปเราจะหา Minimum Spanning Tree จาก • Prim’s Algorithm หรือ • Kruskal’s Algorithm • หลักการของทั้ง 2 วิธีการดังกล่าวคล้ายกัน ต่างกันตรงที่ Kruskal’s จะเลือก edge ที่มีน้ำหนักน้อยที่สุดโดยไม่สนใจว่าจะสามารถเชื่อมต่อกับ edge ที่มีอยู่แล้วได้หรือไม่ก่อน • Kruskal’s จะมีประสิทธิภาพดีกว่า Prim’s เมื่อมีจำนวน edge น้อยๆ หรือกราฟมีลักษณะแผ่กว้าง (Sprase)
Examples Prim’s Algorithm Kruskal’s Algorithm
Boolean Algebra เป็นกฎที่ใช้ในการทำงานกับ set { 0, 1 } หรือ { F, T } Boolean Literal= Boolean Variable เช่น x, y การดำเนินการที่ใช้บ่อยที่สุด 3 อย่าง ได้แก่ Complement and Boolean product (AND) 1·1 = 1, 1·0 = 0, 0·1 = 0, 0·0 = 0 Boolean sum (OR) 1+1 = 1, 1+0 = 1, 0+1 = 1, 0+0 = 0 ลำดับของตัวดำเนินการ (Precedence): complement, AND, OR 14
Example: 15
Exercise จงหาค่าของนิพจน์ต่อไปนี้ 1 คำตอบ: A) 1 , B) 1, C) 0, D) 0 2 จงหาค่าของ x ที่ทำให้นิพจน์เหล่านี้เป็นจริง คำตอบ: • X = 0 • X= 0 • X = 0,1 • None 19
Exercise จงเปลี่ยนสมการในข้อ a) ให้เป็นประพจน์ที่มีความหมายเดียวกัน โดยให้ 0 = False, 1 = True, Boolean sum = disjunction, Boolean product =conjunction, Boolean complementation = negation, และ Equal sign = Equivalence sign 3 คำตอบ: 0·1 + 1·1 0+1 = 1 คำตอบ: (~TΛ~F) V (T·~F) = T 20
Exercise 4 คำตอบ: 21
Exercise 5 4 Answer: 23
Exercise Answer: Discrete Mathematics for Computer Science 24
Exercise 6 Answer: 1. X=0, Y=0 2. X=1, Y=1 7 Answer: 25
Exercise 8 Answer: a) x b) c) 0 d) 1 26
Miscelleneous • Functional Completeness คือ set ของ Boolean Operator ที่สามารถแสดง Boolean Function ได้ครบทุกรูปแบบ เช่น {+, , ¯}, {+, ¯}, {, ¯} แต่ {+, ¯} ไม่ใช่ Functionally Complete • จำนวนของ Boolean Function=subset ของ power set ของจำนวน literal (degree) • ภาวะคู่กัน (Duality)edของ Boolean expression e สร้างได้จาก e โดยการ • เปลี่ยน + เป็น • เปลี่ยน 0 เป็น 1 • ถ้า e1 = e2 แล้ว e1d = e2d • Examples • ถ้า x(x+y) = x แล้ว x + xy = x • Boolean Functions ของ degree 6 จะมีจำนวน =226= 264 = 18,446,744,073,709,551,616 • { | } (NAND) และ { } (NOR) เป็น functionally complete หรือไม่
Logical Gates Not Gate 28
Adders Half Adder Full Adder
Example จงหา minterm ที่มีค่าเป็น 1 เมื่อ Representing Boolean Functions • Definitions • Literal (สัญพจน์) หมายถึง ตัวแปร Boolean ใดๆ หรือ ส่วนเติมเต็มของตัวแปรนั้นๆ • Minterm ของตัวแปร Booleanx1, x2, x3, …, xnคือผลคูณ Booleany1, y2, y3, …, ynเมื่อ yi = xiหรือ yi = • ดังนั้น minterm ก็คือผลคูณของ n literals เมื่อแต่ละ literal แทนแต่ละตัวแปร • minterm จะมีทั้งหมด 2n สำหรับ n ตัวแปร • Maxtermของตัวแปร Booleanx1, x2, x3, …, xnคือผลบวก Boolean y1, y2, y3, …, ynเมื่อ yi = xiหรือ yi = • ดังนั้น maxterm ก็คือผลบวกของ n literals เมื่อแต่ละ literal แทนแต่ละตัวแปร • Sum-of-Products Expansion (Disjunctive Normal Form) • Product-of-Sums Expansion (Conjunctive Normal Form) Answer:
Sum-of-Products expansion ผลรวมของ minterm ที่แสดงถึง Boolean Function เรียกว่าการขยายผลรวมของผลคูณ (Sum-of-Products expansion)หรือ Disjunctive Normal Form Solution 1 35
Sum-of-Products expansion Solution 2 36
Product-of-sums expansion ผลคูณของ maxterm ที่แสดงถึง Boolean Function เรียกว่าการขยายผลคูณของผลรวม (Product-of-Sums expansion) หรือ Conjunctive Normal Form 37
Minimizing Circuits • เป้าหมายของการลดรูปวงจร (Minimizing Circuits) ก็เพื่อลดจำนวนของ Logic Gate เพื่อให้เหลือแต่ที่จำเป็นกับวงจรเท่านั้น โดยที่ไม่ทำให้ Boolean Function เปลี่ยนแปลง ซึ่งการลดรูปวงจรนี้จะทำให้จำนวน transistor ที่ใช้ลดลง ขนาดของ chip เล็กลง และ ราคาก็ถูกลงด้วย • เราสามารถใช้ DNF ในการลดรูปวงจรได้ • แต่ในบทนี้เราจะศึกษาการใช้ แผนผังคาร์โนห์ (Karnaugh Map or K-Map) และ Quine-McCluskey Method ในการลดรูปวงจร
K-Map • K-Map เป็นการใช้แผนภาพที่แสดง minterm ของ boolean function และใช้ในการจับกลุ่มของ minterm เพื่อที่จะทำการลดรูปของ minterm โดยมีหลักสำคัญดังนี้ • การจับกลุ่มจะต้องจับระหว่าง cell ที่อยู่ติดกันเท่านั้น นั่นคือ cell ที่มี literal ต่างกันเพียง 1 ตัว • ให้จับกลุ่มที่ใหญ่ที่สุดก่อน โดยสมาชิกของกลุ่มจะมีจำนวนได้ตาม 2iเมื่อ i> 0 • จากนั้นทำการกำจัด literal ที่มีการเปลี่ยนแปลงในแต่ละกลุ่มออก เหลือไว้แต่ literal ที่ไม่มีการเปลี่ยนแปลง • ในการจับกลุ่มควรคำนึงถึง glitch(สัญญาณหลอก) ที่จะเกิดขึ้นเมื่อทำการลดรูปวงจรแล้วด้วย โดยพยายามจับกลุ่มให้ไม่เกิด glitch หรือเกิดน้อยที่สุด (รายละเอียดใน Digital Circuit) นั่นคือการจับกลุ่มโดยไม่ให้มี minterm ตัวเดียวกันเป็นสมาชิกของหลายกลุ่มมากเกินไป หรือจับกลุ่มให้ได้จำนวนกลุ่มน้อยที่สุด
Implicant Essential Prime Implicant Prime Implicant
Quine-McCluskey • เนื่องจาก K-Map ไม่สามารถนำมาใช้กับการลดรูปวงจรที่มี literal จำนวนมาก (degree 4) ได้อย่างมีประสิทธิภาพเท่าที่ควรเนื่องจากต้องเสียเวลาในการวาดแผนภาพ ในช่วง 1950s Quine และ McCluskey ได้คิดวิธีการแก้ไขปัญหานี้ โดยไม่ต้องใช้แผนภาพ • วิธีการนี้แบ่งออกเป็น 2 ส่วน • หา minterm ทั้งหมดที่น่าจะนำมาใช้ในการลดรูปวงจรได้ โดยจะต้องมี literal ต่างกันเพียง 1 ตัวเท่านั้น และทำการจับกลุ่มพร้อมลดรูปให้เหลือ n-2literal • ทดสอบว่า minterm ใดที่สมควรนำมาใช้ในการลดรูปวงจร โดยทำการตรวจสอบจากกลุ่มที่จับกันแล้วในข้างต้นว่าต้องใช้กลุ่มใดบ้างเพื่อให้ครอบคลุม minterm ทั้งหมดและไม่ทำให้ booleanfunction เปลี่ยนไป • ขั้นตอนโดยละเอียดของวิธีการนี้สามารถศึกษาได้จาก Sec. 11.4 page 779
Example • จงทำการลดรูปของ Boolean Function ด้วยวิธี Quine-McCluskey pair up pair up pair up
Example • จงใช้ Quine-McCluskey เพื่อทำการลดรูป DNF ต่อไปนี้
Homework 11 11.1.11, 11.2.12, 11.1.24-27,11.2.7-11, 11.2.15-16, 11.3.10-11, 11.3.15-18, 11.4.12, 11.4.25, 11.4.30-32 49
Programming Assignment 4 • จงเขียนโปรแกรมเพื่อหา Shortest path ด้วย Dijkstra’s Algorithm • จงเขียนโปรแกรมเพื่อหา Minimum SpanningTree ด้วย Prim’s และ Kruskal’s Algorithm • จงเขียนโปรแกรมเพื่อถอดรหัส Huffman โดยใช้ตารางในแบบฝึกหัด 10.2.27 • จงเขียนโปรแกรมเพื่อแสดง Boolean Function ที่เป็นไปได้ทั้งหมดสำหรับ Boolean Function ที่มี degree ไม่เกิน 3 • จงเขียนโปรแกรมเพื่อตรวจสอบความถูกต้องของข้อความตามหลักภาษาในแบบฝึกหัด 12.3.22 • จงเขียนโปรแกรมเพื่อตรวจสอบความถูกต้องของข้อความตามหลักภาษาในแบบฝึกหัด 12.3.48 • วิธีการส่งงาน: • - ส่งทาง e-mail ใช้ชื่อ Subject ว่า 461191 Programming Assignment 3 • ให้ทำการบีบอัดไฟล์ต่างๆเป็นไฟล์เดียว โดยใช้ format เป็น zip หรือ rar • ไฟล์ที่ทำการบีบอัดให้ใช้ชื่อไฟล์เป็นรหัสนศ. Each program should be submitted with a report showing its code and how it works (some screen shorts plus descriptions).