Ένας χάρτης Karnaugh, ή K-map, είναι ένα πλέγμα που χρησιμοποιείται για την απλοποίηση μιας λογικής έκφρασης Boolean χωρίς να χρειάζεται τόση άλγεβρα με το χέρι. Τοποθετείς τις τιμές εξόδου από έναν πίνακα αληθείας στο πλέγμα, ομαδοποιείς γειτονικά 11 και μετά γράφεις έναν απλούστερο όρο για κάθε ομάδα.

Η προϋπόθεση έχει σημασία: τα K-map είναι πιο πρακτικά για μικρές συναρτήσεις, συνήθως με δύο, τρεις ή τέσσερις μεταβλητές. Καθώς αυξάνεται ο αριθμός των μεταβλητών, ο χάρτης γίνεται πιο δύσκολος στην ανάγνωση και συνήθως άλλες μέθοδοι είναι καλύτερες.

Τι δείχνει ένας χάρτης Karnaugh

Ένα K-map περιέχει τις ίδιες πληροφορίες με έναν πίνακα αληθείας, αλλά διατάσσει τα κελιά σε σειρά Gray-code αντί για τη συνηθισμένη δυαδική σειρά. Αυτή η διάταξη κάνει τα γειτονικά κελιά να διαφέρουν ακριβώς σε μία μεταβλητή.

Αυτή η διαφορά μίας μεταβλητής είναι όλο το νόημα. Αν δύο γειτονικά κελιά είναι και τα δύο 11, η μεταβλητή που αλλάζει μπορεί να απαλειφθεί από τον απλοποιημένο όρο.

Πώς η ομαδοποίηση αφαιρεί μεταβλητές

Ο οπτικός κανόνας προκύπτει από ταυτοτικές σχέσεις της άλγεβρας Boolean όπως

XY+XY=XXY + X\overline{Y} = X

Οι δύο όροι διαφέρουν μόνο στο YY, άρα το YY απαλείφεται και παραμένει το κοινό μέρος XX. Ένα K-map σου επιτρέπει να εντοπίζεις αυτό το μοτίβο απάλειψης απευθείας πάνω στο πλέγμα.

Παράδειγμα χάρτη Karnaugh

Έστω

F(A,B,C)=m(1,3,4,5,7)F(A,B,C) = \sum m(1,3,4,5,7)

Αυτό σημαίνει ότι F=1F=1 για τους ελαχόρους 11, 33, 44, 55 και 77.

Για ένα K-map 33 μεταβλητών, χρησιμοποίησε το AA για τις γραμμές και το BCBC για τις στήλες σε σειρά Gray-code 0000, 0101, 1111, 1010:

A\BC000111100011011110\begin{array}{c|cccc} A \backslash BC & 00 & 01 & 11 & 10 \\ \hline 0 & 0 & 1 & 1 & 0 \\ 1 & 1 & 1 & 1 & 0 \end{array}

Ξεκίνα με τη μεγαλύτερη έγκυρη ομάδα. Τα τέσσερα 11 στις δύο μεσαίες στήλες σχηματίζουν μία ομάδα. Σε αυτά τα τέσσερα κελιά, το C=1C=1 παραμένει σταθερό ενώ τα AA και BB αλλάζουν, οπότε αυτή η ομάδα απλοποιείται σε

CC

Ένα 11 παραμένει ακόμη ακάλυπτο: ο ελαχόρος 44, που είναι (A,B,C)=(1,0,0)(A,B,C)=(1,0,0). Ταίριαξέ τον με τον γειτονικό ελαχόρο 55, που είναι (1,0,1)(1,0,1).

Σε αυτό το ζεύγος, το A=1A=1 και το B=0B=0 παραμένουν σταθερά ενώ το CC αλλάζει, οπότε το ζεύγος απλοποιείται σε

ABA\overline{B}

Άρα η απλοποιημένη έκφραση είναι

F(A,B,C)=C+ABF(A,B,C) = C + A\overline{B}

Αυτή η συντομότερη έκφραση είναι ισοδύναμη με την αρχική λίστα ελαχορών.

Κανόνες για έγκυρες ομάδες σε K-map

Χρησιμοποίησε ομάδες των οποίων τα μεγέθη είναι δυνάμεις του δύο: 11, 22, 44, 88 και ούτω καθεξής.

Χρησιμοποίησε τις μεγαλύτερες έγκυρες ομάδες που μπορείς. Οι μεγαλύτερες ομάδες συνήθως αφαιρούν περισσότερες μεταβλητές.

Να θυμάσαι ότι ο χάρτης «τυλίγεται». Το αριστερό και το δεξί άκρο είναι γειτονικά, και το πάνω και το κάτω άκρο είναι επίσης γειτονικά.

Τα διαγώνια κελιά δεν είναι γειτονικά.

Η επικάλυψη επιτρέπεται όταν βοηθά να δημιουργηθεί μια μεγαλύτερη ή απλούστερη ομαδοποίηση.

Συνηθισμένα λάθη στους χάρτες Karnaugh

Χρήση της συνηθισμένης δυαδικής σειράς

Αν σημειώσεις τις γραμμές ή τις στήλες ως 0000, 0101, 1010, 1111, η γειτνίαση είναι λανθασμένη. Τα K-map πρέπει να χρησιμοποιούν σειρά Gray-code ώστε τα γειτονικά κελιά να διαφέρουν μόνο κατά ένα bit.

Δημιουργία ομάδων των τριών

Μια ομάδα τριών κελιών δεν είναι ποτέ έγκυρη. Το μέγεθος πρέπει να είναι δύναμη του δύο.

Παράλειψη της γειτνίασης με αναδίπλωση

Μερικές από τις καλύτερες απλοποιήσεις χρησιμοποιούν κελιά που βρίσκονται σε απέναντι άκρα του χάρτη. Αν ξεχάσεις τον κανόνα της αναδίπλωσης, η απάντησή σου συχνά θα είναι πιο μεγάλη απ’ όσο χρειάζεται.

Να βάζεις κάθε 11 σε ακριβώς μία ομάδα

Αυτό δεν είναι κανόνας. Η επαναχρησιμοποίηση ενός κελιού μπορεί να είναι ο καλύτερος τρόπος για να δημιουργηθεί μια μεγαλύτερη ομάδα και μια συντομότερη τελική έκφραση.

Πότε χρησιμοποιείται ένας χάρτης Karnaugh

Τα K-map είναι συνηθισμένα στην ψηφιακή λογική και στα εισαγωγικά μαθήματα μηχανικής υπολογιστών, επειδή μετατρέπουν την απλοποίηση Boolean σε οπτική διαδικασία. Είναι ιδιαίτερα χρήσιμα όταν θέλεις μια απλούστερη έκφραση sum-of-products πριν σχεδιάσεις ή υλοποιήσεις ένα λογικό κύκλωμα.

Είναι επίσης καλά για την κατανόηση της διαίσθησης πίσω από τη μέθοδο. Ακόμη κι αν το λογισμικό χειρίζεται μεγαλύτερα σχέδια, η εκμάθηση των K-map κάνει πιο εύκολο να δεις γιατί ορισμένοι όροι Boolean συνδυάζονται και άλλοι όχι.

Δοκίμασε ένα παρόμοιο πρόβλημα

Δοκίμασε να απλοποιήσεις μόνος σου το F(A,B,C)=m(0,2,4,6,7)F(A,B,C)=\sum m(0,2,4,6,7). Σχεδίασε τον χάρτη, φτιάξε πρώτα τις μεγαλύτερες έγκυρες ομάδες και μετά κράτησε μόνο τις μεταβλητές που παραμένουν σταθερές σε κάθε ομάδα.

Αν θέλεις να πας ένα βήμα παραπέρα, δοκίμασε μια εκδοχή με τιμές don't-care και χρησιμοποίησέ τες μόνο όταν σε βοηθούν να σχηματίσεις μια μεγαλύτερη έγκυρη ομάδα.

Χρειάζεσαι βοήθεια με μια άσκηση;

Ανέβασε την ερώτησή σου και πάρε επαληθευμένη λύση βήμα-βήμα σε δευτερόλεπτα.

Άνοιξε το GPAI Solver →