Crossover_nand.pdf
Summary
Description Crossover nand.pdf |
English:
Crossover gadget for wires
x
and
y
, implemented as a
planar
circuit using ten
nand gates
. Using this gadget, every
boolean circuit
can be converted into an equivalent planar circuit, provided nand gates are allowed. Each wire is attached a colored label, corresponding to a column in a
truth table
. Circuitery inspired from Fig. 11 and 12 (p.14) of:
Richard Kaye (Mar 2000). "
Minesweeper is NP-complete
".
The Mathematical Intelligencer
22
: 9–15.
|
Date | |
Source | Own work |
Author | Jochen Burghardt |
Other versions | File:Planar SAT Crossover Gadget.png * File:Crossover xor.gif * File:Crossover nand.pdf * File:Crossover nand svg.svg |
This
circuit
image could be re-created
using
vector graphics
as an
SVG
file
. This has several advantages; see
Commons:Media for cleanup
for more information. If an SVG form of this image is available, please upload it and afterwards replace this template with
{{
vector version available
|
new image name
}}
.
It is recommended to name the SVG file “Crossover nand.svg”—then the template Vector version available (or Vva ) does not need the new image name parameter. |
LaTeX source code |
---|
\documentclass[12pt]{article}
\setlength{\unitlength}{1mm}
\usepackage[pdftex]{color}
\usepackage[paperwidth=135\unitlength,paperheight=65\unitlength]{geometry}
\setlength{\topmargin}{-36mm}
\setlength{\textwidth}{135\unitlength}
\setlength{\textheight}{65\unitlength}
\setlength{\oddsidemargin}{-23mm}
\setlength{\parindent}{0cm}
\pagestyle{empty}
% colors
\definecolor{fWire} {rgb}{0.40,0.40,0.40}
\definecolor{fGate} {rgb}{0.00,0.00,0.00}
% signals
\definecolor{foIoI} {rgb}{0.70,0.00,0.00}
\definecolor{fooII} {rgb}{0.00,0.70,0.00}
\definecolor{fIIIo} {rgb}{0.00,0.00,0.70}
\definecolor{fIIoI} {rgb}{0.00,0.50,0.50}
\definecolor{fIoII} {rgb}{0.50,0.00,0.50}
\definecolor{foIIo} {rgb}{0.50,0.50,0.00}
\newcommand{\nand}{%
\put(0,-5){\line(0,1){10}}%
\put(0, 0){\oval(10,10)[r]}%
\put(5, 0){\circle*{2}}%
%\put(0, 3){\line(1,0){1}}%
%\put(0,-3){\line(1,0){1}}%
}
\newcommand{\vect}[1]{%
\textcolor{f#1}{$\scriptstyle #1$}%
}
\begin{document}
\begin{picture}(130,60)%
%\put(0,0){\makebox(0,0){$+$}}%
%\put(130,60){\makebox(0,0){$+$}}%
\thicklines%
% x,y input -->
\textcolor{fWire}{\put(5,15){\line(1,0){40}}}%
\textcolor{fWire}{\put(5,45){\line(1,0){40}}}%
\textcolor{fWire}{\put(20,15){\circle*{1}}}%
\textcolor{fWire}{\put(20,45){\circle*{1}}}%
\textcolor{fWire}{\put(20,15){\line(0,1){12}}}%
\textcolor{fWire}{\put(20,45){\line(0,-1){12}}}%
\textcolor{fWire}{\put(20,33){\line(1,0){ 5}}}%
\textcolor{fWire}{\put(20,27){\line(1,0){ 5}}}%
\textcolor{fWire}{\put(20,15){\line(0,-1){13}}}%
\textcolor{fWire}{\put(20,45){\line(0, 1){13}}}%
\textcolor{fWire}{\put(20, 2){\line(1,0){65}}}%
\textcolor{fWire}{\put(20,58){\line(1,0){65}}}%
% x|y -->
\textcolor{fWire}{\put(30,30){\line(1,0){5}}}%
\textcolor{fWire}{\put(35,30){\circle*{1}}}%
\textcolor{fWire}{\put(35,30){\line(0,-1){9}}}%
\textcolor{fWire}{\put(35,30){\line(0, 1){9}}}%
\textcolor{fWire}{\put(35,39){\line(1,0){10}}}%
\textcolor{fWire}{\put(35,21){\line(1,0){10}}}%
% (x|y)|y -->
\textcolor{fWire}{\put(50,18){\line(1,0){25}}}%
\textcolor{fWire}{\put(55,18){\circle*{1}}}%
\textcolor{fWire}{\put(75,18){\circle*{1}}}%
\textcolor{fWire}{\put(55,18){\line(0,1){9}}}%
\textcolor{fWire}{\put(55,27){\line(1,0){10}}}%
\textcolor{fWire}{\put(75,18){\line(0,1){3}}}%
\textcolor{fWire}{\put(75,18){\line(0,-1){10}}}%
\textcolor{fWire}{\put(75,21){\line(1,0){10}}}%
\textcolor{fWire}{\put(75,8){\line(1,0){10}}}%
% (x|y)|x -->
\textcolor{fWire}{\put(50,42){\line(1,0){25}}}%
\textcolor{fWire}{\put(55,42){\circle*{1}}}%
\textcolor{fWire}{\put(75,42){\circle*{1}}}%
\textcolor{fWire}{\put(55,42){\line(0,-1){9}}}%
\textcolor{fWire}{\put(55,33){\line(1,0){10}}}%
\textcolor{fWire}{\put(75,42){\line(0,-1){3}}}%
\textcolor{fWire}{\put(75,42){\line(0,1){10}}}%
\textcolor{fWire}{\put(75,39){\line(1,0){10}}}%
\textcolor{fWire}{\put(75,52){\line(1,0){10}}}%
% x+y -->
\textcolor{fWire}{\put(70,30){\line(1,0){5}}}%
\textcolor{fWire}{\put(75,30){\circle*{1}}}%
\textcolor{fWire}{\put(75,30){\line(0,-1){3}}}%
\textcolor{fWire}{\put(75,30){\line(0, 1){3}}}%
\textcolor{fWire}{\put(75,27){\line(1,0){10}}}%
\textcolor{fWire}{\put(75,33){\line(1,0){10}}}%
% --> nand for y
\textcolor{fWire}{\put(90,55){\line(1,0){5}}}%
\textcolor{fWire}{\put(90,36){\line(1,0){5}}}%
\textcolor{fWire}{\put(95,55){\line(0,-1){7}}}%
\textcolor{fWire}{\put(95,36){\line(0, 1){6}}}%
\textcolor{fWire}{\put(95,48){\line(1,0){10}}}%
\textcolor{fWire}{\put(95,42){\line(1,0){10}}}%
% --> nand for x
\textcolor{fWire}{\put(90, 5){\line(1,0){5}}}%
\textcolor{fWire}{\put(90,24){\line(1,0){5}}}%
\textcolor{fWire}{\put(95, 5){\line(0, 1){7}}}%
\textcolor{fWire}{\put(95,24){\line(0,-1){6}}}%
\textcolor{fWire}{\put(95,12){\line(1,0){10}}}%
\textcolor{fWire}{\put(95,18){\line(1,0){10}}}%
% --> y
\textcolor{fWire}{\put(110,45){\line(1,0){15}}}%
% --> x
\textcolor{fWire}{\put(110,15){\line(1,0){15}}}%
% inputs
\textcolor{fWire}{\put(5,15){\circle*{1}}}%
\put(3,15){\makebox(0,0)[r]{$y$}}%
\textcolor{fWire}{\put(5,45){\circle*{1}}}%
\put(3,45){\makebox(0,0)[r]{$x$}}%
%gates
\textcolor{fGate}{\put(25,30){\nand}}% x|y
%
\textcolor{fGate}{\put(45,18){\nand}}%
\textcolor{fGate}{\put(45,42){\nand}}%
%
\textcolor{fGate}{\put(65,30){\nand}}% x+y
%
\textcolor{fGate}{\put(85, 5){\nand}}%
\textcolor{fGate}{\put(85,24){\nand}}%
\textcolor{fGate}{\put(85,36){\nand}}%
\textcolor{fGate}{\put(85,55){\nand}}%
%
\textcolor{fGate}{\put(105,15){\nand}}% y out
\textcolor{fGate}{\put(105,45){\nand}}% x out
% outputs
\textcolor{fWire}{\put(125,15){\circle*{1}}}%
\put(127,15){\makebox(0,0)[l]{$x$}}%
\textcolor{fWire}{\put(125,45){\circle*{1}}}%
\put(127,45){\makebox(0,0)[l]{$y$}}%
% value vectors
\put( 19,14){\makebox(0,0)[tr]{\vect{oIoI}}}%
\put( 19,46){\makebox(0,0)[br]{\vect{ooII}}}%
\put( 36,30){\makebox(0,0)[l] {\vect{IIIo}}}%
\put( 56,17){\makebox(0,0)[tl]{\vect{IoII}}}%
\put( 56,43){\makebox(0,0)[bl]{\vect{IIoI}}}%
\put( 76,30){\makebox(0,0)[l] {\vect{oIIo}}}%
\put(96, 5){\makebox(0,0)[l] {\vect{IIIo}}}%
\put(96,24){\makebox(0,0)[l] {\vect{IIoI}}}%
\put(96,36){\makebox(0,0)[l] {\vect{IoII}}}%
\put(96,55){\makebox(0,0)[l] {\vect{IIIo}}}%
\put(124,46){\makebox(0,0)[br]{\vect{oIoI}}}%
\put(124,14){\makebox(0,0)[tr]{\vect{ooII}}}%
\end{picture}
\end{document}
|
Licensing
I, the copyright holder of this work, hereby publish it under the following license:
This file is licensed under the
Creative Commons
Attribution-Share Alike 4.0 International
license.
-
You are free:
- to share – to copy, distribute and transmit the work
- to remix – to adapt the work
-
Under the following conditions:
- attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
- share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.