article

Der Begriff Zaunpfahlproblem beschreibt ein Logikproblem der Indexierung und zeichnet sich durch eine Indexverschiebung von genau eins aus. Dieses Problem tritt häufig in der Datenverarbeitung auf.

Problematik


Zaunpfahlprobleme können auftreten, wenn

  • es einen Index mehr als Elemente gibt. Das liegt daran, dass Anfangs- und Endelement kein Vorgänger- bzw. Nachfolge-Element haben. Das ist das ursprüngliche Zaunpfahlproblem. So hat beispielsweise ein Zentimetermaß zwar Zentimeter 0 und 1, aber nur einen ersten (von 0 bis 1 cm) und keinen nullten Zentimeter. Hier beschreibt die Verbindung von zwei Indizes ein Element, was manchmal zu Schwierigkeiten führen kann.
  • es genausoviele Indizes wie Elemente gibt, diese aber um eins verschoben sind. Dabei wird die Nummerierung anders durchgeführt als dessen Auslesung. In der Datenverarbeitung kommt dieses Problem häufig vor, wenn Computer bei 0 zu zählen beginnen, Anwender aber bei 1.

Beispiel


Frage: Wenn man einen 30 m langen Zaun errichten will und die Zaunpfähle 3 m auseinander stehen sollen, wieviele Pfähle braucht man dafür?

Antwort: Viele würden fälschlicherweise 30 durch 3 teilen und "10 Pfähle" antworten. Richtig ist aber 11, denn wie die nebenstehende Illustration zeigt, brauchen Anfang und Ende des Zauns je einen Pfahl.

Zaunpfahlprobleme im Alltag


Finden der Mitte

Bei der Frage, wo die Mitte auf einer Skala von 1 bis 10 liegt, antworten viele Menschen intuitiv mit 5, da 5 die Hälfte von 10 ist. Tatsächlich liegt 5 aber unterhalb der Mitte, die sich bei 5,5 befindet. Zur Veranschaulichung: 1 2 3 4 5 6 7 8 9 10 ^Mitte

Die Hälfte des Maximalwertes ergibt nur dann die Mitte, wenn die Skala mit 0 statt mit 1 beginnt.

Informatik

In der Informatik, wo der Begriff des Zaunpfahlproblems am häufigsten Verwendung findet, treten ähnliche Probleme auf. Im Alltag beginnen Menschen Aufzählungen meist bei 1, in vielen –- vor allem durch C beeinflusste - Programmiersprachen beginnen Aufzählungen hingegen bei 0. So hat beispielsweise in Java ein Array der Größe 5 Elemente mit den Indizes 0, 1, 2, 3 und 4. Ein typischer Anfängerfehler ist es, in einem solchen Array die Elemente 1 bis 5 auszulesen oder einen falschen Vergleichsoperator zu benutzen. Dort trägt es den Namen Um-eins-daneben-Fehler. Es muss aber nicht jeder Um-eins-daneben-Fehler ein Zaunpfahlproblem sein.

Stockwerke

In Deutschland ist der 1. Stock das erste aufgestockte Geschoss, im Gegensatz zum Erdgeschoss. In vielen Kulturen hat jedoch das Erdgeschoss die Nummer 1. Auch hier kommt es zum Zaunpfahlproblem: Stockwerk 3 oder drei Treppen hoch? Wenn in Deutschland statt Stockwerken Etagen durchnummeriert werden, dann wird oft im Erdgeschoss mit dem Zählen bei 1 angefangen.

Jahre

Ein Jahrhundert ist nach 100 Jahren vollendet, nicht bei Eintritt in das hundertste Jahr. Die ersten 100 Jahre unseres Kalenders sind die Jahre 1 bis 100 (ein Jahr Null gibt es in unserem Kalender nicht). Das 20. Jahrhundert lief folglich vom 1. Januar 1901 bis zum 31. Dezember 2000. Was Ende 1999 gefeiert wurde, war also weder das neue Jahrhundert noch das neue Jahrtausend, sondern der Wechsel der Tausender-Ziffer in der Jahreszahl.

Zur Vereinfachung werden Jahrhunderte trotzdem häufig durch 100 teilbare Jahreszahlen eingeteilt. Das erste Jahrhundert ist mit der vereinfachten Rechnung demnach etwas kürzer als die restlichen.

Geburtstage feiern ebenfalls die Vollendung und nicht den Beginn der angegebenen Jahre. Ein Mensch, der seinen 18. Geburtstag feiert, hat also schon 18 Jahre gelebt und beginnt sein 19. Lebensjahr.

Linguistische Vergleichsoperatoren

Auch sprachliche Anweisungen können hin und wieder verwirrend sein. Sagt beispielsweise ein Lehrer zu seinen Schülern „Lest bitte zu morgen das Buch bis Seite 34“, kann es für Außenstehende unklar sein, ob Seite 33 zu Ende gelesen und Seite 34 erreicht werden soll (kleiner-als-Operator; <) oder ob die 34. Seite vollendet werden soll (kleiner-gleich-Operator; ≤).

Entsprechendes gilt für Angaben wie "in x Tagen". Normalerweise wird bei solchen Aussagen der heutige Tag nicht mitgerechnet. Jedoch ist es im deutschen Sprachraum weit verbreitet, „in acht Tagen“ zu sagen, wenn eine Woche (sieben Tage) gemeint ist. Eine Analogie existiert im Französischen mit „quinze jours“, zu deutsch „fünfzehn Tage“, als Bezeichnung für zwei Wochen.

Trivia

"Bei drei oder auf drei?" ist ein berühmtes Zitat aus der Lethal Weapon Reihe. Hier ist das Problem, ob man die gemeinsam geplante, überraschende Aktion beginnen soll, nachdem man bis drei gezählt hat oder genau dann, wenn man drei sagt.

Logik

Fencepost error

 

This article is licensed under the GNU Free Documentation License. It uses material from the "Zaunpfahlproblem".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld