alt text

Ein selbstmeidender oder Hamiltonscher Gittergraph ist ein Gitter bestimmter Breite und Höhe, in dem ein Pfad liegt, durch den jeder Gitterpunkt genau einmal besucht wird.

Frage zur Selbstbeantwortung. Weitere Antworten sind aber erlaubt und gern gesehen.

gefragt 01 Apr, 22:50

cis's gravatar image

cis
7.3k13155247
Akzeptiert: 72%

bearbeitet 01 Apr, 23:03

Das ist aber keine besonders gute Beispielfrage, so ganz ohne Minimalbeispiel.

(01 Apr, 22:52) Henri
1

Ich beantworte die Frage ja selbst:

Frage zur Selbstbeantwortung. Weitere Antworten sind aber erlaubt und gern gesehen.

Da ist es erlaubt.

(01 Apr, 22:59) cis

Eine Möglichkeit ist, erstmal ein Gitter zu erstellen und dessen Gitterpunkte mit einfachen Koordinaten zu benennen.

Von links unten nach rechts oben sieht das dann so aus:

alt text

Öffne in Overleaf
\begin{tikzpicture}[scale=0.5, font=\footnotesize]
\def\Gitterweite{4}
\def\Gitterbreite{\Gitterweite}
\def\Gitterhoehe{\Gitterweite}

% Gitterkoordinaten
\foreach \x in {0,...,\Gitterbreite}{
\foreach \y in {0,...,\Gitterhoehe}{
\coordinate[label={\x-\y}] (\x-\y) at (\x,\y);
}}
\end{tikzpicture}

Für das Bild im Startpost erhält man so z.B.:

alt text

Öffne in Overleaf
\begin{tikzpicture}[scale=0.5]
\def\Gitterbreite{7}
\def\Gitterhoehe{6}
\def\Koordinatenliste{(0-0) (3-0) (3-3) (1-3) (1-2) (2-2) (2-1) (0-1) (0-4) (2-4) (2-5) (0-5) (0-6) (5-6) (5-5) (3-5) (3-4) (4-4) (4-2) (6-2) (6-1) (4-1) (4-0) (7-0) (7-3) (5-3) (5-4) (7-4) (7-5) (6-5) (6-6) (7-6)}

% Gitterkoordinaten
\foreach \x in {0,...,\Gitterbreite}{
\foreach \y in {0,...,\Gitterhoehe}{
\coordinate[] (\x-\y) at (\x,\y);     %label={\x-\y}
}}
% Grid
\draw[help lines] (0,0) grid (\Gitterbreite, \Gitterhoehe);

% Pfad
\draw[black!50!blue, rounded corners=0.3ex, thick] plot[] coordinates{\Koordinatenliste};
\end{tikzpicture}

Listen:

Um auch ganze Listen, für die verschiedenen Möglichkeiten, zu erstellen, ist es sinnvoll, daraus eine newcommand-Anweisung zu machen. Etwa: \GitterPfad{<Gitterbreite>}{<Gitterhoehe>}{<Farbe>}{<Koordinatenliste>}

Beispiel: \GitterPfad{4}{3}{red}{(0-0) (1-0) (2-0) (3-0) (4-0) (4-1) (3-1) (2-1) (1-1) (0-1) (0-2) (1-2) (2-2) (3-2) (4-2)}

alt text

Öffne in Overleaf
%  \GitterPfad{<Gitterbreite>}{<Gitterhoehe>}{<Farbe>}{<Koordinatenliste>}
\newcommand{\GitterPfad}[4]{% =======================
\begin{tikzpicture}[scale=0.5]
\def\Gitterbreite{#1} % 7
\def\Gitterhoehe{#2} % 6

\foreach \x in {0,...,\Gitterbreite}{
\foreach \y in {0,...,\Gitterhoehe}{
\coordinate[] (\x-\y) at (\x,\y);     %label={\x-\y}
}}
% Grid
\draw[help lines] (0,0) grid (\Gitterbreite, \Gitterhoehe);

% Pfad
\def\Koordinatenliste{#4}
\draw[color=#3, rounded corners=0.3ex, thick] plot[] coordinates{\Koordinatenliste};
\end{tikzpicture}
} %==================================

\GitterPfad{4}{3}{red}{(0-0) (1-0) (2-0) (3-0) (4-0) (4-1) (3-1) (2-1) (1-1) (0-1) (0-2) (1-2) (2-2) (3-2) (4-2)}

Ganzes Beispiel:

alt text

Öffne in Overleaf
\documentclass[border=5pt, varwidth]{standalone}
\usepackage{tikz}
\begin{document}

%  \GitterPfad{<Gitterbreite>}{<Gitterhoehe>}{<Farbe>}{<Koordinatenliste>}
\newcommand{\GitterPfad}[4]{% =======================
\begin{tikzpicture}[scale=0.5]
\def\Gitterbreite{#1} % 7
\def\Gitterhoehe{#2} % 6

\foreach \x in {0,...,\Gitterbreite}{
\foreach \y in {0,...,\Gitterhoehe}{
\coordinate[] (\x-\y) at (\x,\y);     %label={\x-\y}
}}
% Grid
\draw[help lines] (0,0) grid (\Gitterbreite, \Gitterhoehe);

% Pfad
\def\Koordinatenliste{#4}

\draw[color=#3, rounded corners=0.3ex, thick] plot[] coordinates{\Koordinatenliste};
\end{tikzpicture}
\vspace{0.5ex}
} %==================================

\GitterPfad{4}{3}{red}{(0-0) (1-0) (2-0) (3-0) (4-0) (4-1) (3-1) (2-1) (1-1) (0-1) (0-2) (1-2) (2-2) (3-2) (4-2)}

\foreach \n in {
 (0-0) (1-0) (2-0) (3-0) (4-0) (4-1) (3-1) (2-1) (1-1) (0-1) (0-2) (1-2) (2-2) (3-2) (4-2), 
 (0-0) (1-0) (2-0) (2-1) (1-1) (0-1) (0-2) (1-2) (2-2) (3-2) (3-1) (3-0) (4-0) (4-1) (4-2),
 (0-0) (1-0) (1-1) (0-1) (0-2) (1-2) (2-2) (2-1) (2-0) (3-0) (4-0) (4-1) (3-1) (3-2) (4-2),
 (0-0) (1-0) (1-1) (0-1) (0-2) (1-2) (2-2) (3-2) (3-1) (2-1) (2-0) (3-0) (4-0) (4-1) (4-2)
 }{%
\GitterPfad{4}{3}{black!50!green}{\n}
}\\
\foreach \n in {
 (0-0) (0-1) (0-2) (1-2) (1-1) (1-0) (2-0) (3-0) (4-0) (4-1) (3-1) (2-1) (2-2) (3-2) (4-2),
 (0-0) (0-1) (0-2) (1-2) (1-1) (1-0) (2-0) (2-1) (2-2) (3-2) (3-1) (3-0) (4-0) (4-1) (4-2),
 (0-0) (0-1) (0-2) (1-2) (2-2) (2-1) (1-1) (1-0) (2-0) (3-0) (4-0) (4-1) (3-1) (3-2) (4-2),
 (0-0) (0-1) (0-2) (1-2) (2-2) (3-2) (3-1) (2-1) (1-1) (1-0) (2-0) (3-0) (4-0) (4-1) (4-2)
 }{%
\GitterPfad{4}{3}{black!50!green}{\n}
}%
\end{document}
Permanenter link

beantwortet 01 Apr, 22:58

cis's gravatar image

cis
7.3k13155247

bearbeitet 01 Apr, 23:04

Man könnte auch die turtle Bibliothek nutzen:

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{turtle}
\usetikzlibrary{backgrounds}

\newcommand*\Gitterpfad[2][]{%
  \begin{tikzpicture}[gitterpfad,#1]
  \draw[turtle={home,#2}];
  \begin{scope}[on background layer]
    \draw[help lines](current bounding box.south west)grid(current bounding box.north east);
  \end{scope}
  \end{tikzpicture}%
}
\tikzset{gitterpfad/.style={scale=.5,green!50!black,rounded corners=2pt,very thick}}

\begin{document}
\Gitterpfad[purple]{
  rt,fd=3,lt,fd=3,lt,fd=2,lt,fd,lt,fd,rt,fd,rt,fd=2,rt,fd=3,
  rt,fd=2,lt,fd,lt,fd=2,rt,fd,rt,fd=5,rt,fd,rt,fd=2,
  lt,fd,lt,fd,rt,fd=2,lt,fd=2,rt,fd,rt,fd=2,lt,fd,lt,fd=3,
  lt,fd=3,lt,fd=2,rt,fd,rt,fd=2,lt,fd,lt,fd,rt,fd,rt,fd
}
\par\bigskip
\Gitterpfad{rt,fd=4,lt,fd,lt,fd=4,rt,fd,rt,fd=4}\quad
\Gitterpfad{rt,fd=2,lt,fd,lt,fd=2,rt,fd,rt,fd=3,rt,fd=2,lt,fd,lt,fd=2}\quad
\Gitterpfad{rt,fd,lt,fd,lt,fd,rt,fd,rt,fd=2,rt,fd=2,lt,fd=2,lt,fd,lt,fd,rt,fd,rt,fd}\quad
\Gitterpfad{rt,fd,lt,fd,lt,fd,rt,fd,rt,fd=3,rt,fd,rt,fd,lt,fd,lt,fd=2,lt,fd=2}
\par\bigskip
\Gitterpfad{fd=2,rt,fd,rt,fd=2,lt,fd=3,lt,fd,lt,fd=2,rt,fd,rt,fd=2}\quad
\Gitterpfad{fd=2,rt,fd,rt,fd=2,lt,fd,lt,fd=2,rt,fd,rt,fd=2,lt,fd,lt,fd=2}\quad
\Gitterpfad{fd=2,rt,fd=2,rt,fd,rt,fd,lt,fd,lt,fd=3,lt,fd,lt,fd,rt,fd,rt,fd}\quad
\Gitterpfad{fd=2,rt,fd=3,rt,fd,rt,fd=2,lt,fd,lt,fd=3,lt,fd=2}
\end{document}

fd ist dabei eine Abkürzung für forward und führt zu eine Vorwärtsbewegung. lt und rt sind Abkürzungen für left und right und führen zu einer Drehung nach links bzw. rechts.

alt text

Permanenter link

beantwortet 02 Apr, 17:16

esdd's gravatar image

esdd
16.5k63854

bearbeitet 02 Apr, 17:17

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×598

Frage gestellt: 01 Apr, 22:50

Frage wurde angeschaut: 269 Mal

Zuletzt aktualisiert: 02 Apr, 17:17