Tối giản hóa biểu thức logic bằng thuật toán Quine–McCluskey
Trong thiết kế hệ thống số và logic học, việc thu gọn các biểu thức Boolean về dạng tối giản là bước quan trọng để tối ưu hóa tài nguyên phần cứng và nâng cao hiệu suất xử lý. Công cụ "Boolean Algebra Simplifier" thực hiện việc rút gọn mọi biểu thức Boolean đầu vào thành các dạng toán học tối giản nhất. Quá trình này được thực hiện trực tiếp trong trình duyệt của người dùng và không có dữ liệu nào được tải lên máy chủ, đảm bảo tính riêng tư cho thiết bị của bạn.
Khi bạn nhập một biểu thức, hệ thống sẽ tính toán đồng thời hai dạng chuẩn tắc tối giản: tổng các tích tối giản (SOP) và tích các tổng tối giản (POS). Song song đó, công cụ cung cấp bảng chân trị chi tiết cùng các bước biến đổi trung gian dựa trên phương pháp Quine–McCluskey để người dùng dễ dàng kiểm chứng kết quả.
Các định dạng đầu vào được hỗ trợ
Công cụ cho phép nhập các biến dưới dạng các chữ cái đơn với giới hạn tối đa là 6 biến khác nhau và độ dài chuỗi ký tự dưới 2,000 ký tự. Bạn có thể sử dụng linh hoạt các hệ thống ký hiệu khác nhau từ kỹ thuật, lập trình cho đến logic học toán học:
- Phép AND: Có thể viết ở dạng ngầm định (ví dụ:
AB), sử dụng dấu chấmA·B, dấu saoA*B, từ khóaA AND B, ký hiệu lập trìnhA && B, hoặc các ký hiệu logic chuyên dụng. Các chuỗi ký tự liên tục nhưABCsẽ được tự động hiểu làA AND B AND C. - Phép OR: Sử dụng dấu cộng
A + B, từ khóaA OR B, ký hiệuA || B, hoặc ký hiệu logic. - Phép NOT: Sử dụng dấu phẩy trên
A', dấu chấm than!A, từ khóaNOT A, hoặc ký hiệu phủ định¬A. - Phép XOR: Sử dụng ký hiệu mũ
A ^ B, từ khóaA XOR B, hoặc ký hiệuA ⊕ B. - Phép NAND: Sử dụng từ khóa
A NAND Bhoặc ký hiệu⊼. - Phép NOR: Sử dụng từ khóa
A NOR Bhoặc ký hiệu⊽. - Hằng số: Cho phép sử dụng các hằng số logic
0và1.
Giao diện cung cấp các lối tắt tiện lợi để người dùng thử nghiệm nhanh với các biểu thức mẫu:
- Hợp nhất các số hạng (ví dụ về định luật đồng thuận - consensus).
- Phủ định của tích (ví dụ về định luật De Morgan).
- Phép XOR ba ngôi (ví dụ về hàm XOR nhiều biến).
Nút Xóa cho phép xóa nhanh toàn bộ nội dung trong khung nhập liệu để bắt đầu một phiên làm việc mới.
Cấu trúc kết quả đầu ra và chẩn đoán
Sau khi xử lý biểu thức, công cụ hiển thị các thông tin chi tiết tại các mục chuyên biệt:
- Đọc là: Hiển thị cách diễn giải chuẩn hóa của biểu thức đầu vào sau khi được hệ thống phân tích.
- Tổng các tích tối giản (SOP): Dạng tối giản hóa tối ưu dưới cấu trúc tổng của các tích.
- Tích các tổng tối giản (POS): Dạng tối giản hóa tối ưu dưới cấu trúc tích của các tổng.
- Sơ lược: Bảng chẩn đoán nhanh các thông số kỹ thuật của biểu thức bao gồm:
- Các biến: Danh sách các biến độc lập được phát hiện.
- Các hàng bằng 1: Danh sách hoặc số lượng các minterm.
- Các tế bào liên hợp nguyên tố: Tổng số lượng tế bào liên hợp nguyên tố tìm được.
- Các tế bào liên hợp nguyên tố cốt yếu: Số lượng tế bào liên hợp nguyên tố bắt buộc phải có trong phủ tối thiểu.
- Số lượng biến đơn, trước → sau: Số lượng các biến đơn xuất hiện trong biểu thức trước và sau khi tối giản.
- Phương pháp: Hiển thị phương pháp tính toán mặc định là "Quine–McCluskey, phủ tối thiểu chính xác".
Người dùng có thể sử dụng nút Sao chép kết quả để lưu nhanh các dạng tối giản vào bộ nhớ tạm của thiết bị.
Chi tiết các bước tối giản hóa
Tại mục Cách biểu thức được tối giản, công cụ hiển thị tiến trình suy luận toán học một cách tuần tự:
- Phân tích số lượng biến: Hệ thống xác định số lượng biến và số hàng tương ứng trong bảng chân trị. Ví dụ: "Biểu thức sử dụng
‹count›biến (‹variables›), vì vậy bảng chân trị có‹rows›hàng." hoặc "Biểu thức sử dụng một biến,‹variables›, vì vậy bảng chân trị có‹rows›hàng.". - Xác định minterm và maxterm: Liệt kê các hàng mà tại đó biểu thức nhận giá trị 1 hoặc 0. Cú pháp hiển thị: "Nó bằng 1 trên các hàng Σm(
‹minterms›) và bằng 0 trên các hàng ΠM(‹maxterms›).". - Tìm tế bào liên hợp: Tiến hành gộp các ô kề nhau trong bảng chân trị. Hệ thống sẽ thông báo: "Hợp nhất các hàng bằng 1 lân cận nhiều nhất có thể sẽ để lại
‹count›tế bào liên hợp nguyên tố:‹list›.". - Xác định tế bào cốt yếu: Lọc ra các tế bào liên hợp nguyên tố cốt yếu. Nếu có, hệ thống xuất dòng: "Các tế bào liên hợp nguyên tố cốt yếu — lớp phủ duy nhất còn lại cho ít nhất một hàng:
‹list›.". Trong trường hợp không có tế bào nào là cốt yếu, thông báo sẽ là: "Không có tế bào liên hợp nguyên tố nào là cốt yếu: mỗi hàng bằng 1 có thể được phủ bằng nhiều hơn một cách.". - Phủ các hàng còn lại: Nếu các tế bào cốt yếu chưa phủ hết các minterm, hệ thống sẽ giải quyết bằng cách: "Các hàng chưa được phủ sẽ được phủ bằng số lượng số hạng phụ thêm ít nhất:
‹list›.". Nếu đã phủ hết, thông báo sẽ là: "Các tế bào liên hợp nguyên tố cốt yếu đã phủ mọi hàng bằng 1, vì vậy phép tổng đã hoàn thành.". - Xác định dạng POS: Quy trình tương tự được áp dụng trên các hàng bằng 0 để tìm ra tích các tổng tối giản: "Thực hiện cùng một quy trình hợp nhất trên các hàng bằng 0 sẽ cho ra tích các tổng tối giản
‹pos›.". - Xác minh: Cuối cùng, hệ thống đối chiếu cả hai dạng tối giản với biểu thức gốc trên toàn bộ các hàng của bảng chân trị: "Cả hai dạng tối giản đều khớp với biểu thức gốc trên tất cả
‹rows›hàng của bảng chân trị.".
Bảng chân trị trực quan
Để đảm bảo tính minh bạch và giúp người dùng dễ dàng đối chiếu, công cụ xây dựng một Bảng chân trị hoàn chỉnh. Bảng này bao gồm các cột dành cho các biến đầu vào, cột Biểu thức (giá trị logic của biểu thức gốc) và cột SOP tối giản (giá trị logic của biểu thức sau khi rút gọn). Việc hiển thị song song này giúp người dùng xác minh trực quan rằng biểu thức tối giản hoạt động hoàn toàn đồng nhất với biểu thức ban đầu trên từng hàng dữ liệu.
Các quy tắc xử lý lỗi và trạng thái đặc biệt
Trong quá trình nhập liệu và tính toán, hệ thống sẽ kiểm tra các ràng buộc cú pháp và ngữ nghĩa để đưa ra các thông báo trạng thái hoặc lỗi cụ thể:
- Trạng thái trống: Khi chưa có dữ liệu, hệ thống hiển thị thông báo "Nhập một biểu thức Boolean để tối giản nó.".
- Trạng thái hoàn thành: Khi tối giản thành công, hệ thống hiển thị "Đã tối giản và được kiểm tra trên tất cả
‹rows›hàng.". - Biểu thức hằng số: Nếu biểu thức luôn trả về một giá trị cố định, hệ thống sẽ hiển thị "Biểu thức này là hằng số: nó luôn bằng
‹value›.".- Đối với hằng số 1 (tautology): "Biểu thức này luôn bằng 1: mọi sự kết hợp giá trị đều làm cho nó đúng.".
- Đối với hằng số 0 (contradiction): "Biểu thức này luôn bằng 0: không có sự kết hợp giá trị nào làm cho nó đúng.".
- Biểu thức đã tối giản sẵn: Nếu đầu vào không thể rút gọn thêm, hệ thống thông báo: "Biểu thức của bạn đã là một tổng các tích tối giản rồi.".
- Lỗi bỏ trống: "Vui lòng nhập một biểu thức Boolean.".
- Lỗi vượt quá độ dài: "Giữ biểu thức dưới 2,000 ký tự.".
- Lỗi ký tự không hợp lệ: "
‹char›" (vị trí‹position›) không phải là một toán tử, biến hoặc hằng số Boolean.". - Lỗi cú pháp/thiếu toán hạng: "Một toán tử bị thiếu toán hạng gần vị trí
‹position›— hãy kiểm tra xem có toán tử + · hoặc ⊕ bị thừa hay không.". - Lỗi ngoặc đơn: "Các dấu ngoặc đơn không cân đối — hãy thêm hoặc bớt một dấu ngoặc.".
- Lỗi vượt quá số biến: "Biểu thức này sử dụng
‹count›biến khác nhau; trình tối giản hỗ trợ tối đa 6 biến.".
Câu hỏi thường gặp
Tại sao chỉ hỗ trợ tối đa 6 biến?
Sáu biến đã tạo ra một bảng chân trị gồm 64 hàng, đây là giới hạn để con người vẫn có thể đọc và kiểm tra thủ công. Vượt quá mức đó, việc tối thiểu hóa về mặt lý thuyết vẫn hoạt động, nhưng các bước suy luận và bảng chân trị mà trang này xây dựng xung quanh sẽ không còn hữu ích để làm bằng chứng trực quan nữa. Phần mềm thiết kế logic có xuất tệp sẽ phù hợp hơn cho các hàm có nhiều biến hơn.
Dạng tối giản được tìm ra như thế nào?
Công cụ này xây dựng bảng chân trị đầy đủ, hợp nhất các hàng có giá trị bằng 1 lân cận thành các tế bào liên hợp nguyên tố (phương pháp Quine–McCluskey), giữ lại các tế bào cốt yếu và phủ các hàng còn lại bằng một phủ tối thiểu chính xác. Kết quả được đảm bảo tối giản tuyệt đối cho dạng tổng các tích (SOP) — đây không phải là một thuật toán phỏng đoán — và quy trình tương tự áp dụng trên các hàng có giá trị bằng 0 sẽ tạo ra tích các tổng (POS).
Những cách viết biểu thức nào được hệ thống hiểu?
Tất cả các quy ước phổ biến đều được hỗ trợ và có thể trộn lẫn tự do: kiểu kỹ thuật (AB + A'C, với phép AND ngầm định và dấu phẩy trên cho phép NOT), kiểu lập trình (A &&!B || C, A ^ B), các ký hiệu logic (¬ ∧ ∨ ⊕ ⊼ ⊽) và các từ thuần túy (A AND B OR NOT C, NAND, NOR). Các chuỗi nhiều chữ cái như ABC được hiểu là A AND B AND C, và các từ AND, OR, NOT, XOR, NAND, NOR luôn được đọc là các toán tử.
Sự khác biệt giữa kết quả SOP và POS là gì?
Cả hai đều mô tả cùng một hàm số. Dạng tổng các tích (SOP) thực hiện phép OR các số hạng AND với nhau, chẳng hạn như AB' + BC, và ánh xạ trực tiếp tới các mạch AND–OR; dạng tích các tổng (POS) thực hiện phép AND các thừa số OR với nhau, chẳng hạn như (A + B)(B' + C), và ánh xạ tới các mạch OR–AND. Tùy thuộc vào hàm số, một trong hai dạng có thể cần ít cổng logic hơn dạng kia, vì vậy công cụ luôn hiển thị cả hai.