From 3028e656c71a13d67a5114094f1a36ef0ba23c5a Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Sun, 27 Feb 2011 12:22:47 +0100 Subject: [PATCH] =?utf8?q?SN-Evolution:=20Abschnitte=20f=C3=BCr=20BM(n)=20?= =?utf8?q?und=20OEM(n)=20etwas=20=C3=BCberarbeitet.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- diplomarbeit.tex | 206 +++++++++++++------------ images/19-e1-bm-fast.tex | 393 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 505 insertions(+), 94 deletions(-) create mode 100644 images/19-e1-bm-fast.tex diff --git a/diplomarbeit.tex b/diplomarbeit.tex index d5c84bc..eb02552 100644 --- a/diplomarbeit.tex +++ b/diplomarbeit.tex @@ -1418,37 +1418,12 @@ wurde beim \textsc{SN-Evolution}-Algorithmus auf eine Mutation verzichtet. \subsection[Bitoner Mischer]{Versuche mit dem bitonen Mischer} -\begin{figure} - \begin{center} - \input{images/16-e1-bitonic-1296542566.tex} - \end{center} - \caption{Sortiernetzwerk mit 16~Leitungen und 67~Komparatoren in - 10~Schichten. Das Netzwerk wurde von dem Algorithmus - \textsc{SN-Evolution} unter Verwendung des \emph{bitonen Mischers} - erzeugt.} - \label{fig:16-e1-bitonic-1296542566} -\end{figure} - Wenn \textsc{SN-Evolution} mit dem \emph{Odd-Even-Transpositionsort}-Netzwerk als Eingabe gestartet wird und in der Rekombinationsphase den \emph{bitonen -Mischer} verwendet, gibt der Algorithmus Sortiernetzwerke wie das in -Abbildung~\ref{fig:16-e1-bitonic-1296542566} dargestellte zurück. - -Viele der Sortiernetzwerke, die von \textsc{SN-Evolution} in dieser -Konfiguration gefunden werden, sind effizienter als das \emph{bitone -Mergesort}-Netzwerk \bs{n}, das ebenfalls auf dem \emph{bitonen -Merge}-Netzwerk \bm{n} beruht. Das in -Abbildung~\ref{fig:16-e1-bitonic-1296542566} dargestellte 16-Sortiernetzwerk -benötigt 67~Komparatoren, 13~Komparatoren weniger als \bs{n}. - -Wenn die Gütefunktion so gewählt ist, dass sie schnelle Sortiernetzwerke -bevorzugt, können Netzwerke zurückgegeben werden, die schneller als \bs{n} -sind. Viele der schnellen Sortiernetzwerke sind außerdem effizienter als -\bs{n}. Das Sortiernetzwerk mit $n = 23$ Leitungen benötigt mit -134~Komparatoren jedoch einen Komparator mehr als \bs{23}. Die Daten von -schnellen Sortiernetzwerken, die \textsc{SN-Evolution} mit dem \emph{bitonen -Merge}-Netzwerk erzeugt hat, sind in Tabelle~\ref{tbl:sn-ev-bm-fast} -aufgelistet. +Mischer} verwendet, gibt der Algorithmus \emph{effiziente} und in einigen +Fällen \emph{schnelle} Sortiernetzwerke aus. Die Ergebnisse des +\textsc{SN-Evolution}-Algorithmus unter Verwendung des \emph{bitonen Mischers} +sind in Tabelle~\ref{tbl:sn-ev-bm-fast} zusammengefasst. \begin{table}\label{tbl:sn-ev-bm-fast} \begin{center} @@ -1459,23 +1434,23 @@ Leitungen & \multicolumn{2}{l|}{\textsc{SN-EV} mit \bm{n}} & \multicolumn{2}{|l| \cline{2-5} ($n$) & Komp. & Schichten & Komp. & Schichten \\ \hline - 8 & \gcell 20 & 6 & 24 & 6 \\ - 9 & \Gcell 26 & 8 & 28 & 8 \\ - 10 & \gcell 31 & \gcell 8 & 33 & 9 \\ - 11 & \Gcell 37 & \Gcell 9 & 39 & 10 \\ - 12 & \gcell 42 & \gcell 9 & 46 & 10 \\ - 13 & \Gcell 48 & 10 & 53 & 10 \\ - 14 & \gcell 54 & 10 & 61 & 10 \\ - 15 & \Gcell 61 & 10 & 70 & 10 \\ - 16 & \gcell 67 & 10 & 80 & 10 \\ - 17 & \Gcell 76 & 12 & 85 & 12 \\ - 18 & \gcell 87 & \gcell 12 & 91 & 13 \\ - 19 & \Gcell 93 & \Gcell 13 & 98 & 14 \\ - 20 & \gcell 104 & \gcell 13 & 106 & 14 \\ - 21 & \Gcell 109 & \Gcell 14 & 114 & 15 \\ - 22 & \gcell 118 & \gcell 14 & 123 & 15 \\ - 23 & 134 & \Gcell 14 & \Gcell 133 & 15 \\ - 24 & \gcell 133 & 15 & 144 & 15 \\ + 8 & \gcell 20 & 6 & 24 & 6 \\ + 9 & \Gcell 26 & 8 & 28 & 8 \\ + 10 & \gcell 31 & \gcell 8 & 33 & 9 \\ + 11 & \Gcell 37 & \Gcell 9 & 39 & 10 \\ + 12 & \gcell 42 & \gcell 9 & 46 & 10 \\ + 13 & \Gcell 48 & 10 & 53 & 10 \\ + 14 & \gcell 54 & 10 & 61 & 10 \\ + 15 & \Gcell 61 & 10 & 70 & 10 \\ + 16 & \gcell 67 & 10 & 80 & 10 \\ + 17 & \Gcell 76 & 12 & 85 & 12 \\ + 18 & \gcell 87 & \gcell 12 & 91 & 13 \\ + 19 & \Gcell 93 & \Gcell 13 & 98 & 14 \\ + 20 & \gcell 104 & \gcell 13 & 106 & 14 \\ + 21 & \Gcell 109 & \Gcell 14 & 114 & 15 \\ + 22 & \gcell 118 & \gcell 14 & 123 & 15 \\ + 23 & \Gcell 129 & \Gcell 14 & 133 & 15 \\ + 24 & \gcell 133 & 15 & 144 & 15 \\ \hline \end{tabular} \caption{Übersicht über die Ergebnisse des \textsc{SN-Evolution}-Algorithmus @@ -1487,19 +1462,89 @@ Leitungen & \multicolumn{2}{l|}{\textsc{SN-EV} mit \bm{n}} & \multicolumn{2}{|l| \end{center} \end{table} -\subsection[Odd-Even-Mischer]{Versuche mit dem Odd-Even-Mischer} +Alle Sortiernetzwerke, die von \textsc{SN-Evolution} in dieser Konfiguration +gefunden wurden, waren \emph{effizienter} als das \emph{bitone +Mergesort}-Netzwerk \bs{n}, das ebenfalls auf dem \emph{bitonen +Merge}-Netzwerk \bm{n} beruht. Zum Beispiel benötigt das in +Abbildung~\ref{fig:16-e1-bitonic-1296542566} dargestellte 16-Sortiernetzwerk +67~Komparatoren, 13~Komparatoren weniger als \bs{n}. \begin{figure} \begin{center} - \input{images/16-e1-oddeven-1296543330.tex} + \input{images/16-e1-bitonic-1296542566.tex} \end{center} - \caption{Sortiernetzwerk mit 16~Leitungen und 63~Komparatoren in + \caption{Sortiernetzwerk mit 16~Leitungen und 67~Komparatoren in 10~Schichten. Das Netzwerk wurde von dem Algorithmus - \textsc{SN-Evolution} unter Verwendung des \emph{Odd-Even}-Mischers + \textsc{SN-Evolution} unter Verwendung des \emph{bitonen Mischers} erzeugt.} - \label{fig:16-e1-oddeven-1296543330} + \label{fig:16-e1-bitonic-1296542566} +\end{figure} + +Wenn die Gütefunktion so gewählt ist, dass sie schnelle Sortiernetzwerke +bevorzugt, werden in einigen Fällen Netzwerke zurückgegeben, die +\emph{schneller} und \emph{effizienter} als \bs{n} sind. Das +19-Sortiernetzwerk in Abbildung~\ref{fig:19-e1-bm-fast} besitzt beispielsweise +nur 13~Schichten und benötigt damit einen parallelen Schritt weniger als +\bs{19}. + +\begin{figure} + \begin{center} + \input{images/19-e1-bm-fast.tex} + \end{center} + \caption{Sortiernetzwerk mit 19~Leitungen und 93~Komparatoren in + 13~Schichten. Das Netzwerk wurde von dem Algorithmus \textsc{SN-Evolution} + unter Verwendung des \emph{bitonen Mischers} erzeugt.} + \label{fig:19-e1-bm-fast} \end{figure} +\subsection[Odd-Even-Mischer]{Versuche mit dem Odd-Even-Mischer} + +Die folgenden Ergebnisse wurden erzielt, indem \textsc{SN-Evolution} mit dem +\emph{Odd-Even-Transpositionsort}-Netzwerk als Eingabe gestartet wurde und in +der Rekombinationsphase das \emph{Odd-Even-Merge}-Netzwerk verwendete. So +erzeugt der Algorithmus entweder Sortiernetzwerke, die genauso schnell und +effizient wie das \oes{n}-Netzwerk, oder Sortiernetzwerke, die schneller aber +weniger effizient als das \oes{n}-Netzwerk sind. Die Ergebnisse von +\textsc{SN-Evolution} mit dem \emph{Odd-Even}-Mischer sind in +Tabelle~\ref{tbl:sn-ev-oem-fast} zusammengefasst. + +\begin{table}\label{tbl:sn-ev-oem-fast} +\begin{center} +\rowcolors{4}{black!5}{} +\begin{tabular}{|r|r|r|r|r|} +\hline +Leitungen & \multicolumn{2}{l|}{\textsc{SN-EV} mit \oem{n}} & \multicolumn{2}{|l|}{\oes{n}} \\ +\cline{2-5} + & Komp. & Schichten & Komp. & Schichten \\ +\hline + 8 & 19 & 6 & 19 & 6 \\ + 9 & 26 & 8 & 26 & 8 \\ + 10 & 31 & 9 & 31 & 9 \\ + 11 & 38 & \Gcell 9 & \Gcell 37 & 10 \\ + 12 & 43 & \gcell 9 & \gcell 41 & 10 \\ + 13 & 48 & 10 & 48 & 10 \\ + 14 & 53 & 10 & 53 & 10 \\ + 15 & 59 & 10 & 59 & 10 \\ + 16 & 63 & 10 & 63 & 10 \\ + 17 & 74 & 12 & 74 & 12 \\ + 18 & 82 & 13 & 82 & 13 \\ + 19 & 93 & \Gcell 13 & \Gcell 91 & 14 \\ + 20 & 97 & 14 & 97 & 14 \\ + 21 & 108 & \Gcell 14 & \Gcell 107 & 15 \\ + 22 & 117 & \gcell 14 & \gcell 114 & 15 \\ + 23 & 129 & \Gcell 14 & \Gcell 122 & 15 \\ + 24 & 128 & 15 & \gcell 127 & 15 \\ +\hline +\end{tabular} +\caption{Übersicht über die Ergebnisse des \textsc{SN-Evolution}-Algorithmus + unter Verwendung des \emph{Odd-Even-Merge}-Netzwerks \oem{n}. Der + Algorithmus wurde mit dem \emph{Odd-Even-Transpositionsort}-Netzwerk \oet{n} + gestartet und nach 2.500.000 Iterationen beendet. Die Bewertungsfunktion + nutzte die Konstanten $w_{\mathrm{Basis}} = 0$, $w_{\mathrm{Komparatoren}} = + 1$, $w_{\mathrm{Schichten}} = n$.} +\end{center} +\end{table} + Im vorherigen Abschnitt wurde gezeigt, dass der \textsc{SN-Evolution}-Algorithmus unter Verwendung des \emph{bitonen Mischers} Sortiernetzwerke erzeugen kann, die effizienter als das rekursiv aus dem @@ -1509,16 +1554,26 @@ erzielen. Die Sortiernetzwerke, die \textsc{SN-Evolution} unter Verwendung des \emph{Odd-Even-Merge}-Netzwerks findet, erreichen das \emph{Odd-Even-Mergesort}-Netzwerk bezüglich Effizienz, übertreffen es aber nicht. Ein Beispiel für ein entsprechendes Sortiernetzwerk ist in -Abbildung~\ref{fig:16-e1-oddeven-1296543330} zu sehen. +Abbildung~\ref{fig:16-e1-oddeven-1296543330} dargestellt. + +\begin{figure} + \begin{center} + \input{images/16-e1-oddeven-1296543330.tex} + \end{center} + \caption{Sortiernetzwerk mit 16~Leitungen und 63~Komparatoren in + 10~Schichten. Das Netzwerk wurde von dem Algorithmus + \textsc{SN-Evolution} unter Verwendung des \emph{Odd-Even}-Mischers + erzeugt.} + \label{fig:16-e1-oddeven-1296543330} +\end{figure} Mit einer Gütefunktion, die schnelle Sortiernetzwerke bevorzugt, ist es auch mit dem \emph{Odd-Even}-Mischer möglich, dass \textsc{SN-Evolution} Sortiernetzwerke zurück gibt, die schneller als \oes{n} sind. Dies geschieht beispielsweise bei $n = 11$ und $n = 12$: für diese Leitungszahlen gibt -\textsc{SN-Evolution} Sortiernetzwerke aus, die nur 9~Schicten benötigen. -\oes{11} und \oes{12} benötigen jeweils 10~Schichten. Eine Auflistung der -Ergebnisse von \textsc{SN-Evolution} mit dem \emph{Odd-Even}-Mischer befindet -sich in Tabelle~\ref{tbl:sn-ev-oem-fast}. +\textsc{SN-Evolution} Sortiernetzwerke aus, die nur 9~Schichten benötigen. +\oes{11} und \oes{12} benötigen jeweils 10~Schichten. + %\begin{figure} %\begin{center} @@ -1552,43 +1607,6 @@ sich in Tabelle~\ref{tbl:sn-ev-oem-fast}. %\label{fig:10-e2-1239014566} %\end{figure} -\begin{table}\label{tbl:sn-ev-oem-fast} -\begin{center} -\rowcolors{4}{black!5}{} -\begin{tabular}{|r|r|r|r|r|} -\hline -Leitungen & \multicolumn{2}{l|}{\textsc{SN-EV} mit \oem{n}} & \multicolumn{2}{|l|}{\oes{n}} \\ -\cline{2-5} - & Komp. & Schichten & Komp. & Schichten \\ -\hline - 8 & 19 & 6 & 19 & 6 \\ - 9 & 26 & 8 & 26 & 8 \\ - 10 & 31 & 9 & 31 & 9 \\ - 11 & 38 & \Gcell 9 & \Gcell 37 & 10 \\ - 12 & 43 & \gcell 9 & \gcell 41 & 10 \\ - 13 & 48 & 10 & 48 & 10 \\ - 14 & 53 & 10 & 53 & 10 \\ - 15 & 59 & 10 & 59 & 10 \\ - 16 & 63 & 10 & 63 & 10 \\ - 17 & 74 & 12 & 74 & 12 \\ - 18 & 82 & 13 & 82 & 13 \\ - 19 & 93 & \Gcell 13 & \Gcell 91 & 14 \\ - 20 & 97 & 14 & 97 & 14 \\ - 21 & 108 & \Gcell 14 & \Gcell 107 & 15 \\ - 22 & 117 & \gcell 14 & \gcell 114 & 15 \\ - 23 & 129 & \Gcell 14 & \Gcell 122 & 15 \\ - 24 & 128 & 15 & \gcell 127 & 15 \\ -\hline -\end{tabular} -\caption{Übersicht über die Ergebnisse des \textsc{SN-Evolution}-Algorithmus - unter Verwendung des \emph{Odd-Even-Merge}-Netzwerks \oem{n}. Der - Algorithmus wurde mit dem \emph{Odd-Even-Transpositionsort}-Netzwerk \oet{n} - gestartet und nach 2.500.000 Iterationen beendet. Die Bewertungsfunktion - nutzte die Konstanten $w_{\mathrm{Basis}} = 0$, $w_{\mathrm{Komparatoren}} = - 1$, $w_{\mathrm{Schichten}} = n$.} -\end{center} -\end{table} - \subsection{Zufälliger Mischer} Die Ergebnisse der beiden vorhergehenden Abschnitte zeigen, dass für einige @@ -1636,7 +1654,7 @@ Leitungen & \multicolumn{2}{l|}{\textsc{SN-EV} mit \bm{n}} 20 & 104 & \gcell 13 & \gcell 97 & 14 & 101 & \gcell 13 \\ 21 & 109 & 14 & 108 & 14 & \Gcell 107 & 14 \\ 22 & 118 & 14 & 117 & 14 & \gcell 116 & 14 \\ - 23 & 134 & 14 & 129 & 14 & \Gcell 128 & 14 \\ + 23 & 129 & 14 & 129 & 14 & \Gcell 128 & 14 \\ 24 & 133 & 15 & \gcell 128 & 15 & 130 & 15 \\ \hline \end{tabular} diff --git a/images/19-e1-bm-fast.tex b/images/19-e1-bm-fast.tex new file mode 100644 index 0000000..f776d61 --- /dev/null +++ b/images/19-e1-bm-fast.tex @@ -0,0 +1,393 @@ +\begin{tikzpicture}[auto] +\node[vertex] (v0) at (0.66,0.00) {}; +\node[vertex] (v1) at (0.66,0.53) {}; +\path[comp] (v0) -- (v1); + +\node[vertex] (v2) at (0.66,1.59) {}; +\node[vertex] (v3) at (0.66,2.64) {}; +\path[comp] (v2) -- (v3); + +\node[vertex] (v4) at (0.86,2.11) {}; +\node[vertex] (v5) at (0.86,3.17) {}; +\path[comp] (v4) -- (v5); + +\node[vertex] (v6) at (0.66,3.70) {}; +\node[vertex] (v7) at (0.66,4.76) {}; +\path[comp] (v6) -- (v7); + +\node[vertex] (v8) at (0.86,4.23) {}; +\node[vertex] (v9) at (0.86,5.81) {}; +\path[comp] (v8) -- (v9); + +\node[vertex] (v10) at (0.66,5.29) {}; +\node[vertex] (v11) at (0.66,7.93) {}; +\path[comp] (v10) -- (v11); + +\node[vertex] (v12) at (0.86,6.34) {}; +\node[vertex] (v13) at (0.86,8.99) {}; +\path[comp] (v12) -- (v13); + +\node[vertex] (v14) at (1.06,6.87) {}; +\node[vertex] (v15) at (1.06,7.40) {}; +\path[comp] (v14) -- (v15); + +\node[vertex] (v16) at (0.66,8.46) {}; +\node[vertex] (v17) at (0.66,9.52) {}; +\path[comp] (v16) -- (v17); + +\node[vertex] (v18) at (1.72,0.53) {}; +\node[vertex] (v19) at (1.72,1.06) {}; +\path[comp] (v18) -- (v19); + +\node[vertex] (v20) at (1.72,1.59) {}; +\node[vertex] (v21) at (1.72,2.11) {}; +\path[comp] (v20) -- (v21); + +\node[vertex] (v22) at (1.72,2.64) {}; +\node[vertex] (v23) at (1.72,3.17) {}; +\path[comp] (v22) -- (v23); + +\node[vertex] (v24) at (1.72,3.70) {}; +\node[vertex] (v25) at (1.72,8.46) {}; +\path[comp] (v24) -- (v25); + +\node[vertex] (v26) at (1.92,4.23) {}; +\node[vertex] (v27) at (1.92,6.34) {}; +\path[comp] (v26) -- (v27); + +\node[vertex] (v28) at (2.11,4.76) {}; +\node[vertex] (v29) at (2.11,9.52) {}; +\path[comp] (v28) -- (v29); + +\node[vertex] (v30) at (2.31,5.81) {}; +\node[vertex] (v31) at (2.31,8.99) {}; +\path[comp] (v30) -- (v31); + +\node[vertex] (v32) at (2.97,0.00) {}; +\node[vertex] (v33) at (2.97,0.53) {}; +\path[comp] (v32) -- (v33); + +\node[vertex] (v34) at (2.97,1.06) {}; +\node[vertex] (v35) at (2.97,7.40) {}; +\path[comp] (v34) -- (v35); + +\node[vertex] (v36) at (3.17,2.11) {}; +\node[vertex] (v37) at (3.17,2.64) {}; +\path[comp] (v36) -- (v37); + +\node[vertex] (v38) at (3.17,4.23) {}; +\node[vertex] (v39) at (3.17,5.29) {}; +\path[comp] (v38) -- (v39); + +\node[vertex] (v40) at (3.37,4.76) {}; +\node[vertex] (v41) at (3.37,8.46) {}; +\path[comp] (v40) -- (v41); + +\node[vertex] (v42) at (3.17,5.81) {}; +\node[vertex] (v43) at (3.17,6.34) {}; +\path[comp] (v42) -- (v43); + +\node[vertex] (v44) at (2.97,7.93) {}; +\node[vertex] (v45) at (2.97,8.99) {}; +\path[comp] (v44) -- (v45); + +\node[vertex] (v46) at (4.03,0.00) {}; +\node[vertex] (v47) at (4.03,1.06) {}; +\path[comp] (v46) -- (v47); + +\node[vertex] (v48) at (4.23,0.53) {}; +\node[vertex] (v49) at (4.23,6.87) {}; +\path[comp] (v48) -- (v49); + +\node[vertex] (v50) at (4.03,2.11) {}; +\node[vertex] (v51) at (4.03,7.40) {}; +\path[comp] (v50) -- (v51); + +\node[vertex] (v52) at (4.43,3.70) {}; +\node[vertex] (v53) at (4.43,4.23) {}; +\path[comp] (v52) -- (v53); + +\node[vertex] (v54) at (4.43,5.29) {}; +\node[vertex] (v55) at (4.43,6.34) {}; +\path[comp] (v54) -- (v55); + +\node[vertex] (v56) at (4.63,5.81) {}; +\node[vertex] (v57) at (4.63,7.93) {}; +\path[comp] (v56) -- (v57); + +\node[vertex] (v58) at (4.03,8.99) {}; +\node[vertex] (v59) at (4.03,9.52) {}; +\path[comp] (v58) -- (v59); + +\node[vertex] (v60) at (5.29,0.00) {}; +\node[vertex] (v61) at (5.29,0.53) {}; +\path[comp] (v60) -- (v61); + +\node[vertex] (v62) at (5.29,1.06) {}; +\node[vertex] (v63) at (5.29,6.87) {}; +\path[comp] (v62) -- (v63); + +\node[vertex] (v64) at (5.48,5.29) {}; +\node[vertex] (v65) at (5.48,5.81) {}; +\path[comp] (v64) -- (v65); + +\node[vertex] (v66) at (5.48,6.34) {}; +\node[vertex] (v67) at (5.48,7.93) {}; +\path[comp] (v66) -- (v67); + +\node[vertex] (v68) at (6.15,0.00) {}; +\node[vertex] (v69) at (6.15,2.11) {}; +\path[comp] (v68) -- (v69); + +\node[vertex] (v70) at (6.34,0.53) {}; +\node[vertex] (v71) at (6.34,1.59) {}; +\path[comp] (v70) -- (v71); + +\node[vertex] (v72) at (6.54,1.06) {}; +\node[vertex] (v73) at (6.54,3.17) {}; +\path[comp] (v72) -- (v73); + +\node[vertex] (v74) at (6.15,2.64) {}; +\node[vertex] (v75) at (6.15,6.87) {}; +\path[comp] (v74) -- (v75); + +\node[vertex] (v76) at (6.34,4.23) {}; +\node[vertex] (v77) at (6.34,7.93) {}; +\path[comp] (v76) -- (v77); + +\node[vertex] (v78) at (6.54,4.76) {}; +\node[vertex] (v79) at (6.54,6.34) {}; +\path[comp] (v78) -- (v79); + +\node[vertex] (v80) at (6.74,5.29) {}; +\node[vertex] (v81) at (6.74,8.99) {}; +\path[comp] (v80) -- (v81); + +\node[vertex] (v82) at (6.94,5.81) {}; +\node[vertex] (v83) at (6.94,8.46) {}; +\path[comp] (v82) -- (v83); + +\node[vertex] (v84) at (7.60,0.00) {}; +\node[vertex] (v85) at (7.60,0.53) {}; +\path[comp] (v84) -- (v85); + +\node[vertex] (v86) at (7.60,1.06) {}; +\node[vertex] (v87) at (7.60,2.11) {}; +\path[comp] (v86) -- (v87); + +\node[vertex] (v88) at (7.80,1.59) {}; +\node[vertex] (v89) at (7.80,2.64) {}; +\path[comp] (v88) -- (v89); + +\node[vertex] (v90) at (7.60,3.17) {}; +\node[vertex] (v91) at (7.60,7.40) {}; +\path[comp] (v90) -- (v91); + +\node[vertex] (v92) at (7.80,4.23) {}; +\node[vertex] (v93) at (7.80,5.81) {}; +\path[comp] (v92) -- (v93); + +\node[vertex] (v94) at (8.00,4.76) {}; +\node[vertex] (v95) at (8.00,5.29) {}; +\path[comp] (v94) -- (v95); + +\node[vertex] (v96) at (7.80,6.34) {}; +\node[vertex] (v97) at (7.80,8.99) {}; +\path[comp] (v96) -- (v97); + +\node[vertex] (v98) at (7.60,7.93) {}; +\node[vertex] (v99) at (7.60,8.46) {}; +\path[comp] (v98) -- (v99); + +\node[vertex] (v100) at (8.66,1.06) {}; +\node[vertex] (v101) at (8.66,1.59) {}; +\path[comp] (v100) -- (v101); + +\node[vertex] (v102) at (8.66,2.11) {}; +\node[vertex] (v103) at (8.66,2.64) {}; +\path[comp] (v102) -- (v103); + +\node[vertex] (v104) at (8.66,3.17) {}; +\node[vertex] (v105) at (8.66,6.87) {}; +\path[comp] (v104) -- (v105); + +\node[vertex] (v106) at (8.85,4.23) {}; +\node[vertex] (v107) at (8.85,4.76) {}; +\path[comp] (v106) -- (v107); + +\node[vertex] (v108) at (8.85,5.29) {}; +\node[vertex] (v109) at (8.85,5.81) {}; +\path[comp] (v108) -- (v109); + +\node[vertex] (v110) at (8.85,6.34) {}; +\node[vertex] (v111) at (8.85,7.93) {}; +\path[comp] (v110) -- (v111); + +\node[vertex] (v112) at (8.66,8.46) {}; +\node[vertex] (v113) at (8.66,8.99) {}; +\path[comp] (v112) -- (v113); + +\node[vertex] (v114) at (9.52,0.00) {}; +\node[vertex] (v115) at (9.52,7.93) {}; +\path[comp] (v114) -- (v115); + +\node[vertex] (v116) at (9.71,0.53) {}; +\node[vertex] (v117) at (9.71,6.34) {}; +\path[comp] (v116) -- (v117); + +\node[vertex] (v118) at (9.91,1.06) {}; +\node[vertex] (v119) at (9.91,5.81) {}; +\path[comp] (v118) -- (v119); + +\node[vertex] (v120) at (10.11,1.59) {}; +\node[vertex] (v121) at (10.11,5.29) {}; +\path[comp] (v120) -- (v121); + +\node[vertex] (v122) at (10.31,2.11) {}; +\node[vertex] (v123) at (10.31,4.76) {}; +\path[comp] (v122) -- (v123); + +\node[vertex] (v124) at (10.51,2.64) {}; +\node[vertex] (v125) at (10.51,4.23) {}; +\path[comp] (v124) -- (v125); + +\node[vertex] (v126) at (10.70,3.17) {}; +\node[vertex] (v127) at (10.70,3.70) {}; +\path[comp] (v126) -- (v127); + +\node[vertex] (v128) at (9.71,6.87) {}; +\node[vertex] (v129) at (9.71,8.46) {}; +\path[comp] (v128) -- (v129); + +\node[vertex] (v130) at (11.37,0.00) {}; +\node[vertex] (v131) at (11.37,2.11) {}; +\path[comp] (v130) -- (v131); + +\node[vertex] (v132) at (11.56,0.53) {}; +\node[vertex] (v133) at (11.56,2.64) {}; +\path[comp] (v132) -- (v133); + +\node[vertex] (v134) at (11.76,1.06) {}; +\node[vertex] (v135) at (11.76,3.17) {}; +\path[comp] (v134) -- (v135); + +\node[vertex] (v136) at (11.37,3.70) {}; +\node[vertex] (v137) at (11.37,8.99) {}; +\path[comp] (v136) -- (v137); + +\node[vertex] (v138) at (11.56,4.23) {}; +\node[vertex] (v139) at (11.56,9.52) {}; +\path[comp] (v138) -- (v139); + +\node[vertex] (v140) at (11.76,5.29) {}; +\node[vertex] (v141) at (11.76,6.87) {}; +\path[comp] (v140) -- (v141); + +\node[vertex] (v142) at (11.76,7.40) {}; +\node[vertex] (v143) at (11.76,7.93) {}; +\path[comp] (v142) -- (v143); + +\node[vertex] (v144) at (12.42,0.00) {}; +\node[vertex] (v145) at (12.42,1.06) {}; +\path[comp] (v144) -- (v145); + +\node[vertex] (v146) at (12.42,1.59) {}; +\node[vertex] (v147) at (12.42,2.64) {}; +\path[comp] (v146) -- (v147); + +\node[vertex] (v148) at (12.62,2.11) {}; +\node[vertex] (v149) at (12.62,3.17) {}; +\path[comp] (v148) -- (v149); + +\node[vertex] (v150) at (12.42,3.70) {}; +\node[vertex] (v151) at (12.42,5.81) {}; +\path[comp] (v150) -- (v151); + +\node[vertex] (v152) at (12.62,4.23) {}; +\node[vertex] (v153) at (12.62,6.34) {}; +\path[comp] (v152) -- (v153); + +\node[vertex] (v154) at (12.82,4.76) {}; +\node[vertex] (v155) at (12.82,7.40) {}; +\path[comp] (v154) -- (v155); + +\node[vertex] (v156) at (12.42,7.93) {}; +\node[vertex] (v157) at (12.42,8.99) {}; +\path[comp] (v156) -- (v157); + +\node[vertex] (v158) at (12.62,8.46) {}; +\node[vertex] (v159) at (12.62,9.52) {}; +\path[comp] (v158) -- (v159); + +\node[vertex] (v160) at (13.48,0.53) {}; +\node[vertex] (v161) at (13.48,1.06) {}; +\path[comp] (v160) -- (v161); + +\node[vertex] (v162) at (13.48,1.59) {}; +\node[vertex] (v163) at (13.48,2.11) {}; +\path[comp] (v162) -- (v163); + +\node[vertex] (v164) at (13.48,2.64) {}; +\node[vertex] (v165) at (13.48,3.17) {}; +\path[comp] (v164) -- (v165); + +\node[vertex] (v166) at (13.48,3.70) {}; +\node[vertex] (v167) at (13.48,4.76) {}; +\path[comp] (v166) -- (v167); + +\node[vertex] (v168) at (13.68,4.23) {}; +\node[vertex] (v169) at (13.68,5.29) {}; +\path[comp] (v168) -- (v169); + +\node[vertex] (v170) at (13.48,5.81) {}; +\node[vertex] (v171) at (13.48,7.40) {}; +\path[comp] (v170) -- (v171); + +\node[vertex] (v172) at (13.68,6.34) {}; +\node[vertex] (v173) at (13.68,6.87) {}; +\path[comp] (v172) -- (v173); + +\node[vertex] (v174) at (13.48,7.93) {}; +\node[vertex] (v175) at (13.48,8.46) {}; +\path[comp] (v174) -- (v175); + +\node[vertex] (v176) at (13.48,8.99) {}; +\node[vertex] (v177) at (13.48,9.52) {}; +\path[comp] (v176) -- (v177); + +\node[vertex] (v178) at (14.34,3.70) {}; +\node[vertex] (v179) at (14.34,4.23) {}; +\path[comp] (v178) -- (v179); + +\node[vertex] (v180) at (14.34,4.76) {}; +\node[vertex] (v181) at (14.34,5.29) {}; +\path[comp] (v180) -- (v181); + +\node[vertex] (v182) at (14.34,5.81) {}; +\node[vertex] (v183) at (14.34,6.34) {}; +\path[comp] (v182) -- (v183); + +\node[vertex] (v184) at (14.34,6.87) {}; +\node[vertex] (v185) at (14.34,7.40) {}; +\path[comp] (v184) -- (v185); + +\path[edge] (0,0.00) -- (15.00,0.00); +\path[edge] (0,0.53) -- (15.00,0.53); +\path[edge] (0,1.06) -- (15.00,1.06); +\path[edge] (0,1.59) -- (15.00,1.59); +\path[edge] (0,2.11) -- (15.00,2.11); +\path[edge] (0,2.64) -- (15.00,2.64); +\path[edge] (0,3.17) -- (15.00,3.17); +\path[edge] (0,3.70) -- (15.00,3.70); +\path[edge] (0,4.23) -- (15.00,4.23); +\path[edge] (0,4.76) -- (15.00,4.76); +\path[edge] (0,5.29) -- (15.00,5.29); +\path[edge] (0,5.81) -- (15.00,5.81); +\path[edge] (0,6.34) -- (15.00,6.34); +\path[edge] (0,6.87) -- (15.00,6.87); +\path[edge] (0,7.40) -- (15.00,7.40); +\path[edge] (0,7.93) -- (15.00,7.93); +\path[edge] (0,8.46) -- (15.00,8.46); +\path[edge] (0,8.99) -- (15.00,8.99); +\path[edge] (0,9.52) -- (15.00,9.52); +\end{tikzpicture} -- 2.11.0