ตัวอย่างขั้นตอนการทำงาน ของ ขั้นตอนวิธีของควิน-แม็กคลัสกีย์

ลดรูปนิพจน์ตรรกศาสตร์ต่อไปนี้:

f ( A , B , C , D ) = ∑ m ( 4 , 5 , 6 , 8 , 9 , 10 , 13 ) + d ( 0 , 7 , 15 ) {\displaystyle f(A,B,C,D)=\sum m(4,5,6,8,9,10,13)+d(0,7,15)\,}

รวมเทอมเข้าด้วยกันเพื่อลดจำนวนเทอม

เนื่องจากนิพจน์ตรรกศาสตร์ดังกล่าว มีตัวแปรจำนวน 4 ตัว ได้แก่ A, B, C และ D ดังนั้นจึงสามารถสร้างตารางค่าความจริงได้ทั้งหมด 16 กรณี ดังนี้
ABCD-f
m00000-x
m10001-0
m20010-0
m30011-0
m40100-1
m50101-1
m60110-1
m70111-x
m81000-1
m91001-1
m101010-1
m111011-0
m121100-0
m131101-1
m141110-0
m151111-x


ในการรวมเทอมเข้าด้วยกันเพื่อลดจำนวนเทอมนั้น จะพิจารณาจากเทอมที่มีค่าของ A,B,C และ D ต่างกันเพียง 1 บิต ตัวอย่างเช่น 0000 กับ 0100 (ต่างกันที่บิตที่สอง) หรือ 0000 กับ 1000 (ต่างกันที่บิตที่หนึ่ง) เป็นต้น ดังนั้นเพื่อให้ง่ายต่อการพิจารณา จะทำการแบ่งกลุ่มที่มีค่าของ A,B,C และ D ต่างกันเพียง 1 บิตโดยแบ่งตามจำนวนของเลข 1 ในค่า A,B,C และ D ดังนี้

จำนวนเลข 1 ใน A,B,C,Dmค่าของ A,B,C,D
0m00000
1m40100
m81000
2m50101
m60110
m91001
m101010
3m70111
m131101
4m151111


จากตารางด้านบน จะเห็นว่าเราสามารถแบ่งกลุ่มที่มีค่าของ A,B,C,D ต่างกันเพียง 1 บิทได้เป็น 5 กลุ่ม ดังนั้นในการรวมเทอมที่มีรูปแบบคล้ายกัน เราจะพิจารณาแต่ละกลุ่มเทียบกันโดยใช้วิธีการเขียนตาราง ดังนี้

  1. เขียนค่าของ ABCD ที่ต้องการพิจารณาลงในคอลัมน์เริ่มต้นของตาราง (คอลัมน์ที่ 1)
  2. เปรียบเทียบค่า ABCD ที่ต่างกันเพียง 1 บิต (ค่าของกลุ่มติดกันที่แบ่งไว้ข้างต้น) เพื่อยุบรวมเป็นตัวเดียว โดยแทนตัวที่ต่างกันด้วย "-" และแทนตัวที่เหมือนกันด้วยตัวเลขนั้นๆ เขียนผลลัพธ์ลงในคอลัมน์ถัดไป (คอลัมน์ที่ 2) ตัวอย่างเช่น เปรียบเทียบ 0000 กับ 0100 แล้วรวมเป็น 0-00, เปรียบเทียบ 0000 กับ 1000 แล้วรวมเป็น -000 เป็นต้น
  3. เมื่อยุบรวมพจน์เรียบร้อยแล้ว ให้ทำการเขียนเครื่องหมายถูก "/" หากยุบไม่ได้ก็ใส่เครื่องหมายดอกจัน "*" ไว้ด้านหลังพจน์ที่ถูกยุบรวมแล้ว
  4. ทำการเปรียบเทียบค่า ABCD ไปเรื่อยๆ เพื่อยุบรวมพจน์จนกระทั่งไม่สามารถยุบรวมได้อีก
คอลัมน์ที่ 1คอลัมน์ที่ 2คอลัมน์ที่ 3
0000 /0-00 *01-- *
--000 *
0100 /-1-1 *
1000 /010- /
-01-0 /
0101 /100- *
0110 /10-0 *
1001 /
1010 /01-1 /
--101 /
0111 /011- /
1101 /1-01 *
-
1111 /-111 /
11-1 /

จากตารางด้านบน แสดงให้เห็นว่าพจน์ที่ไม่สามารถยุบรวมได้อีก มีทั้งหมด 7 พจน์ ได้แก่ 0-00, -000, 100-, 10-0, 1-01, 01-- และ -1-1

สร้างตารางเพื่อหานิพจน์ตรรกศาสตร์ในรูปอย่างง่าย

การสร้างตาราง

การสร้างตารางในเบื้องต้น มีขั้นตอนดังนี้

  • สำหรับแต่ละแถว คือ พจน์ที่ไม่สามารถยุบรวมได้อีก ที่ได้หามาแล้วในขั้นตอนที่ 1
  • สำหรับแต่ละคอลัมน์ คือ พจน์ที่มีค่าฟังก์ชันเป็น 1
  • ทำเครื่องหมายกากบาท "X" ในตารางตามช่องที่มีตัวเลขในแถวและคอลัมน์เหมือนกัน


ขั้นตอนที่ 1
456891013
0,4 (0-00)X
0,8 (-000)X
8,9 (100-)XX
8,10 (10-0)XX
9,13 (1-01)XX
4,5,6,7 (01--)XXX
5,7,13,15 (-1-1)XX

การหารูปอย่างง่ายของนิพจน์ตรรกศาสตร์

หลังจากสร้างตารางเสร็จเรียบร้อยแล้ว หลักการในการหารูปอย่างง่ายของนิพจน์ตรรกศาสตร์ คือการเลือกแถวให้น้อยที่สุด โดยเลือกให้ครอบคลุมทุกคอลัมน์

  • ในการเลือกแถวเบื้องต้นนั้น จะทำการตรวจสอบคอลัมน์ที่มีเครื่องหมาย "X" เพียงแถวเดียว แล้วทำการเลือกแถวนั้นๆ เนื่องจากเป็นแถวที่จำเป็นต้องเลือก หากไม่เลือกจะทำให้ไม่ครอบคลุมครบทุกคอลัมน์
  • ทำเครื่องหมายทั้งในแนวแถวและคอลัมน์ที่เลือก
ขั้นตอนที่ 2
456891013
0,4 (0-00)X
0,8 (-000)X
8,9 (100-)XX
8,10 (10-0)XX
9,13 (1-01)XX
4,5,6,7 (01--)XXX
5,7,13,15 (-1-1)XX
  • จากนั้นให้ทำเครื่องหมายให้กับ "X" ที่อยู่ในคอลัมน์เดียวกันทั้งหมด เพื่อแสดงว่าคอลัมน์นั้นๆ ได้ถูกครอบคลุมโดยแถวที่เลือกไปแล้ว
ขั้นตอนที่ 3
456891013
0,4 (0-00)X
0,8 (-000)X
8,9 (100-)XX
8,10 (10-0)XX
9,13 (1-01)XX
4,5,6,7 (01--)XXX
5,7,13,15 (-1-1)XX
  • เลือกแถวที่ครอบคลุม "X" ในคอลัมน์ที่เหลืออยู่ แล้วทำเครื่องหมายสำหรับแถวนั้น (หากมีหลายแถวจะต้องเลือกแถวที่ครอบคลุมคอลัมน์ได้มากที่สุด)
  • ผลที่ได้จะมีจำนวนแถวที่เลือกน้อยที่สุด และครอบคลุมส่วนที่เหลือทั้งหมดได้
ขั้นตอนที่ 4
456891013
0,4 (0-00)X
0,8 (-000)X
8,9 (100-)XX
8,10 (10-0)XX
9,13 (1-01)XX
4,5,6,7 (01--)XXX
5,7,13,15 (-1-1)XX

ดังนั้น นิพจน์ตรรกศาสตร์ในรูปอย่างง่าย คือ : f A , B , C , D = A B ′ D ′ + A C ′ D + A ′ B {\displaystyle f_{A,B,C,D}=AB'D'+AC'D+A'B}


ใกล้เคียง

ขั้นตอนวิธีแบบยุคลิด ขั้นตอนวิธีการค้นหาเพื่อนบ้านใกล้สุด k ตัว ขั้นตอนวิธีของฟลอยด์-วอร์แชล ขั้นตอนวิธีของควิน-แม็กคลัสกีย์ ขั้นตอนวิธีฮังกาเรียน ขั้นตอนวิธี ขั้นตอนวิธีของชอร์ ขั้นตอนวิธีเชิงพันธุกรรม ขั้นตอนวิธีโบรน-เคอร์โบสท์ ขั้นตอนวิธีของไดก์สตรา

แหล่งที่มา

WikiPedia: ขั้นตอนวิธีของควิน-แม็กคลัสกีย์ http://logik.phl.univie.ac.at/~chris/cgi-bin/cgi-f... http://webdocs.cs.ualberta.ca/~amaral/courses/329/... http://www.eetimes.com/discussion/programmer-s-too... http://www.freebookzone.com/fetch.php?bkcls=hw_log... http://www.phpkode.com/source/s/quine-mccluskey-me... http://sourceforge.net/projects/qmcs/ http://www.kmitl.ac.th/~ksjirasa/Lecture/AdvDigita... http://webstaff.kmutt.ac.th/~iauaroen/ENE232/Minim... http://somnuek.rmutl.ac.th/Digital2/PDF3_51/6_T3.p... http://narong.ece.engr.tu.ac.th/digital/03-Reduce....