<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.flbk-hamm.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Flbkwikiadmin</id>
	<title>FLBK-Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flbk-hamm.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Flbkwikiadmin"/>
	<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/Spezial:Beitr%C3%A4ge/Flbkwikiadmin"/>
	<updated>2026-06-21T20:54:39Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2895</id>
		<title>Sequenzdiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2895"/>
		<updated>2026-06-05T05:36:17Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[UML]] kennt insgesamt 14 Diagrammtypen. Ein Sequenzdiagramm ist ein Verhaltensdiagramm der UML. Das Wort Sequenz beschreibt laut Duden eine Reihenfolge oder kurz Folge von Dingen. In Sequenzdiagrammen wird eine zeitliche Folge von Kommunikationsbeziehungen zwischen [[Objekt|Objekten]] grafisch dargestellt. Eine Kommunikationsbeziehung ist das Senden einer Nachricht von einem [[Objekt]] zu einem anderen. Denn [[Objekt|Objekte]] tauschen Nachrichten aus, um miteinander zu kommunizieren (Heide Balzert: Lehrbuch der Objektmodellierung. Analyse und Entwurf S. 71 ff).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was zeigt ein Sequenzdiagramm?&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Interaktionen:&#039;&#039;&#039; Es visualisiert, wie [[Objekt|Objekte]] miteinander kommunizieren und in welcher Reihenfolge Nachrichten ausgetauscht werden.&lt;br /&gt;
* &#039;&#039;&#039;Zeitliche Abfolge:&#039;&#039;&#039; Die vertikale Achse repräsentiert die Zeit, sodass man den Ablauf der Interaktionen gut nachvollziehen kann.&lt;br /&gt;
* &#039;&#039;&#039;Objekte:&#039;&#039;&#039; Jedes [[Objekt]] wird durch eine Lebenslinie repräsentiert.&lt;br /&gt;
* &#039;&#039;&#039;Nachrichten:&#039;&#039;&#039; Nachrichten, die zwischen [[Objekt|Objekten]] gesendet werden, sind als Pfeile dargestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist der Hauptzweck?&#039;&#039;&#039;&lt;br /&gt;
Der Hauptzweck eines Sequenzdiagramms besteht darin, den Ablauf von Prozessen darzustellen, nicht die konkreten Werte, die bei der Ausführung von [[Methode|Methoden]] zurückgegeben werden.&lt;br /&gt;
Abstraktion: [[Methode#Rückgabeparameter|Rückgabeparameter]] sind oft implementationsspezifische Details, die für das Verständnis des allgemeinen Ablaufs nicht immer relevant sind. Sie können dargestellt werden, falls relevant, müssen es aber nicht.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|-ZswbawGWzg}}&lt;br /&gt;
&lt;br /&gt;
== Grundsätzlicher Aufbau ==&lt;br /&gt;
Ein Sequenzdiagramm besitzt zwei Dimensionen: Die Vertikale repräsentiert die Zeit (von oben nach unten verlaufend), auf der Horizontalen werden die beteiligten Teilnehmer (meist [[Objekt|Objekte]] oder Akteure) angeordnet. Die zugehörigen [[Klasse|Klassen]] werden mit aufgeführt. Die Lebensdauer eines jeden [[Objekt|Objektes]] wird durch eine gestrichelte Linie – die sogenannte Lebenslinie – dargestellt. Diese Linie repräsentiert die Existenz eines Objekts während einer bestimmten Zeit.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Schematische Darstellung Sequenzdiagramm.png|mini|Schematische Darstellung der Elemente eines Sequenzdiagramms]]&lt;br /&gt;
[[Datei:Beschriftetes Beispiel Sequenzdiagramm.png|mini|Beschriftetes Beispiel mit Akteur, Lebenslinien und Nachrichten]]&lt;br /&gt;
&lt;br /&gt;
=== Objekte und Lebenslinien ===&lt;br /&gt;
Die [[Objekt|Objekte]] (bzw. Teilnehmer) werden am oberen Rand durch Rechtecke visualisiert. Im Rechteck steht typischerweise der [[Klasse]]nname. Falls erforderlich, wird auch der spezifische Objektname aufgeführt. Objektname und Klassenname werden durch einen Doppelpunkt getrennt und zur Kennzeichnung als Instanz oft unterstrichen (zum Beispiel &amp;lt;u&amp;gt;&amp;lt;code&amp;gt;Bestellung: Mail&amp;lt;/code&amp;gt;&amp;lt;/u&amp;gt; oder einfach &amp;lt;code&amp;gt;:Mail&amp;lt;/code&amp;gt; für ein anonymes Objekt). Akteure (wie z. B. ein Nutzer) werden als Strichmännchen dargestellt.&lt;br /&gt;
&lt;br /&gt;
Von diesen Teilnehmer-Symbolen gehen die senkrechten Lebenslinien aus. Sie werden durch gestrichelte Linien dargestellt. Die Nachrichten werden durch waagerechte Pfeile zwischen den Lebenslinien modelliert. Auf diesen Pfeilen werden die Nachrichtennamen in der Form &amp;lt;code&amp;gt;Nachricht(Argumente)&amp;lt;/code&amp;gt; notiert. Die Angabe von Argumenten ist optional.&lt;br /&gt;
&lt;br /&gt;
=== Nachrichten ===&lt;br /&gt;
Durch eine Nachricht wird meist eine [[Methode]] des Empfängers aufgerufen. Hier kann auch die Übergabe von [[Methode#Eingabeparameter|Eingabeparametern]] kenntlich gemacht werden. Es wird prinzipiell zwischen synchronen und asynchronen Nachrichten unterschieden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Nachrichten im Sequenzdiagramm.png|mini|Darstellung gefundener und verlorener Meldungen]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchrone Nachrichten:&#039;&#039;&#039; Bei einem synchronen Aufruf blockiert der Sender (der aufrufende Kommunikationspartner pausiert die Programmfortführung), bis er die zugehörige Antwort vom Empfänger erhalten hat. Synchrone Nachrichten werden durch einen Pfeil mit &#039;&#039;&#039;gefüllter, geschlossener Spitze&#039;&#039;&#039; dargestellt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Synchrone und Asychrone Nachrichten.png|mini|Vergleich: Synchrone vs. Asynchrone Operationsaufrufe]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Asynchrone Nachrichten:&#039;&#039;&#039; Hierbei sendet der Sender die Nachricht und führt sein Programm unmittelbar fort, ohne auf eine Antwort zu warten. Trifft später eine Antwort ein, wird sie vom Sender verarbeitet. Asynchrone Nachrichten werden durch einen Pfeil mit &#039;&#039;&#039;offener Spitze&#039;&#039;&#039; (Linienpfeil) dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Antworten ===&lt;br /&gt;
Die explizite Darstellung von Antworten ist optional. Antworten auf vorherige Nachrichten (insbesondere bei synchronen Aufrufen) werden durch eine &#039;&#039;&#039;gestrichelte Linie mit offener Pfeilspitze&#039;&#039;&#039; dargestellt.&lt;br /&gt;
&lt;br /&gt;
Das Erzeugen und Entfernen von Objekten kann in Sequenzdiagrammen ebenfalls modelliert werden:&lt;br /&gt;
* &#039;&#039;&#039;Objekterzeugung:&#039;&#039;&#039; Die [[Konstruktor|Konstruktion]] (Instanziierung) eines neuen Objektes wird durch eine Nachricht (oft mit &amp;lt;code&amp;gt;&amp;lt;&amp;lt;create&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;erzeugen&amp;lt;/code&amp;gt; beschriftet) angezeigt, deren Pfeilspitze exakt auf den Kopf des neu zu erzeugenden Objektsymbols trifft.&lt;br /&gt;
* &#039;&#039;&#039;Dekonstruktion:&#039;&#039;&#039; Die Destruktion bzw. Zerstörung eines Objektes wird durch ein großes Kreuz (Stopp-Symbol) am Ende der jeweiligen Lebenslinie angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Entscheidung, ob Antworten detailliert eingezeichnet werden, hängt vom Zweck des Diagramms ab. Oft werden sie weggelassen, wenn der Rückfluss durch den Methodenaufruf implizit klar ist, um das Diagramm übersichtlich zu halten.&lt;br /&gt;
&lt;br /&gt;
=== Statische Aufrufe ===&lt;br /&gt;
Statische (static) Methodenaufrufe können dargestellt werden, indem die Nachricht an die [[Klasse]] selbst und nicht an eine spezifische [[Instanz|Objektinstanz]] gesendet wird.&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung (Ausführungspezifikation) ===&lt;br /&gt;
Die Überlagerung der gestrichelten Lebenslinien durch breite, senkrechte Rechtecke (Balken) symbolisiert die Aktivierung. Dieser sogenannte Aktivierungsbalken zeigt an, über welchen Zeitraum das Objekt aktiv an der Interaktion beteiligt ist, also den Kontrollfluss des Programms innehat oder auf die Rückkehr eines synchronen Aufrufs wartet.&lt;br /&gt;
&lt;br /&gt;
=== Kontrollstrukturen (Kombinierte Fragmente) ===&lt;br /&gt;
[[Datei:Bespiel Kontrollstrukturen im Sequenzdiagramm.png|mini|Kombinierte Fragmente für Alternativen (alt) und Schleifen (loop)]]&lt;br /&gt;
Auch [[Kontrollstruktur|Kontrollstrukturen]] lassen sich in modernen Sequenzdiagrammen mithilfe sogenannter &amp;quot;Kombinierter Fragmente&amp;quot; darstellen. Diese werden als Rahmen mit einem Operator-Schlüsselwort in der oberen linken Ecke gezeichnet.&lt;br /&gt;
&lt;br /&gt;
==== Verzweigung (alt) ====&lt;br /&gt;
Der mit &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; (für alternative) markierte Block beschreibt eine Alternative ([[Verzweigung]]). Der Rahmen wird durch gestrichelte Linien in sogenannte Interaktionsoperanden (Teilbereiche) unterteilt. Jeder Bereich ist mit einer Bedingung (Guard) in eckigen Klammern versehen (z. B. &amp;lt;code&amp;gt;[pwd ok]&amp;lt;/code&amp;gt;). Es wird nur derjenige Bereich ausgeführt, dessen Bedingung zum Ausführungszeitpunkt wahr (true) ist. Der unterste Bereich wird oft mit &amp;lt;code&amp;gt;[else]&amp;lt;/code&amp;gt; markiert.&lt;br /&gt;
&lt;br /&gt;
==== Schleife (loop) ====&lt;br /&gt;
Der Teil des Sequenzdiagramms, der sich in einem Rahmen mit dem Operator &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; befindet, wird wiederholt ausgeführt. Die Ausführungsbedingung (Schleifenbedingung) steht in eckigen Klammern (z. B. &amp;lt;code&amp;gt;[pwd != ok]&amp;lt;/code&amp;gt;). Der Inhalt des Rahmens wird so lange wiederholt, wie diese Bedingung wahr ist.&lt;br /&gt;
&lt;br /&gt;
== Zeitliche Ordnung der Ereignisse ==&lt;br /&gt;
Ein Sequenzdiagramm beschreibt das Verhalten eines Systems, indem es die zeitliche Ordnung von Ereignisauftritten spezifiziert. Nicht der präzise, absolute Zeitpunkt, wann ein Ereignis auftritt, ist dabei ausschlaggebend, sondern welche Ereignisse zwingend vor und welche nach einem bestimmten Ereignisauftritt stattfinden müssen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Zeitliche Eindordnung Nachrichten im Sequenzdiagramm.png|mini|Zeitliche Einordnung und Ordnungsbeziehungen von Ereignisauftritten]]&lt;br /&gt;
&lt;br /&gt;
Das obere Diagramm in der Abbildung rechts zeigt ein Sequenzdiagramm mit zwei synchronen Operationsaufrufen (m1 und m2). Blau eingekreist sind die vier maßgeblichen Ereignisauftritte:&lt;br /&gt;
* S1 und E1 stehen für das Sende- und das Empfangs-Ereignis der Nachricht m1.&lt;br /&gt;
* S2 und E2 stehen für die entsprechenden Ereignisse der Nachricht m2.&lt;br /&gt;
&lt;br /&gt;
Die Zeitachse verläuft in einem Sequenzdiagramm von oben nach unten, stellt jedoch keine absolute Zeitmetrik dar. Zu den Ereignisauftritten in diesem synchronen Beispiel lassen sich folgende feste Aussagen treffen:&lt;br /&gt;
* E1 tritt nach S1 auf, da das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommen muss. Analog tritt E2 stets nach S2 auf.&lt;br /&gt;
* S2 tritt nach S1 auf, weil S2 auf der Lebenslinie von Objekt A unterhalb von S1 eingezeichnet ist.&lt;br /&gt;
&lt;br /&gt;
Alles in allem modelliert dieses erste Sequenzdiagramm also eine Interaktion, die durch exakt eine zulässige zeitliche Abfolge von Ereignisauftritten spezifiziert ist: &amp;lt;code&amp;gt;&amp;lt;S1, E1, S2, E2&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Das mittlere Sequenzdiagramm unterscheidet sich vom vorangehenden dadurch, dass statt zwei synchronen nun zwei &#039;&#039;&#039;asynchrone&#039;&#039;&#039; Nachrichten (offene Pfeilspitzen) dargestellt sind. Hier gilt weiterhin zwingend, dass E1 nach S1 und E2 nach S2 auftritt. Da es sich jedoch um asynchrone Kommunikation handelt (Objekt A wartet nach dem Senden von m1 nicht), könnte das Empfangsereignis E1 nicht nur vor S2 stattfinden, sondern auch erst nach S2 oder sogar erst nach E2.&lt;br /&gt;
&lt;br /&gt;
Das asynchrone Sequenzdiagramm spezifiziert somit eine Interaktion, in der drei verschiedene Abfolgen von Ereignisauftritten logisch zulässig sind:&lt;br /&gt;
1. &amp;lt;code&amp;gt;&amp;lt;S1, E1, S2, E2&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
2. &amp;lt;code&amp;gt;&amp;lt;S1, S2, E1, E2&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
3. &amp;lt;code&amp;gt;&amp;lt;S1, S2, E2, E1&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls erforderlich, kann man die zulässigen Abfolgen von Ereignisauftritten in asynchronen Systemen mit zusätzlichen &#039;&#039;&#039;Ordnungsbeziehungen&#039;&#039;&#039; einschränken (unterstes Diagramm). Eine Ordnungsbeziehung (dargestellt als gepunktete Linie mit Pfeil) repräsentiert keine übertragene Nachricht zwischen den Lebenslinien, sondern modelliert die zwingende Einschränkung, dass ein Ereignisauftritt zwingend nach einem bestimmten anderen stattfinden muss.&lt;br /&gt;
Im Beispiel modelliert die Ordnungsbeziehung, dass das Sendeereignis S2 immer erst nach dem Empfangsereignis E1 erfolgen darf.&lt;br /&gt;
&lt;br /&gt;
Durch diese zusätzliche Einschränkung stellt das unterste Sequenzdiagramm, trotz der asynchronen Nachrichten, erneut eine Interaktion mit genau einer einzig zulässigen Folge dar: &amp;lt;code&amp;gt;&amp;lt;S1, E1, S2, E2&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2894</id>
		<title>Sequenzdiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2894"/>
		<updated>2026-06-05T05:29:24Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Zeitliche Ordnung der Ereignisse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[UML]] kennt insgesamt 14 Diagrammtypen. Ein Sequenzdiagramm ist ein Diagrammtyp der UML. Das Wort Sequenz beschreibt laut Duden eine Reihenfolge oder kurz Folge von Dingen. In Sequenzdiagrammen wird eine zeitliche Folge von Kommunikationsbeziehungen zwischen [[Objekt|Objekten]] grafisch dargestellt. Eine Kommunikationsbeziehung ist das Senden einer Nachricht von einem [[Objekt]] zu einem anderen. Denn [[Objekt|Objekte]] tauschen Nachrichten aus, um miteinander zu kommunizieren (Heide Balzert: Lehrbuch der Objektmodellierung. Analyse und Entwurf S. 71 ff).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was zeigt ein Sequenzdiagramm?&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Interaktionen:&#039;&#039;&#039; Es visualisiert, wie [[Objekt|Objekte]] miteinander kommunizieren und in welcher Reihenfolge Nachrichten ausgetauscht werden.&lt;br /&gt;
* &#039;&#039;&#039;Zeitliche Abfolge:&#039;&#039;&#039; Die vertikale Achse repräsentiert die Zeit, sodass man den Ablauf der Interaktionen gut nachvollziehen kann.&lt;br /&gt;
* &#039;&#039;&#039;Objekte:&#039;&#039;&#039; Jedes [[Objekt]] wird als eine Lebenslinie dargestellt.&lt;br /&gt;
* &#039;&#039;&#039;Nachrichten:&#039;&#039;&#039; Nachrichten, die zwischen [[Objekt|Objekten]] gesendet werden, sind als Pfeile dargestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist der Hauptzweck?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Hauptzweck eines Sequenzdiagramms besteht darin, den Ablauf von Prozessen darzustellen, nicht die konkreten Werte, die bei der Ausführung von [[Methode|Methoden]] zurückgegeben werden.&lt;br /&gt;
Abstraktion: [[Methode#Rückgabeparameter|Rückgabeparameter]] sind oft implementationsspezifische Details, die für das Verständnis des allgemeinen Ablaufs nicht immer relevant sind. Sie können dargestellt werden, falls relevant, müssen es aber nicht.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|-ZswbawGWzg}}&lt;br /&gt;
&lt;br /&gt;
== Grundsätzlicher Aufbau ==&lt;br /&gt;
Ein Sequenzdiagramm besitzt zwei Dimensionen: Die Vertikale repräsentiert die Zeit, auf der Horizontalen werden die [[Objekt|Objekte]] eingetragen. Die zugehörigen [[Klasse|Klassen]] werden mit aufgeführt. Die Lebensdauer eines jeden [[Objekt|Objektes]] wird durch eine gestrichelte Linie – die Lebenslinie oder Objektlinie – dargestellt. Diese Linie repräsentiert die Existenz eines Objekts während einer bestimmten Zeit. &lt;br /&gt;
&lt;br /&gt;
[[Datei:Schematische Darstellung Sequenzdiagramm.png|mini]]&lt;br /&gt;
[[Datei:Beschriftetes Beispiel Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
=== Objekte ===&lt;br /&gt;
Die [[Objekt|Objekte]] werden durch Rechtecke visualisiert. Im [[Instanz|Objekt]] steht der zugehörige [[Klasse]]nname (zum Beispiel Mail). Falls erforderlich, wird auch der Objektname (zum Beispiel Bestellung) aufgeführt. Objektname und Klassenname werden durch einen Doppelpunkt getrennt (zum Beispiel Bestellung: Mail). &lt;br /&gt;
&lt;br /&gt;
Von den Objekten gehen die senkrechten Lebenslinien aus. Sie werden durch gestrichelte Linien dargestellt. Die Nachrichten werden durch waagerechte Pfeile zwischen den Objektlebenslinien beschrieben. Auf diesen Pfeilen werden die Nachrichtennamen in der Form: Nachricht(Argumente) notiert. Die Angabe von Argumenten ist optional.&lt;br /&gt;
&lt;br /&gt;
=== Nachrichten ===&lt;br /&gt;
Durch eine Nachricht wird meist eine [[Methode]] des Empfängers aufgerufen. Hier kann auch die Übergabe von [[Methode#Eingabeparameter|Eingabeparametern]] kenntlich gemacht werden. Es wird zwischen synchronen und asynchronen Nachrichten unterschieden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Nachrichten im Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchrone Nachrichten:&#039;&#039;&#039; Dabei pausiert der aufrufende Kommunikationspartner die Programmfortführung, bis er eine Antwort erhält. Synchrone Nachrichten werden durch einen Pfeil mit gefüllter Spitze dargestellt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Synchrone und Asychrone Nachrichten.png|mini]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Asynchrone Nachrichten:&#039;&#039;&#039; Dabei führt der Sender sein Programm fort. Trifft die Antwort ein, wird der Programmfluss unterbrochen und die Antwort verarbeitet. Sie werden durch einen Pfeil mit offener Spitze dargestellt. &lt;br /&gt;
&lt;br /&gt;
=== Antworten ===&lt;br /&gt;
Die Darstellung der Antworten ist optional. Antworten werden durch eine gestrichelte Linie mit offener Pfeilspitze dargestellt. Das Erzeugen und Entfernen von Objekten kann in Sequenzdiagrammen ebenfalls dargestellt werden. Die [[Konstruktor|Konstruktion]] eines neuen Objektes wird durch eine Nachricht, die auf den Kopf des Objektsymbols trifft, angezeigt. &lt;br /&gt;
&lt;br /&gt;
Die Entscheidung, ob Antworten in einem Sequenzdiagramm dargestellt werden, ist eine gestalterische Entscheidung, die vom jeweiligen Anwendungsfall abhängt. Es gibt keine strikten Regeln, sondern vielmehr Richtlinien, die es ermöglichen, klare und aussagekräftige Diagramme zu erstellen. &lt;br /&gt;
&lt;br /&gt;
=== Statische Aufrufe ===&lt;br /&gt;
Statische (static) Methodenaufrufe werden mit unterstrichenem Methodennamen dargestellt. Der Aufruf erfolgt dann auf einer [[Klasse]] und nicht auf einem [[Objekt]]. &lt;br /&gt;
&lt;br /&gt;
=== Dekonstruktion ===&lt;br /&gt;
Die Destruktion bzw. Zerstörung eines Objektes wird durch ein Kreuz am Ende der Lebenslinie angezeigt.&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
Die Überlagerung der gestrichelten Lebenslinien durch breite, senkrechte Balken symbolisiert die Aktivierung, d. h. es zeigt, welches Objekt gerade aktiv ist und somit für den Kontrollfluss des Programms verantwortlich ist.&lt;br /&gt;
&lt;br /&gt;
=== Kontrollstrukturen ===&lt;br /&gt;
[[Datei:Bespiel Kontrollstrukturen im Sequenzdiagramm.png|mini]]&lt;br /&gt;
Auch [[Kontrollstruktur|Kontrollstrukturen]] lassen sich durch ein Sequenzdiagramm darstellen (siehe Zeichnung). &lt;br /&gt;
&lt;br /&gt;
==== Verzweigung ====&lt;br /&gt;
Der mit alt (für alternative) markierte Block beschreibt eine Alternative ([[Verzweigung]]). Ist die Bedingung [b=wahr] erfüllt, wird der Bereich oberhalb der gestrichelten Linie in dem alt-Block ausgeführt. Im else-Fall wird der Bereich unterhalb der gestrichelten Linie ausgeführt.&lt;br /&gt;
&lt;br /&gt;
==== Schleife ====&lt;br /&gt;
Der Teil des Sequenzdiagramms, der sich im Kasten mit dem Titel [[Schleife|loop]] befindet, wird solange ausgeführt, solange die Ausführbedingung in den eckigen Klammern [] wahr ist.&lt;br /&gt;
&lt;br /&gt;
== Zeitliche Ordnung der Ereignisse ==&lt;br /&gt;
Ein Sequenzdiagramm beschreibt das Verhalten eines Systems, indem es die zeitliche Ordnung von Ereignisauftritten spezifiziert. Nicht der präzise Zeitpunkt, wann ein Ereignis auftritt, ist dabei ausschlaggebend, sondern welche Ereignisse vor und welche nach einem bestimmten Ereignisauftritt auftreten müssen (Quelle: https://de.wikipedia.org/wiki/Sequenzdiagramm).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Zeitliche Eindordnung Nachrichten im Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
Die Abbildung rechts zeigt ein Sequenzdiagramm mit zwei synchronen Operationsaufrufen. Blau eingekreist sind die vier Ereignisauftritte. S1 und E1 stehen für das Sende- und das Empfangs-Nachricht-Ereignis für die Nachricht m1, S2 und E2 für die entsprechenden Ereignisse, die mit m2 in Verbindung stehen. Die Zeitachse läuft in einem Sequenzdiagramm von oben nach unten, sollte aber nicht als absolute Zeit verstanden werden.&lt;br /&gt;
&lt;br /&gt;
Zu den Ereignisauftritten in diesem Sequenzdiagramm lassen sich folgende Aussagen machen:&lt;br /&gt;
* E1 tritt nach S1 auf, weil das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommt. Analog tritt E2 nach S2 auf.&lt;br /&gt;
* S2 tritt nach S1 auf, weil S2 unter S1 gezeichnet ist.&lt;br /&gt;
&lt;br /&gt;
Alles in allem modelliert dieses Sequenzdiagramm also eine Interaktion, die durch genau eine Folge von Ereignisauftritten spezifiziert ist: &amp;lt;S1, E1, S2, E2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Das Sequenzdiagramm in der Abbildung rechts unterscheidet sich nur geringfügig vom vorangehenden Sequenzdiagramm. Der einzige Unterschied besteht darin, dass statt zwei synchronen zwei asynchrone Nachrichten dargestellt sind. Hier gilt weiterhin, dass E1 nach S1 und E2 nach S2 auftritt, weil das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommt. Weil es sich um asynchrone Kommunikation handelt, könnte E1 hier jedoch nicht nur vor, sondern auch erst nach S2 oder E2 vorkommen.&lt;br /&gt;
&lt;br /&gt;
Das Sequenzdiagramm spezifiziert also eine Interaktion, in der drei Folgen von Ereignisauftritten zulässig sind: &amp;lt;S1, E1, S2, E2&amp;gt;, &amp;lt;S1, S2, E1, E2&amp;gt; und &amp;lt;S1, S2, E2, E1&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Falls nötig, kann man die zulässigen Abfolgen von Ereignisauftritten mit zusätzlichen Ordnungsbeziehungen einschränken. Eine Ordnungsbeziehung spezifiziert nicht eine Nachricht, die zwischen zwei Lebenslinien ausgetauscht wird, sondern die Tatsache, dass ein Ereignisauftritt nach einem anderen Ereignisauftritt vorkommen muss. Im Beispiel modelliert die Ordnungsbeziehung, dass S2 immer nach E1 erfolgt.&lt;br /&gt;
&lt;br /&gt;
Mit dieser zusätzlichen Einschränkung stellt dieses Sequenzdiagramm erneut eine Interaktion mit genau einer zulässigen Folge dar: &amp;lt;S1, E1, S2, E2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2893</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2893"/>
		<updated>2026-05-30T06:26:44Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/GoFBcIUYvoY?si=l8gBziqVW2u_iCMr&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,018 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis noch im Annahmebereich. Die Wahrscheinlichkeit, 3 oder mehr fehlerhafte Teile zu finden, ist mit knapp 7,8 % größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Eine Münze wird &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich.&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,077 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;. Damit fällt das Ergebnis in den Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es extrem ungewöhnlich (Wahrscheinlichkeit von ca. 4 %), höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich. &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,184 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe sind 2 Lampen ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 2) \approx 0,411 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis im Annahmebereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es mit einer Wahrscheinlichkeit von ca. 41,1 % überhaupt nicht ungewöhnlich, höchstens 2 ausgefalle Lampen zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2892</id>
		<title>Sequenzdiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2892"/>
		<updated>2026-05-27T10:27:53Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[UML]] kennt insgesamt 14 Diagrammtypen. Ein Sequenzdiagramm ist ein Diagrammtyp der UML. Das Wort Sequenz beschreibt laut Duden eine Reihenfolge oder kurz Folge von Dingen. In Sequenzdiagrammen wird eine zeitliche Folge von Kommunikationsbeziehungen zwischen [[Objekt|Objekten]] grafisch dargestellt. Eine Kommunikationsbeziehung ist das Senden einer Nachricht von einem [[Objekt]] zu einem anderen. Denn [[Objekt|Objekte]] tauschen Nachrichten aus, um miteinander zu kommunizieren (Heide Balzert: Lehrbuch der Objektmodellierung. Analyse und Entwurf S. 71 ff).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was zeigt ein Sequenzdiagramm?&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Interaktionen:&#039;&#039;&#039; Es visualisiert, wie [[Objekt|Objekte]] miteinander kommunizieren und in welcher Reihenfolge Nachrichten ausgetauscht werden.&lt;br /&gt;
* &#039;&#039;&#039;Zeitliche Abfolge:&#039;&#039;&#039; Die vertikale Achse repräsentiert die Zeit, sodass man den Ablauf der Interaktionen gut nachvollziehen kann.&lt;br /&gt;
* &#039;&#039;&#039;Objekte:&#039;&#039;&#039; Jedes [[Objekt]] wird als eine Lebenslinie dargestellt.&lt;br /&gt;
* &#039;&#039;&#039;Nachrichten:&#039;&#039;&#039; Nachrichten, die zwischen [[Objekt|Objekten]] gesendet werden, sind als Pfeile dargestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist der Hauptzweck?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Hauptzweck eines Sequenzdiagramms besteht darin, den Ablauf von Prozessen darzustellen, nicht die konkreten Werte, die bei der Ausführung von [[Methode|Methoden]] zurückgegeben werden.&lt;br /&gt;
Abstraktion: [[Methode#Rückgabeparameter|Rückgabeparameter]] sind oft implementationsspezifische Details, die für das Verständnis des allgemeinen Ablaufs nicht immer relevant sind. Sie können dargestellt werden, falls relevant, müssen es aber nicht.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|-ZswbawGWzg}}&lt;br /&gt;
&lt;br /&gt;
== Grundsätzlicher Aufbau ==&lt;br /&gt;
Ein Sequenzdiagramm besitzt zwei Dimensionen: Die Vertikale repräsentiert die Zeit, auf der Horizontalen werden die [[Objekt|Objekte]] eingetragen. Die zugehörigen [[Klasse|Klassen]] werden mit aufgeführt. Die Lebensdauer eines jeden [[Objekt|Objektes]] wird durch eine gestrichelte Linie – die Lebenslinie oder Objektlinie – dargestellt. Diese Linie repräsentiert die Existenz eines Objekts während einer bestimmten Zeit. &lt;br /&gt;
&lt;br /&gt;
[[Datei:Schematische Darstellung Sequenzdiagramm.png|mini]]&lt;br /&gt;
[[Datei:Beschriftetes Beispiel Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
=== Objekte ===&lt;br /&gt;
Die [[Objekt|Objekte]] werden durch Rechtecke visualisiert. Im [[Instanz|Objekt]] steht der zugehörige [[Klasse]]nname (zum Beispiel Mail). Falls erforderlich, wird auch der Objektname (zum Beispiel Bestellung) aufgeführt. Objektname und Klassenname werden durch einen Doppelpunkt getrennt (zum Beispiel Bestellung: Mail). &lt;br /&gt;
&lt;br /&gt;
Von den Objekten gehen die senkrechten Lebenslinien aus. Sie werden durch gestrichelte Linien dargestellt. Die Nachrichten werden durch waagerechte Pfeile zwischen den Objektlebenslinien beschrieben. Auf diesen Pfeilen werden die Nachrichtennamen in der Form: Nachricht(Argumente) notiert. Die Angabe von Argumenten ist optional.&lt;br /&gt;
&lt;br /&gt;
=== Nachrichten ===&lt;br /&gt;
Durch eine Nachricht wird meist eine [[Methode]] des Empfängers aufgerufen. Hier kann auch die Übergabe von [[Methode#Eingabeparameter|Eingabeparametern]] kenntlich gemacht werden. Es wird zwischen synchronen und asynchronen Nachrichten unterschieden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Nachrichten im Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchrone Nachrichten:&#039;&#039;&#039; Dabei pausiert der aufrufende Kommunikationspartner die Programmfortführung, bis er eine Antwort erhält. Synchrone Nachrichten werden durch einen Pfeil mit gefüllter Spitze dargestellt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Synchrone und Asychrone Nachrichten.png|mini]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Asynchrone Nachrichten:&#039;&#039;&#039; Dabei führt der Sender sein Programm fort. Trifft die Antwort ein, wird der Programmfluss unterbrochen und die Antwort verarbeitet. Sie werden durch einen Pfeil mit offener Spitze dargestellt. &lt;br /&gt;
&lt;br /&gt;
=== Antworten ===&lt;br /&gt;
Die Darstellung der Antworten ist optional. Antworten werden durch eine gestrichelte Linie mit offener Pfeilspitze dargestellt. Das Erzeugen und Entfernen von Objekten kann in Sequenzdiagrammen ebenfalls dargestellt werden. Die [[Konstruktor|Konstruktion]] eines neuen Objektes wird durch eine Nachricht, die auf den Kopf des Objektsymbols trifft, angezeigt. &lt;br /&gt;
&lt;br /&gt;
Die Entscheidung, ob Antworten in einem Sequenzdiagramm dargestellt werden, ist eine gestalterische Entscheidung, die vom jeweiligen Anwendungsfall abhängt. Es gibt keine strikten Regeln, sondern vielmehr Richtlinien, die es ermöglichen, klare und aussagekräftige Diagramme zu erstellen. &lt;br /&gt;
&lt;br /&gt;
=== Statische Aufrufe ===&lt;br /&gt;
Statische (static) Methodenaufrufe werden mit unterstrichenem Methodennamen dargestellt. Der Aufruf erfolgt dann auf einer [[Klasse]] und nicht auf einem [[Objekt]]. &lt;br /&gt;
&lt;br /&gt;
=== Dekonstruktion ===&lt;br /&gt;
Die Destruktion bzw. Zerstörung eines Objektes wird durch ein Kreuz am Ende der Lebenslinie angezeigt.&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
Die Überlagerung der gestrichelten Lebenslinien durch breite, senkrechte Balken symbolisiert die Aktivierung, d. h. es zeigt, welches Objekt gerade aktiv ist und somit für den Kontrollfluss des Programms verantwortlich ist.&lt;br /&gt;
&lt;br /&gt;
=== Kontrollstrukturen ===&lt;br /&gt;
[[Datei:Bespiel Kontrollstrukturen im Sequenzdiagramm.png|mini]]&lt;br /&gt;
Auch [[Kontrollstruktur|Kontrollstrukturen]] lassen sich durch ein Sequenzdiagramm darstellen (siehe Zeichnung). &lt;br /&gt;
&lt;br /&gt;
==== Verzweigung ====&lt;br /&gt;
Der mit alt (für alternative) markierte Block beschreibt eine Alternative ([[Verzweigung]]). Ist die Bedingung [b=wahr] erfüllt, wird der Bereich oberhalb der gestrichelten Linie in dem alt-Block ausgeführt. Im else-Fall wird der Bereich unterhalb der gestrichelten Linie ausgeführt.&lt;br /&gt;
&lt;br /&gt;
==== Schleife ====&lt;br /&gt;
Der Teil des Sequenzdiagramms, der sich im Kasten mit dem Titel [[Schleife|loop]] befindet, wird solange ausgeführt, solange die Ausführbedingung in den eckigen Klammern [] wahr ist.&lt;br /&gt;
&lt;br /&gt;
== Zeitliche Ordnung der Ereignisse ==&lt;br /&gt;
Ein Sequenzdiagramm beschreibt das Verhalten eines Systems, indem es die zeitliche Ordnung von Ereignisauftritten spezifiziert. Nicht der präzise Zeitpunkt, wann ein Ereignis auftritt, ist dabei ausschlaggebend, sondern welche Ereignisse vor und welche nach einem bestimmten Ereignisauftritt auftreten müssen (Quelle: https://de.wikipedia.org/wiki/Sequenzdiagramm).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Zeitliche Eindordnung Nachrichten im Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
Die Abbildung links zeigt ein Sequenzdiagramm mit zwei synchronen Operationsaufrufen. Blau eingekreist sind die vier Ereignisauftritte. S1 und E1 stehen für das Sende- und das Empfangs-Nachricht-Ereignis für die Nachricht m1, S2 und E2 für die entsprechenden Ereignisse, die mit m2 in Verbindung stehen. Die Zeitachse läuft in einem Sequenzdiagramm von oben nach unten, sollte aber nicht als absolute Zeit verstanden werden.&lt;br /&gt;
&lt;br /&gt;
Zu den Ereignisauftritten in diesem Sequenzdiagramm lassen sich folgende Aussagen machen:&lt;br /&gt;
* E1 tritt nach S1 auf, weil das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommt. Analog tritt E2 nach S2 auf.&lt;br /&gt;
* S2 tritt nach S1 auf, weil S2 unter S1 gezeichnet ist.&lt;br /&gt;
&lt;br /&gt;
Alles in allem modelliert dieses Sequenzdiagramm also eine Interaktion, die durch genau eine Folge von Ereignisauftritten spezifiziert ist: &amp;lt;S1, E1, S2, E2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Das Sequenzdiagramm in der Abbildung links unterscheidet sich nur geringfügig vom vorangehenden Sequenzdiagramm. Der einzige Unterschied besteht darin, dass statt zwei synchronen zwei asynchrone Nachrichten dargestellt sind. Hier gilt weiterhin, dass E1 nach S1 und E2 nach S2 auftritt, weil das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommt. Weil es sich um asynchrone Kommunikation handelt, könnte E1 hier jedoch nicht nur vor, sondern auch erst nach S2 oder E2 vorkommen.&lt;br /&gt;
&lt;br /&gt;
Das Sequenzdiagramm spezifiziert also eine Interaktion, in der drei Folgen von Ereignisauftritten zulässig sind: &amp;lt;S1, E1, S2, E2&amp;gt;, &amp;lt;S1, S2, E1, E2&amp;gt; und &amp;lt;S1, S2, E2, E1&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Falls nötig, kann man die zulässigen Abfolgen von Ereignisauftritten mit zusätzlichen Ordnungsbeziehungen einschränken. Eine Ordnungsbeziehung spezifiziert nicht eine Nachricht, die zwischen zwei Lebenslinien ausgetauscht wird, sondern die Tatsache, dass ein Ereignisauftritt nach einem anderen Ereignisauftritt vorkommen muss. Im Beispiel modelliert die Ordnungsbeziehung, dass S2 immer nach E1 erfolgt.&lt;br /&gt;
&lt;br /&gt;
Mit dieser zusätzlichen Einschränkung stellt dieses Sequenzdiagramm erneut eine Interaktion mit genau einer zulässigen Folge dar: &amp;lt;S1, E1, S2, E2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2891</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2891"/>
		<updated>2026-05-27T08:59:24Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Spezifikation und Dokumentation von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (engl. &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) ist ein elementares Verhaltensdiagramm der UML.&lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase (Requirements Engineering) die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um barrierefrei zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklungsteam) zu vermitteln. Als strukturierte funktionale Anforderungsbeschreibung sind Anwendungsfalldiagramme ein fester Bestandteil des [[Lastenheft]]s und bilden die primäre Grundlage für das [[Pflichtenheft]].&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie identifizieren die externen Benutzer oder Systeme, die mit dem System interagieren. Jeder Akteur repräsentiert eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; und keine konkrete Person.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben die vom System angebotenen Funktionalitäten und Aufgaben, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert erzeugen.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Sie definieren die Kommunikationspfade zwischen Akteuren und Anwendungsfällen sowie die strukturellen Abhängigkeiten der Anwendungsfälle untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Ein Anwendungsfalldiagramm bildet &#039;&#039;&#039;keine&#039;&#039;&#039; zeitlichen, logischen oder prozessualen Abläufe ab. Für die Modellierung von Kontrollflüssen und sequentiellen Prozessen sind stattdessen UML-Aktivitätendiagramme oder Sequenzdiagramme zu verwenden.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Funktionseinheiten innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. Der Rahmen grenzt das zu entwickelnde System strikt von seiner Umwelt ab: Akteure stehen als externe Entitäten immer außerhalb des Systems, während die Anwendungsfälle die interne Funktionalität definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel eines Use-Case-Diagramms mit Systemgrenze, Akteuren und verknüpften Beziehungen]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der methodische Aufbau eines standardkonformen Anwendungsfalldiagramms folgt drei sequentiellen Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Es wird festgelegt, welche unterschiedlichen Rollen das System nutzen werden. Menschliche Rollen werden grafisch als Strichmännchen dargestellt, externe Software- oder Hardwaresysteme als Rechtecke mit dem Stereotyp &amp;lt;code&amp;gt;«system»&amp;lt;/code&amp;gt;. Jeder Akteur muss einen eindeutigen, selbsterklärenden Namen im Singular erhalten (z. B. &#039;&#039;Kunde&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Allgemeine Bezeichnungen wie „User“ oder „Akteur“ sind zu vermeiden, da sie für fast jedes Softwaresystem gültig sind und keine spezifische Rolle beschreiben.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Es wird geklärt, welche fachlichen Ziele das System erfüllen muss. Anwendungsfälle werden als horizontale Ellipsen dargestellt, die eine kurze Inhaltsbeschreibung enthalten. Die Formulierung muss kurz, aussagekräftig und im Infinitiv bzw. im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; erfolgen (z. B. &#039;&#039;Artikel suchen&#039;&#039;, &#039;&#039;Passwort zurücksetzen&#039;&#039;).&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im letzten Schritt werden die Akteure und Anwendungsfälle über strukturierte Beziehungslinien miteinander verbunden, um die Interaktionskanäle visuell zu definieren.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen bilden die grundlegenden Kommunikationspfade zwischen Akteuren und Use Cases. Eine Assoziation signalisiert, dass der verknüpfte Akteur die Aktion des Use Cases ausführen oder mit diesem interagieren kann. Es handelt sich um eine binäre Beziehung, die exakt zwei Elemente miteinander verbindet. Ein einzelner Use Case darf mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als einfache, durchgehende Linie dargestellt. Sie stellt die offenste Form der Interaktion dar und signalisiert einen bidirektionalen Informationsfluss, lässt jedoch die Richtung der Initiierung (wer die Aktion startet) offen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Ungerichtete Assoziation als einfache Verbindungslinie]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Eine gerichtete Assoziation verwendet eine offene Pfeilspitze, um die Navigierbarkeit und den Initiator des Prozesses eindeutig festzulegen. &lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Use Case gerichtet&#039;&#039;&#039; ist, besagt, dass der Akteur den Anwendungsfall aktiv initiiert.&lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Akteur zeigt&#039;&#039;&#039;, besagt, dass der Use Case (bzw. das System) die Interaktion zum Akteur hin anstößt (häufig bei sekundären Systemen oder Benachrichtigungsdiensten).&lt;br /&gt;
* Können beide Seiten die Aktion unabhängig voneinander initiieren, werden die Pfeile weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Gerichtete Assoziation mit Pfeil zur Kennzeichnung des Initiators]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs mit wie vielen Instanzen eines Anwendungsfalls in einer konkreten Systeminteraktion in Beziehung stehen können. Sie werden direkt an den Enden der Assoziationslinien notiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Modellierung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten des Beispiels sind gemeldet nach UML-Standard wie folgt zu interpretieren:&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; (beliebig viele) definiert (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede Spielerin kann jedoch zeitgleich an exakt einem Rundlauf-Spiel teilnehmen (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (Notation: &amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann wiederum an höchstens einem Rundlaufspiel aktiv beteiligt sein (Notation: &amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis für die Praxis:&#039;&#039; Da diese Detailinformationen die Adressaten eines Use-Case-Diagramms häufig überfordern, werden Multiplizitäten hier selten notiert. Ihre zentrale und fundamentale Bedeutung entfalten sie im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes (Inklusion) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Include-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;beinhalten&#039;&#039; oder &#039;&#039;einschließen&#039;&#039;) beschreibt eine zwingende Abhängigkeit zur Vermeidung von funktionaler Redundanz (Wiederverwendung von Use Cases). &lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; gekennzeichnet ist. Der Pfeil startet immer beim &#039;&#039;&#039;Basis-Use-Case und zeigt in Richtung des zu inkludierenden Use Cases&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der inkludierte Anwendungsfall wird &#039;&#039;&#039;immer (zu 100 %)&#039;&#039;&#039; ausgeführt, sobald der Basis-Anwendungsfall aufgerufen wird. Der Basis-Use-Case ist ohne das Inkludat funktional unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Zwingende Include-Beziehung zur Auslagerung gemeinsamer Funktionalitäten]]&lt;br /&gt;
&lt;br /&gt;
=== Extend (Erweiterung) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Extend-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;erweitern&#039;&#039;) beschreibt ein &#039;&#039;&#039;optionales&#039;&#039;&#039; Verhalten, das den Basis-Use-Case nur unter ganz bestimmten Bedingungen ergänzt.&lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt; gekennzeichnet ist. Die Pfeilrichtung verhält sich umgekehrt zum Include: Der Pfeil startet beim &#039;&#039;&#039;Extension-Use-Case (Erweiterung) und zeigt in Richtung des Basis-Use-Cases&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Der Basis-Use-Case deklariert sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;, die den präzisen Ort innerhalb des Ablaufs definieren, an dem die Erweiterung eingreifen darf. Grafisch wird hierzu in der Ellipse des Basis-Use-Cases eine horizontale Trennlinie eingezogen, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points:&amp;lt;/code&amp;gt; gefolgt von den Namen der Punkte steht.&lt;br /&gt;
&lt;br /&gt;
Optional wird an die Extend-Linie über eine fein gestrichelte Linie ein UML-Notizsymbol angeheftet. Dieses enthält das Schlüsselwort &amp;lt;code&amp;gt;Condition:&amp;lt;/code&amp;gt; gefolgt von der logischen Bedingung in geschweiften Klammern &amp;lt;code&amp;gt;{...}&amp;lt;/code&amp;gt; sowie den Verweis auf den zugehörigen Erweiterungspunkt.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der Basis-Use-Case ist auch ohne die Erweiterung vollkommen autark lauffähig. Der Extension-Use-Case wird nur dann ausgeführt, wenn die definierte Bedingung am Erweiterungspunkt wahr (true) ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Optionale Extend-Beziehung mit expliziten Extension Points und Notizfeld für die Bedingung (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Zwischen Akteuren untereinander sowie zwischen Anwendungsfällen untereinander kann eine Generalisierungsbeziehung existieren. Sie modelliert eine klassische &#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;, analog zur Vererbung in der objektorientierten Programmierung.&lt;br /&gt;
&lt;br /&gt;
Die Generalisierung wird grafisch durch eine durchgehende Linie mit einer &#039;&#039;&#039;geschlossenen, hohlen Dreieckspfeilspitze&#039;&#039;&#039; dargestellt. Der Pfeil zeigt immer &#039;&#039;&#039;vom spezialisierten Element (Unterklasse) zum allgemeinen Element (Oberklasse)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Strukturelle Generalisierung zwischen Akteuren oder Funktionseinheiten]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Im Beispiel ist der Akteur &#039;&#039;Fahrer&#039;&#039; eine Spezialisierung von &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt bedingungslos alle Fähigkeiten, Use Cases und Attribute des allgemeinen Anwenders (z. B. Stammdaten und die Interaktion mit dem Use Case &#039;&#039;Login durchführen&#039;&#039;), konkretisiert oder erweitert diese Rolle jedoch um spezifische Eigenschaften.&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Anwendungsfällen:&#039;&#039;&#039; Ein abstrakter Anwendungsfall wie &#039;&#039;„Medium brennen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„CD brennen“&#039;&#039; oder &#039;&#039;„DVD brennen“&#039;&#039; geerbt und ausdifferenziert werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2890</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2890"/>
		<updated>2026-05-27T08:30:58Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.&lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:50vw;&lt;br /&gt;
    max-width:1100px;&lt;br /&gt;
    max-height:450px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text, .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow {&lt;br /&gt;
    fill:#000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1200 450&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
const svg=document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const scale=100;&lt;br /&gt;
const yOffset=0;&lt;br /&gt;
const xOffsetGlobal=120;&lt;br /&gt;
&lt;br /&gt;
function svgEl(name,attrs){&lt;br /&gt;
  const el=document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;,name);&lt;br /&gt;
  for(const k in (attrs||{})) el.setAttribute(k,attrs[k]);&lt;br /&gt;
  return el;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getSVGcoords(evt){&lt;br /&gt;
  const pt=svg.createSVGPoint();&lt;br /&gt;
  pt.x=evt.clientX;&lt;br /&gt;
  pt.y=evt.clientY;&lt;br /&gt;
  return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createNode(id,cx,cy,w,h,label){&lt;br /&gt;
&lt;br /&gt;
  cx+=xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
&lt;br /&gt;
  const rect=svgEl(&amp;quot;rect&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
    x:(cx-w/2)*scale,&lt;br /&gt;
    y:(cy-h/2)*scale+yOffset,&lt;br /&gt;
    width:w*scale,&lt;br /&gt;
    height:h*scale,&lt;br /&gt;
    rx:6,&lt;br /&gt;
    ry:6&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
    x:cx*scale,&lt;br /&gt;
    y:cy*scale+yOffset,&lt;br /&gt;
    &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
    &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  text.textContent=label;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(rect);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  const node={id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
  let dragging=false,start={};&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerdown&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    rect.setPointerCapture(e.pointerId);&lt;br /&gt;
    dragging=true;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    start={&lt;br /&gt;
      px:p.x,&lt;br /&gt;
      py:p.y,&lt;br /&gt;
      cx:node.cx,&lt;br /&gt;
      cy:node.cy&lt;br /&gt;
    };&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointermove&amp;quot;,e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    node.cx=start.cx+(p.x-start.px)/scale;&lt;br /&gt;
    node.cy=start.cy+(p.y-start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
    updateNode(node);&lt;br /&gt;
    updateAllEdges();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerup&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    dragging=false;&lt;br /&gt;
    rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  return node;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateNode(n){&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
&lt;br /&gt;
  n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
  n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function intersectRectBorder(node,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const cx=node.cx;&lt;br /&gt;
  const cy=node.cy;&lt;br /&gt;
&lt;br /&gt;
  const w2=node.w/2;&lt;br /&gt;
  const h2=node.h/2;&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  let pts=[];&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t1=(-w2)/dx;&lt;br /&gt;
    let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
    let t2=(w2)/dx;&lt;br /&gt;
    let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t3=(-h2)/dy;&lt;br /&gt;
    let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
    let t4=(h2)/dy;&lt;br /&gt;
    let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
  return pts[0]||{x:cx,y:cy};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
  if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
  return {&lt;br /&gt;
    x:cx+R*dx/d,&lt;br /&gt;
    y:cy+R*dy/d&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
&lt;br /&gt;
  let px=-uy;&lt;br /&gt;
  let py=ux;&lt;br /&gt;
&lt;br /&gt;
  return `M ${x} ${y}&lt;br /&gt;
          L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
          L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const edges=[];&lt;br /&gt;
&lt;br /&gt;
function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
  const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;});&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;});&lt;br /&gt;
  const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
  text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(lineA);&lt;br /&gt;
  g.appendChild(lineB);&lt;br /&gt;
  g.appendChild(circle);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
  g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  let e={&lt;br /&gt;
    fromNode,&lt;br /&gt;
    toNode,&lt;br /&gt;
    amount,&lt;br /&gt;
    yMid,&lt;br /&gt;
    xOffset,&lt;br /&gt;
    circle,&lt;br /&gt;
    text,&lt;br /&gt;
    lineA,&lt;br /&gt;
    lineB,&lt;br /&gt;
    arrow&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  edges.push(e);&lt;br /&gt;
&lt;br /&gt;
  updateEdge(e);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
  const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
  const cy=e.yMid;&lt;br /&gt;
  const R=0.14;&lt;br /&gt;
&lt;br /&gt;
  const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
  const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
  const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
  const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
  const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
  const F=px(pF);&lt;br /&gt;
  const Ci=px(pCircleIn);&lt;br /&gt;
  const Co=px(pCircleOut);&lt;br /&gt;
  const T=px(pT);&lt;br /&gt;
&lt;br /&gt;
  e.lineA.setAttribute(&amp;quot;d&amp;quot;,`M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`);&lt;br /&gt;
  e.lineB.setAttribute(&amp;quot;d&amp;quot;,`M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`);&lt;br /&gt;
&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
  e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
  e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
  let ux=T[0]-Co[0];&lt;br /&gt;
  let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
  let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
  if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
  ux/=L;&lt;br /&gt;
  uy/=L;&lt;br /&gt;
&lt;br /&gt;
  e.arrow.setAttribute(&amp;quot;d&amp;quot;,makeArrowHead(T[0],T[1],ux,uy,10));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateAllEdges(){&lt;br /&gt;
  edges.forEach(updateEdge);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const nodes={};&lt;br /&gt;
&lt;br /&gt;
nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;);&lt;br /&gt;
nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;);&lt;br /&gt;
nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;);&lt;br /&gt;
nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;);&lt;br /&gt;
nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.25);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.3);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GOZINTOGRAPH: Rohstoffe → Zwischenprodukte → Endprodukte --&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap2 {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:70vw;&lt;br /&gt;
    max-width:1200px;&lt;br /&gt;
    max-height:800px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gozinto-wrap2 svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text,&lt;br /&gt;
  .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow {&lt;br /&gt;
    fill:#000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1180 640&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
  const svg = document.getElementById(&amp;quot;gozinto_svg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  const scale = 100;&lt;br /&gt;
  const yOffset = 0;&lt;br /&gt;
  const xOffsetGlobal = 120;&lt;br /&gt;
&lt;br /&gt;
  function svgEl(name, attrs){&lt;br /&gt;
    const el = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, name);&lt;br /&gt;
&lt;br /&gt;
    for(const k in (attrs||{}))&lt;br /&gt;
      el.setAttribute(k, attrs[k]);&lt;br /&gt;
&lt;br /&gt;
    return el;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getSVGcoords(evt){&lt;br /&gt;
    const pt = svg.createSVGPoint();&lt;br /&gt;
&lt;br /&gt;
    pt.x = evt.clientX;&lt;br /&gt;
    pt.y = evt.clientY;&lt;br /&gt;
&lt;br /&gt;
    return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // NODE&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  function createNode(id, cx, cy, w, h, label){&lt;br /&gt;
&lt;br /&gt;
    cx += xOffsetGlobal / scale;&lt;br /&gt;
&lt;br /&gt;
    const g = svgEl(&amp;quot;g&amp;quot;, {&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
&lt;br /&gt;
    const rect = svgEl(&amp;quot;rect&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
      x:(cx-w/2)*scale,&lt;br /&gt;
      y:(cy-h/2)*scale + yOffset,&lt;br /&gt;
      width:w*scale,&lt;br /&gt;
      height:h*scale,&lt;br /&gt;
      rx:6,&lt;br /&gt;
      ry:6&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text = svgEl(&amp;quot;text&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
      x:cx*scale,&lt;br /&gt;
      y:cy*scale+yOffset,&lt;br /&gt;
      &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
      &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent = label;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(rect);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    const node = {id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
    // Dragging&lt;br /&gt;
&lt;br /&gt;
    let dragging=false,start={};&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerdown&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      rect.setPointerCapture(e.pointerId);&lt;br /&gt;
&lt;br /&gt;
      dragging=true;&lt;br /&gt;
&lt;br /&gt;
      const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      start={&lt;br /&gt;
        px:p.x,&lt;br /&gt;
        py:p.y,&lt;br /&gt;
        cx:node.cx,&lt;br /&gt;
        cy:node.cy&lt;br /&gt;
      };&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointermove&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
      const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      node.cx=start.cx+(p.x-start.px)/scale;&lt;br /&gt;
      node.cy=start.cy+(p.y-start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
      updateNode(node);&lt;br /&gt;
      updateAllEdges();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerup&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      dragging=false;&lt;br /&gt;
&lt;br /&gt;
      rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    return node;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateNode(n){&lt;br /&gt;
&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
&lt;br /&gt;
    n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // GEOMETRIE&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  function intersectRectBorder(node, tx, ty){&lt;br /&gt;
&lt;br /&gt;
    const cx=node.cx;&lt;br /&gt;
    const cy=node.cy;&lt;br /&gt;
&lt;br /&gt;
    const w2=node.w/2;&lt;br /&gt;
    const h2=node.h/2;&lt;br /&gt;
&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    let pts=[];&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
      let t1=(-w2)/dx;&lt;br /&gt;
      let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
      let t2=(w2)/dx;&lt;br /&gt;
      let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
      let t3=(-h2)/dy;&lt;br /&gt;
      let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
      let t4=(h2)/dy;&lt;br /&gt;
      let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
    return pts[0] || {x:cx,y:cy};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
    if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
      x:cx+R*dx/d,&lt;br /&gt;
      y:cy+R*dy/d&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
&lt;br /&gt;
    let px=-uy;&lt;br /&gt;
    let py=ux;&lt;br /&gt;
&lt;br /&gt;
    return `M ${x} ${y}&lt;br /&gt;
            L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
            L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // KANTEN&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  const edges=[];&lt;br /&gt;
&lt;br /&gt;
  function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
    const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
    const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
    const circle=svgEl(&amp;quot;circle&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;count-circle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;count-text&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const arrow=svgEl(&amp;quot;path&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;edge-arrow&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(lineA);&lt;br /&gt;
    g.appendChild(lineB);&lt;br /&gt;
    g.appendChild(circle);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    let e={&lt;br /&gt;
      fromNode,&lt;br /&gt;
      toNode,&lt;br /&gt;
      amount,&lt;br /&gt;
      yMid,&lt;br /&gt;
      xOffset,&lt;br /&gt;
      circle,&lt;br /&gt;
      text,&lt;br /&gt;
      lineA,&lt;br /&gt;
      lineB,&lt;br /&gt;
      arrow&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    edges.push(e);&lt;br /&gt;
&lt;br /&gt;
    updateEdge(e);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
    const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
    const cy=e.yMid;&lt;br /&gt;
&lt;br /&gt;
    const R=0.14;&lt;br /&gt;
&lt;br /&gt;
    const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
    const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
    const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
    const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
    const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
    const F=px(pF);&lt;br /&gt;
    const Ci=px(pCircleIn);&lt;br /&gt;
    const Co=px(pCircleOut);&lt;br /&gt;
    const T=px(pT);&lt;br /&gt;
&lt;br /&gt;
    e.lineA.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      `M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    e.lineB.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      `M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
    e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
    e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
    let ux=T[0]-Co[0];&lt;br /&gt;
    let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
    let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
    if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
    ux/=L;&lt;br /&gt;
    uy/=L;&lt;br /&gt;
&lt;br /&gt;
    e.arrow.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      makeArrowHead(T[0],T[1],ux,uy,10)&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateAllEdges(){&lt;br /&gt;
    edges.forEach(updateEdge);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // NODES&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  const nodes={};&lt;br /&gt;
&lt;br /&gt;
  // Rohstoffe&lt;br /&gt;
&lt;br /&gt;
  nodes.R1=createNode(&amp;quot;R1&amp;quot;,0,0.8,1.0,0.5,&amp;quot;R1&amp;quot;);&lt;br /&gt;
  nodes.R2=createNode(&amp;quot;R2&amp;quot;,2.5,0.8,1.0,0.5,&amp;quot;R2&amp;quot;);&lt;br /&gt;
  nodes.R3=createNode(&amp;quot;R3&amp;quot;,5.0,0.8,1.0,0.5,&amp;quot;R3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Zwischenprodukte&lt;br /&gt;
&lt;br /&gt;
  nodes.Z1=createNode(&amp;quot;Z1&amp;quot;,1.2,3.2,1.0,0.5,&amp;quot;Z1&amp;quot;);&lt;br /&gt;
  nodes.Z2=createNode(&amp;quot;Z2&amp;quot;,3.6,3.2,1.0,0.5,&amp;quot;Z2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Endprodukte&lt;br /&gt;
&lt;br /&gt;
  nodes.E1=createNode(&amp;quot;E1&amp;quot;,0.5,5.6,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
  nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.8,5.6,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
  nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.1,5.6,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // VERBINDUNGEN&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  // Rohstoffe -&amp;gt; Zwischenprodukte&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R1,nodes.Z1,&amp;quot;3&amp;quot;,1.8,-0.3);&lt;br /&gt;
  makeConnection(nodes.R1,nodes.Z2,&amp;quot;1&amp;quot;,1.8,0.4);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R2,nodes.Z1,&amp;quot;4&amp;quot;,1.8,-0.2);&lt;br /&gt;
  makeConnection(nodes.R2,nodes.Z2,&amp;quot;2&amp;quot;,1.8,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R3,nodes.Z2,&amp;quot;3&amp;quot;,1.8,0.0);&lt;br /&gt;
&lt;br /&gt;
  // Zwischenprodukte -&amp;gt; Endprodukte&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.Z1,nodes.E1,&amp;quot;2&amp;quot;,4.4,-0.2);&lt;br /&gt;
  makeConnection(nodes.Z1,nodes.E2,&amp;quot;1&amp;quot;,4.4,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E1,&amp;quot;1&amp;quot;,4.4,-0.3);&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E2,&amp;quot;3&amp;quot;,4.4,0.0);&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E3,&amp;quot;2&amp;quot;,4.4,0.3);&lt;br /&gt;
&lt;br /&gt;
  updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
Die vollständigen Mengen seien wie folgt definiert:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! Z1 !! Z2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R1&#039;&#039;&#039; || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R2&#039;&#039;&#039; || 4 || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R3&#039;&#039;&#039; || 0 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! E1 !! E2 !! E3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z1&#039;&#039;&#039; || 2 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z2&#039;&#039;&#039; || 1 || 3 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aus diesen Tabellen ergibt sich die &#039;&#039;&#039;Gozintomatrix Rohstoffe → Endprodukte&#039;&#039;&#039; durch Matrixmultiplikation:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RZ=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
ZE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=RZ \cdot ZE&lt;br /&gt;
=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
\cdot&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Berechnung:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
7 &amp;amp; 6 &amp;amp; 2 \\&lt;br /&gt;
10 &amp;amp; 10 &amp;amp; 4 \\&lt;br /&gt;
3 &amp;amp; 9 &amp;amp; 6&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Matrix zeigt, wie viele Mengeneinheiten der Rohstoffe &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; jeweils zur Herstellung einer Einheit der Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; notwendig sind.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2889</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2889"/>
		<updated>2026-05-27T08:30:35Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.&lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:50vw;&lt;br /&gt;
    max-width:1100px;&lt;br /&gt;
    max-height:450px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text, .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow {&lt;br /&gt;
    fill:#000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1200 450&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
const svg=document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const scale=100;&lt;br /&gt;
const yOffset=0;&lt;br /&gt;
const xOffsetGlobal=120;&lt;br /&gt;
&lt;br /&gt;
function svgEl(name,attrs){&lt;br /&gt;
  const el=document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;,name);&lt;br /&gt;
  for(const k in (attrs||{})) el.setAttribute(k,attrs[k]);&lt;br /&gt;
  return el;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getSVGcoords(evt){&lt;br /&gt;
  const pt=svg.createSVGPoint();&lt;br /&gt;
  pt.x=evt.clientX;&lt;br /&gt;
  pt.y=evt.clientY;&lt;br /&gt;
  return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createNode(id,cx,cy,w,h,label){&lt;br /&gt;
&lt;br /&gt;
  cx+=xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
&lt;br /&gt;
  const rect=svgEl(&amp;quot;rect&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
    x:(cx-w/2)*scale,&lt;br /&gt;
    y:(cy-h/2)*scale+yOffset,&lt;br /&gt;
    width:w*scale,&lt;br /&gt;
    height:h*scale,&lt;br /&gt;
    rx:6,&lt;br /&gt;
    ry:6&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
    x:cx*scale,&lt;br /&gt;
    y:cy*scale+yOffset,&lt;br /&gt;
    &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
    &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  text.textContent=label;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(rect);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  const node={id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
  let dragging=false,start={};&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerdown&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    rect.setPointerCapture(e.pointerId);&lt;br /&gt;
    dragging=true;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    start={&lt;br /&gt;
      px:p.x,&lt;br /&gt;
      py:p.y,&lt;br /&gt;
      cx:node.cx,&lt;br /&gt;
      cy:node.cy&lt;br /&gt;
    };&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointermove&amp;quot;,e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    node.cx=start.cx+(p.x-start.px)/scale;&lt;br /&gt;
    node.cy=start.cy+(p.y-start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
    updateNode(node);&lt;br /&gt;
    updateAllEdges();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerup&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    dragging=false;&lt;br /&gt;
    rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  return node;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateNode(n){&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
&lt;br /&gt;
  n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
  n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function intersectRectBorder(node,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const cx=node.cx;&lt;br /&gt;
  const cy=node.cy;&lt;br /&gt;
&lt;br /&gt;
  const w2=node.w/2;&lt;br /&gt;
  const h2=node.h/2;&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  let pts=[];&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t1=(-w2)/dx;&lt;br /&gt;
    let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
    let t2=(w2)/dx;&lt;br /&gt;
    let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t3=(-h2)/dy;&lt;br /&gt;
    let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
    let t4=(h2)/dy;&lt;br /&gt;
    let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
  return pts[0]||{x:cx,y:cy};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
  if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
  return {&lt;br /&gt;
    x:cx+R*dx/d,&lt;br /&gt;
    y:cy+R*dy/d&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
&lt;br /&gt;
  let px=-uy;&lt;br /&gt;
  let py=ux;&lt;br /&gt;
&lt;br /&gt;
  return `M ${x} ${y}&lt;br /&gt;
          L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
          L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const edges=[];&lt;br /&gt;
&lt;br /&gt;
function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
  const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;});&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;});&lt;br /&gt;
  const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
  text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(lineA);&lt;br /&gt;
  g.appendChild(lineB);&lt;br /&gt;
  g.appendChild(circle);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
  g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  let e={&lt;br /&gt;
    fromNode,&lt;br /&gt;
    toNode,&lt;br /&gt;
    amount,&lt;br /&gt;
    yMid,&lt;br /&gt;
    xOffset,&lt;br /&gt;
    circle,&lt;br /&gt;
    text,&lt;br /&gt;
    lineA,&lt;br /&gt;
    lineB,&lt;br /&gt;
    arrow&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  edges.push(e);&lt;br /&gt;
&lt;br /&gt;
  updateEdge(e);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
  const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
  const cy=e.yMid;&lt;br /&gt;
  const R=0.14;&lt;br /&gt;
&lt;br /&gt;
  const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
  const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
  const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
  const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
  const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
  const F=px(pF);&lt;br /&gt;
  const Ci=px(pCircleIn);&lt;br /&gt;
  const Co=px(pCircleOut);&lt;br /&gt;
  const T=px(pT);&lt;br /&gt;
&lt;br /&gt;
  e.lineA.setAttribute(&amp;quot;d&amp;quot;,`M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`);&lt;br /&gt;
  e.lineB.setAttribute(&amp;quot;d&amp;quot;,`M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`);&lt;br /&gt;
&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
  e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
  e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
  let ux=T[0]-Co[0];&lt;br /&gt;
  let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
  let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
  if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
  ux/=L;&lt;br /&gt;
  uy/=L;&lt;br /&gt;
&lt;br /&gt;
  e.arrow.setAttribute(&amp;quot;d&amp;quot;,makeArrowHead(T[0],T[1],ux,uy,10));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateAllEdges(){&lt;br /&gt;
  edges.forEach(updateEdge);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const nodes={};&lt;br /&gt;
&lt;br /&gt;
nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;);&lt;br /&gt;
nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;);&lt;br /&gt;
nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;);&lt;br /&gt;
nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;);&lt;br /&gt;
nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.25);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.3);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GOZINTOGRAPH: Rohstoffe → Zwischenprodukte → Endprodukte --&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap2 {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:70vw;&lt;br /&gt;
    max-width:1200px;&lt;br /&gt;
    max-height:800px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gozinto-wrap2 svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text,&lt;br /&gt;
  .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow {&lt;br /&gt;
    fill:#000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1180 640&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
  const svg = document.getElementById(&amp;quot;gozinto_svg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  const scale = 100;&lt;br /&gt;
  const yOffset = 0;&lt;br /&gt;
  const xOffsetGlobal = 120;&lt;br /&gt;
&lt;br /&gt;
  function svgEl(name, attrs){&lt;br /&gt;
    const el = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, name);&lt;br /&gt;
&lt;br /&gt;
    for(const k in (attrs||{}))&lt;br /&gt;
      el.setAttribute(k, attrs[k]);&lt;br /&gt;
&lt;br /&gt;
    return el;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getSVGcoords(evt){&lt;br /&gt;
    const pt = svg.createSVGPoint();&lt;br /&gt;
&lt;br /&gt;
    pt.x = evt.clientX;&lt;br /&gt;
    pt.y = evt.clientY;&lt;br /&gt;
&lt;br /&gt;
    return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // NODE&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  function createNode(id, cx, cy, w, h, label){&lt;br /&gt;
&lt;br /&gt;
    cx += xOffsetGlobal / scale;&lt;br /&gt;
&lt;br /&gt;
    const g = svgEl(&amp;quot;g&amp;quot;, {&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
&lt;br /&gt;
    const rect = svgEl(&amp;quot;rect&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
      x:(cx-w/2)*scale,&lt;br /&gt;
      y:(cy-h/2)*scale + yOffset,&lt;br /&gt;
      width:w*scale,&lt;br /&gt;
      height:h*scale,&lt;br /&gt;
      rx:6,&lt;br /&gt;
      ry:6&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text = svgEl(&amp;quot;text&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
      x:cx*scale,&lt;br /&gt;
      y:cy*scale+yOffset,&lt;br /&gt;
      &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
      &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent = label;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(rect);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    const node = {id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
    // Dragging&lt;br /&gt;
&lt;br /&gt;
    let dragging=false,start={};&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerdown&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      rect.setPointerCapture(e.pointerId);&lt;br /&gt;
&lt;br /&gt;
      dragging=true;&lt;br /&gt;
&lt;br /&gt;
      const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      start={&lt;br /&gt;
        px:p.x,&lt;br /&gt;
        py:p.y,&lt;br /&gt;
        cx:node.cx,&lt;br /&gt;
        cy:node.cy&lt;br /&gt;
      };&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointermove&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
      const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      node.cx=start.cx+(p.x-start.px)/scale;&lt;br /&gt;
      node.cy=start.cy+(p.y-start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
      updateNode(node);&lt;br /&gt;
      updateAllEdges();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerup&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      dragging=false;&lt;br /&gt;
&lt;br /&gt;
      rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    return node;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateNode(n){&lt;br /&gt;
&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
&lt;br /&gt;
    n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // GEOMETRIE&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  function intersectRectBorder(node, tx, ty){&lt;br /&gt;
&lt;br /&gt;
    const cx=node.cx;&lt;br /&gt;
    const cy=node.cy;&lt;br /&gt;
&lt;br /&gt;
    const w2=node.w/2;&lt;br /&gt;
    const h2=node.h/2;&lt;br /&gt;
&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    let pts=[];&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
      let t1=(-w2)/dx;&lt;br /&gt;
      let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
      let t2=(w2)/dx;&lt;br /&gt;
      let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
      let t3=(-h2)/dy;&lt;br /&gt;
      let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
      let t4=(h2)/dy;&lt;br /&gt;
      let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
    return pts[0] || {x:cx,y:cy};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
    if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
      x:cx+R*dx/d,&lt;br /&gt;
      y:cy+R*dy/d&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
&lt;br /&gt;
    let px=-uy;&lt;br /&gt;
    let py=ux;&lt;br /&gt;
&lt;br /&gt;
    return `M ${x} ${y}&lt;br /&gt;
            L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
            L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // KANTEN&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  const edges=[];&lt;br /&gt;
&lt;br /&gt;
  function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
    const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
    const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
    const circle=svgEl(&amp;quot;circle&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;count-circle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;count-text&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const arrow=svgEl(&amp;quot;path&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;edge-arrow&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(lineA);&lt;br /&gt;
    g.appendChild(lineB);&lt;br /&gt;
    g.appendChild(circle);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    let e={&lt;br /&gt;
      fromNode,&lt;br /&gt;
      toNode,&lt;br /&gt;
      amount,&lt;br /&gt;
      yMid,&lt;br /&gt;
      xOffset,&lt;br /&gt;
      circle,&lt;br /&gt;
      text,&lt;br /&gt;
      lineA,&lt;br /&gt;
      lineB,&lt;br /&gt;
      arrow&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    edges.push(e);&lt;br /&gt;
&lt;br /&gt;
    updateEdge(e);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
    const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
    const cy=e.yMid;&lt;br /&gt;
&lt;br /&gt;
    const R=0.14;&lt;br /&gt;
&lt;br /&gt;
    const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
    const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
    const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
    const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
    const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
    const F=px(pF);&lt;br /&gt;
    const Ci=px(pCircleIn);&lt;br /&gt;
    const Co=px(pCircleOut);&lt;br /&gt;
    const T=px(pT);&lt;br /&gt;
&lt;br /&gt;
    e.lineA.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      `M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    e.lineB.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      `M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
    e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
    e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
    let ux=T[0]-Co[0];&lt;br /&gt;
    let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
    let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
    if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
    ux/=L;&lt;br /&gt;
    uy/=L;&lt;br /&gt;
&lt;br /&gt;
    e.arrow.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      makeArrowHead(T[0],T[1],ux,uy,10)&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateAllEdges(){&lt;br /&gt;
    edges.forEach(updateEdge);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // NODES&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  const nodes={};&lt;br /&gt;
&lt;br /&gt;
  // Rohstoffe&lt;br /&gt;
&lt;br /&gt;
  nodes.R1=createNode(&amp;quot;R1&amp;quot;,0,0.8,1.0,0.5,&amp;quot;R1&amp;quot;);&lt;br /&gt;
  nodes.R2=createNode(&amp;quot;R2&amp;quot;,2.5,0.8,1.0,0.5,&amp;quot;R2&amp;quot;);&lt;br /&gt;
  nodes.R3=createNode(&amp;quot;R3&amp;quot;,5.0,0.8,1.0,0.5,&amp;quot;R3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Zwischenprodukte&lt;br /&gt;
&lt;br /&gt;
  nodes.Z1=createNode(&amp;quot;Z1&amp;quot;,1.2,3.2,1.0,0.5,&amp;quot;Z1&amp;quot;);&lt;br /&gt;
  nodes.Z2=createNode(&amp;quot;Z2&amp;quot;,3.6,3.2,1.0,0.5,&amp;quot;Z2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Endprodukte&lt;br /&gt;
&lt;br /&gt;
  nodes.E1=createNode(&amp;quot;E1&amp;quot;,0.5,5.6,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
  nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.8,5.6,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
  nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.1,5.6,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // VERBINDUNGEN&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  // Rohstoffe -&amp;gt; Zwischenprodukte&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R1,nodes.Z1,&amp;quot;3&amp;quot;,1.8,-0.3);&lt;br /&gt;
  makeConnection(nodes.R1,nodes.Z2,&amp;quot;1&amp;quot;,1.8,0.4);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R2,nodes.Z1,&amp;quot;4&amp;quot;,1.8,-0.2);&lt;br /&gt;
  makeConnection(nodes.R2,nodes.Z2,&amp;quot;2&amp;quot;,1.8,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R3,nodes.Z2,&amp;quot;3&amp;quot;,1.8,0.0);&lt;br /&gt;
&lt;br /&gt;
  // Zwischenprodukte -&amp;gt; Endprodukte&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.Z1,nodes.E1,&amp;quot;2&amp;quot;,4.4,-0.2);&lt;br /&gt;
  makeConnection(nodes.Z1,nodes.E2,&amp;quot;1&amp;quot;,4.4,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E1,&amp;quot;1&amp;quot;,4.4,-0.3);&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E2,&amp;quot;3&amp;quot;,4.4,0.0);&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E3,&amp;quot;2&amp;quot;,4.4,0.3);&lt;br /&gt;
&lt;br /&gt;
  updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die vollständigen Mengen seien wie folgt definiert:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! Z1 !! Z2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R1&#039;&#039;&#039; || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R2&#039;&#039;&#039; || 4 || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R3&#039;&#039;&#039; || 0 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! E1 !! E2 !! E3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z1&#039;&#039;&#039; || 2 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z2&#039;&#039;&#039; || 1 || 3 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aus diesen Tabellen ergibt sich die &#039;&#039;&#039;Gozintomatrix Rohstoffe → Endprodukte&#039;&#039;&#039; durch Matrixmultiplikation:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RZ=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
ZE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=RZ \cdot ZE&lt;br /&gt;
=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
\cdot&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Berechnung:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
7 &amp;amp; 6 &amp;amp; 2 \\&lt;br /&gt;
10 &amp;amp; 10 &amp;amp; 4 \\&lt;br /&gt;
3 &amp;amp; 9 &amp;amp; 6&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Matrix zeigt, wie viele Mengeneinheiten der Rohstoffe &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; jeweils zur Herstellung einer Einheit der Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; notwendig sind.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2888</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2888"/>
		<updated>2026-05-27T08:27:28Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.&lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:50vw;&lt;br /&gt;
    max-width:1100px;&lt;br /&gt;
    max-height:450px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text, .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow {&lt;br /&gt;
    fill:#000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1200 450&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
const svg=document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const scale=100;&lt;br /&gt;
const yOffset=0;&lt;br /&gt;
const xOffsetGlobal=120;&lt;br /&gt;
&lt;br /&gt;
function svgEl(name,attrs){&lt;br /&gt;
  const el=document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;,name);&lt;br /&gt;
  for(const k in (attrs||{})) el.setAttribute(k,attrs[k]);&lt;br /&gt;
  return el;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getSVGcoords(evt){&lt;br /&gt;
  const pt=svg.createSVGPoint();&lt;br /&gt;
  pt.x=evt.clientX;&lt;br /&gt;
  pt.y=evt.clientY;&lt;br /&gt;
  return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createNode(id,cx,cy,w,h,label){&lt;br /&gt;
&lt;br /&gt;
  cx+=xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
&lt;br /&gt;
  const rect=svgEl(&amp;quot;rect&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
    x:(cx-w/2)*scale,&lt;br /&gt;
    y:(cy-h/2)*scale+yOffset,&lt;br /&gt;
    width:w*scale,&lt;br /&gt;
    height:h*scale,&lt;br /&gt;
    rx:6,&lt;br /&gt;
    ry:6&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
    x:cx*scale,&lt;br /&gt;
    y:cy*scale+yOffset,&lt;br /&gt;
    &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
    &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  text.textContent=label;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(rect);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  const node={id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
  let dragging=false,start={};&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerdown&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    rect.setPointerCapture(e.pointerId);&lt;br /&gt;
    dragging=true;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    start={&lt;br /&gt;
      px:p.x,&lt;br /&gt;
      py:p.y,&lt;br /&gt;
      cx:node.cx,&lt;br /&gt;
      cy:node.cy&lt;br /&gt;
    };&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointermove&amp;quot;,e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    node.cx=start.cx+(p.x-start.px)/scale;&lt;br /&gt;
    node.cy=start.cy+(p.y-start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
    updateNode(node);&lt;br /&gt;
    updateAllEdges();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerup&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    dragging=false;&lt;br /&gt;
    rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  return node;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateNode(n){&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
&lt;br /&gt;
  n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
  n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function intersectRectBorder(node,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const cx=node.cx;&lt;br /&gt;
  const cy=node.cy;&lt;br /&gt;
&lt;br /&gt;
  const w2=node.w/2;&lt;br /&gt;
  const h2=node.h/2;&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  let pts=[];&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t1=(-w2)/dx;&lt;br /&gt;
    let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
    let t2=(w2)/dx;&lt;br /&gt;
    let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t3=(-h2)/dy;&lt;br /&gt;
    let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
    let t4=(h2)/dy;&lt;br /&gt;
    let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
  return pts[0]||{x:cx,y:cy};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
  if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
  return {&lt;br /&gt;
    x:cx+R*dx/d,&lt;br /&gt;
    y:cy+R*dy/d&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
&lt;br /&gt;
  let px=-uy;&lt;br /&gt;
  let py=ux;&lt;br /&gt;
&lt;br /&gt;
  return `M ${x} ${y}&lt;br /&gt;
          L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
          L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const edges=[];&lt;br /&gt;
&lt;br /&gt;
function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
  const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;});&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;});&lt;br /&gt;
  const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
  text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(lineA);&lt;br /&gt;
  g.appendChild(lineB);&lt;br /&gt;
  g.appendChild(circle);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
  g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  let e={&lt;br /&gt;
    fromNode,&lt;br /&gt;
    toNode,&lt;br /&gt;
    amount,&lt;br /&gt;
    yMid,&lt;br /&gt;
    xOffset,&lt;br /&gt;
    circle,&lt;br /&gt;
    text,&lt;br /&gt;
    lineA,&lt;br /&gt;
    lineB,&lt;br /&gt;
    arrow&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  edges.push(e);&lt;br /&gt;
&lt;br /&gt;
  updateEdge(e);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
  const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
  const cy=e.yMid;&lt;br /&gt;
  const R=0.14;&lt;br /&gt;
&lt;br /&gt;
  const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
  const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
  const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
  const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
  const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
  const F=px(pF);&lt;br /&gt;
  const Ci=px(pCircleIn);&lt;br /&gt;
  const Co=px(pCircleOut);&lt;br /&gt;
  const T=px(pT);&lt;br /&gt;
&lt;br /&gt;
  e.lineA.setAttribute(&amp;quot;d&amp;quot;,`M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`);&lt;br /&gt;
  e.lineB.setAttribute(&amp;quot;d&amp;quot;,`M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`);&lt;br /&gt;
&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
  e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
  e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
  let ux=T[0]-Co[0];&lt;br /&gt;
  let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
  let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
  if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
  ux/=L;&lt;br /&gt;
  uy/=L;&lt;br /&gt;
&lt;br /&gt;
  e.arrow.setAttribute(&amp;quot;d&amp;quot;,makeArrowHead(T[0],T[1],ux,uy,10));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateAllEdges(){&lt;br /&gt;
  edges.forEach(updateEdge);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const nodes={};&lt;br /&gt;
&lt;br /&gt;
nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;);&lt;br /&gt;
nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;);&lt;br /&gt;
nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;);&lt;br /&gt;
nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;);&lt;br /&gt;
nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.25);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.3);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap2 {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:70vw;&lt;br /&gt;
    max-width:1200px;&lt;br /&gt;
    max-height:800px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gozinto-wrap2 svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1180 700&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
const svg=document.getElementById(&amp;quot;gozinto_svg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const scale=100;&lt;br /&gt;
const yOffset=0;&lt;br /&gt;
const xOffsetGlobal=120;&lt;br /&gt;
&lt;br /&gt;
function svgEl(name,attrs){&lt;br /&gt;
  const el=document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;,name);&lt;br /&gt;
  for(const k in (attrs||{})) el.setAttribute(k,attrs[k]);&lt;br /&gt;
  return el;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createNode(id,cx,cy,w,h,label){&lt;br /&gt;
&lt;br /&gt;
  cx+=xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
  const rect=svgEl(&amp;quot;rect&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
    x:(cx-w/2)*scale,&lt;br /&gt;
    y:(cy-h/2)*scale,&lt;br /&gt;
    width:w*scale,&lt;br /&gt;
    height:h*scale,&lt;br /&gt;
    rx:6,&lt;br /&gt;
    ry:6&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
    x:cx*scale,&lt;br /&gt;
    y:cy*scale,&lt;br /&gt;
    &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
    &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  text.textContent=label;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(rect);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  return {cx,cy,w,h};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function drawArrow(x1,y1,x2,y2,label){&lt;br /&gt;
&lt;br /&gt;
  const line=svgEl(&amp;quot;line&amp;quot;,{&lt;br /&gt;
    x1,y1,x2,y2,&lt;br /&gt;
    stroke:&amp;quot;black&amp;quot;,&lt;br /&gt;
    &amp;quot;stroke-width&amp;quot;:&amp;quot;2&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(line);&lt;br /&gt;
&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
    x:(x1+x2)/2,&lt;br /&gt;
    y:(y1+y2)/2-10,&lt;br /&gt;
    class:&amp;quot;count-text&amp;quot;,&lt;br /&gt;
    &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  text.textContent=label;&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(text);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const R1=createNode(&amp;quot;R1&amp;quot;,0,1,1,0.5,&amp;quot;R1&amp;quot;);&lt;br /&gt;
const R2=createNode(&amp;quot;R2&amp;quot;,2.5,1,1,0.5,&amp;quot;R2&amp;quot;);&lt;br /&gt;
const R3=createNode(&amp;quot;R3&amp;quot;,5,1,1,0.5,&amp;quot;R3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const Z1=createNode(&amp;quot;Z1&amp;quot;,1.2,3.5,1,0.5,&amp;quot;Z1&amp;quot;);&lt;br /&gt;
const Z2=createNode(&amp;quot;Z2&amp;quot;,3.8,3.5,1,0.5,&amp;quot;Z2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const E1=createNode(&amp;quot;E1&amp;quot;,0.5,6,1,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
const E2=createNode(&amp;quot;E2&amp;quot;,2.8,6,1,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
const E3=createNode(&amp;quot;E3&amp;quot;,5.1,6,1,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
drawArrow(170,120,240,320,&amp;quot;3&amp;quot;);&lt;br /&gt;
drawArrow(420,120,240,320,&amp;quot;4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
drawArrow(170,120,500,320,&amp;quot;1&amp;quot;);&lt;br /&gt;
drawArrow(420,120,500,320,&amp;quot;2&amp;quot;);&lt;br /&gt;
drawArrow(670,120,500,320,&amp;quot;3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
drawArrow(240,370,170,570,&amp;quot;2&amp;quot;);&lt;br /&gt;
drawArrow(240,370,420,570,&amp;quot;1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
drawArrow(500,370,170,570,&amp;quot;1&amp;quot;);&lt;br /&gt;
drawArrow(500,370,420,570,&amp;quot;3&amp;quot;);&lt;br /&gt;
drawArrow(500,370,670,570,&amp;quot;2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die vollständigen Mengen seien wie folgt definiert:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! Z1 !! Z2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R1&#039;&#039;&#039; || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R2&#039;&#039;&#039; || 4 || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R3&#039;&#039;&#039; || 0 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! E1 !! E2 !! E3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z1&#039;&#039;&#039; || 2 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z2&#039;&#039;&#039; || 1 || 3 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aus diesen Tabellen ergibt sich die &#039;&#039;&#039;Gozintomatrix Rohstoffe → Endprodukte&#039;&#039;&#039; durch Matrixmultiplikation:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RZ=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
ZE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=RZ \cdot ZE&lt;br /&gt;
=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
\cdot&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Berechnung:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
7 &amp;amp; 6 &amp;amp; 2 \\&lt;br /&gt;
10 &amp;amp; 10 &amp;amp; 4 \\&lt;br /&gt;
3 &amp;amp; 9 &amp;amp; 6&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Matrix zeigt, wie viele Mengeneinheiten der Rohstoffe &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; jeweils zur Herstellung einer Einheit der Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; notwendig sind.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2887</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2887"/>
		<updated>2026-05-27T08:24:26Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.  &lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VARIANTE B – FINAL OPTIMIERT --&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:50vw;&lt;br /&gt;
    max-width:1100px;&lt;br /&gt;
    max-height:400px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text, .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow { fill:#000; }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot; viewBox=&amp;quot;0 0 1200 450&amp;quot; preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
  const svg = document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  const scale = 100;&lt;br /&gt;
  const yOffset = 0;&lt;br /&gt;
  const xOffsetGlobal = 120;&lt;br /&gt;
&lt;br /&gt;
  function svgEl(name, attrs){&lt;br /&gt;
    const el = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, name);&lt;br /&gt;
    for(const k in (attrs||{})) el.setAttribute(k, attrs[k]);&lt;br /&gt;
    return el;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getSVGcoords(evt){&lt;br /&gt;
    const pt = svg.createSVGPoint();&lt;br /&gt;
    pt.x = evt.clientX;&lt;br /&gt;
    pt.y = evt.clientY;&lt;br /&gt;
    return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function createNode(id, cx, cy, w, h, label){&lt;br /&gt;
    cx += xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
    const g = svgEl(&amp;quot;g&amp;quot;, {&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
    const rect = svgEl(&amp;quot;rect&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
      x:(cx-w/2)*scale,&lt;br /&gt;
      y:(cy-h/2)*scale + yOffset,&lt;br /&gt;
      width:w*scale,&lt;br /&gt;
      height:h*scale,&lt;br /&gt;
      rx:6,&lt;br /&gt;
      ry:6&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text = svgEl(&amp;quot;text&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
      x:cx*scale,&lt;br /&gt;
      y:cy*scale+yOffset,&lt;br /&gt;
      &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
      &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent = label;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(rect);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    const node = {id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
    let dragging=false, start={};&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerdown&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      rect.setPointerCapture(e.pointerId);&lt;br /&gt;
      dragging=true;&lt;br /&gt;
      const p = getSVGcoords(e);&lt;br /&gt;
      start = {px:p.x, py:p.y, cx:node.cx, cy:node.cy};&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointermove&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
      const p = getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      node.cx = start.cx + (p.x - start.px)/scale;&lt;br /&gt;
      node.cy = start.cy + (p.y - start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
      updateNode(node);&lt;br /&gt;
      updateAllEdges();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerup&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      dragging=false;&lt;br /&gt;
      rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    return node;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateNode(n){&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function intersectRectBorder(node, tx, ty){&lt;br /&gt;
    const cx=node.cx, cy=node.cy, w2=node.w/2, h2=node.h/2;&lt;br /&gt;
    const dx=tx-cx, dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    let pts=[];&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
      let t1=(-w2)/dx;&lt;br /&gt;
      let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
      let t2=(w2)/dx;&lt;br /&gt;
      let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
      let t3=(-h2)/dy;&lt;br /&gt;
      let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
      let t4=(h2)/dy;&lt;br /&gt;
      let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
    return pts[0] || {x:cx,y:cy};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
    if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
      x:cx+R*dx/d,&lt;br /&gt;
      y:cy+R*dy/d&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
    let px=-uy, py=ux;&lt;br /&gt;
&lt;br /&gt;
    return `M ${x} ${y}&lt;br /&gt;
            L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
            L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const edges=[];&lt;br /&gt;
&lt;br /&gt;
  function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
    const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
    const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;});&lt;br /&gt;
    const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;});&lt;br /&gt;
    const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
    text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(lineA);&lt;br /&gt;
    g.appendChild(lineB);&lt;br /&gt;
    g.appendChild(circle);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    let e={&lt;br /&gt;
      fromNode,&lt;br /&gt;
      toNode,&lt;br /&gt;
      amount,&lt;br /&gt;
      yMid,&lt;br /&gt;
      xOffset,&lt;br /&gt;
      circle,&lt;br /&gt;
      text,&lt;br /&gt;
      lineA,&lt;br /&gt;
      lineB,&lt;br /&gt;
      arrow&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    edges.push(e);&lt;br /&gt;
&lt;br /&gt;
    updateEdge(e);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
    const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
    const cy=e.yMid;&lt;br /&gt;
    const R=0.14;&lt;br /&gt;
&lt;br /&gt;
    const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
    const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
    const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
    const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
    const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
    const F=px(pF),&lt;br /&gt;
          Ci=px(pCircleIn),&lt;br /&gt;
          Co=px(pCircleOut),&lt;br /&gt;
          T=px(pT);&lt;br /&gt;
&lt;br /&gt;
    e.lineA.setAttribute(&amp;quot;d&amp;quot;,`M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`);&lt;br /&gt;
    e.lineB.setAttribute(&amp;quot;d&amp;quot;,`M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`);&lt;br /&gt;
&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
    e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
    e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
    let ux=T[0]-Co[0];&lt;br /&gt;
    let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
    let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
    if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
    ux/=L;&lt;br /&gt;
    uy/=L;&lt;br /&gt;
&lt;br /&gt;
    e.arrow.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      makeArrowHead(T[0],T[1],ux,uy,10)&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateAllEdges(){&lt;br /&gt;
    edges.forEach(updateEdge);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const nodes={};&lt;br /&gt;
&lt;br /&gt;
  nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
  nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
  nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
  nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;);&lt;br /&gt;
  nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;);&lt;br /&gt;
  nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;);&lt;br /&gt;
  nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;);&lt;br /&gt;
  nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
  makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.25);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3);&lt;br /&gt;
  makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
  makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.3);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A =&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
Beispielsweise lässt sich aus der ersten Spalte ablesen, dass zur Herstellung eines Bauteils &amp;lt;math&amp;gt;B_1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2 Einheiten von &amp;lt;math&amp;gt;E_1&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 1 Einheit von &amp;lt;math&amp;gt;E_2&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_3&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
benötigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Für die Herstellung einer Einheit &amp;lt;math&amp;gt;Z_1&amp;lt;/math&amp;gt; werden 3 Einheiten &amp;lt;math&amp;gt;R_1&amp;lt;/math&amp;gt; und 4 Einheiten &amp;lt;math&amp;gt;R_2&amp;lt;/math&amp;gt; benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2886</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2886"/>
		<updated>2026-05-27T08:23:54Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Produktion eines Produkts aus Einzelteilen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.  &lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VARIANTE B – FINAL OPTIMIERT --&amp;gt; &amp;lt;html&amp;gt; &amp;lt;style&amp;gt; .gozinto-wrap { width:95vw; height:50vw; max-width:1100px; max-height:400px; border:0; margin:0; padding:0; } svg { width:100%; height:100%; touch-action:none; user-select:none; background:white; } .node-rect { fill:#3498db; stroke:#1f4e78; stroke-width:2; cursor:grab; } /* Einheitliche Schriftgröße */ .node-text, .count-text { font-family:sans-serif; font-size:14px; fill:#000; pointer-events:none; } .edge-line { stroke:#000; stroke-width:2; fill:none; } .edge-arrow { fill:#000; } .count-circle { fill:#fff; stroke:#000; stroke-width:1.5; } &amp;lt;/style&amp;gt; &amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt; &amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot; viewBox=&amp;quot;0 0 1200 450&amp;quot; preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt; &amp;lt;/svg&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;script&amp;gt; (function(){ const svg = document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;); // leicht reduzierte Abstände const scale = 100; const yOffset = 0; // früher 5 20 → Grafik rückt nach oben const xOffsetGlobal = 120; // gesamte Grafik leicht nach rechts (zentrieren) function svgEl(name, attrs){ const el = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, name); for(const k in (attrs||{})) el.setAttribute(k, attrs[k]); return el; } function getSVGcoords(evt){ const pt = svg.createSVGPoint(); pt.x = evt.clientX; pt.y = evt.clientY; return pt.matrixTransform(svg.getScreenCTM().inverse()); } // ----------- NODE ----------- function createNode(id, cx, cy, w, h, label){ cx += xOffsetGlobal/scale; // gesamte Grafik nach rechts versetzt const g = svgEl(&amp;quot;g&amp;quot;, {&amp;quot;data-id&amp;quot;:id}); const rect = svgEl(&amp;quot;rect&amp;quot;, { class:&amp;quot;node-rect&amp;quot;, x:(cx-w/2)*scale, y:(cy-h/2)*scale + yOffset, width:w*scale, height:h*scale, rx:6, ry:6 }); const text = svgEl(&amp;quot;text&amp;quot;, { class:&amp;quot;node-text&amp;quot;, x:cx*scale, y:cy*scale+yOffset, &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;, &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot; }); text.textContent = label; g.appendChild(rect); g.appendChild(text); svg.appendChild(g); const node = {id,cx,cy,w,h,rect,text,g}; // Draggen let dragging=false, start={}; rect.addEventListener(&amp;quot;pointerdown&amp;quot;, e=&amp;gt;{ rect.setPointerCapture(e.pointerId); dragging=true; const p = getSVGcoords(e); start = {px:p.x, py:p.y, cx:node.cx, cy:node.cy}; }); rect.addEventListener(&amp;quot;pointermove&amp;quot;, e=&amp;gt;{ if(!dragging) return; const p = getSVGcoords(e); node.cx = start.cx + (p.x - start.px)/scale; node.cy = start.cy + (p.y - start.py)/scale; updateNode(node); updateAllEdges(); }); rect.addEventListener(&amp;quot;pointerup&amp;quot;, e=&amp;gt;{ dragging=false; rect.releasePointerCapture(e.pointerId); }); return node; } function updateNode(n){ n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale); n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset); n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale); n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset); } // ------- Geometrie ------- function intersectRectBorder(node, tx, ty){ const cx=node.cx, cy=node.cy, w2=node.w/2, h2=node.h/2; const dx=tx-cx, dy=ty-cy; let pts=[]; if(Math.abs(dx)&amp;gt;1e-9){ let t1=(-w2)/dx; let y1=cy+t1*dy; if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2) pts.push({x:cx-w2,y:y1,t:t1}); let t2=(w2)/dx; let y2=cy+t2*dy; if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2) pts.push({x:cx+w2,y:y2,t:t2}); } if(Math.abs(dy)&amp;gt;1e-9){ let t3=(-h2)/dy; let x3=cx+t3*dx; if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2) pts.push({x:x3,y:cy-h2,t:t3}); let t4=(h2)/dy; let x4=cx+t4*dx; if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2) pts.push({x:x4,y:cy+h2,t:t4}); } pts.sort((a,b)=&amp;gt;a.t-b.t); return pts[0] || {x:cx,y:cy}; } function pointOnCircle(cx,cy,R,tx,ty){ const dx=tx-cx, dy=ty-cy; const d=Math.sqrt(dx*dx+dy*dy); if(d&amp;lt;1e-9) return {x:cx,y:cy}; return {x:cx+R*dx/d, y:cy+R*dy/d}; } function makeArrowHead(x,y,ux,uy,size){ let px=-uy, py=ux; return M ${x} ${y} L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5} L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z; } const edges=[]; function makeConnection(fromNode,toNode,amount,yMid,xOffset){ const g=svgEl(&amp;quot;g&amp;quot;,{}); const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;}); const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;}); const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;}); const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;}); const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;}); text.textContent=amount; g.appendChild(lineA); g.appendChild(lineB); g.appendChild(circle); g.appendChild(text); g.appendChild(arrow); svg.appendChild(g); let e={fromNode,toNode,amount,yMid,xOffset,circle,text,lineA,lineB,arrow}; edges.push(e); updateEdge(e); } function updateEdge(e){ const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0); const cy=e.yMid; const R=0.14; const pF=intersectRectBorder(e.fromNode,cx,cy); const pT=intersectRectBorder(e.toNode,cx,cy); const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y); const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y); const px=p=&amp;gt;[p.x*scale, p.y*scale+yOffset]; const F=px(pF), Ci=px(pCircleIn), Co=px(pCircleOut), T=px(pT); e.lineA.setAttribute(&amp;quot;d&amp;quot;,M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}); e.lineB.setAttribute(&amp;quot;d&amp;quot;,M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}); e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale); e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset); e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale); e.text.setAttribute(&#039;x&#039;, cx*scale-5); e.text.setAttribute(&#039;y&#039;, cy*scale + yOffset+5); let ux=T[0]-Co[0], uy=T[1]-Co[1]; let L=Math.sqrt(ux*ux+uy*uy); if(L&amp;lt;1e-6) L=1; ux/=L; uy/=L; e.arrow.setAttribute(&amp;quot;d&amp;quot;,makeArrowHead(T[0],T[1],ux,uy,10)); } function updateAllEdges(){ edges.forEach(updateEdge); } // ------------ Nodes ------------ const nodes={}; // Einzelteile oben nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;); nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;); nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;); nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;); // Bauteile darunter nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;); nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;); nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;); nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;); nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;); // ------------ Verbindungen ------------ makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2); makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2, 0.2); makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2); makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2, 0.2); makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25); makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2, 0.0); makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2, 0.25); makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3); makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2, 0.0); makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2, 0.3); makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2); makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2, 0.2); updateAllEdges(); })(); &amp;lt;/script&amp;gt; &amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A =&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
Beispielsweise lässt sich aus der ersten Spalte ablesen, dass zur Herstellung eines Bauteils &amp;lt;math&amp;gt;B_1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2 Einheiten von &amp;lt;math&amp;gt;E_1&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 1 Einheit von &amp;lt;math&amp;gt;E_2&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_3&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
benötigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Für die Herstellung einer Einheit &amp;lt;math&amp;gt;Z_1&amp;lt;/math&amp;gt; werden 3 Einheiten &amp;lt;math&amp;gt;R_1&amp;lt;/math&amp;gt; und 4 Einheiten &amp;lt;math&amp;gt;R_2&amp;lt;/math&amp;gt; benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2885</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2885"/>
		<updated>2026-05-27T08:22:19Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.  &lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VARIANTE B – FINAL OPTIMIERT --&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:50vw;&lt;br /&gt;
    max-width:1100px;&lt;br /&gt;
    max-height:400px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text, .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow { fill:#000; }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot; viewBox=&amp;quot;0 0 1200 450&amp;quot; preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
  const svg = document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  const scale = 100;&lt;br /&gt;
  const yOffset = 0;&lt;br /&gt;
  const xOffsetGlobal = 120;&lt;br /&gt;
&lt;br /&gt;
  function svgEl(name, attrs){&lt;br /&gt;
    const el = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, name);&lt;br /&gt;
    for(const k in (attrs||{})) el.setAttribute(k, attrs[k]);&lt;br /&gt;
    return el;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getSVGcoords(evt){&lt;br /&gt;
    const pt = svg.createSVGPoint();&lt;br /&gt;
    pt.x = evt.clientX;&lt;br /&gt;
    pt.y = evt.clientY;&lt;br /&gt;
    return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function createNode(id, cx, cy, w, h, label){&lt;br /&gt;
    cx += xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
    const g = svgEl(&amp;quot;g&amp;quot;, {&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
    const rect = svgEl(&amp;quot;rect&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
      x:(cx-w/2)*scale,&lt;br /&gt;
      y:(cy-h/2)*scale + yOffset,&lt;br /&gt;
      width:w*scale,&lt;br /&gt;
      height:h*scale,&lt;br /&gt;
      rx:6,&lt;br /&gt;
      ry:6&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text = svgEl(&amp;quot;text&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
      x:cx*scale,&lt;br /&gt;
      y:cy*scale+yOffset,&lt;br /&gt;
      &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
      &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent = label;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(rect);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    const node = {id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
    let dragging=false, start={};&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerdown&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      rect.setPointerCapture(e.pointerId);&lt;br /&gt;
      dragging=true;&lt;br /&gt;
      const p = getSVGcoords(e);&lt;br /&gt;
      start = {px:p.x, py:p.y, cx:node.cx, cy:node.cy};&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointermove&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
      const p = getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      node.cx = start.cx + (p.x - start.px)/scale;&lt;br /&gt;
      node.cy = start.cy + (p.y - start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
      updateNode(node);&lt;br /&gt;
      updateAllEdges();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerup&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      dragging=false;&lt;br /&gt;
      rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    return node;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateNode(n){&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function intersectRectBorder(node, tx, ty){&lt;br /&gt;
    const cx=node.cx, cy=node.cy, w2=node.w/2, h2=node.h/2;&lt;br /&gt;
    const dx=tx-cx, dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    let pts=[];&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
      let t1=(-w2)/dx;&lt;br /&gt;
      let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
      let t2=(w2)/dx;&lt;br /&gt;
      let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
      let t3=(-h2)/dy;&lt;br /&gt;
      let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
      let t4=(h2)/dy;&lt;br /&gt;
      let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
    return pts[0] || {x:cx,y:cy};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
    if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
      x:cx+R*dx/d,&lt;br /&gt;
      y:cy+R*dy/d&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
    let px=-uy, py=ux;&lt;br /&gt;
&lt;br /&gt;
    return `M ${x} ${y}&lt;br /&gt;
            L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
            L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const edges=[];&lt;br /&gt;
&lt;br /&gt;
  function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
    const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
    const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;});&lt;br /&gt;
    const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;});&lt;br /&gt;
    const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
    text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(lineA);&lt;br /&gt;
    g.appendChild(lineB);&lt;br /&gt;
    g.appendChild(circle);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    let e={&lt;br /&gt;
      fromNode,&lt;br /&gt;
      toNode,&lt;br /&gt;
      amount,&lt;br /&gt;
      yMid,&lt;br /&gt;
      xOffset,&lt;br /&gt;
      circle,&lt;br /&gt;
      text,&lt;br /&gt;
      lineA,&lt;br /&gt;
      lineB,&lt;br /&gt;
      arrow&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    edges.push(e);&lt;br /&gt;
&lt;br /&gt;
    updateEdge(e);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
    const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
    const cy=e.yMid;&lt;br /&gt;
    const R=0.14;&lt;br /&gt;
&lt;br /&gt;
    const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
    const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
    const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
    const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
    const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
    const F=px(pF),&lt;br /&gt;
          Ci=px(pCircleIn),&lt;br /&gt;
          Co=px(pCircleOut),&lt;br /&gt;
          T=px(pT);&lt;br /&gt;
&lt;br /&gt;
    e.lineA.setAttribute(&amp;quot;d&amp;quot;,`M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`);&lt;br /&gt;
    e.lineB.setAttribute(&amp;quot;d&amp;quot;,`M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`);&lt;br /&gt;
&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
    e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
    e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
    let ux=T[0]-Co[0];&lt;br /&gt;
    let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
    let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
    if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
    ux/=L;&lt;br /&gt;
    uy/=L;&lt;br /&gt;
&lt;br /&gt;
    e.arrow.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      makeArrowHead(T[0],T[1],ux,uy,10)&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateAllEdges(){&lt;br /&gt;
    edges.forEach(updateEdge);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const nodes={};&lt;br /&gt;
&lt;br /&gt;
  nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
  nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
  nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
  nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;);&lt;br /&gt;
  nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;);&lt;br /&gt;
  nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;);&lt;br /&gt;
  nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;);&lt;br /&gt;
  nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
  makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.25);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3);&lt;br /&gt;
  makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
  makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.3);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A =&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
Beispielsweise lässt sich aus der ersten Spalte ablesen, dass zur Herstellung eines Bauteils &amp;lt;math&amp;gt;B_1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2 Einheiten von &amp;lt;math&amp;gt;E_1&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 1 Einheit von &amp;lt;math&amp;gt;E_2&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_3&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
benötigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Für die Herstellung einer Einheit &amp;lt;math&amp;gt;Z_1&amp;lt;/math&amp;gt; werden 3 Einheiten &amp;lt;math&amp;gt;R_1&amp;lt;/math&amp;gt; und 4 Einheiten &amp;lt;math&amp;gt;R_2&amp;lt;/math&amp;gt; benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Lineares_Gleichungssystem&amp;diff=2884</id>
		<title>Lineares Gleichungssystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Lineares_Gleichungssystem&amp;diff=2884"/>
		<updated>2026-05-27T08:00:58Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;lineares Gleichungssystem&#039;&#039;&#039; (LGS) ist eine Menge von linearen Gleichungen mit mehreren Unbekannten. Lineare Gleichungssysteme treten in vielen mathematischen und insbesondere betriebswirtschaftlichen Fragestellungen auf, z. B. bei der Produktionsplanung, Kostenrechnung oder in Stoffstromanalysen. Häufig werden lineare Gleichungssysteme mithilfe von [[Matrix|Matrizen]] dargestellt und algorithmisch gelöst.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Ein &#039;&#039;&#039;lineares Gleichungssystem&#039;&#039;&#039; mit &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; Gleichungen und &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Unbekannten hat die allgemeine Form:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
a_{11}x_1 + a_{12}x_2 + \dots + a_{1n}x_n &amp;amp;= b_1 \\&lt;br /&gt;
a_{21}x_1 + a_{22}x_2 + \dots + a_{2n}x_n &amp;amp;= b_2 \\&lt;br /&gt;
\vdots \qquad &amp;amp; \vdots \\&lt;br /&gt;
a_{m1}x_1 + a_{m2}x_2 + \dots + a_{mn}x_n &amp;amp;= b_m&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
mit den Koeffizienten &amp;lt;math&amp;gt;a_{ij} \in \mathbb{R}&amp;lt;/math&amp;gt; und den Werten der rechten Seite &amp;lt;math&amp;gt;b_i \in \mathbb{R}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Matrizengleichung&#039;&#039;&#039; des Systems lautet:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A \cdot x = b&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
wobei &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; die Koeffizientenmatrix, &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; der Unbekanntenvektor und &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; der Ergebnisvektor (rechte Seite) ist. &lt;br /&gt;
&lt;br /&gt;
Koppelt man die Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; mit dem Vektor &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, erhält man die &#039;&#039;&#039;erweiterte Koeffizientenmatrix&#039;&#039;&#039; &amp;lt;math&amp;gt;(A|b)&amp;lt;/math&amp;gt;. Diese wird in der Regel mit dem [[Gaußsches Eliminationsverfahren|Gaußschen Eliminationsverfahren]] umgeformt, um die Lösung des Systems zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
== Homogene und inhomogene lineare Gleichungssysteme ==&lt;br /&gt;
* Ein &#039;&#039;&#039;homogenes&#039;&#039;&#039; lineares Gleichungssystem liegt vor, wenn &amp;lt;math&amp;gt;b = 0&amp;lt;/math&amp;gt; gilt (der Vektor der rechten Seite besteht nur aus Nullen), also &amp;lt;math&amp;gt;A \cdot x = 0&amp;lt;/math&amp;gt;. Es besitzt immer mindestens die triviale Lösung &amp;lt;math&amp;gt;x = 0&amp;lt;/math&amp;gt; (alle Unbekannten sind Null).&lt;br /&gt;
* Ein &#039;&#039;&#039;inhomogenes&#039;&#039;&#039; lineares Gleichungssystem liegt vor, wenn &amp;lt;math&amp;gt;b \neq 0&amp;lt;/math&amp;gt; gilt (mindestens ein Wert auf der rechten Seite ist ungleich Null). Es kann keine, genau eine oder unendlich viele Lösungen besitzen.&lt;br /&gt;
&lt;br /&gt;
== Lösungskriterien (Satz von Kronecker-Capelli) ==&lt;br /&gt;
Die Lösbarkeit eines linearen Gleichungssystems hängt vom [[Matrix#Rang|Rang]] der Koeffizientenmatrix &amp;lt;math&amp;gt;A \in \mathbb{R}^{m \times n}&amp;lt;/math&amp;gt; und der erweiterten Koeffizientenmatrix &amp;lt;math&amp;gt;(A|b)&amp;lt;/math&amp;gt; ab:&lt;br /&gt;
* Das System ist generell &#039;&#039;&#039;lösbar&#039;&#039;&#039;, wenn gilt: &amp;lt;math&amp;gt;\operatorname{rang}(A) = \operatorname{rang}(A|b)&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Die Lösung ist &#039;&#039;&#039;eindeutig&#039;&#039;&#039;, wenn zusätzlich gilt: &amp;lt;math&amp;gt;\operatorname{rang}(A) = n&amp;lt;/math&amp;gt; (wobei &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; die Anzahl der Unbekannten ist).&lt;br /&gt;
* Es gibt &#039;&#039;&#039;unendlich viele Lösungen&#039;&#039;&#039;, wenn gilt: &amp;lt;math&amp;gt;\operatorname{rang}(A) = \operatorname{rang}(A|b) &amp;lt; n&amp;lt;/math&amp;gt;. In diesem Fall werden die Lösungen häufig in Abhängigkeit von einem oder mehreren &#039;&#039;&#039;Parametern&#039;&#039;&#039; angegeben.&lt;br /&gt;
* Es gibt &#039;&#039;&#039;keine Lösung&#039;&#039;&#039;, wenn gilt: &amp;lt;math&amp;gt;\operatorname{rang}(A) \neq \operatorname{rang}(A|b)&amp;lt;/math&amp;gt; (meist bedeutet dies &amp;lt;math&amp;gt;\operatorname{rang}(A) &amp;lt; \operatorname{rang}(A|b)&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Zeilenstufenform ==&lt;br /&gt;
In der &#039;&#039;&#039;Zeilenstufenform&#039;&#039;&#039; verringert sich in jeder Zeile der Matrix die Anzahl der Unbekannten um mindestens eine (Stufenbildung). Unterhalb der Stufen (führende Koeffizienten bzw. Pivotelemente) stehen ausschließlich Nullen. Die erweiterte Koeffizientenmatrix kann mithilfe des [[Gaußsches_Eliminationsverfahren|Gaußschen Eliminationsverfahrens]] in diese Form gebracht werden.&lt;br /&gt;
&lt;br /&gt;
Sind darüber hinaus alle Pivotelemente auf den Wert 1 normiert und stellen sie in ihrer jeweiligen Spalte den einzigen von Null verschiedenen Eintrag dar, spricht man von der &#039;&#039;&#039;reduzierten Zeilenstufenform&#039;&#039;&#039;. Hierfür verwendet man den erweiterten [[Gaußsches_Eliminationsverfahren|Gauß-Jordan-Algorithmus]].&lt;br /&gt;
&lt;br /&gt;
== Betriebswirtschaftliche Anwendungen ==&lt;br /&gt;
In der Betriebswirtschaft werden lineare Gleichungssysteme unter anderem verwendet zur:&lt;br /&gt;
* Produktions- und Kapazitätsplanung (z. B. optimale Ressourcenauslastung),&lt;br /&gt;
* innerbetrieblichen Kosten- und Erlösrechnung (z. B. Verteilung von Gemeinkosten),&lt;br /&gt;
* Analyse von Stoff- und Warenströmen (Gozintograph),&lt;br /&gt;
* Modellierung von Stücklisten und mehrstufigen Produktionsprozessen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Homogenes lineares Gleichungssystem ===&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
x_1 + 2x_2 - x_3 &amp;amp;= 0 \\&lt;br /&gt;
2x_1 + 4x_2 - 2x_3 &amp;amp;= 0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Dieses System besitzt unendlich viele Lösungen, da die zweite Gleichung lediglich ein Vielfaches (das 2-fache) der ersten Gleichung ist. Die Gleichungen sind linear abhängig.&lt;br /&gt;
&lt;br /&gt;
=== Inhomogenes lineares Gleichungssystem ===&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
2x_1 + x_2 &amp;amp;= 5 \\&lt;br /&gt;
x_1 - x_2 &amp;amp;= 1&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Die eindeutige Lösung dieses Systems lautet &amp;lt;math&amp;gt;x_1 = 2&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;. Geometrisch entspricht dies dem Schnittpunkt zweier Geraden im zweidimensionalen Raum.&lt;br /&gt;
&lt;br /&gt;
=== Betriebswirtschaftliches Beispiel (Kapazitätsplanung) ===&lt;br /&gt;
Ein Unternehmen produziert zwei Produkte. Für Produkt 1 werden 2 Maschinenstunden, für Produkt 2 werden 3 Maschinenstunden benötigt. Insgesamt stehen 120 Maschinenstunden zur Verfügung. Zusätzlich sollen insgesamt exakt 50 Einheiten gefertigt werden (unabhängig davon, wie sie sich auf Produkt 1 und 2 aufteilen).&lt;br /&gt;
&lt;br /&gt;
Das entsprechende LGS lautet:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
1x_1 + 1x_2 &amp;amp;= 50 \quad \text{(Mengenrestriktion)} \\&lt;br /&gt;
2x_1 + 3x_2 &amp;amp;= 120 \quad \text{(Kapazitätsrestriktion)}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Lösen dieses Systems liefert das Ergebnis &amp;lt;math&amp;gt;x_1 = 30&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2 = 20&amp;lt;/math&amp;gt;. &lt;br /&gt;
&#039;&#039;&#039;Antwort:&#039;&#039;&#039; Es können exakt 30 Einheiten von Produkt 1 und 20 Einheiten von Produkt 2 gefertigt werden, um die Maschinenkapazität vollständig auszulasten.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gau%C3%9Fsches_Eliminationsverfahren&amp;diff=2883</id>
		<title>Gaußsches Eliminationsverfahren</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gau%C3%9Fsches_Eliminationsverfahren&amp;diff=2883"/>
		<updated>2026-05-27T07:58:38Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das &#039;&#039;&#039;Gaußsche Eliminationsverfahren&#039;&#039;&#039; (auch &#039;&#039;&#039;Gauß-Algorithmus&#039;&#039;&#039;) ist ein fundamentales algorithmisches Verfahren zur Lösung [[Lineares_Gleichungssystem|linearer Gleichungssysteme]]. Es basiert auf elementaren Zeilenumformungen von Matrizen und ermöglicht Aussagen über die Existenz, Eindeutigkeit und Struktur von Lösungsmengen. Das Verfahren ist eng mit der Theorie der [[Matrix|Matrizen]] verknüpft.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Das &#039;&#039;&#039;Gaußsche Eliminationsverfahren&#039;&#039;&#039; ist ein Verfahren zur schrittweisen Umformung der [[Lineares_Gleichungssystem#Erweiterte_Koeffizientenmatrix|erweiterten Koeffizientenmatrix]] &amp;lt;math&amp;gt;(A|b)&amp;lt;/math&amp;gt; eines linearen Gleichungssystems in eine sogenannte Zeilenstufenform. Wird die erweiterte Koeffizientenmatrix sogar in die [[Lineares_Gleichungssystem#Zeilenstufenform|reduzierte Zeilenstufenform]] gebracht (Einsen auf der Hauptdiagonale, ansonsten nur Nullen), sprechen wir vom &#039;&#039;&#039;Gauß-Jordan-Algorithmus&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Zulässige &#039;&#039;&#039;elementare Zeilenumformungen&#039;&#039;&#039; sind:&lt;br /&gt;
* Vertauschen zweier Zeilen,&lt;br /&gt;
* Multiplikation einer Zeile mit einer von null verschiedenen reellen Zahl,&lt;br /&gt;
* Addition (oder Subtraktion) eines Vielfachen einer Zeile zu einer anderen Zeile.&lt;br /&gt;
&lt;br /&gt;
Diese Umformungen verändern die Lösungsmenge des linearen Gleichungssystems nicht. Man nennt die resultierenden Matrizen daher &#039;&#039;äquivalent&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Ziel des Verfahrens ==&lt;br /&gt;
Ziel ist es, die Matrix so umzuformen, dass&lt;br /&gt;
* die Lösungen für die Variablen direkt abgelesen werden können oder&lt;br /&gt;
* der Rang der Matrix bestimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
Damit lassen sich die Existenz und die Anzahl der Lösungen (genau eine Lösung, unendlich viele Lösungen, keine Lösung) eindeutig beurteilen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang mit der Inversen einer Matrix ==&lt;br /&gt;
Für eine quadratische Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; gilt:&lt;br /&gt;
* &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; ist genau dann invertierbar, wenn für den [[Matrix#Rang|Rang]] von &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; gilt: &amp;lt;math&amp;gt;\operatorname{rang}(A) = n&amp;lt;/math&amp;gt; (voller Rang).&lt;br /&gt;
* Die [[Matrix#Inverse|Inverse]] &amp;lt;math&amp;gt;A^{-1}&amp;lt;/math&amp;gt; kann mithilfe des Gauß-Jordan-Algorithmus bestimmt werden, indem man die um die Einheitsmatrix erweiterte Matrix &amp;lt;math&amp;gt;(A|I)&amp;lt;/math&amp;gt; durch elementare Zeilenumformungen auf die Form &amp;lt;math&amp;gt;(I|A^{-1})&amp;lt;/math&amp;gt; umformt.&lt;br /&gt;
&lt;br /&gt;
== Lineare Matrizengleichungen ==&lt;br /&gt;
Matrizengleichungen der Form&lt;br /&gt;
:&amp;lt;math&amp;gt;A \cdot X = B&amp;lt;/math&amp;gt;&lt;br /&gt;
können mithilfe der Inversen gelöst werden durch:&lt;br /&gt;
:&amp;lt;math&amp;gt;X = A^{-1} \cdot B&amp;lt;/math&amp;gt;,&lt;br /&gt;
sofern &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; eine quadratische und invertierbare Matrix ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen in mehrstufigen Produktionsprozessen ==&lt;br /&gt;
In der Produktionswirtschaft werden Inverse von Matrizen (insbesondere Verflechtungsmatrizen) genutzt, um&lt;br /&gt;
* Stücklisten zu rekonstruieren,&lt;br /&gt;
* benötigte Rohstoffmengen direkt aus Endproduktanforderungen zu bestimmen,&lt;br /&gt;
* mehrstufige Produktionsprozesse auf Effizienz zu analysieren.&lt;br /&gt;
&lt;br /&gt;
Ist beispielsweise eine Herstellungsmatrix invertierbar, lassen sich aus den Zielvorgaben für die Endproduktmengen durch Rückwärtsrechnung direkt die erforderlichen Einsatzmengen berechnen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Lösung eines linearen Gleichungssystems ===&lt;br /&gt;
Gegeben sei das System:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
x_1 + x_2 &amp;amp;= 5 \\&lt;br /&gt;
2x_1 + 3x_2 &amp;amp;= 13&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Matrizengleichung lautet:&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}&lt;br /&gt;
1 &amp;amp; 1 \\&lt;br /&gt;
2 &amp;amp; 3 \\&lt;br /&gt;
\end{pmatrix} \cdot \begin{pmatrix}&lt;br /&gt;
x_1  \\&lt;br /&gt;
x_2 \\&lt;br /&gt;
\end{pmatrix} = \begin{pmatrix}&lt;br /&gt;
5  \\&lt;br /&gt;
13 \\&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die erweiterte Koeffizientenmatrix lautet entsprechend:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|c}&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 5 \\&lt;br /&gt;
2 &amp;amp; 3 &amp;amp; 13&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 1:&#039;&#039;&#039; Wir subtrahieren das 2-fache der ersten Zeile von der zweiten Zeile (&amp;lt;math&amp;gt;Z_2 \rightarrow Z_2 - 2 \cdot Z_1&amp;lt;/math&amp;gt;), um eine Null in der linken unteren Ecke zu erzeugen:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|c}&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 5 \\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 3&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&#039;&#039;(Die Matrix befindet sich nun bereits in Zeilenstufenform. Der reguläre Gauß-Algorithmus wäre hier beendet und man könnte rückwärts einsetzen. Für den Gauß-Jordan-Algorithmus rechnen wir jedoch weiter.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 2:&#039;&#039;&#039; Wir subtrahieren die zweite Zeile von der ersten Zeile (&amp;lt;math&amp;gt;Z_1 \rightarrow Z_1 - Z_2&amp;lt;/math&amp;gt;), um die reduzierte Zeilenstufenform zu erhalten:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|c}&lt;br /&gt;
1 &amp;amp; 0 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 3&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Anwendung des Verfahrens können wir die Lösung direkt ablesen: &lt;br /&gt;
:&amp;lt;math&amp;gt;x_1 = 2&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2 = 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Bestimmung der Inversen ===&lt;br /&gt;
Wir berechnen die Inverse &amp;lt;math&amp;gt;A^{-1}&amp;lt;/math&amp;gt; zur folgenden Matrix:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A = \begin{pmatrix}&lt;br /&gt;
1 &amp;amp; 2 \\&lt;br /&gt;
3 &amp;amp; 4&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir notieren die Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; gekoppelt mit der Einheitsmatrix &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|cc}&lt;br /&gt;
1 &amp;amp; 2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
3 &amp;amp; 4 &amp;amp; 0 &amp;amp; 1&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 1:&#039;&#039;&#039; Wir subtrahieren das 3-fache der ersten Zeile von der zweiten Zeile (&amp;lt;math&amp;gt;Z_2 \rightarrow Z_2 - 3 \cdot Z_1&amp;lt;/math&amp;gt;):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|cc}&lt;br /&gt;
1 &amp;amp; 2 &amp;amp;  1 &amp;amp;  0 \\&lt;br /&gt;
0 &amp;amp; -2 &amp;amp; -3 &amp;amp;  1&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 2:&#039;&#039;&#039; Wir dividieren die zweite Zeile durch -2 (&amp;lt;math&amp;gt;Z_2 \rightarrow Z_2 / (-2)&amp;lt;/math&amp;gt;), um auf der Diagonale eine 1 zu erhalten:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|cc}&lt;br /&gt;
1 &amp;amp; 2 &amp;amp;  1   &amp;amp;  0 \\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp;  \frac{3}{2} &amp;amp; -\frac{1}{2}&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3:&#039;&#039;&#039; Wir subtrahieren das 2-fache der zweiten Zeile von der ersten Zeile (&amp;lt;math&amp;gt;Z_1 \rightarrow Z_1 - 2 \cdot Z_2&amp;lt;/math&amp;gt;):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|cc}&lt;br /&gt;
1 &amp;amp; 0 &amp;amp; -2 &amp;amp;  1 \\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp;  \frac{3}{2} &amp;amp; -\frac{1}{2}&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf der linken Seite steht nun die Einheitsmatrix. Auf der rechten Seite können wir die gesuchte Inverse zu Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; ablesen:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A^{-1} = \begin{pmatrix}&lt;br /&gt;
-2 &amp;amp; 1 \\&lt;br /&gt;
\frac{3}{2} &amp;amp; -\frac{1}{2}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Produktionswirtschaftliches Beispiel ===&lt;br /&gt;
Eine invertierbare Herstellungsmatrix beschreibt den Zusammenhang zwischen Zwischen- und Endprodukten. Mithilfe der Inversen können aus bekannten Endproduktmengen die erforderlichen Zwischenproduktmengen berechnet werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Matrix&amp;diff=2882</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Matrix&amp;diff=2882"/>
		<updated>2026-05-27T07:53:14Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Eine &#039;&#039;&#039;Matrix&#039;&#039;&#039; ist eine rechteckige Anordnung von Zahlen oder Symbolen, die in Zeilen und Spalten organisiert ist. Matrizen dienen zur Darstellung und Berechnung linearer Zusammenhänge und werden in vielen Bereichen wie Wirtschaft, Technik, Informatik und Naturwissenschaften eingesetzt. Matrizen (insbesondere Verflechtungsmatrizen) werden häufig mit [[Gozintograph]]en grafisch veranschaulicht.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Eine rechteckige Anordnung von Zahlen oder Platzhaltern mit \(m \in \mathbb{N}\) Zeilen und \(n \in \mathbb{N}\) Spalten wird als &#039;&#039;&#039;\(m \times n\)-Matrix&#039;&#039;&#039; bezeichnet. \(a_{ij} \in \mathbb{R}\) ist das Element in Zeile \(i\) und Spalte \(j\).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A = \begin{pmatrix}&lt;br /&gt;
a_{11} &amp;amp; a_{12} &amp;amp; \dots &amp;amp; a_{1n} \\&lt;br /&gt;
a_{21} &amp;amp; a_{22} &amp;amp; \dots &amp;amp; a_{2n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
a_{m1} &amp;amp; a_{m2} &amp;amp; \dots &amp;amp; a_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\(m \times n\) ist das &#039;&#039;&#039;Format&#039;&#039;&#039; oder die &#039;&#039;&#039;Dimension&#039;&#039;&#039; einer Matrix. Eine \(n \times n\)-Matrix heißt &#039;&#039;&#039;quadratische Matrix&#039;&#039;&#039;. Die Elemente \(a_{11}, \dots ,a_{nn}\) bilden die &#039;&#039;&#039;Hauptdiagonale&#039;&#039;&#039; der Matrix. Eine quadratische Matrix, deren Elemente auf der Hauptdiagonalen den Wert 1 haben und sonst überall 0 sind, heißt &#039;&#039;&#039;Einheitsmatrix&#039;&#039;&#039;. Eine Matrix, die nur aus einer Spalte besteht, heißt &#039;&#039;&#039;Spaltenvektor&#039;&#039;&#039;. Eine Matrix, die nur aus einer Zeile besteht, heißt &#039;&#039;&#039;Zeilenvektor&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Transponierte Matrix ==&lt;br /&gt;
Es sei &lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A = \begin{pmatrix}&lt;br /&gt;
a_{11} &amp;amp; a_{12} &amp;amp; \dots &amp;amp; a_{1n} \\&lt;br /&gt;
a_{21} &amp;amp; a_{22} &amp;amp; \dots &amp;amp; a_{2n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
a_{m1} &amp;amp; a_{m2} &amp;amp; \dots &amp;amp; a_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt; &lt;br /&gt;
eine \(m \times n\)-Matrix. Die &#039;&#039;&#039;transponierte Matrix&#039;&#039;&#039; \(A^T\) entsteht, indem man die Zeilen und Spalten vertauscht. Das Ergebnis ist eine \(n \times m\)-Matrix. Es gilt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A^T = \begin{pmatrix}&lt;br /&gt;
a_{11} &amp;amp; a_{21} &amp;amp; \dots &amp;amp; a_{m1} \\&lt;br /&gt;
a_{12} &amp;amp; a_{22} &amp;amp; \dots &amp;amp; a_{m2} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
a_{1n} &amp;amp; a_{2n} &amp;amp; \dots &amp;amp; a_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Addition ==&lt;br /&gt;
Zwei Matrizen lassen sich nur addieren, wenn sie das exakt gleiche Format haben. Es seien A und B \(m \times n\)-Matrizen, dann werden diese komponentenweise addiert:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A + B = \begin{pmatrix}&lt;br /&gt;
a_{11}+b_{11} &amp;amp; a_{12}+b_{12} &amp;amp; \dots &amp;amp; a_{1n}+b_{1n} \\&lt;br /&gt;
a_{21}+b_{21} &amp;amp; a_{22}+b_{22} &amp;amp; \dots &amp;amp; a_{2n}+b_{2n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
a_{m1}+b_{m1} &amp;amp; a_{m2}+b_{m2} &amp;amp; \dots &amp;amp; a_{mn}+b_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Subtraktion ==&lt;br /&gt;
Analog zur Addition gilt für die Subtraktion zweier \(m \times n\)-Matrizen A und B:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A - B = \begin{pmatrix}&lt;br /&gt;
a_{11}-b_{11} &amp;amp; a_{12}-b_{12} &amp;amp; \dots &amp;amp; a_{1n}-b_{1n} \\&lt;br /&gt;
a_{21}-b_{21} &amp;amp; a_{22}-b_{22} &amp;amp; \dots &amp;amp; a_{2n}-b_{2n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
a_{m1}-b_{m1} &amp;amp; a_{m2}-b_{m2} &amp;amp; \dots &amp;amp; a_{mn}-b_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Skalarmultiplikation ==&lt;br /&gt;
Eine Matrix wird mit einer reellen Zahl (Skalar) multipliziert, indem man jeden einzelnen Eintrag der Matrix mit dieser Zahl multipliziert. Es sei A eine \(m \times n\)-Matrix und \(\lambda \in \mathbb{R}\) ein Skalar, dann gilt:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\lambda \cdot A = \begin{pmatrix}&lt;br /&gt;
\lambda \cdot a_{11} &amp;amp; \lambda \cdot a_{12} &amp;amp; \dots &amp;amp; \lambda \cdot a_{1n} \\&lt;br /&gt;
\lambda \cdot a_{21} &amp;amp; \lambda \cdot a_{22} &amp;amp; \dots &amp;amp; \lambda \cdot a_{2n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
\lambda \cdot a_{m1} &amp;amp; \lambda \cdot a_{m2} &amp;amp; \dots &amp;amp; \lambda \cdot a_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Skalarprodukt ==&lt;br /&gt;
Gegeben seien ein Zeilenvektor &amp;lt;math&amp;gt;a \in \mathbb{R}^n&amp;lt;/math&amp;gt; und ein Spaltenvektor &amp;lt;math&amp;gt;b \in \mathbb{R}^n&amp;lt;/math&amp;gt; (beide Vektoren müssen dieselbe Dimension &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; haben), dann ist das Skalarprodukt definiert durch:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
a\cdot b=\begin{pmatrix} a_{1} &amp;amp; a_{2} &amp;amp; \dots &amp;amp;  a_{n} &lt;br /&gt;
\end{pmatrix} \cdot \begin{pmatrix} b_{1} \\ b_{2} \\ \vdots \\  b_{n} &lt;br /&gt;
\end{pmatrix} = a_1 \cdot b_1 + a_2 \cdot b_2 + \dots + a_n \cdot b_n&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Multiplikation ==&lt;br /&gt;
Zwei Matrizen lassen sich nur miteinander multiplizieren, wenn die Anzahl der Spalten der ersten Matrix gleich der Anzahl der Zeilen der zweiten Matrix ist. &lt;br /&gt;
&lt;br /&gt;
Es sei A eine \(m \times r\)-Matrix und B eine \(r \times n\)-Matrix. Dann wird das Produkt \(A \cdot B \) berechnet, indem das Skalarprodukt aus jedem Zeilenvektor von \(A\) mit jedem Spaltenvektor von \(B\) gebildet wird (Merkregel: &#039;&#039;&#039;&amp;quot;Zeile mal Spalte&amp;quot;&#039;&#039;&#039;). Zur besseren Übersicht verwendet man hierfür häufig das [[Falksches_Schema|Falksche Schema]]. Das Ergebnis ist eine neue \(m \times n\)-Matrix.&lt;br /&gt;
&lt;br /&gt;
== Rang ==&lt;br /&gt;
Der &#039;&#039;&#039;Rang&#039;&#039;&#039; einer [[Matrix]] ist eine zentrale Kenngröße zur Analyse [[Lineares_Gleichungssystem|linearer Gleichungssysteme]]. Er gibt an, wie viele Zeilen (bzw. Spalten) einer Matrix [[Lineare_Unabhängigkeit|linear unabhängig]] sind.&lt;br /&gt;
&lt;br /&gt;
Formal ist der Rang einer Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; die maximale Anzahl linear unabhängiger Zeilen oder Spalten von &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Man bezeichnet ihn mit &amp;lt;math&amp;gt;\operatorname{rang}(A)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Der Rang kann mithilfe des [[Gaußsches Eliminationsverfahren|Gaußschen Eliminationsverfahrens]] bestimmt werden:&lt;br /&gt;
* Man bringt die Matrix in Zeilenstufenform.&lt;br /&gt;
* Der Rang entspricht der Anzahl der von Null verschiedenen Zeilen.&lt;br /&gt;
&lt;br /&gt;
== Inverse ==&lt;br /&gt;
Die &#039;&#039;&#039;Inverse einer Matrix&#039;&#039;&#039; \( A \in \mathbb{R}^{n \times n} \) ist die eindeutige Matrix \( A^{-1} \), für die gilt:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A \cdot A^{-1} = A^{-1} \cdot A = I_n&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
wobei \( I_n \) die Einheitsmatrix der Größe \( n \times n \) ist. Die Inverse kann unter anderem mit dem [[Gaußsches_Eliminationsverfahren#Bestimmung_der_Inversen|Gauß-Jordan-Algorithmus]] berechnet werden.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Aufstellen einer Transportmatrix und einer Kostenmatrix ===&lt;br /&gt;
Ein Unternehmen betreibt drei Steinbrüche (S1 bis S3) und zwei Betonwerke (B1 und B2). Die in einem Monat transportierten Mengen Kies (in t) sowie die Transportkosten (in €/t) sind tabellarisch gegeben:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   Transport   !! B1   !! B2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S1&#039;&#039;&#039;   || 100  || 200&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S2&#039;&#039;&#039;   || 150  || 300&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S3&#039;&#039;&#039;   || 90   || 110&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   Kosten   !! B1   !! B2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S1&#039;&#039;&#039;   || 0,5  || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S2&#039;&#039;&#039;   || 0,3  || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S3&#039;&#039;&#039;   || 0,4  || 0,25&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daraus ergibt sich die Transportmatrix &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; und die Kostenmatrix &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
T = \begin{pmatrix}&lt;br /&gt;
100 &amp;amp; 200 \\&lt;br /&gt;
150 &amp;amp; 300 \\&lt;br /&gt;
90 &amp;amp; 110 \\&lt;br /&gt;
\end{pmatrix}, \quad&lt;br /&gt;
K = \begin{pmatrix}&lt;br /&gt;
0,5 &amp;amp; 2 \\&lt;br /&gt;
0,3 &amp;amp; 1 \\&lt;br /&gt;
0,4 &amp;amp; 0,25 \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aufstellen von Herstellungsmatrizen ===&lt;br /&gt;
Ein Unternehmen stellt aus Rohstoffen (R1, R2) über Zwischenprodukte (Z1, Z2, Z3) schließlich Endprodukte (E1, E2) her. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Stückliste 1 !! Z1 !! Z2 !! Z3 &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R1&#039;&#039;&#039; || 3 || 2 || 4 &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R2&#039;&#039;&#039; || 5 || 1 || 3 &lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Stückliste 2 !! E1 !! E2 &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Z1&#039;&#039;&#039; || 1 || 3 &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Z2&#039;&#039;&#039; || 2 || 4 &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Z3&#039;&#039;&#039; || 1 || 2 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Damit ergeben sich die Herstellungsmatrix &amp;lt;math&amp;gt;RZ&amp;lt;/math&amp;gt; (Rohstoffe zu Zwischenprodukten) und &amp;lt;math&amp;gt;ZE&amp;lt;/math&amp;gt; (Zwischenprodukte zu Endprodukten):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RZ = \begin{pmatrix} 3 &amp;amp; 2 &amp;amp; 4 \\ 5 &amp;amp; 1 &amp;amp; 3 \end{pmatrix}, \quad&lt;br /&gt;
ZE = \begin{pmatrix} 1 &amp;amp; 3 \\ 2 &amp;amp; 4 \\ 1 &amp;amp; 2 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transponierte Matrix berechnen ===&lt;br /&gt;
Gegeben sei die Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Durch Vertauschen von Zeilen und Spalten erhält man &amp;lt;math&amp;gt;A^T&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A = \begin{pmatrix}&lt;br /&gt;
1 &amp;amp; 2 &amp;amp; 3 \\&lt;br /&gt;
4 &amp;amp; 5 &amp;amp; 6 \\&lt;br /&gt;
7 &amp;amp; 8 &amp;amp; 9&lt;br /&gt;
\end{pmatrix} \quad \Rightarrow \quad&lt;br /&gt;
A^T = \begin{pmatrix}&lt;br /&gt;
1 &amp;amp; 4 &amp;amp; 7 \\&lt;br /&gt;
2 &amp;amp; 5 &amp;amp; 8 \\&lt;br /&gt;
3 &amp;amp; 6 &amp;amp; 9&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Addition und Subtraktion von Matrizen ===&lt;br /&gt;
Gegeben seien&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A = \begin{pmatrix} 1 &amp;amp; 3 \\ 2 &amp;amp; 4 \end{pmatrix}, \quad&lt;br /&gt;
B = \begin{pmatrix} 5 &amp;amp; 2 \\ 1 &amp;amp; 3 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
dann wird die Summe durch komponentenweise Addition berechnet:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A + B = \begin{pmatrix} &lt;br /&gt;
1+5 &amp;amp; 3+2 \\ &lt;br /&gt;
2+1 &amp;amp; 4+3 &lt;br /&gt;
\end{pmatrix} = \begin{pmatrix} &lt;br /&gt;
6 &amp;amp; 5 \\ &lt;br /&gt;
3 &amp;amp; 7 &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gegeben seien&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
C = \begin{pmatrix} 7 &amp;amp; 4 \\ 6 &amp;amp; 2 \end{pmatrix}, \quad&lt;br /&gt;
D = \begin{pmatrix} 3 &amp;amp; 1 \\ 2 &amp;amp; 5 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
dann wird die Differenz von C und D durch komponentenweise Subtraktion berechnet:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
C - D = \begin{pmatrix} &lt;br /&gt;
7-3 &amp;amp; 4-1 \\ &lt;br /&gt;
6-2 &amp;amp; 2-5 &lt;br /&gt;
\end{pmatrix} = \begin{pmatrix} &lt;br /&gt;
4 &amp;amp; 3 \\ &lt;br /&gt;
4 &amp;amp; -3 &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skalarmultiplikation durchführen ===&lt;br /&gt;
Gegeben sei die Matrix &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; und der Skalar &amp;lt;math&amp;gt;\lambda = 3&amp;lt;/math&amp;gt;. Die Multiplikation ergibt:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
3 \cdot \begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 4 &amp;amp; 1 \\&lt;br /&gt;
0 &amp;amp; 3 &amp;amp; 5 \\&lt;br /&gt;
7 &amp;amp; 1 &amp;amp; 6&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
= \begin{pmatrix}&lt;br /&gt;
3 \cdot 2 &amp;amp; 3 \cdot 4 &amp;amp; 3 \cdot 1 \\&lt;br /&gt;
3 \cdot 0 &amp;amp; 3 \cdot 3 &amp;amp; 3 \cdot 5 \\&lt;br /&gt;
3 \cdot 7 &amp;amp; 3 \cdot 1 &amp;amp; 3 \cdot 6&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
= \begin{pmatrix}&lt;br /&gt;
6 &amp;amp; 12 &amp;amp; 3 \\&lt;br /&gt;
0 &amp;amp; 9 &amp;amp; 15 \\&lt;br /&gt;
21 &amp;amp; 3 &amp;amp; 18&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Das Skalarprodukt berechnen ===&lt;br /&gt;
Der Zeilenvektor &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; und der Spaltenvektor &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; seien wie folgt gegeben:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
a = \begin{pmatrix} 2 &amp;amp; -1 &amp;amp; 3 \end{pmatrix}, \quad&lt;br /&gt;
b = \begin{pmatrix} 4 \\ 2 \\ 1 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Das Skalarprodukt wird dann berechnet durch:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
a \cdot b = (2 \cdot 4) + (-1 \cdot 2) + (3 \cdot 1) = 8 - 2 + 3 = 9&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiplikation von Matrizen ===&lt;br /&gt;
Gegeben seien die Matrizen&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
E = \begin{pmatrix} 1 &amp;amp; 2 \\ 3 &amp;amp; 4 \end{pmatrix}, \quad&lt;br /&gt;
F = \begin{pmatrix} 2 &amp;amp; 0 \\ 1 &amp;amp; 3 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;.&lt;br /&gt;
Diese werden nach dem Prinzip &amp;quot;Zeile mal Spalte&amp;quot; multipliziert:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
E \cdot F = \begin{pmatrix} &lt;br /&gt;
1\cdot2 + 2\cdot1 &amp;amp; 1\cdot0 + 2\cdot3 \\ &lt;br /&gt;
3\cdot2 + 4\cdot1 &amp;amp; 3\cdot0 + 4\cdot3 &lt;br /&gt;
\end{pmatrix} = \begin{pmatrix} &lt;br /&gt;
4 &amp;amp; 6 \\ &lt;br /&gt;
10 &amp;amp; 12 &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&#039;&#039;Wichtig:&#039;&#039; Die Matrixmultiplikation ist nicht kommutativ, d. h. im Allgemeinen gilt &amp;lt;math&amp;gt;E \cdot F \neq F \cdot E &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Kombination von Skalarmultiplikation und Addition ===&lt;br /&gt;
Gegeben seien:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
G = \begin{pmatrix} 2 &amp;amp; 1 \\ 0 &amp;amp; 3 \end{pmatrix}, \quad&lt;br /&gt;
H = \begin{pmatrix} 1 &amp;amp; 4 \\ 2 &amp;amp; 1 \end{pmatrix}, \quad&lt;br /&gt;
\lambda = 2&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Kombinierte Berechnung gemäß Klammerregeln (zuerst addieren, dann mit dem Skalar multiplizieren):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
2 \cdot (G + H) = 2 \cdot \left( \begin{pmatrix} 2 &amp;amp; 1 \\ 0 &amp;amp; 3 \end{pmatrix} + \begin{pmatrix} 1 &amp;amp; 4 \\ 2 &amp;amp; 1 \end{pmatrix} \right) = 2 \cdot \begin{pmatrix} 3 &amp;amp; 5 \\ 2 &amp;amp; 4 \end{pmatrix} = \begin{pmatrix} 6 &amp;amp; 10 \\ 4 &amp;amp; 8 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komplexe Kombination verschiedener Rechenoperationen ===&lt;br /&gt;
Gegeben seien:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
G = \begin{pmatrix} 2 &amp;amp; 1 \\ 0 &amp;amp; 3 \end{pmatrix}, \quad&lt;br /&gt;
H = \begin{pmatrix} 1 &amp;amp; 4 \\ 2 &amp;amp; 1 \end{pmatrix}, \quad&lt;br /&gt;
J = \begin{pmatrix} 3 &amp;amp; 1 \\ 2 &amp;amp; 2 \end{pmatrix}, \quad&lt;br /&gt;
\lambda = 2, \quad \mu = 3&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu berechnen ist der Term: &amp;lt;math&amp;gt;\lambda \cdot G + \mu \cdot (H \cdot J)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Schritt: Matrixmultiplikation (Klammer auflösen)&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
H \cdot J = \begin{pmatrix} &lt;br /&gt;
1\cdot3 + 4\cdot2 &amp;amp; 1\cdot1 + 4\cdot2 \\&lt;br /&gt;
2\cdot3 + 1\cdot2 &amp;amp; 2\cdot1 + 1\cdot2 &lt;br /&gt;
\end{pmatrix} = \begin{pmatrix} &lt;br /&gt;
11 &amp;amp; 9 \\&lt;br /&gt;
8 &amp;amp; 4 &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Schritt: Skalarmultiplikationen&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
2 \cdot G = \begin{pmatrix} 4 &amp;amp; 2 \\ 0 &amp;amp; 6 \end{pmatrix}, \quad&lt;br /&gt;
3 \cdot (H \cdot J) = \begin{pmatrix} 33 &amp;amp; 27 \\ 24 &amp;amp; 12 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Schritt: Addition der Ergebnisse&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{pmatrix} 4 &amp;amp; 2 \\ 0 &amp;amp; 6 \end{pmatrix} + \begin{pmatrix} 33 &amp;amp; 27 \\ 24 &amp;amp; 12 \end{pmatrix} = \begin{pmatrix} &lt;br /&gt;
37 &amp;amp; 29 \\&lt;br /&gt;
24 &amp;amp; 18 &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Endergebnis: &amp;lt;math&amp;gt;\lambda \cdot G + \mu \cdot (H \cdot J) = \begin{pmatrix} 37 &amp;amp; 29 \\ 24 &amp;amp; 18 \end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Vierfeldertafel&amp;diff=2881</id>
		<title>Vierfeldertafel</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Vierfeldertafel&amp;diff=2881"/>
		<updated>2026-05-27T07:45:44Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Vierfeldertafel wird neben dem [[Baumdiagramm_(Wahrscheinlichkeitsrechnung)|Baumdiagramm]] zur tabellarischen und strukturierten Darstellung von [[Zufallsexperiment|Zufallsexperimenten]] und ihren [[Wahrscheinlichkeitsverteilung|Wahrscheinlichkeitsverteilungen]] verwendet.&lt;br /&gt;
&lt;br /&gt;
== Definition ==  &lt;br /&gt;
Eine &#039;&#039;&#039;Vierfeldertafel&#039;&#039;&#039; ist eine Übersicht, die verwendet wird, um die Zusammenhänge zwischen zwei [[Zufallsexperiment#Ereignis|Ereignissen]] und ihren [[Zufallsexperiment#Gegenereignis|Gegenereignissen]] zu analysieren. Sie ermöglicht die schnelle Bestimmung von Schnittmengen und bildet die Basis für die Berechnung von [[Bedingte Wahrscheinlichkeit|bedingten Wahrscheinlichkeiten]].  &lt;br /&gt;
&lt;br /&gt;
Die Vierfeldertafel besteht im Kern aus vier Feldern, die die Kombinationen der beiden Ereignisse (z. B. &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;) sowie deren Gegenereignisse (&amp;lt;math&amp;gt;\overline{A}&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;\overline{B}&amp;lt;/math&amp;gt;) abbilden. Zusätzlich werden an den Rändern die sogenannten Randwahrscheinlichkeiten (Totals) angegeben, um die Gesamtwahrscheinlichkeiten der einzelnen Ereignisse zu verdeutlichen.  &lt;br /&gt;
&lt;br /&gt;
== Aufbau einer Vierfeldertafel ==  &lt;br /&gt;
Eine Vierfeldertafel hat bezüglich relativer Wahrscheinlichkeiten standardmäßig folgende Struktur:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|               || &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;       || &amp;lt;math&amp;gt;\overline{B}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\sum&amp;lt;/math&amp;gt;  &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;         || &amp;lt;math&amp;gt;P(A \cap B)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;P(A \cap \overline{B})&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;P(A)&amp;lt;/math&amp;gt;  &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;\overline{A}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;P(\overline{A} \cap B)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;P(\overline{A} \cap \overline{B})&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;P(\overline{A})&amp;lt;/math&amp;gt;  &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;\sum&amp;lt;/math&amp;gt;     || &amp;lt;math&amp;gt;P(B)&amp;lt;/math&amp;gt;    || &amp;lt;math&amp;gt;P(\overline{B})&amp;lt;/math&amp;gt; || &#039;&#039;&#039;1&#039;&#039;&#039;  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Randwahrscheinlichkeiten ergeben sich stets aus der Summe der jeweiligen Zeilen oder Spalten. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prüfungshinweis:&#039;&#039; Neben Wahrscheinlichkeiten können in eine Vierfeldertafel auch &#039;&#039;&#039;absolute Häufigkeiten&#039;&#039;&#039; (z. B. konkrete Personenanzahlen) eingetragen werden. In diesem Fall steht im Feld rechts unten nicht die `1`, sondern die Gesamtgröße der Stichprobe (z. B. 10.000 Personen). Wahrscheinlichkeiten und absolute Zahlen dürfen innerhalb einer Tabelle niemals gemischt werden!&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==  &lt;br /&gt;
&lt;br /&gt;
=== Medizinischer Test ===  &lt;br /&gt;
[[Datei:VierfeldertafelBaumdiagrammMedizinischerTest.png|mini|[[Baumdiagramm_(Wahrscheinlichkeitsrechnung)|Baumdiagramm]] zum Beispiel - Medizinischer Test]]&lt;br /&gt;
&lt;br /&gt;
Ein medizinischer Test weist eine Krankheit mit einer Wahrscheinlichkeit von 95 % richtig nach (Sensitivität). Gesunde Personen werden mit einer Wahrscheinlichkeit von 90 % korrekterweise als gesund erkannt (Spezifität). In der Bevölkerung haben 2 % der Menschen diese Krankheit (Prävalenz).  &lt;br /&gt;
&lt;br /&gt;
Überträgt man diese Werte über die 1. Pfadregel in die Vierfeldertafel, sieht diese wie folgt aus:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|               || &#039;&#039;&#039;Test positiv (&amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;)&#039;&#039;&#039; || &#039;&#039;&#039;Test negativ (&amp;lt;math&amp;gt;\overline{T}&amp;lt;/math&amp;gt;)&#039;&#039;&#039; || &#039;&#039;&#039;Total&#039;&#039;&#039;  &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Krank (&amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;)&#039;&#039;&#039; || &amp;lt;math&amp;gt;0,02 \cdot 0,95 =&amp;lt;/math&amp;gt; &#039;&#039;&#039;0,019&#039;&#039;&#039; || &amp;lt;math&amp;gt;0,02 \cdot 0,05 =&amp;lt;/math&amp;gt; &#039;&#039;&#039;0,001&#039;&#039;&#039; || &#039;&#039;&#039;0,02&#039;&#039;&#039;  &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Gesund (&amp;lt;math&amp;gt;\overline{K}&amp;lt;/math&amp;gt;)&#039;&#039;&#039; || &amp;lt;math&amp;gt;0,98 \cdot 0,10 =&amp;lt;/math&amp;gt; &#039;&#039;&#039;0,098&#039;&#039;&#039; || &amp;lt;math&amp;gt;0,98 \cdot 0,90 =&amp;lt;/math&amp;gt; &#039;&#039;&#039;0,882&#039;&#039;&#039; || &#039;&#039;&#039;0,98&#039;&#039;&#039;  &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Total&#039;&#039;&#039;     || &#039;&#039;&#039;0,117&#039;&#039;&#039;             || &#039;&#039;&#039;0,883&#039;&#039;&#039;                          || &#039;&#039;&#039;1&#039;&#039;&#039;  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Formale Berechnungen (aus der Tabelle abgeleitet):&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
Wahrscheinlichkeit, dass eine Person krank ist &#039;&#039;&#039;und&#039;&#039;&#039; positiv getestet wird (Schnittmenge): &lt;br /&gt;
:&amp;lt;math&amp;gt;P(K \cap T) = P(K) \cdot P_K(T) = 0,02 \cdot 0,95 = 0,019&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Totale Wahrscheinlichkeit, dass der Test (ungeachtet des Gesundheitszustands) positiv ausfällt (Spaltensumme):&lt;br /&gt;
:&amp;lt;math&amp;gt;P(T) = P(K \cap T) + P(\overline{K} \cap T) = 0,019 + 0,098 = 0,117&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
[[Bedingte Wahrscheinlichkeit]], dass eine Person &#039;&#039;&#039;tatsächlich krank&#039;&#039;&#039; ist, unter der Vorbedingung, dass der Test positiv ist:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P_T(K) = \frac{P(K \cap T)}{P(T)} = \frac{0,019}{0,117} \approx 0,1624 \approx 16,2\,\%&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]] &lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Bedingte_Wahrscheinlichkeit&amp;diff=2880</id>
		<title>Bedingte Wahrscheinlichkeit</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Bedingte_Wahrscheinlichkeit&amp;diff=2880"/>
		<updated>2026-05-27T07:43:15Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
Die &#039;&#039;&#039;bedingte Wahrscheinlichkeit&#039;&#039;&#039; &amp;lt;math&amp;gt;P_B(A)&amp;lt;/math&amp;gt; bzw. &amp;lt;math&amp;gt;P(A|B)&amp;lt;/math&amp;gt; beschreibt die Wahrscheinlichkeit eines [[Zufallsexperiment#Ereignis|Ereignisses]] &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; unter der Voraussetzung, dass ein anderes Ereignis &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; bereits eingetreten ist. Wir sagen auch &amp;quot;Wahrscheinlichkeit von A unter der Bedingung B&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Es seien &amp;lt;math&amp;gt;A, B&amp;lt;/math&amp;gt; Ereignisse mit &amp;lt;math&amp;gt;P(B) &amp;gt; 0&amp;lt;/math&amp;gt;, dann gilt:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{P(A \cap B)}{P(B)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stochastische Unabhängigkeit ==&lt;br /&gt;
Zwei Ereignisse &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; heißen &#039;&#039;&#039;stochastisch unabhängig&#039;&#039;&#039;, wenn&lt;br /&gt;
:&amp;lt;math&amp;gt;P(A \cap B) = P(A) \cdot P(B)&amp;lt;/math&amp;gt;&lt;br /&gt;
gilt.&lt;br /&gt;
&lt;br /&gt;
Dies bedeutet, dass das Eintreten von &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; die Wahrscheinlichkeit von &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; nicht beeinflusst. Für bedingte Wahrscheinlichkeiten bei stochastisch unabhängigen Ereignissen gilt demnach (vorausgesetzt die Wahrscheinlichkeiten sind größer als 0):&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = P(A)&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;P_A(B) = P(B)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang mit der Vierfeldertafel ==&lt;br /&gt;
Die [[Vierfeldertafel]] eignet sich besonders gut zur Veranschaulichung bedingter Wahrscheinlichkeiten und zur Überprüfung auf stochastische Unabhängigkeit. &lt;br /&gt;
&lt;br /&gt;
Hierbei stehen die Variablen &amp;lt;math&amp;gt;a, b, c, d&amp;lt;/math&amp;gt; für die Wahrscheinlichkeiten der jeweiligen Schnittmengen (z. B. &amp;lt;math&amp;gt;a = P(A \cap B)&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|               || &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;       || &amp;lt;math&amp;gt;\bar{B}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\sum&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;       || &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;a+b&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;\bar{A}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;c+d&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;\sum&amp;lt;/math&amp;gt;    || &amp;lt;math&amp;gt;a+c&amp;lt;/math&amp;gt;    || &amp;lt;math&amp;gt;b+d&amp;lt;/math&amp;gt; || &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die bedingte Wahrscheinlichkeit &amp;lt;math&amp;gt;P_B(A)&amp;lt;/math&amp;gt; lässt sich dann direkt aus der Tafel ablesen und berechnen durch:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{a}{a+c}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Satz von Bayes ==&lt;br /&gt;
Es seien &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; Ereignisse mit &amp;lt;math&amp;gt;P(B) &amp;gt; 0&amp;lt;/math&amp;gt;. Die Wahrscheinlichkeiten &amp;lt;math&amp;gt;P_A(B)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P(A)&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;P(\bar{A})&amp;lt;/math&amp;gt; seien gegeben. Die Wahrscheinlichkeit von &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; unter der Bedingung &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; wird dann durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{P_A(B) \cdot P(A)}{P(B)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
berechnet. Oftmals ist &amp;lt;math&amp;gt;P(B)&amp;lt;/math&amp;gt; nicht direkt gegeben und muss über das Gesetz der totalen Wahrscheinlichkeit (die Pfadadditionsregel im Baumdiagramm) ermittelt werden. Die erweiterte Formel lautet dann:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{P_A(B) \cdot P(A)}{P_A(B) \cdot P(A) + P_{\bar{A}}(B) \cdot P(\bar{A})}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Medizinischer Test (mit Vierfeldertafel) ===&lt;br /&gt;
Fortsetzung des Beispiels aus der [[Vierfeldertafel#Medizinischer_Test|Vierfeldertafel]]:&lt;br /&gt;
* Sensitivität &amp;lt;math&amp;gt;P_K(T) = 0,95&amp;lt;/math&amp;gt;&lt;br /&gt;
* Spezifität &amp;lt;math&amp;gt;P_{\bar{K}}(\bar{T}) = 0,90&amp;lt;/math&amp;gt;&lt;br /&gt;
* Prävalenz (Krankheitsrate) &amp;lt;math&amp;gt;P(K) = 0,02&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Wahrscheinlichkeit krank zu sein bei positivem Test ist eine bedingte Wahrscheinlichkeit:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_T(K) = \frac{P(K \cap T)}{P(T)} = \frac{0,019}{0,117} \approx 16,2\%&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative Berechnung direkt mit dem &#039;&#039;&#039;Satz von Bayes&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Zuerst berechnen wir &amp;lt;math&amp;gt;P(T)&amp;lt;/math&amp;gt; über die totale Wahrscheinlichkeit:&lt;br /&gt;
:&amp;lt;math&amp;gt;P(T) = P_K(T) \cdot P(K) + P_{\bar{K}}(T) \cdot P(\bar{K})&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(T) = 0,95 \cdot 0,02 + (1 - 0,90) \cdot 0,98 = 0,019 + 0,098 = 0,117&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun wenden wir den Satz von Bayes an:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_T(K) = \frac{P_K(T) \cdot P(K)}{P(T)} = \frac{0,95 \cdot 0,02}{0,117} \approx 0,162&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interpretation:&#039;&#039;&#039; Trotz eines positiven Testergebnisses beträgt die Wahrscheinlichkeit, tatsächlich krank zu sein, nur etwa 16,2 % – dies liegt an der niedrigen Prävalenz (seltene Krankheit) in Kombination mit der Fehlerquote des Tests.&lt;br /&gt;
&lt;br /&gt;
=== Würfelbeispiel zur stochastischen Unabhängigkeit ===&lt;br /&gt;
Betrachtet man zwei Ereignisse bei einem fairen sechsseitigen Würfel:&lt;br /&gt;
* A: &amp;quot;Gerade Zahl&amp;quot; = {2,4,6} → &amp;lt;math&amp;gt;P(A) = \frac{3}{6} = \frac{1}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
* B: &amp;quot;Zahl &amp;gt; 3&amp;quot; = {4,5,6} → &amp;lt;math&amp;gt;P(B) = \frac{3}{6} = \frac{1}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schnittmenge: &amp;lt;math&amp;gt;A \cap B&amp;lt;/math&amp;gt; = {4,6} → &amp;lt;math&amp;gt;P(A \cap B) = \frac{2}{6} = \frac{1}{3}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir prüfen auf stochastische Unabhängigkeit:&lt;br /&gt;
:&amp;lt;math&amp;gt;P(A) \cdot P(B) = \frac{1}{2} \cdot \frac{1}{2} = \frac{1}{4}&amp;lt;/math&amp;gt;&lt;br /&gt;
Da &amp;lt;math&amp;gt;\frac{1}{4} \neq \frac{1}{3}&amp;lt;/math&amp;gt;, sind die Ereignisse &#039;&#039;&#039;nicht&#039;&#039;&#039; stochastisch unabhängig.&lt;br /&gt;
&lt;br /&gt;
Die bedingte Wahrscheinlichkeit berechnet sich zu:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{P(A \cap B)}{P(B)} = \frac{1/3}{1/2} = \frac{2}{3} \approx 66,7\%&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Münzwurfbeispiel zur stochastischen Unabhängigkeit ===&lt;br /&gt;
Bei zwei Münzwürfen:&lt;br /&gt;
* A: &amp;quot;Erster Wurf Kopf&amp;quot; → &amp;lt;math&amp;gt;P(A) = 0,5&amp;lt;/math&amp;gt;&lt;br /&gt;
* B: &amp;quot;Zweiter Wurf Zahl&amp;quot; → &amp;lt;math&amp;gt;P(B) = 0,5&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da die Würfe voneinander unabhängig sind, gilt für die Schnittmenge:&lt;br /&gt;
:&amp;lt;math&amp;gt;P(A \cap B) = P(A) \cdot P(B) = 0,5 \cdot 0,5 = 0,25&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die bedingte Wahrscheinlichkeit ergibt entsprechend:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{P(A \cap B)}{P(B)} = \frac{0,25}{0,5} = 0,5 = P(A)&amp;lt;/math&amp;gt; &lt;br /&gt;
(Dies ist das zu erwartende Resultat bei stochastischer Unabhängigkeit, da Vorwissen B das Eintreten von A nicht beeinflusst).&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2879</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2879"/>
		<updated>2026-05-26T06:52:23Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/F7omRJUFg6w?si=wJZEx2jRBw-2FblK&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,018 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis noch im Annahmebereich. Die Wahrscheinlichkeit, 3 oder mehr fehlerhafte Teile zu finden, ist mit knapp 7,8 % größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Eine Münze wird &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich.&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,077 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;. Damit fällt das Ergebnis in den Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es extrem ungewöhnlich (Wahrscheinlichkeit von ca. 4 %), höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich. &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,184 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe sind 2 Lampen ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 2) \approx 0,411 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis im Annahmebereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es mit einer Wahrscheinlichkeit von ca. 41,1 % überhaupt nicht ungewöhnlich, höchstens 2 ausgefalle Lampen zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2878</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2878"/>
		<updated>2026-05-26T06:52:17Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/F7omRJUFg6w?si=wJZEx2jRBw-2FblK&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,018 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis noch im Annahmebereich. Die Wahrscheinlichkeit, 3 oder mehr fehlerhafte Teile zu finden, ist mit knapp 7,8 % größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Eine Münze wird &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich.&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,077 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;. Damit fällt das Ergebnis in den Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es extrem ungewöhnlich (Wahrscheinlichkeit von ca. 4 %), höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich. &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,184 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe sind 2 Lampen ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 2) \approx 0,411 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis im Annahmebereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es mit einer Wahrscheinlichkeit von ca. 41,1 % überhaupt nicht ungewöhnlich, höchstens 2 ausgefalle Lampen zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2877</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2877"/>
		<updated>2026-05-22T07:08:36Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Spezifikation und Dokumentation von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (engl. &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) ist ein elementares Verhaltensdiagramm der UML.&lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase (Requirements Engineering) die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um barrierefrei zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklungsteam) zu vermitteln. Als strukturierte funktionale Anforderungsbeschreibung sind Anwendungsfalldiagramme ein fester Bestandteil des &#039;&#039;&#039;Lastenhefts&#039;&#039;&#039; und bilden die primäre Grundlage für das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie identifizieren die externen Benutzer oder Systeme, die mit dem System interagieren. Jeder Akteur repräsentiert eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; und keine konkrete Person.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben die vom System angebotenen Funktionalitäten und Aufgaben, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert erzeugen.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Sie definieren die Kommunikationspfade zwischen Akteuren und Anwendungsfällen sowie die strukturellen Abhängigkeiten der Anwendungsfälle untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Ein Anwendungsfalldiagramm bildet &#039;&#039;&#039;keine&#039;&#039;&#039; zeitlichen, logischen oder prozessualen Abläufe ab. Für die Modellierung von Kontrollflüssen und sequentiellen Prozessen sind stattdessen UML-Aktivitätendiagramme oder Sequenzdiagramme zu verwenden.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Funktionseinheiten innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. Der Rahmen grenzt das zu entwickelnde System strikt von seiner Umwelt ab: Akteure stehen als externe Entitäten immer außerhalb des Systems, während die Anwendungsfälle die interne Funktionalität definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel eines Use-Case-Diagramms mit Systemgrenze, Akteuren und verknüpften Beziehungen]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der methodische Aufbau eines standardkonformen Anwendungsfalldiagramms folgt drei sequentiellen Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Es wird festgelegt, welche unterschiedlichen Rollen das System nutzen werden. Menschliche Rollen werden grafisch als Strichmännchen dargestellt, externe Software- oder Hardwaresysteme als Rechtecke mit dem Stereotyp &amp;lt;code&amp;gt;«system»&amp;lt;/code&amp;gt;. Jeder Akteur muss einen eindeutigen, selbsterklärenden Namen im Singular erhalten (z. B. &#039;&#039;Kunde&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Allgemeine Bezeichnungen wie „User“ oder „Akteur“ sind zu vermeiden, da sie für fast jedes Softwaresystem gültig sind und keine spezifische Rolle beschreiben.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Es wird geklärt, welche fachlichen Ziele das System erfüllen muss. Anwendungsfälle werden als horizontale Ellipsen dargestellt, die eine kurze Inhaltsbeschreibung enthalten. Die Formulierung muss kurz, aussagekräftig und im Infinitiv bzw. im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; erfolgen (z. B. &#039;&#039;Artikel suchen&#039;&#039;, &#039;&#039;Passwort zurücksetzen&#039;&#039;).&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im letzten Schritt werden die Akteure und Anwendungsfälle über strukturierte Beziehungslinien miteinander verbunden, um die Interaktionskanäle visuell zu definieren.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen bilden die grundlegenden Kommunikationspfade zwischen Akteuren und Use Cases. Eine Assoziation signalisiert, dass der verknüpfte Akteur die Aktion des Use Cases ausführen oder mit diesem interagieren kann. Es handelt sich um eine binäre Beziehung, die exakt zwei Elemente miteinander verbindet. Ein einzelner Use Case darf mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als einfache, durchgehende Linie dargestellt. Sie stellt die offenste Form der Interaktion dar und signalisiert einen bidirektionalen Informationsfluss, lässt jedoch die Richtung der Initiierung (wer die Aktion startet) offen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Ungerichtete Assoziation als einfache Verbindungslinie]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Eine gerichtete Assoziation verwendet eine offene Pfeilspitze, um die Navigierbarkeit und den Initiator des Prozesses eindeutig festzulegen. &lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Use Case gerichtet&#039;&#039;&#039; ist, besagt, dass der Akteur den Anwendungsfall aktiv initiiert.&lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Akteur zeigt&#039;&#039;&#039;, besagt, dass der Use Case (bzw. das System) die Interaktion zum Akteur hin anstößt (häufig bei sekundären Systemen oder Benachrichtigungsdiensten).&lt;br /&gt;
* Können beide Seiten die Aktion unabhängig voneinander initiieren, werden die Pfeile weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Gerichtete Assoziation mit Pfeil zur Kennzeichnung des Initiators]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs mit wie vielen Instanzen eines Anwendungsfalls in einer konkreten Systeminteraktion in Beziehung stehen können. Sie werden direkt an den Enden der Assoziationslinien notiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Modellierung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten des Beispiels sind gemeldet nach UML-Standard wie folgt zu interpretieren:&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; (beliebig viele) definiert (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede Spielerin kann jedoch zeitgleich an exakt einem Rundlauf-Spiel teilnehmen (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (Notation: &amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann wiederum an höchstens einem Rundlaufspiel aktiv beteiligt sein (Notation: &amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis für die Praxis:&#039;&#039; Da diese Detailinformationen die Adressaten eines Use-Case-Diagramms häufig überfordern, werden Multiplizitäten hier selten notiert. Ihre zentrale und fundamentale Bedeutung entfalten sie im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes (Inklusion) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Include-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;beinhalten&#039;&#039; oder &#039;&#039;einschließen&#039;&#039;) beschreibt eine zwingende Abhängigkeit zur Vermeidung von funktionaler Redundanz (Wiederverwendung von Use Cases). &lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; gekennzeichnet ist. Der Pfeil startet immer beim &#039;&#039;&#039;Basis-Use-Case und zeigt in Richtung des zu inkludierenden Use Cases&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der inkludierte Anwendungsfall wird &#039;&#039;&#039;immer (zu 100 %)&#039;&#039;&#039; ausgeführt, sobald der Basis-Anwendungsfall aufgerufen wird. Der Basis-Use-Case ist ohne das Inkludat funktional unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Zwingende Include-Beziehung zur Auslagerung gemeinsamer Funktionalitäten]]&lt;br /&gt;
&lt;br /&gt;
=== Extend (Erweiterung) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Extend-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;erweitern&#039;&#039;) beschreibt ein &#039;&#039;&#039;optionales&#039;&#039;&#039; Verhalten, das den Basis-Use-Case nur unter ganz bestimmten Bedingungen ergänzt.&lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt; gekennzeichnet ist. Die Pfeilrichtung verhält sich umgekehrt zum Include: Der Pfeil startet beim &#039;&#039;&#039;Extension-Use-Case (Erweiterung) und zeigt in Richtung des Basis-Use-Cases&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Der Basis-Use-Case deklariert sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;, die den präzisen Ort innerhalb des Ablaufs definieren, an dem die Erweiterung eingreifen darf. Grafisch wird hierzu in der Ellipse des Basis-Use-Cases eine horizontale Trennlinie eingezogen, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points:&amp;lt;/code&amp;gt; gefolgt von den Namen der Punkte steht.&lt;br /&gt;
&lt;br /&gt;
Optional wird an die Extend-Linie über eine fein gestrichelte Linie ein UML-Notizsymbol angeheftet. Dieses enthält das Schlüsselwort &amp;lt;code&amp;gt;Condition:&amp;lt;/code&amp;gt; gefolgt von der logischen Bedingung in geschweiften Klammern &amp;lt;code&amp;gt;{...}&amp;lt;/code&amp;gt; sowie den Verweis auf den zugehörigen Erweiterungspunkt.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der Basis-Use-Case ist auch ohne die Erweiterung vollkommen autark lauffähig. Der Extension-Use-Case wird nur dann ausgeführt, wenn die definierte Bedingung am Erweiterungspunkt wahr (true) ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Optionale Extend-Beziehung mit expliziten Extension Points und Notizfeld für die Bedingung (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Zwischen Akteuren untereinander sowie zwischen Anwendungsfällen untereinander kann eine Generalisierungsbeziehung existieren. Sie modelliert eine klassische &#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;, analog zur Vererbung in der objektorientierten Programmierung.&lt;br /&gt;
&lt;br /&gt;
Die Generalisierung wird grafisch durch eine durchgehende Linie mit einer &#039;&#039;&#039;geschlossenen, hohlen Dreieckspfeilspitze&#039;&#039;&#039; dargestellt. Der Pfeil zeigt immer &#039;&#039;&#039;vom spezialisierten Element (Unterklasse) zum allgemeinen Element (Oberklasse)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Strukturelle Generalisierung zwischen Akteuren oder Funktionseinheiten]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Im Beispiel ist der Akteur &#039;&#039;Fahrer&#039;&#039; eine Spezialisierung von &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt bedingungslos alle Fähigkeiten, Use Cases und Attribute des allgemeinen Anwenders (z. B. Stammdaten und die Interaktion mit dem Use Case &#039;&#039;Login durchführen&#039;&#039;), konkretisiert oder erweitert diese Rolle jedoch um spezifische Eigenschaften.&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Anwendungsfällen:&#039;&#039;&#039; Ein abstrakter Anwendungsfall wie &#039;&#039;„Medium brennen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„CD brennen“&#039;&#039; oder &#039;&#039;„DVD brennen“&#039;&#039; geerbt und ausdifferenziert werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2876</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2876"/>
		<updated>2026-05-22T07:08:07Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Spezifikation und Dokumentation von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (engl. &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) ist ein elementares Verhaltensdiagramm der UML.&lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase (Requirements Engineering) die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um barrierefrei zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklungsteam) zu vermitteln. Als strukturierte funktionale Anforderungsbeschreibung sind Anwendungsfalldiagramme ein fester Bestandteil des &#039;&#039;&#039;Lastenhefts&#039;&#039;&#039; und bilden die primäre Grundlage für das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie identifizieren die externen Benutzer oder Systeme, die mit dem System interagieren. Jeder Akteur repräsentiert eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; und keine konkrete Person.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben die vom System angebotenen Funktionalitäten und Aufgaben, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert erzeugen.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Sie definieren die Kommunikationspfade zwischen Akteuren und Anwendungsfällen sowie die strukturellen Abhängigkeiten der Anwendungsfälle untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Ein Anwendungsfalldiagramm bildet &#039;&#039;&#039;keine&#039;&#039;&#039; zeitlichen, logischen oder prozessualen Abläufe ab. Für die Modellierung von Kontrollflüssen und sequentiellen Prozessen sind stattdessen UML-Aktivitätendiagramme oder Sequenzdiagramme zu verwenden.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Funktionseinheiten innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. Der Rahmen grenzt das zu entwickelnde System strikt von seiner Umwelt ab: Akteure stehen als externe Entitäten immer außerhalb des Systems, während die Anwendungsfälle die interne Funktionalität definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel eines Use-Case-Diagramms mit Systemgrenze, Akteuren und verknüpften Beziehungen]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der methodische Aufbau eines standardkonformen Anwendungsfalldiagramms folgt drei sequentiellen Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Es wird festgelegt, welche unterschiedlichen Rollen das System nutzen werden. Menschliche Rollen werden grafisch als Strichmännchen dargestellt, externe Software- oder Hardwaresysteme als Rechtecke mit dem Stereotyp &amp;lt;code&amp;gt;«system»&amp;lt;/code&amp;gt;. Jeder Akteur muss einen eindeutigen, selbsterklärenden Namen im Singular erhalten (z. B. &#039;&#039;Kunde&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Allgemeine Bezeichnungen wie „User“ oder „Akteur“ sind zu vermeiden, da sie für fast jedes Softwaresystem gültig sind und keine spezifische Rolle beschreiben.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Es wird geklärt, welche fachlichen Ziele das System erfüllen muss. Anwendungsfälle werden als horizontale Ellipsen dargestellt, die eine kurze Inhaltsbeschreibung enthalten. Die Formulierung muss kurz, aussagekräftig und im Infinitiv bzw. im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; erfolgen (z. B. &#039;&#039;Artikel suchen&#039;&#039;, &#039;&#039;Passwort zurücksetzen&#039;&#039;).&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im letzten Schritt werden die Akteure und Anwendungsfälle über strukturierte Beziehungslinien miteinander verbunden, um die Interaktionskanäle visuell zu definieren.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen bilden die grundlegenden Kommunikationspfade zwischen Akteuren und Use Cases. Eine Assoziation signalisiert, dass der verknüpfte Akteur die Aktion des Use Cases ausführen oder mit diesem interagieren kann. Es handelt sich um eine binäre Beziehung, die exakt zwei Elemente miteinander verbindet. Ein einzelner Use Case darf mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als einfache, durchgehende Linie dargestellt. Sie stellt die offenste Form der Interaktion dar und signalisiert einen bidirektionalen Informationsfluss, lässt jedoch die Richtung der Initiierung (wer die Aktion startet) offen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Ungerichtete Assoziation als einfache Verbindungslinie]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Eine gerichtete Assoziation verwendet eine offene Pfeilspitze, um die Navigierbarkeit und den Initiator des Prozesses eindeutig festzulegen. &lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Use Case gerichtet&#039;&#039;&#039; ist, besagt, dass der Akteur den Anwendungsfall aktiv initiiert.&lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Akteur zeigt&#039;&#039;&#039;, besagt, dass der Use Case (bzw. das System) die Interaktion zum Akteur hin anstößt (häufig bei sekundären Systemen oder Benachrichtigungsdiensten).&lt;br /&gt;
* Können beide Seiten die Aktion unabhängig voneinander initiieren, werden die Pfeile weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Gerichtete Assoziation mit Pfeil zur Kennzeichnung des Initiators]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs mit wie vielen Instanzen eines Anwendungsfalls in einer konkreten Systeminteraktion in Beziehung stehen können. Sie werden direkt an den Enden der Assoziationslinien notiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Modellierung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten des Beispiels sind gemeldet nach UML-Standard wie folgt zu interpretieren:&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; (beliebig viele) definiert (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede Spielerin kann jedoch zeitgleich an exakt einem Rundlauf-Spiel teilnehmen (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (Notation: &amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann wiederum an höchstens einem Rundlaufspiel aktiv beteiligt sein (Notation: &amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis für die Praxis:&#039;&#039; Da diese Detailinformationen die Adressaten eines Use-Case-Diagramms häufig überfordern, werden Multiplizitäten hier selten notiert. Ihre zentrale und fundamentale Bedeutung entfalten sie im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes (Inklusion) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Include-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;beinhalten&#039;&#039; oder &#039;&#039;einschließen&#039;&#039;) beschreibt eine zwingende Abhängigkeit zur Vermeidung von funktionaler Redundanz (Wiederverwendung von Use Cases). &lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; gekennzeichnet ist. Der Pfeil startet immer beim &#039;&#039;&#039;Basis-Use-Case und zeigt in Richtung des zu inkludierenden Use Cases&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der inkludierte Anwendungsfall wird &#039;&#039;&#039;immer (zu 100 %)&#039;&#039;&#039; ausgeführt, sobald der Basis-Anwendungsfall aufgerufen wird. Der Basis-Use-Case ist ohne das Inkludat funktional unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Zwingende Include-Beziehung zur Auslagerung gemeinsamer Funktionalitäten]]&lt;br /&gt;
&lt;br /&gt;
=== Extend (Erweiterung) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Extend-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;erweitern&#039;&#039;) beschreibt ein &#039;&#039;&#039;optionales&#039;&#039;&#039; Verhalten, das den Basis-Use-Case nur unter ganz bestimmten Bedingungen ergänzt.&lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt; gekennzeichnet ist. Die Pfeilrichtung verhält sich umgekehrt zum Include: Der Pfeil startet beim &#039;&#039;&#039;Extension-Use-Case (Erweiterung) und zeigt in Richtung des Basis-Use-Cases&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Der Basis-Use-Case deklariert sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;, die den präzisen Ort innerhalb des Ablaufs definieren, an dem die Erweiterung eingreifen darf. Grafisch wird hierzu in der Ellipse des Basis-Use-Cases eine horizontale Trennlinie eingezogen, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points:&amp;lt;/code&amp;gt; gefolgt von den Namen der Punkte steht.&lt;br /&gt;
&lt;br /&gt;
Optional wird an die Extend-Linie über eine fein gestrichelte Linie ein UML-Notizsymbol angeheftet. Dieses enthält das Schlüsselwort &amp;lt;code&amp;gt;Condition:&amp;lt;/code&amp;gt; gefolgt von der logischen Bedingung in geschweiften Klammern &amp;lt;code&amp;gt;{...}&amp;lt;/code&amp;gt; sowie den Verweis auf den zugehörigen Erweiterungspunkt.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der Basis-Use-Case ist auch ohne die Erweiterung vollkommen autark lauffähig. Der Extension-Use-Case wird nur dann ausgeführt, wenn die definierte Bedingung am Erweiterungspunkt wahr (true) ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Optionale Extend-Beziehung mit expliziten Extension Points und Notizfeld für die Bedingung (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Zwischen Akteuren untereinander sowie zwischen Anwendungsfällen untereinander kann eine Generalisierungsbeziehung existieren. Sie modelliert eine klassische &#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;, analog zur Vererbung in der objektorientierten Programmierung.&lt;br /&gt;
&lt;br /&gt;
Die Generalisierung wird grafisch durch eine durchgehende Linie mit einer &#039;&#039;&#039;geschlossenen, hohlen Dreieckspfeilspitze&#039;&#039;&#039; dargestellt. Der Pfeil zeigt immer &#039;&#039;&#039;vom spezialisierten Element (Unterklasse) zum allgemeinen Element (Oberklasse)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Strukturelle Generalisierung zwischen Akteuren oder Funktionseinheiten]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Im Beispiel ist der Akteur &#039;&#039;Fahrer&#039;&#039; eine Spezialisierung von &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt bedingungslos alle Fähigkeiten, Use Cases und Attribute des allgemeinen Anwenders (z. B. Stammdaten und die Interaktion mit dem Use Case &#039;&#039;Login durchführen&#039;&#039;), konkretisiert oder erweitert diese Rolle jedoch um spezifische Eigenschaften.&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Anwendungsfällen:&#039;&#039;&#039; Ein abstrakter Anwendungsfall wie &#039;&#039;„Medium brennen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„CD brennen“&#039;&#039; oder &#039;&#039;„DVD brennen“&#039;&#039; geerbt und ausdifferenziert werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2875</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2875"/>
		<updated>2026-05-22T06:47:37Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Spezifikation und Dokumentation von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (engl. &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) ist ein elementares Verhaltensdiagramm der UML.&lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase (Requirements Engineering) die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um barrierefrei zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklungsteam) zu vermitteln. Als strukturierte funktionale Anforderungsbeschreibung sind Anwendungsfalldiagramme ein fester Bestandteil des &#039;&#039;&#039;Lastenhefts&#039;&#039;&#039; und bilden die primäre Grundlage für das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie identifizieren die externen Benutzer oder Systeme, die mit dem System interagieren. Jeder Akteur repräsentiert eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; und keine konkrete Person.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben die vom System angebotenen Funktionalitäten und Aufgaben, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert erzeugen.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Sie definieren die Kommunikationspfade zwischen Akteuren und Anwendungsfällen sowie die strukturellen Abhängigkeiten der Anwendungsfälle untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Ein Anwendungsfalldiagramm bildet &#039;&#039;&#039;keine&#039;&#039;&#039; zeitlichen, logischen oder prozessualen Abläufe ab. Für die Modellierung von Kontrollflüssen und sequentiellen Prozessen sind stattdessen UML-Aktivitätendiagramme oder Sequenzdiagramme zu verwenden.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Funktionseinheiten innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. Der Rahmen grenzt das zu entwickelnde System strikt von seiner Umwelt ab: Akteure stehen als externe Entitäten immer außerhalb des Systems, während die Anwendungsfälle die interne Funktionalität definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel eines Use-Case-Diagramms mit Systemgrenze, Akteuren und verknüpften Beziehungen]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der methodische Aufbau eines standardkonformen Anwendungsfalldiagramms folgt drei sequentiellen Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Es wird festgelegt, welche unterschiedlichen Rollen das System nutzen werden. Menschliche Rollen werden grafisch als Strichmännchen dargestellt, externe Software- oder Hardwaresysteme als Rechtecke mit dem Stereotyp &amp;lt;code&amp;gt;«system»&amp;lt;/code&amp;gt;. Jeder Akteur muss einen eindeutigen, selbsterklärenden Namen im Singular erhalten (z. B. &#039;&#039;Kunde&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Allgemeine Bezeichnungen wie „User“ oder „Akteur“ sind zu vermeiden, da sie für fast jedes Softwaresystem gültig sind und keine spezifische Rolle beschreiben.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Es wird geklärt, welche fachlichen Ziele das System erfüllen muss. Anwendungsfälle werden als horizontale Ellipsen dargestellt, die eine kurze Inhaltsbeschreibung enthalten. Die Formulierung muss kurz, aussagekräftig und im Infinitiv bzw. im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; erfolgen (z. B. &#039;&#039;Artikel suchen&#039;&#039;, &#039;&#039;Passwort zurücksetzen&#039;&#039;).&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im letzten Schritt werden die Akteure und Anwendungsfälle über strukturierte Beziehungslinien miteinander verbunden, um die Interaktionskanäle visuell zu definieren.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen bilden die grundlegenden Kommunikationspfade zwischen Akteuren und Use Cases. Eine Assoziation signalisiert, dass der verknüpfte Akteur die Aktion des Use Cases ausführen oder mit diesem interagieren kann. Es handelt sich um eine binäre Beziehung, die exakt zwei Elemente miteinander verbindet. Ein einzelner Use Case darf mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als einfache, durchgehende Linie dargestellt. Sie stellt die offenste Form der Interaktion dar und signalisiert einen bidirektionalen Informationsfluss, lässt jedoch die Richtung der Initiierung (wer die Aktion startet) offen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Ungerichtete Assoziation als einfache Verbindungslinie]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Eine gerichtete Assoziation verwendet eine offene Pfeilspitze, um die Navigierbarkeit und den Initiator des Prozesses eindeutig festzulegen. &lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Use Case gerichtet&#039;&#039;&#039; ist, besagt, dass der Akteur den Anwendungsfall aktiv initiiert.&lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Akteur zeigt&#039;&#039;&#039;, besagt, dass der Use Case (bzw. das System) die Interaktion zum Akteur hin anstößt (häufig bei sekundären Systemen oder Benachrichtigungsdiensten).&lt;br /&gt;
* Können beide Seiten die Aktion unabhängig voneinander initiieren, werden die Pfeile weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Gerichtete Assoziation mit Pfeil zur Kennzeichnung des Initiators]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs mit wie vielen Instanzen eines Anwendungsfalls in einer konkreten Systeminteraktion in Beziehung stehen können. Sie werden direkt an den Enden der Assoziationslinien notiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Modellierung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten des Beispiels sind gemeldet nach UML-Standard wie folgt zu interpretieren:&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; (beliebig viele) definiert (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede Spielerin kann jedoch zeitgleich an exakt einem Rundlauf-Spiel teilnehmen (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (Notation: &amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann wiederum an höchstens einem Rundlaufspiel aktiv beteiligt sein (Notation: &amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis für die Praxis:&#039;&#039; Da diese Detailinformationen die Adressaten eines Use-Case-Diagramms häufig überfordern, werden Multiplizitäten hier selten notiert. Ihre zentrale und fundamentale Bedeutung entfalten sie im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes (Inklusion) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Include-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;beinhalten&#039;&#039; oder &#039;&#039;einschließen&#039;&#039;) beschreibt eine zwingende Abhängigkeit zur Vermeidung von funktionaler Redundanz (Wiederverwendung von Use Cases). &lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; gekennzeichnet ist. Der Pfeil startet immer beim &#039;&#039;&#039;Basis-Use-Case und zeigt in Richtung des zu inkludierenden Use Cases&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der inkludierte Anwendungsfall wird &#039;&#039;&#039;immer (zu 100 %)&#039;&#039;&#039; ausgeführt, sobald der Basis-Anwendungsfall aufgerufen wird. Der Basis-Use-Case ist ohne das Inkludat funktional unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Zwingende Include-Beziehung zur Auslagerung gemeinsamer Funktionalitäten]]&lt;br /&gt;
&lt;br /&gt;
=== Extend (Erweiterung) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Extend-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;erweitern&#039;&#039;) beschreibt ein &#039;&#039;&#039;optionales&#039;&#039;&#039; Verhalten, das den Basis-Use-Case nur unter ganz bestimmten Bedingungen ergänzt.&lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt; gekennzeichnet ist. Die Pfeilrichtung verhält sich umgekehrt zum Include: Der Pfeil startet beim &#039;&#039;&#039;Extension-Use-Case (Erweiterung) und zeigt in Richtung des Basis-Use-Cases&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Der Basis-Use-Case deklariert sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;, die den präzisen Ort innerhalb des Ablaufs definieren, an dem die Erweiterung eingreifen darf. Grafisch wird hierzu in der Ellipse des Basis-Use-Cases eine horizontale Trennlinie eingezogen, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points:&amp;lt;/code&amp;gt; gefolgt von den Namen der Punkte steht.&lt;br /&gt;
&lt;br /&gt;
Optional wird an die Extend-Linie über eine fein gestrichelte Linie ein UML-Notizsymbol angeheftet. Dieses enthält das Schlüsselwort &amp;lt;code&amp;gt;Condition:&amp;lt;/code&amp;gt; gefolgt von der logischen Bedingung in geschweiften Klammern &amp;lt;code&amp;gt;{...}&amp;lt;/code&amp;gt; sowie den Verweis auf den zugehörigen Erweiterungspunkt.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der Basis-Use-Case ist auch ohne die Erweiterung vollkommen autark lauffähig. Der Extension-Use-Case wird nur dann ausgeführt, wenn die definierte Bedingung am Erweiterungspunkt wahr (true) ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Optionale Extend-Beziehung mit expliziten Extension Points und Notizfeld für die Bedingung (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Zwischen Akteuren untereinander sowie zwischen Anwendungsfällen untereinander kann eine Generalisierungsbeziehung existieren. Sie modelliert eine klassische &#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;, analog zur Vererbung in der objektorientierten Programmierung.&lt;br /&gt;
&lt;br /&gt;
Die Generalisierung wird grafisch durch eine durchgehende Linie mit einer &#039;&#039;&#039;geschlossenen, hohlen Dreieckspfeilspitze&#039;&#039;&#039; dargestellt. Der Pfeil zeigt immer &#039;&#039;&#039;vom spezialisierten Element (Unterklasse) zum allgemeinen Element (Oberklasse)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Strukturelle Generalisierung zwischen Akteuren oder Funktionseinheiten]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Im Beispiel ist der Akteur &#039;&#039;Fahrer&#039;&#039; eine Spezialisierung von &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt bedingungslos alle Fähigkeiten, Use Cases und Attribute des allgemeinen Anwenders (z. B. Stammdaten und die Interaktion mit dem Use Case &#039;&#039;Login durchführen&#039;&#039;), konkretisiert oder erweitert diese Rolle jedoch um spezifische Eigenschaften.&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Anwendungsfällen:&#039;&#039;&#039; Ein abstrakter Anwendungsfall wie &#039;&#039;„Medium brennen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„CD brennen“&#039;&#039; oder &#039;&#039;„DVD brennen“&#039;&#039; geerbt und ausdifferenziert werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2874</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2874"/>
		<updated>2026-05-22T06:45:22Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Zielsetzung im Requirements Engineering */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung in die Use-Case-Modellierung ==&lt;br /&gt;
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Softwareteilen und anderen Systemen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (im englischsprachigen Raum &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) gehört zu den Verhaltensdiagrammen der UML.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung im Requirements Engineering ===&lt;br /&gt;
In der [[Softwareentwicklungsprozess|Analysephase]] (Anforderungsermittlung / Requirements Engineering) ist es das primäre Ziel des Anwendungsfalldiagramms, das geplante System aus der &#039;&#039;&#039;externen Beobachterperspektive&#039;&#039;&#039; zu beschreiben. Es modelliert das &amp;quot;Was&amp;quot; (welche Funktionen bietet das System?) und grenzt sich strikt vom &amp;quot;Wie&amp;quot; (wie werden diese Funktionen technisch umgesetzt?) ab. &lt;br /&gt;
&lt;br /&gt;
Es dient als zentrales Kommunikationsmittel zwischen:&lt;br /&gt;
* &#039;&#039;&#039;Auftraggebern / potenziellen Anwendern (Fachseite):&#039;&#039;&#039; Diese können das Diagramm ohne Programmierkenntnisse verstehen.&lt;br /&gt;
* &#039;&#039;&#039;Auftragnehmern (Entwicklerteam / Systemarchitekten):&#039;&#039;&#039; Für diese bildet das Diagramm die Grundlage für die Systemarchitektur.&lt;br /&gt;
&lt;br /&gt;
Daher fließen Anwendungsfalldiagramme als strukturierte Anforderungsbeschreibung in das &#039;&#039;&#039;Lastenheft&#039;&#039;&#039; (Forderungen des Auftraggebers) und später detailliert in das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039; (Umsetzungsvorgaben des Auftragnehmers) ein.&lt;br /&gt;
&lt;br /&gt;
=== Die drei Kernelemente ===&lt;br /&gt;
Das Diagramm besteht aus drei essenziellen Bausteinen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie repräsentieren externe Entitäten, die mit dem System interagieren. Wichtig: Ein Akteur ist immer eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; (z. B. &amp;quot;Kunde&amp;quot;), niemals eine konkrete Person (z. B. &amp;quot;Herr Müller&amp;quot;). Auch externe Fremdsysteme (wie ein Zahlungsanbieter) treten als Akteure auf.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben eine in sich abgeschlossene Aufgabe, die für den Akteur einen messbaren, fachlichen Mehrwert erzeugt.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Interaktionspfade zwischen Akteur und Anwendungsfall oder die Abhängigkeiten von Anwendungsfällen untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf (Kontrollfluss) innerhalb eines Anwendungsfalls wird im Use-Case-Diagramm bewusst abstrahiert. Hierfür werden in der UML ergänzend &#039;&#039;&#039;Aktivitätendiagramme&#039;&#039;&#039; oder &#039;&#039;&#039;Sequenzdiagramme&#039;&#039;&#039; genutzt.&lt;br /&gt;
&lt;br /&gt;
== Systemkontext und Systemgrenze ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. &lt;br /&gt;
Die Systemgrenze ist ein fundamentales Konzept: Sie trennt das zu entwickelnde System strikt von seiner Umwelt. Akteure befinden sich als externe Rollen immer &#039;&#039;&#039;außerhalb&#039;&#039;&#039; des Systems, während die Anwendungsfälle die Funktionalität &#039;&#039;&#039;innerhalb&#039;&#039;&#039; des Systems definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel: Der Rahmen definiert die Systemgrenze. Akteure stehen außerhalb, Use Cases innerhalb.]]&lt;br /&gt;
&lt;br /&gt;
== Notation und Erstellung ==&lt;br /&gt;
Die Erstellung eines Anwendungsfalldiagramms folgt methodisch diesen drei Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Wer oder was interagiert mit der Software? Akteure werden als „Strichmännchen“ (Menschen) oder als Rechteck mit dem Stereotyp &amp;lt;code&amp;gt;&amp;lt;&amp;lt;system&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; (externe Systeme) dargestellt. Der Name muss zwingend eine präzise Rolle beschreiben (z. B. &#039;&#039;Sachbearbeiter&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Generische Namen wie &amp;quot;User&amp;quot; sind als Modellierungsfehler zu betrachten.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Welche fachlichen Ziele sollen erreicht werden? Anwendungsfälle werden als Ellipsen gezeichnet. Die Benennung erfolgt imperativ oder im Infinitiv im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (z. B. &amp;quot;Rechnung stornieren&amp;quot;, &amp;quot;Artikel suchen&amp;quot;). Die Formulierung muss prägnant und fachlich verständlich sein.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Akteure und Anwendungsfälle werden durch Kommunikationspfade (Linien) verbunden, um den Interaktionsfluss sichtbar zu machen.&lt;br /&gt;
&lt;br /&gt;
== Beziehungsarten (Relationen) ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen sind die grundlegenden Kommunikationspfade zwischen Akteur und Use Case. Sie drücken aus, dass der Akteur mit dem System interagiert, um den Anwendungsfall auszuführen. Eine Assoziation ist immer binär (verbindet exakt zwei Elemente). Ein Akteur kann mit mehreren Use Cases assoziiert sein und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Wird als durchgehende Linie ohne Pfeilspitzen dargestellt. Sie zeigt an, dass eine Kommunikation stattfindet, lässt aber die Initiierungsrichtung (wer den Anstoß gibt) offen. Dies ist die häufigste und flexibelste Form in frühen Analysephasen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Beispiel einer ungerichteten Assoziation: Die Interaktion ist bidirektional.]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Verfügt über eine offene Pfeilspitze und gibt die Navigierbarkeit bzw. den Initiator an. Ein Pfeil zum Use Case bedeutet: Der Akteur stößt den Prozess aktiv an. Ein Pfeil zum Akteur bedeutet: Das System initiiert die Kommunikation zum Akteur (z. B. automatischer E-Mail-Versand an den Kunden). Können beide den Prozess anstoßen, wird auf Pfeile komplett verzichtet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Beispiel einer gerichteten Assoziation: Die Pfeilspitze definiert den Initiator.]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (auch Kardinalitäten genannt) definieren, wie viele Instanzen eines Akteurs zeitgleich an wie vielen Instanzen eines Anwendungsfalls beteiligt sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Darstellung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lesebeispiel der Abbildung:&#039;&#039;&#039;&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) nehmen zwingend mindestens 3 bis beliebig viele (&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;) Spielerinnen teil (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede einzelne Spielerin nimmt jedoch zu einem gegebenen Zeitpunkt an exakt 1 Rundlauf-Spiel teil (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Ein Spiel kann völlig ohne oder mit beliebig vielen Schiedsrichterinnen stattfinden (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Eine Schiedsrichterin überwacht gleichzeitig maximal ein Spiel (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prüfungshinweis:&#039;&#039; Multiplizitäten spielen in Use-Case-Diagrammen in der Praxis eine untergeordnete Rolle, da sie das Diagramm schnell überladen. Ihre volle konzeptionelle Bedeutung entfalten sie erst im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Abhängigkeiten zwischen Anwendungsfällen ===&lt;br /&gt;
&lt;br /&gt;
==== Include-Beziehung (&amp;lt;&amp;lt;include&amp;gt;&amp;gt;) ====&lt;br /&gt;
Die &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehung dient der &#039;&#039;&#039;Vermeidung von Redundanz&#039;&#039;&#039;. Sie lagert gemeinsames Verhalten in einen eigenen Use Case aus. Der gestrichelte Pfeil zeigt vom Basis-Use-Case zum inkludierten Use Case.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Wenn der Basis-Anwendungsfall ausgeführt wird, wird der inkludierte Anwendungsfall &#039;&#039;&#039;zwingend immer (zu 100%)&#039;&#039;&#039; mit ausgeführt. Der Basis-Use-Case ist ohne das Inkludat unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Include-Beziehung: Der inkludierte Prozess wird zwingend aufgerufen.]]&lt;br /&gt;
&lt;br /&gt;
==== Extend-Beziehung (&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;) ====&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung modelliert &#039;&#039;&#039;Ausnahmebehandlungen oder optionale Erweiterungen&#039;&#039;&#039;. Der gestrichelte Pfeil zeigt (im Gegensatz zum Include!) vom erweiternden Use Case (Extension) zurück auf den Basis-Use-Case.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Die Erweiterung wird nur unter bestimmten Bedingungen ausgeführt. Der Basis-Use-Case ist auch ohne die Erweiterung vollständig lauffähig.&lt;br /&gt;
&lt;br /&gt;
Die Integration erfolgt über sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;. Diese markieren im Basis-Use-Case (unterhalb eines Trennstrichs) die genaue Stelle des Eingriffs. Optional kann über ein Notizsymbol eine logische &#039;&#039;&#039;Bedingung (Condition)&#039;&#039;&#039; angefügt werden, die prüft, ob die Erweiterung überhaupt zündet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Extend-Beziehung mit definierten Erweiterungspunkten und auslösender Bedingung (Condition).]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Die Generalisierung entspricht dem aus der Objektorientierung bekannten Konzept der Vererbung (&#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;). Sie wird mit einer durchgehenden Linie und einer hohlen, geschlossenen Pfeilspitze dargestellt, die vom speziellen zum allgemeinen Element zeigt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Generalisierungsbeziehung: Spezialisierung von Anwendungsfällen oder Akteuren.]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Der Akteur &#039;&#039;Fahrer&#039;&#039; ist eine Spezialisierung des Akteurs &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt alle Zugriffsrechte und Use Cases des allgemeinen Anwenders (z. B. &amp;quot;Login&amp;quot;), besitzt darüber hinaus aber erweiterte, spezifische Berechtigungen (z. B. &amp;quot;Fahrzeug starten&amp;quot;).&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Use Cases:&#039;&#039;&#039; Ein allgemeiner Anwendungsfall wie &#039;&#039;„Zahlung durchführen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„Per Kreditkarte zahlen“&#039;&#039; oder &#039;&#039;„Per PayPal zahlen“&#039;&#039; generalisiert werden. Die speziellen Fälle erben die grundlegende Funktionalität, setzen sie aber im Detail abweichend um.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2873</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2873"/>
		<updated>2026-05-22T06:44:17Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung in die Use-Case-Modellierung ==&lt;br /&gt;
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Softwareteilen und anderen Systemen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (im englischsprachigen Raum &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) gehört zu den Verhaltensdiagrammen der UML.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung im Requirements Engineering ===&lt;br /&gt;
In der Analysephase (Anforderungsermittlung / Requirements Engineering) ist es das primäre Ziel des Anwendungsfalldiagramms, das geplante System aus der &#039;&#039;&#039;externen Beobachterperspektive&#039;&#039;&#039; zu beschreiben. Es modelliert das &amp;quot;Was&amp;quot; (welche Funktionen bietet das System?) und grenzt sich strikt vom &amp;quot;Wie&amp;quot; (wie werden diese Funktionen technisch umgesetzt?) ab. &lt;br /&gt;
&lt;br /&gt;
Es dient als zentrales Kommunikationsmittel zwischen:&lt;br /&gt;
* &#039;&#039;&#039;Auftraggebern / potenziellen Anwendern (Fachseite):&#039;&#039;&#039; Diese können das Diagramm ohne Programmierkenntnisse verstehen.&lt;br /&gt;
* &#039;&#039;&#039;Auftragnehmern (Entwicklerteam / Systemarchitekten):&#039;&#039;&#039; Für diese bildet das Diagramm die Grundlage für die Systemarchitektur.&lt;br /&gt;
&lt;br /&gt;
Daher fließen Anwendungsfalldiagramme als strukturierte Anforderungsbeschreibung in das &#039;&#039;&#039;Lastenheft&#039;&#039;&#039; (Forderungen des Auftraggebers) und später detailliert in das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039; (Umsetzungsvorgaben des Auftragnehmers) ein.&lt;br /&gt;
&lt;br /&gt;
=== Die drei Kernelemente ===&lt;br /&gt;
Das Diagramm besteht aus drei essenziellen Bausteinen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie repräsentieren externe Entitäten, die mit dem System interagieren. Wichtig: Ein Akteur ist immer eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; (z. B. &amp;quot;Kunde&amp;quot;), niemals eine konkrete Person (z. B. &amp;quot;Herr Müller&amp;quot;). Auch externe Fremdsysteme (wie ein Zahlungsanbieter) treten als Akteure auf.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben eine in sich abgeschlossene Aufgabe, die für den Akteur einen messbaren, fachlichen Mehrwert erzeugt.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Interaktionspfade zwischen Akteur und Anwendungsfall oder die Abhängigkeiten von Anwendungsfällen untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf (Kontrollfluss) innerhalb eines Anwendungsfalls wird im Use-Case-Diagramm bewusst abstrahiert. Hierfür werden in der UML ergänzend &#039;&#039;&#039;Aktivitätendiagramme&#039;&#039;&#039; oder &#039;&#039;&#039;Sequenzdiagramme&#039;&#039;&#039; genutzt.&lt;br /&gt;
&lt;br /&gt;
== Systemkontext und Systemgrenze ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. &lt;br /&gt;
Die Systemgrenze ist ein fundamentales Konzept: Sie trennt das zu entwickelnde System strikt von seiner Umwelt. Akteure befinden sich als externe Rollen immer &#039;&#039;&#039;außerhalb&#039;&#039;&#039; des Systems, während die Anwendungsfälle die Funktionalität &#039;&#039;&#039;innerhalb&#039;&#039;&#039; des Systems definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel: Der Rahmen definiert die Systemgrenze. Akteure stehen außerhalb, Use Cases innerhalb.]]&lt;br /&gt;
&lt;br /&gt;
== Notation und Erstellung ==&lt;br /&gt;
Die Erstellung eines Anwendungsfalldiagramms folgt methodisch diesen drei Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Wer oder was interagiert mit der Software? Akteure werden als „Strichmännchen“ (Menschen) oder als Rechteck mit dem Stereotyp &amp;lt;code&amp;gt;&amp;lt;&amp;lt;system&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; (externe Systeme) dargestellt. Der Name muss zwingend eine präzise Rolle beschreiben (z. B. &#039;&#039;Sachbearbeiter&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Generische Namen wie &amp;quot;User&amp;quot; sind als Modellierungsfehler zu betrachten.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Welche fachlichen Ziele sollen erreicht werden? Anwendungsfälle werden als Ellipsen gezeichnet. Die Benennung erfolgt imperativ oder im Infinitiv im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (z. B. &amp;quot;Rechnung stornieren&amp;quot;, &amp;quot;Artikel suchen&amp;quot;). Die Formulierung muss prägnant und fachlich verständlich sein.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Akteure und Anwendungsfälle werden durch Kommunikationspfade (Linien) verbunden, um den Interaktionsfluss sichtbar zu machen.&lt;br /&gt;
&lt;br /&gt;
== Beziehungsarten (Relationen) ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen sind die grundlegenden Kommunikationspfade zwischen Akteur und Use Case. Sie drücken aus, dass der Akteur mit dem System interagiert, um den Anwendungsfall auszuführen. Eine Assoziation ist immer binär (verbindet exakt zwei Elemente). Ein Akteur kann mit mehreren Use Cases assoziiert sein und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Wird als durchgehende Linie ohne Pfeilspitzen dargestellt. Sie zeigt an, dass eine Kommunikation stattfindet, lässt aber die Initiierungsrichtung (wer den Anstoß gibt) offen. Dies ist die häufigste und flexibelste Form in frühen Analysephasen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Beispiel einer ungerichteten Assoziation: Die Interaktion ist bidirektional.]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Verfügt über eine offene Pfeilspitze und gibt die Navigierbarkeit bzw. den Initiator an. Ein Pfeil zum Use Case bedeutet: Der Akteur stößt den Prozess aktiv an. Ein Pfeil zum Akteur bedeutet: Das System initiiert die Kommunikation zum Akteur (z. B. automatischer E-Mail-Versand an den Kunden). Können beide den Prozess anstoßen, wird auf Pfeile komplett verzichtet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Beispiel einer gerichteten Assoziation: Die Pfeilspitze definiert den Initiator.]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (auch Kardinalitäten genannt) definieren, wie viele Instanzen eines Akteurs zeitgleich an wie vielen Instanzen eines Anwendungsfalls beteiligt sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Darstellung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lesebeispiel der Abbildung:&#039;&#039;&#039;&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) nehmen zwingend mindestens 3 bis beliebig viele (&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;) Spielerinnen teil (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede einzelne Spielerin nimmt jedoch zu einem gegebenen Zeitpunkt an exakt 1 Rundlauf-Spiel teil (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Ein Spiel kann völlig ohne oder mit beliebig vielen Schiedsrichterinnen stattfinden (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Eine Schiedsrichterin überwacht gleichzeitig maximal ein Spiel (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prüfungshinweis:&#039;&#039; Multiplizitäten spielen in Use-Case-Diagrammen in der Praxis eine untergeordnete Rolle, da sie das Diagramm schnell überladen. Ihre volle konzeptionelle Bedeutung entfalten sie erst im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Abhängigkeiten zwischen Anwendungsfällen ===&lt;br /&gt;
&lt;br /&gt;
==== Include-Beziehung (&amp;lt;&amp;lt;include&amp;gt;&amp;gt;) ====&lt;br /&gt;
Die &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehung dient der &#039;&#039;&#039;Vermeidung von Redundanz&#039;&#039;&#039;. Sie lagert gemeinsames Verhalten in einen eigenen Use Case aus. Der gestrichelte Pfeil zeigt vom Basis-Use-Case zum inkludierten Use Case.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Wenn der Basis-Anwendungsfall ausgeführt wird, wird der inkludierte Anwendungsfall &#039;&#039;&#039;zwingend immer (zu 100%)&#039;&#039;&#039; mit ausgeführt. Der Basis-Use-Case ist ohne das Inkludat unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Include-Beziehung: Der inkludierte Prozess wird zwingend aufgerufen.]]&lt;br /&gt;
&lt;br /&gt;
==== Extend-Beziehung (&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;) ====&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung modelliert &#039;&#039;&#039;Ausnahmebehandlungen oder optionale Erweiterungen&#039;&#039;&#039;. Der gestrichelte Pfeil zeigt (im Gegensatz zum Include!) vom erweiternden Use Case (Extension) zurück auf den Basis-Use-Case.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Die Erweiterung wird nur unter bestimmten Bedingungen ausgeführt. Der Basis-Use-Case ist auch ohne die Erweiterung vollständig lauffähig.&lt;br /&gt;
&lt;br /&gt;
Die Integration erfolgt über sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;. Diese markieren im Basis-Use-Case (unterhalb eines Trennstrichs) die genaue Stelle des Eingriffs. Optional kann über ein Notizsymbol eine logische &#039;&#039;&#039;Bedingung (Condition)&#039;&#039;&#039; angefügt werden, die prüft, ob die Erweiterung überhaupt zündet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Extend-Beziehung mit definierten Erweiterungspunkten und auslösender Bedingung (Condition).]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Die Generalisierung entspricht dem aus der Objektorientierung bekannten Konzept der Vererbung (&#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;). Sie wird mit einer durchgehenden Linie und einer hohlen, geschlossenen Pfeilspitze dargestellt, die vom speziellen zum allgemeinen Element zeigt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Generalisierungsbeziehung: Spezialisierung von Anwendungsfällen oder Akteuren.]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Der Akteur &#039;&#039;Fahrer&#039;&#039; ist eine Spezialisierung des Akteurs &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt alle Zugriffsrechte und Use Cases des allgemeinen Anwenders (z. B. &amp;quot;Login&amp;quot;), besitzt darüber hinaus aber erweiterte, spezifische Berechtigungen (z. B. &amp;quot;Fahrzeug starten&amp;quot;).&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Use Cases:&#039;&#039;&#039; Ein allgemeiner Anwendungsfall wie &#039;&#039;„Zahlung durchführen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„Per Kreditkarte zahlen“&#039;&#039; oder &#039;&#039;„Per PayPal zahlen“&#039;&#039; generalisiert werden. Die speziellen Fälle erben die grundlegende Funktionalität, setzen sie aber im Detail abweichend um.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2872</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2872"/>
		<updated>2026-05-22T06:43:11Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; ist Teil der UML und wird im englischsprachigen Raum auch als &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039; bezeichnet. &lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase die Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklerteam) zu vermitteln. Als strukturierte Anforderungsbeschreibung können Anwendungsfalldiagramme direkt in das Lastenheft mit aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; In einem Anwendungsfalldiagramm werden potenzielle Benutzer des Systems identifiziert. Diese Benutzer nennt man Akteure. Jeder Akteur hat gewisse Erwartungen an die Software. Benutzer erwarten, dass das Programm ihnen hilft, ihre Aufgaben schneller und einfacher zu lösen.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Diese Aufgaben der Benutzer nennt man Anwendungsfälle. Sie erzeugen für den Anwender ein Ergebnis von messbarem Wert.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Verbindung zwischen Akteur und Anwendungsfall (oder zwischen Anwendungsfällen untereinander) nennt man Beziehung oder Relation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf von Anwendungsfällen wird nicht hier, sondern vorzugsweise in einem UML-Aktivitätendiagramm dargestellt.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze)&#039;&#039;&#039; zusammen. Die Akteure befinden sich außerhalb des Systems, während die Anwendungsfälle innerhalb des Systems liegen und über Beziehungen miteinander verknüpft sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel mit Systemgrenze und Akteuren]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der Aufbau eines Anwendungsfalldiagramms folgt methodisch folgenden drei Regeln:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Als erstes sollte man klären, welche unterschiedlichen Akteure die zu erstellende Software benutzen werden. Akteure werden als „Strichmännchen“ dargestellt. Alle notwendigen Benutzer der Software sind darzustellen. Dies sind in der Regel Personen wie Kunden, Mitarbeiter oder Administratoren. Es können aber auch andere Software-Systeme sein, die eine Anwendung benutzen werden. Jeder Akteur sollte einen aussagekräftigen und selbsterklärenden Namen haben. „User“ bzw. „Akteur“ sind keine aussagekräftigen Namen, da sie für jede Software gültig sind.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Als zweites sollte geklärt werden, welche Anwendungsfälle die Software erfüllen soll. Anwendungsfälle werden in Ellipsen dargestellt. In diese Ellipsen wird die inhaltliche Beschreibung geschrieben. Es wird empfohlen, den Anwendungsfall kurz und aussagekräftig zusammenzufassen. Trotz der Kürze muss er verständlich bleiben! Daher sollte er in einem ganzen, aber möglichst knappen Satz im Sinne von &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (bzw. im Infinitiv) formuliert werden.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im dritten Schritt werden die Anwendungsfälle und Akteure über Beziehungen miteinander verbunden. Beziehungen zwischen Akteuren und Anwendungsfällen müssen durch Linien gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen verbinden Akteure mit Use Cases. Eine Assoziation bedeutet, dass der User die Aktion ausführen kann und somit mit dem System interagiert, das den Use Case enthält. Dabei darf ein einzelner Use Case mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein. Eine einzelne Assoziation muss immer genau zwei Elemente miteinander verbinden (binäre Assoziation).&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als eine durchgehende Linie dargestellt. Es ist die offenste Form der Darstellung und lässt Spielraum für Interpretation bezüglich des genauen Datenflusses.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Beispiel einer ungerichteten Assoziation]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Pfeile an der Assoziation geben an, wer die Aktion initiieren kann. Hier spricht man von einer gerichteten Assoziation. Ein Pfeil, der auf den Use Case gerichtet ist, besagt, dass nur der Akteur die Aktion initiieren kann, während ein Pfeil, der auf den Akteur zeigt, besagt, dass nur der Use Case die Aktion initiieren kann. Können beide Seiten die Aktion initiieren, werden die Pfeile weggelassen, anstatt zwei Pfeile zu setzen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Beispiel einer gerichteten Assoziation]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten geben an, wie viele Akteure mit wie vielen Anwendungsfällen in Beziehung stehen. Sie werden an gerichtete oder ungerichtete Assoziationen modelliert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Darstellung von Multiplizitäten beim Tischtennis-Rundlauf]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten sind im obigen Beispiel wie folgt zu lesen:&lt;br /&gt;
* An einem Tischtennis-Rundlauf sind mindestens 3 Spielerinnen beteiligt. Die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; bzw. beliebig definiert und die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Jede Spielerin jedoch kann an exakt einem Rundlauf-Spiel teilnehmen. Hier sind die Ober- und Untergrenze &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann an höchstens einem Rundlaufspiel beteiligt sein (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Da diese Information jedoch häufig für die Adressaten des Use Case Diagramms keine Rolle spielt, werden Multiplizitäten im Anwendungsfalldiagramm eher selten notiert. Eine elementare Rolle spielen sie hingegen beim [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes ===&lt;br /&gt;
&amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehungen (dt. beinhalten) werden mittels einer mit &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichneten gestrichelten Linie und einem Pfeil zum inkludierten Anwendungsfall gekennzeichnet. Hierdurch wird abgebildet, dass der inkludierte Anwendungsfall immer zwingend ausgeführt werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Include-Anweisung gibt an, dass ein Use Case alle inkludierten Use Cases zwingend mitbenutzt. Die Include-Beziehung wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Basis Use Case einen Pfeil in Richtung des zu inkludierenden Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Include-Beziehung zwischen Anwendungsfällen]]&lt;br /&gt;
&lt;br /&gt;
=== Extend ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung gibt an, dass ein Use Case optional ist und nur unter bestimmten Bedingungen ausgeführt wird. Sie wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Extension Use Case (Erweiterung) einen Pfeil in Richtung des Basis Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
Der Basis Use Case bestimmt sogenannte Erweiterungspunkte (&#039;&#039;Extension Points&#039;&#039;), die den präzisen Ort innerhalb des Use Cases angeben, an dem Extensions hinzugefügt werden dürfen. Erweiterungspunkte werden dargestellt, indem dem Use Case eine horizontale Linie hinzugefügt wird, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt; steht, gefolgt von den Namen der Erweiterungspunkte.&lt;br /&gt;
&lt;br /&gt;
Optional kann an eine Extend-Anweisung eine Bedingung (&#039;&#039;Condition&#039;&#039;) hinzugefügt werden, die beschreibt, unter welchen Voraussetzungen bezogen auf den Erweiterungspunkt der Extend Use Case ausgeführt wird. Die Bedingung wird in der UML als Notizzettel dargestellt, der das Schlüsselwort &amp;lt;code&amp;gt;Condition&amp;lt;/code&amp;gt; enthält, gefolgt von der Bedingung in geschweiften Klammern und darunter der Erweiterungspunkt, auf den sich die Bedingung bezieht. Die Bedingung ist mit einer gestrichelten Linie mit der Linie der Extend-Anweisung verbunden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Extend-Beziehung inklusive Erweiterungspunkten und Bedingungen (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung ===&lt;br /&gt;
Zwischen zwei Anwendungsfällen oder Akteuren kann eine Generalisierungsbeziehung existieren (Vererbungspfeil mit hohler, geschlossener Pfeilspitze). Ausgedrückt wird damit, dass der spezialisierte Anwendungsfall oder Akteur alle Bestandteile des allgemeinen Anwendungsfalls oder Akteurs beinhaltet. Das spezialisierte Element konkretisiert oder erweitert das allgemeine Element.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Generalisierungsbeziehung (Vererbung)]]&lt;br /&gt;
&lt;br /&gt;
Ein typisches Beispiel bei Akteuren: Der Akteur &#039;&#039;&#039;Fahrer&#039;&#039;&#039; ist eine Spezialisierung von &#039;&#039;&#039;Anwender&#039;&#039;&#039;. Ein Fahrer besitzt alle Fähigkeiten, Use Cases und Eigenschaften eines allgemeinen Anwenders, wie z.B. Vorname, Nachname, Benutzername und dass er sich mit dem Benutzernamen und Passwort anmelden kann (login), fügt jedoch spezifische Eigenschaften oder Rollen hinzu. Ebenso lassen sich allgemeine Anwendungsfälle (z. B. &amp;quot;Medium brennen&amp;quot;) durch speziellere Anwendungsfälle (z. B. &amp;quot;CD brennen&amp;quot;, &amp;quot;DVD brennen&amp;quot;) generalisieren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2871</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2871"/>
		<updated>2026-05-22T06:39:56Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; ist Teil der UML und wird im englischsprachigen Raum auch als &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039; bezeichnet. &lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase die Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklerteam) zu vermitteln. Als strukturierte Anforderungsbeschreibung können Anwendungsfalldiagramme direkt in das Lastenheft mit aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; In einem Anwendungsfalldiagramm werden potenzielle Benutzer des Systems identifiziert. Diese Benutzer nennt man Akteure. Jeder Akteur hat gewisse Erwartungen an die Software. Benutzer erwarten, dass das Programm ihnen hilft, ihre Aufgaben schneller und einfacher zu lösen.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Diese Aufgaben der Benutzer nennt man Anwendungsfälle. Sie erzeugen für den Anwender ein Ergebnis von messbarem Wert.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Verbindung zwischen Akteur und Anwendungsfall (oder zwischen Anwendungsfällen untereinander) nennt man Beziehung oder Relation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf von Anwendungsfällen wird nicht hier, sondern vorzugsweise in einem UML-Aktivitätendiagramm dargestellt.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze)&#039;&#039;&#039; zusammen. Die Akteure befinden sich außerhalb des Systems, während die Anwendungsfälle innerhalb des Systems liegen und über Beziehungen miteinander verknüpft sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel mit Systemgrenze und Akteuren]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der Aufbau eines Anwendungsfalldiagramms folgt methodisch folgenden drei Regeln:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Als erstes sollte man klären, welche unterschiedlichen Akteure die zu erstellende Software benutzen werden. Akteure werden als „Strichmännchen“ dargestellt. Alle notwendigen Benutzer der Software sind darzustellen. Dies sind in der Regel Personen wie Kunden, Mitarbeiter oder Administratoren. Es können aber auch andere Software-Systeme sein, die eine Anwendung benutzen werden. Jeder Akteur sollte einen aussagekräftigen und selbsterklärenden Namen haben. „User“ bzw. „Akteur“ sind keine aussagekräftigen Namen, da sie für jede Software gültig sind.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Als zweites sollte geklärt werden, welche Anwendungsfälle die Software erfüllen soll. Anwendungsfälle werden in Ellipsen dargestellt. In diese Ellipsen wird die inhaltliche Beschreibung geschrieben. Es wird empfohlen, den Anwendungsfall kurz und aussagekräftig zusammenzufassen. Trotz der Kürze muss er verständlich bleiben! Daher sollte er in einem ganzen, aber möglichst knappen Satz im Sinne von &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (bzw. im Infinitiv) formuliert werden.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im dritten Schritt werden die Anwendungsfälle und Akteure über Beziehungen miteinander verbunden. Beziehungen zwischen Akteuren und Anwendungsfällen müssen durch Linien gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen verbinden Akteure mit Use Cases. Eine Assoziation bedeutet, dass der User die Aktion ausführen kann und somit mit dem System interagiert, das den Use Case enthält. Dabei darf ein einzelner Use Case mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein. Eine einzelne Assoziation muss immer genau zwei Elemente miteinander verbinden (binäre Assoziation).&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als eine durchgehende Linie dargestellt. Es ist die offenste Form der Darstellung und lässt Spielraum für Interpretation bezüglich des genauen Datenflusses.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Beispiel einer ungerichteten Assoziation]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Pfeile an der Assoziation geben an, wer die Aktion initiieren kann. Hier spricht man von einer gerichteten Assoziation. Ein Pfeil, der auf den Use Case gerichtet ist, besagt, dass nur der Akteur die Aktion initiieren kann, während ein Pfeil, der auf den Akteur zeigt, besagt, dass nur der Use Case die Aktion initiieren kann. Können beide Seiten die Aktion initiieren, werden die Pfeile weggelassen, anstatt zwei Pfeile zu setzen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Beispiel einer gerichteten Assoziation]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten geben an, wie viele Akteure mit wie vielen Anwendungsfällen in Beziehung stehen. Sie werden an gerichtete oder ungerichtete Assoziationen modelliert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Darstellung von Multiplizitäten beim Tischtennis-Rundlauf]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten sind im obigen Beispiel wie folgt zu lesen:&lt;br /&gt;
* An einem Tischtennis-Rundlauf sind mindestens 3 Spielerinnen beteiligt. Die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; bzw. beliebig definiert und die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Jede Spielerin jedoch kann an exakt einem Rundlauf-Spiel teilnehmen. Hier sind die Ober- und Untergrenze &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann an höchstens einem Rundlaufspiel beteiligt sein (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Da diese Information jedoch häufig für die Adressaten des Use Case Diagramms keine Rolle spielt, werden Multiplizitäten im Anwendungsfalldiagramm eher selten notiert. Eine elementare Rolle spielen sie hingegen beim [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes ===&lt;br /&gt;
&amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehungen (dt. beinhalten) werden mittels einer mit &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichneten gestrichelten Linie und einem Pfeil zum inkludierten Anwendungsfall gekennzeichnet. Hierdurch wird abgebildet, dass der inkludierte Anwendungsfall immer zwingend ausgeführt werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Include-Anweisung gibt an, dass ein Use Case alle inkludierten Use Cases zwingend mitbenutzt. Die Include-Beziehung wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Basis Use Case einen Pfeil in Richtung des zu inkludierenden Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Include-Beziehung zwischen Anwendungsfällen]]&lt;br /&gt;
&lt;br /&gt;
=== Extend ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung gibt an, dass ein Use Case optional ist und nur unter bestimmten Bedingungen ausgeführt wird. Sie wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Extension Use Case (Erweiterung) einen Pfeil in Richtung des Basis Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
Der Basis Use Case bestimmt sogenannte Erweiterungspunkte (&#039;&#039;Extension Points&#039;&#039;), die den präzisen Ort innerhalb des Use Cases angeben, an dem Extensions hinzugefügt werden dürfen. Erweiterungspunkte werden dargestellt, indem dem Use Case eine horizontale Linie hinzugefügt wird, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt; steht, gefolgt von den Namen der Erweiterungspunkte.&lt;br /&gt;
&lt;br /&gt;
Optional kann an eine Extend-Anweisung eine Bedingung (&#039;&#039;Condition&#039;&#039;) hinzugefügt werden, die beschreibt, unter welchen Voraussetzungen bezogen auf den Erweiterungspunkt der Extend Use Case ausgeführt wird. Die Bedingung wird in der UML als Notizzettel dargestellt, der das Schlüsselwort &amp;lt;code&amp;gt;Condition&amp;lt;/code&amp;gt; enthält, gefolgt von der Bedingung in geschweiften Klammern und darunter der Erweiterungspunkt, auf den sich die Bedingung bezieht. Die Bedingung ist mit einer gestrichelten Linie mit der Linie der Extend-Anweisung verbunden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Extend-Beziehung inklusive Erweiterungspunkten und Bedingungen (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung ===&lt;br /&gt;
Zwischen zwei Anwendungsfällen oder Akteuren kann eine Generalisierungsbeziehung existieren (Vererbungspfeil mit hohler, geschlossener Pfeilspitze). Ausgedrückt wird damit, dass der spezialisierte Anwendungsfall oder Akteur alle Bestandteile des allgemeinen Anwendungsfalls oder Akteurs beinhaltet. Das spezialisierte Element konkretisiert oder erweitert das allgemeine Element.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Generalisierungsbeziehung (Vererbung)]]&lt;br /&gt;
&lt;br /&gt;
Ein typisches Beispiel bei Akteuren: Der Akteur &#039;&#039;&#039;Fahrer&#039;&#039;&#039; ist eine Spezialisierung von &#039;&#039;&#039;Anwender&#039;&#039;&#039;. Ein Fahrer besitzt alle Fähigkeiten, Use Cases und Eigenschaften eines allgemeinen Anwenders, wie z.B. Vorname, Nachname, Benutzername und dass er sich mit dem Benutzernamen und Passwort anmelden kann (login), fügt jedoch spezifische Eigenschaften oder Rollen hinzu. Ebenso lassen sich allgemeine Anwendungsfälle (z. B. &amp;quot;Medium brennen&amp;quot;) durch speziellere Anwendungsfälle (z. B. &amp;quot;CD brennen&amp;quot;, &amp;quot;DVD brennen&amp;quot;) generalisieren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallSys.png&amp;diff=2870</id>
		<title>Datei:AnwendungsfallSys.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallSys.png&amp;diff=2870"/>
		<updated>2026-05-22T06:37:44Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm System mit Fahrern&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallCD.png&amp;diff=2869</id>
		<title>Datei:AnwendungsfallCD.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallCD.png&amp;diff=2869"/>
		<updated>2026-05-22T06:37:02Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm mit CD für Generalisierung&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png&amp;diff=2868</id>
		<title>Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png&amp;diff=2868"/>
		<updated>2026-05-22T06:36:29Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm der komplexen Hotelreservierung mit Erklärung&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallTischtennis.png&amp;diff=2867</id>
		<title>Datei:AnwendungsfallTischtennis.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallTischtennis.png&amp;diff=2867"/>
		<updated>2026-05-22T06:35:16Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm, das Tischtennis darstellt&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallHotelreservierungKomplex.png&amp;diff=2866</id>
		<title>Datei:AnwendungsfallHotelreservierungKomplex.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallHotelreservierungKomplex.png&amp;diff=2866"/>
		<updated>2026-05-22T06:34:31Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm, das eine komplexere Hotelreservierung darstellt&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallHotelreservierung.png&amp;diff=2865</id>
		<title>Datei:AnwendungsfallHotelreservierung.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallHotelreservierung.png&amp;diff=2865"/>
		<updated>2026-05-22T06:33:06Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm, das eine Hotelreservierung darstellt&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallEinweihungsfeier.png&amp;diff=2864</id>
		<title>Datei:AnwendungsfallEinweihungsfeier.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallEinweihungsfeier.png&amp;diff=2864"/>
		<updated>2026-05-22T06:32:11Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm, das eine Einweihungsfeier modelliert&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2863</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2863"/>
		<updated>2026-05-22T06:24:52Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; ist Teil der UML und wird im englischsprachigen Raum auch als &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039; bezeichnet. &lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase die Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklerteam) zu vermitteln. Als strukturierte Anforderungsbeschreibung können Anwendungsfalldiagramme direkt in das Lastenheft mit aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; In einem Anwendungsfalldiagramm werden potenzielle Benutzer des Systems identifiziert. Diese Benutzer nennt man Akteure. Jeder Akteur hat gewisse Erwartungen an die Software. Benutzer erwarten, dass das Programm ihnen hilft, ihre Aufgaben schneller und einfacher zu lösen.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Diese Aufgaben der Benutzer nennt man Anwendungsfälle. Sie erzeugen für den Anwender ein Ergebnis von messbarem Wert.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Verbindung zwischen Akteur und Anwendungsfall (oder zwischen Anwendungsfällen untereinander) nennt man Beziehung oder Relation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf von Anwendungsfällen wird nicht hier, sondern vorzugsweise in einem UML-Aktivitätendiagramm dargestellt.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (System Boundary)&#039;&#039;&#039; zusammen. Die Akteure befinden sich außerhalb des Systems, während die Anwendungsfälle innerhalb des Systems liegen und über Beziehungen miteinander verknüpft sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;680&amp;quot; height=&amp;quot;340&amp;quot; viewBox=&amp;quot;0 0 680 340&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;rect x=&amp;quot;160&amp;quot; y=&amp;quot;20&amp;quot; width=&amp;quot;360&amp;quot; height=&amp;quot;300&amp;quot; rx=&amp;quot;8&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;175&amp;quot; y=&amp;quot;45&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;System: Onlineshop&amp;lt;/text&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 90)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Kunde&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;145&amp;quot; x2=&amp;quot;185&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;155&amp;quot; x2=&amp;quot;185&amp;quot; y2=&amp;quot;235&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(185, 70)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;85&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;75&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;85&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Artikel bestellen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;270&amp;quot; y1=&amp;quot;95&amp;quot; x2=&amp;quot;375&amp;quot; y2=&amp;quot;135&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1.5&amp;quot; stroke-dasharray=&amp;quot;4,4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;383,138 373,130 369,139&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;335&amp;quot; y=&amp;quot;112&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;«include»&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(370, 125)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;85&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;75&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;85&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Login durchführen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;260&amp;quot; y1=&amp;quot;210&amp;quot; x2=&amp;quot;260&amp;quot; y2=&amp;quot;132&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1.5&amp;quot; stroke-dasharray=&amp;quot;4,4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;260,124 256,134 264,134&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;268&amp;quot; y=&amp;quot;175&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;«extend»&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(185, 210)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;85&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;75&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;85&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Reklamation einreichen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(590, 90)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;0&amp;quot; y=&amp;quot;35&amp;quot; width=&amp;quot;70&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; rx=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;35&amp;quot; y=&amp;quot;25&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-style=&amp;quot;italic&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;«system»&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;35&amp;quot; y=&amp;quot;58&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Support&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;535&amp;quot; y1=&amp;quot;155&amp;quot; x2=&amp;quot;590&amp;quot; y2=&amp;quot;120&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der Aufbau eines Anwendungsfalldiagramms folgt methodisch folgenden drei Regeln:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Als erstes sollte man klären, welche unterschiedlichen Akteure die zu erstellende Software benutzen werden. Akteure werden als „Strichmännchen“ dargestellt. Alle notwendigen Benutzer der Software sind darzustellen. Dies sind in der Regel Personen wie Kunden, Mitarbeiter oder Administratoren. Es können aber auch andere Software-Systeme sein, die eine Anwendung benutzen werden. Jeder Akteur sollte einen aussagekräftigen und selbsterklärenden Namen haben. „User“ bzw. „Akteur“ sind keine aussagekräftigen Namen, da sie für jede Software gültig sind.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Als zweites sollte geklärt werden, welche Anwendungsfälle die Software erfüllen soll. Anwendungsfälle werden in Ellipsen dargestellt. In diese Ellipsen wird die inhaltliche Beschreibung geschrieben. Es wird empfohlen, den Anwendungsfall kurz und aussagekräftig zusammenzufassen. Trotz der Kürze muss er verständlich bleiben! Daher sollte er in einem ganzen, aber möglichst knappen Satz im Sinne von &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (bzw. im Infinitiv) formuliert werden.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im dritten Schritt werden die Anwendungsfälle und Akteure über Beziehungen miteinander verbunden. Beziehungen zwischen Akteuren und Anwendungsfällen müssen durch Linien gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen verbinden Akteure mit Use Cases. Eine Assoziation bedeutet, dass der User die Aktion ausführen kann und somit mit dem System interagiert, das den Use Case enthält. Dabei darf ein einzelner Use Case mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein. Eine einzelne Assoziation muss immer genau zwei Elemente miteinander verbinden (binäre Assoziation).&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als eine durchgehende Linie dargestellt. Es ist die offenste Form der Darstellung und lässt Spielraum für Interpretation bezüglich des genauen Datenflusses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;450&amp;quot; height=&amp;quot;140&amp;quot; viewBox=&amp;quot;0 0 450 140&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Akteur&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;230&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(230, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;90&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;85&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;90&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwendungsfall&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Pfeile an der Assoziation geben an, wer die Aktion initiieren kann. Hier spricht man von einer gerichteten Assoziation. Ein Pfeil, der auf den Use Case gerichtet ist, besagt, dass nur der Akteur die Aktion initiieren kann, während ein Pfeil, der auf den Akteur zeigt, besagt, dass nur der Use Case die Aktion initiieren kann. Können beide Seiten die Aktion initiieren, werden die Pfeile weggelassen, anstatt zwei Pfeile zu setzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;500&amp;quot; height=&amp;quot;140&amp;quot; viewBox=&amp;quot;0 0 500 140&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Akteur&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;250&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;260,65 246,59 246,71&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(260, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;90&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;85&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;90&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwendungsfall&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten geben an, wie viele Akteure mit wie vielen Anwendungsfällen in Beziehung stehen. Sie werden an gerichtete oder ungerichtete Assoziationen modelliert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;720&amp;quot; height=&amp;quot;160&amp;quot; viewBox=&amp;quot;0 0 720 160&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(20, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Spielerin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;80&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;240&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;1&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;215&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;3..*&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(240, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;105&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Tischtennis-Rundlauf&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;460&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;620&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;475&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;0..*&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;595&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;0..1&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(620, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Schiedsrichterin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten sind im obigen Beispiel wie folgt zu lesen:&lt;br /&gt;
* An einem Tischtennis-Rundlauf sind mindestens 3 Spielerinnen beteiligt. Die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; bzw. beliebig definiert und die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Jede Spielerin jedoch kann an exakt einem Rundlauf-Spiel teilnehmen. Hier sind die Ober- und Untergrenze &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann an höchstens einem Rundlaufspiel beteiligt sein (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Da diese Information jedoch häufig für die Adressaten des Use Case Diagramms keine Rolle spielt, werden Multiplizitäten im Anwendungsfalldiagramm eher selten notiert. Eine elementare Rolle spielen sie hingegen beim [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes ===&lt;br /&gt;
&amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehungen (dt. beinhalten) werden mittels einer mit &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichneten gestrichelten Linie und einem Pfeil zum inkludierten Anwendungsfall gekennzeichnet. Hierdurch wird abgebildet, dass der inkludierte Anwendungsfall immer zwingend ausgeführt werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Include-Anweisung gibt an, dass ein Use Case alle inkludierten Use Cases zwingend mitbenutzt. Die Include-Beziehung wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Basis Use Case einen Pfeil in Richtung des zu inkludierenden Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;580&amp;quot; height=&amp;quot;110&amp;quot; viewBox=&amp;quot;0 0 580 110&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(10, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Basis Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;200&amp;quot; y1=&amp;quot;55&amp;quot; x2=&amp;quot;370&amp;quot; y2=&amp;quot;55&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;380,55 366,49 366,61&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;290&amp;quot; y=&amp;quot;42&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;&amp;amp;lt;&amp;amp;lt;include&amp;amp;gt;&amp;amp;gt;&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(380, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Inkludierter Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extend ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung gibt an, dass ein Use Case optional ist und nur unter bestimmten Bedingungen ausgeführt wird. Sie wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Extension Use Case (Erweiterung) einen Pfeil in Richtung des Basis Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
Der Basis Use Case bestimmt sogenannte Erweiterungspunkte (&#039;&#039;Extension Points&#039;&#039;), die den präzisen Ort innerhalb des Use Cases angeben, an dem Extensions hinzugefügt werden dürfen. Erweiterungspunkte werden dargestellt, indem dem Use Case eine horizontale Linie hinzugefügt wird, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt; steht, gefolgt von den Namen der Erweiterungspunkte.&lt;br /&gt;
&lt;br /&gt;
Optional kann an eine Extend-Anweisung eine Bedingung (&#039;&#039;Condition&#039;&#039;) hinzugefügt werden, die beschreibt, unter welchen Voraussetzungen bezogen auf den Erweiterungspunkt der Extend Use Case ausgeführt wird. Die Bedingung wird in der UML als Notizzettel dargestellt, der das Schlüsselwort &amp;lt;code&amp;gt;Condition&amp;lt;/code&amp;gt; enthält, gefolgt von der Bedingung in geschweiften Klammern und darunter der Erweiterungspunkt, auf den sich die Bedingung bezieht. Die Bedingung ist mit einer gestrichelten Linie mit der Linie der Extend-Anweisung verbunden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;620&amp;quot; height=&amp;quot;230&amp;quot; viewBox=&amp;quot;0 0 620 230&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(10, 70)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;100&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;95&amp;quot; ry=&amp;quot;38&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;32&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Basis Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;15&amp;quot; y1=&amp;quot;42&amp;quot; x2=&amp;quot;185&amp;quot; y2=&amp;quot;42&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-style=&amp;quot;italic&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;extension points:&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;68&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Erweiterungspunkt&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;410&amp;quot; y1=&amp;quot;110&amp;quot; x2=&amp;quot;220&amp;quot; y2=&amp;quot;110&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;210,110 224,104 224,116&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;315&amp;quot; y=&amp;quot;95&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;&amp;amp;lt;&amp;amp;lt;extend&amp;amp;gt;&amp;amp;gt;&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(410, 70)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;100&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;95&amp;quot; ry=&amp;quot;38&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Extension Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(220, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;0,0 160,0 180,20 180,50 0,50&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;160,0 160,20 180,20&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;18&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Condition: {Bedingung}&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;Erweiterungspunkt&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;310&amp;quot; y1=&amp;quot;60&amp;quot; x2=&amp;quot;310&amp;quot; y2=&amp;quot;110&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; stroke-dasharray=&amp;quot;3,3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung ===&lt;br /&gt;
Zwischen zwei Anwendungsfällen und Akteuren kann eine Generalisierungsbeziehung existieren (Vererbungspfeil). Ausgedrückt wird damit, dass der spezialisierte Anwendungsfall oder Akteur alle Bestandteile des allgemeinen Anwendungsfalls oder Akteurs beinhaltet. Der spezialisierte Anwendungsfall oder Akteur konkretisiert oder erweitert den allgemeinen Anwendungsfall.&lt;br /&gt;
&lt;br /&gt;
==== Generalisierung von Akteuren ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;360&amp;quot; height=&amp;quot;260&amp;quot; viewBox=&amp;quot;0 0 360 260&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwender&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;60&amp;quot; y1=&amp;quot;165&amp;quot; x2=&amp;quot;60&amp;quot; y2=&amp;quot;150&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;60,135 50,150 70,150&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 145)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Fahrer&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel ist der Akteur &#039;&#039;&#039;Fahrer&#039;&#039;&#039; eine Spezialisierung von &#039;&#039;&#039;Anwender&#039;&#039;&#039;. Ein Fahrer besitzt alle Fähigkeiten, Use Cases und Eigenschaften eines allgemeinen Anwenders, wie z.B. Vorname, Nachname, Benutzername und dass er sich mit dem Benutzernamen und Passwort anmelden kann (login), fügt jedoch spezifische Eigenschaften oder Rollen hinzu.&lt;br /&gt;
&lt;br /&gt;
==== Generalisierung von Anwendungsfällen ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;540&amp;quot; height=&amp;quot;200&amp;quot; viewBox=&amp;quot;0 0 540 200&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(175, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Zahlung durchführen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;130&amp;quot; y1=&amp;quot;115&amp;quot; x2=&amp;quot;200&amp;quot; y2=&amp;quot;70&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;212,62 195,64 203,77&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;410&amp;quot; y1=&amp;quot;115&amp;quot; x2=&amp;quot;340&amp;quot; y2=&amp;quot;70&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;328,62 337,77 345,64&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(15, 115)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Mit Kreditkarte bezahlen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(335, 115)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Per PayPal bezahlen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenso können Anwendungsfälle untereinander generalisiert werden. Der allgemeine Use Case &#039;&#039;„Zahlung durchführen“&#039;&#039; wird hierbei durch die konkreten, spezialisierten Ausprägungen &#039;&#039;„Mit Kreditkarte bezahlen“&#039;&#039; und &#039;&#039;„Per PayPal bezahlen“&#039;&#039; geerbt und ausdifferenziert.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2862</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2862"/>
		<updated>2026-05-22T06:19:43Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; ist Teil der UML und wird im englischsprachigen Raum auch als &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039; bezeichnet. &lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklerteam) zu vermitteln. Als strukturierte Anforderungsbeschreibung können Anwendungsfalldiagramme direkt in das Lastenheft mit aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; In einem Anwendungsfalldiagramm werden potenzielle Benutzer des Systems identifiziert. Diese Benutzer nennt man Akteure. Jeder Akteur hat gewisse Erwartungen an die Software. Benutzer erwarten, dass das Programm ihnen hilft, ihre Aufgaben schneller und einfacher zu lösen.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Diese Aufgaben der Benutzer nennt man Anwendungsfälle. Sie erzeugen für den Anwender ein Ergebnis von messbarem Wert.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Verbindung zwischen Akteur und Anwendungsfall (oder zwischen Anwendungsfällen untereinander) nennt man Beziehung oder Relation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf von Anwendungsfällen wird nicht hier, sondern vorzugsweise in einem UML-Aktivitätendiagramm dargestellt.&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der Aufbau eines Anwendungsfalldiagramms folgt methodisch folgenden drei Regeln:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Als erstes sollte man klären, welche unterschiedlichen Akteure die zu erstellende Software benutzen werden. Akteure werden als „Strichmännchen“ dargestellt. Alle notwendigen Benutzer der Software sind darzustellen. Dies sind in der Regel Personen wie Kunden, Mitarbeiter oder Administratoren. Es können aber auch andere Software-Systeme sein, die eine Anwendung benutzen werden. Jeder Akteur sollte einen aussagekräftigen und selbsterklärenden Namen haben. „User“ bzw. „Akteur“ sind keine aussagekräftigen Namen, da sie für jede Software gültig sind.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Als zweites sollte geklärt werden, welche Anwendungsfälle die Software erfüllen soll. Anwendungsfälle werden in Ellipsen dargestellt. In diese Ellipsen wird die inhaltliche Beschreibung geschrieben. Es wird empfohlen, den Anwendungsfall kurz und aussagekräftig zusammenzufassen. Trotz der Kürze muss er verständlich bleiben! Daher sollte er in einem ganzen, aber möglichst knappen Satz im Sinne von &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (bzw. im Infinitiv) formuliert werden.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im dritten Schritt werden die Anwendungsfälle und Akteure über Beziehungen miteinander verbunden. Beziehungen zwischen Akteuren und Anwendungsfällen müssen durch Linien gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen verbinden Akteure mit Use Cases. Eine Assoziation bedeutet, dass der User die Aktion ausführen kann und somit mit dem System interagiert, das den Use Case enthält. Dabei darf ein einzelner Use Case mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein. Eine einzelne Assoziation muss immer genau zwei Elemente miteinander verbinden (binäre Assoziation).&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als eine durchgehende Linie dargestellt. Es ist die offenste Form der Darstellung und lässt Spielraum für Interpretation bezüglich des genauen Datenflusses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;450&amp;quot; height=&amp;quot;140&amp;quot; viewBox=&amp;quot;0 0 450 140&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Akteur&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;230&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(230, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;90&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;85&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;90&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwendungsfall&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Pfeile an der Assoziation geben an, wer die Aktion initiieren kann. Hier spricht man von einer gerichteten Assoziation. Ein Pfeil, der auf den Use Case gerichtet ist, besagt, dass nur der Akteur die Aktion initiieren kann, während ein Pfeil, der auf den Akteur zeigt, besagt, dass nur der Use Case die Aktion initiieren kann. Können beide Seiten die Aktion initiieren, werden die Pfeile weggelassen, anstatt zwei Pfeile zu setzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;500&amp;quot; height=&amp;quot;140&amp;quot; viewBox=&amp;quot;0 0 500 140&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Akteur&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;250&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;260,65 246,59 246,71&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(260, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;90&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;85&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;90&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwendungsfall&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten geben an, wie viele Akteure mit wie vielen Anwendungsfällen in Beziehung stehen. Sie werden an gerichtete oder ungerichtete Assoziationen modelliert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;720&amp;quot; height=&amp;quot;160&amp;quot; viewBox=&amp;quot;0 0 720 160&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(20, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Spielerin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;80&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;240&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;1&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;215&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;3..*&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(240, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;105&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Tischtennis-Rundlauf&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;460&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;620&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;475&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;0..*&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;595&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;0..1&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(620, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Schiedsrichterin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten sind im obigen Beispiel wie folgt zu lesen:&lt;br /&gt;
* An einem Tischtennis-Rundlauf sind mindestens 3 Spielerinnen beteiligt. Die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; bzw. beliebig definiert und die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Jede Spielerin jedoch kann an exakt einem Rundlauf-Spiel teilnehmen. Hier sind die Ober- und Untergrenze &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann an höchstens einem Rundlaufspiel beteiligt sein (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Da diese Information jedoch häufig für die Adressaten des Use Case Diagramms keine Rolle spielt, werden Multiplizitäten im Anwendungsfalldiagramm eher selten notiert. Eine elementare Rolle spielen sie hingegen beim [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes ===&lt;br /&gt;
&amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehungen (dt. beinhalten) werden mittels einer mit &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichneten gestrichelten Linie und einem Pfeil zum inkludierten Anwendungsfall gekennzeichnet. Hierdurch wird abgebildet, dass der inkludierte Anwendungsfall immer zwingend ausgeführt werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Include-Anweisung gibt an, dass ein Use Case alle inkludierten Use Cases zwingend mitbenutzt. Die Include-Beziehung wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Basis Use Case einen Pfeil in Richtung des zu inkludierenden Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;580&amp;quot; height=&amp;quot;110&amp;quot; viewBox=&amp;quot;0 0 580 110&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(10, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Basis Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;200&amp;quot; y1=&amp;quot;55&amp;quot; x2=&amp;quot;370&amp;quot; y2=&amp;quot;55&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;380,55 366,49 366,61&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;290&amp;quot; y=&amp;quot;42&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;&amp;amp;lt;&amp;amp;lt;include&amp;amp;gt;&amp;amp;gt;&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(380, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Inkludierter Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extend ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung gibt an, dass ein Use Case optional ist und nur unter bestimmten Bedingungen ausgeführt wird. Sie wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Extension Use Case (Erweiterung) einen Pfeil in Richtung des Basis Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
Der Basis Use Case bestimmt sogenannte Erweiterungspunkte (&#039;&#039;Extension Points&#039;&#039;), die den präzisen Ort innerhalb des Use Cases angeben, an dem Extensions hinzugefügt werden dürfen. Erweiterungspunkte werden dargestellt, indem dem Use Case eine horizontale Linie hinzugefügt wird, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt; steht, gefolgt von den Namen der Erweiterungspunkte.&lt;br /&gt;
&lt;br /&gt;
Optional kann an eine Extend-Anweisung eine Bedingung (&#039;&#039;Condition&#039;&#039;) hinzugefügt werden, die beschreibt, unter welchen Voraussetzungen bezogen auf den Erweiterungspunkt der Extend Use Case ausgeführt wird. Die Bedingung wird in der UML als Notizzettel dargestellt, der das Schlüsselwort &amp;lt;code&amp;gt;Condition&amp;lt;/code&amp;gt; enthält, gefolgt von der Bedingung in geschweiften Klammern und darunter der Erweiterungspunkt, auf den sich die Bedingung bezieht. Die Bedingung ist mit einer gestrichelten Linie mit der Linie der Extend-Anweisung verbunden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;620&amp;quot; height=&amp;quot;230&amp;quot; viewBox=&amp;quot;0 0 620 230&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(10, 70)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;100&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;95&amp;quot; ry=&amp;quot;38&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;32&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Basis Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;15&amp;quot; y1=&amp;quot;42&amp;quot; x2=&amp;quot;185&amp;quot; y2=&amp;quot;42&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-style=&amp;quot;italic&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;extension points:&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;68&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Erweiterungspunkt&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;410&amp;quot; y1=&amp;quot;110&amp;quot; x2=&amp;quot;220&amp;quot; y2=&amp;quot;110&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;210,110 224,104 224,116&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;315&amp;quot; y=&amp;quot;95&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;&amp;amp;lt;&amp;amp;lt;extend&amp;amp;gt;&amp;amp;gt;&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(410, 70)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;100&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;95&amp;quot; ry=&amp;quot;38&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Extension Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(220, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;0,0 160,0 180,20 180,50 0,50&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;160,0 160,20 180,20&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;18&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Condition: {Bedingung}&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;Erweiterungspunkt&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;310&amp;quot; y1=&amp;quot;60&amp;quot; x2=&amp;quot;310&amp;quot; y2=&amp;quot;110&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; stroke-dasharray=&amp;quot;3,3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung ===&lt;br /&gt;
Zwischen zwei Anwendungsfällen und Akteuren kann eine Generalisierungsbeziehung existieren (Vererbungspfeil). Ausgedrückt wird damit, dass der spezialisierte Anwendungsfall oder Akteur alle Bestandteile des allgemeinen Anwendungsfalls oder Akteurs beinhaltet. Der spezialisierte Anwendungsfall oder Akteur konkretisiert oder erweitert den allgemeinen Anwendungsfall. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;360&amp;quot; height=&amp;quot;260&amp;quot; viewBox=&amp;quot;0 0 360 260&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwender&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;60&amp;quot; y1=&amp;quot;165&amp;quot; x2=&amp;quot;60&amp;quot; y2=&amp;quot;150&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;60,135 50,150 70,150&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 145)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Fahrer&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel ist der Akteur &#039;&#039;&#039;Fahrer&#039;&#039;&#039; eine Spezialisierung von &#039;&#039;&#039;Anwender&#039;&#039;&#039;. Ein Fahrer besitzt alle Fähigkeiten, Use Cases und Eigenschaften eines allgemeinen Anwenders, wie z.B. Vorname, Nachname, Benutzername und dass er sich mit dem Benutzernamen und Passwort anmelden kann (login), fügt jedoch spezifische Eigenschaften oder Rollen hinzu.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2861</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2861"/>
		<updated>2026-05-22T06:15:39Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte, grafische Modellierungssprache zur Spezifikation, zum Entwurf und zur Dokumentation von Software- und anderen Systemen. Innerhalb der UML gehören &#039;&#039;&#039;Anwendungsfalndiagramme&#039;&#039;&#039; (auch &#039;&#039;Use-Case-Diagramme&#039;&#039; genannt) zu den Verhaltensdiagrammen. Sie beschreiben das erwartete Verhalten eines Systems aus der Perspektive eines externen Beobachters (Benutzers) heraus, ohne technische Implementierungsdetails offenzulegen.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung im Software-Lebenszyklus ===&lt;br /&gt;
In der Analysephase eines Softwareprojekts dienen Anwendungsfalldiagramme dazu, die funktionalen Anforderungen des Auftraggebers strukturiert, übersichtlich und vollständig zu erfassen. Sie erfüllen dabei eine essenzielle Brückenfunktion:&lt;br /&gt;
* &#039;&#039;&#039;Kommunikationsmittel:&#039;&#039;&#039; Sie vermitteln barrierefrei zwischen fachlichen Laien (potenziellen Anwendern, Auftraggebern) und dem technischen Entwicklungsteam (Auftragnehmern).&lt;br /&gt;
* &#039;&#039;&#039;Anforderungsdokumentation:&#039;&#039;&#039; Als strukturierte und visuelle Anforderungsbeschreibung sind sie ein fundamentaler Bestandteil des &#039;&#039;&#039;Lastenhefts&#039;&#039;&#039; (was das System tun soll) und fließen direkt in das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039; ein.&lt;br /&gt;
&lt;br /&gt;
=== Die drei Kernelemente ===&lt;br /&gt;
Ein Anwendungsfalndiagramm lässt sich auf drei wesentliche Säulen reduzieren:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (Actors):&#039;&#039;&#039; Wer interagiert mit dem System? (Sowohl Personen als auch externe Systeme).&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (Use Cases):&#039;&#039;&#039; Was kann mit dem System getan werden? Welche Ziele werden erreicht?&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (Relations):&#039;&#039;&#039; Wie interagieren Akteure und Anwendungsfälle miteinander oder wie hängen Anwendungsfälle untereinander zusammen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Ein Use-Case-Diagramm zeigt &#039;&#039;&#039;nicht&#039;&#039;&#039;, in welcher zeitlichen oder logischen Reihenfolge Prozesse ablaufen. Für die Modellierung von detaillierten, prozessualen Abläufen und Kontrollflüssen wird stattdessen das [[Aktivitätendiagramm]] verwendet.&lt;br /&gt;
&lt;br /&gt;
== Systematische Notation und Aufbau ==&lt;br /&gt;
Die Erstellung eines normkonformen Diagramms folgt einem klaren, dreistufigen iterativen Prozess:&lt;br /&gt;
&lt;br /&gt;
=== 1. Akteure identifizieren (Actors) ===&lt;br /&gt;
Akteure stellen Rollen dar, die außerhalb des betrachteten Systems liegen, aber mit diesem interagieren. &lt;br /&gt;
* &#039;&#039;&#039;Darstellung:&#039;&#039;&#039; Grafisch als klassisches Strichmännchen (für menschliche Rollen) oder als Rechteck mit dem Stereotyp &amp;lt;code&amp;gt;«system»&amp;lt;/code&amp;gt; (für externe Software/Hardware).&lt;br /&gt;
* &#039;&#039;&#039;Namensgebung:&#039;&#039;&#039; Akteure müssen präzise, selbsterklärende Substantive sein (z. B. &#039;&#039;Kunde&#039;&#039;, &#039;&#039;Systemadministrator&#039;&#039;, &#039;&#039;Buchhaltungssystem&#039;&#039;). Generische Bezeichnungen wie „User“, „Benutzer“ oder „Akteur“ sind strikt zu vermeiden, da sie keine differenzierte Rolle beschreiben.&lt;br /&gt;
&lt;br /&gt;
=== 2. Anwendungsfälle definieren (Use Cases) ===&lt;br /&gt;
Ein Anwendungsfall beschreibt eine Sequenz von Interaktionen, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert liefert.&lt;br /&gt;
* &#039;&#039;&#039;Darstellung:&#039;&#039;&#039; Als horizontale Ellipse, in deren Zentrum die Beschreibung steht.&lt;br /&gt;
* &#039;&#039;&#039;Namensgebung:&#039;&#039;&#039; Die Formulierung erfolgt kurz, prägnant, im Infinitiv und folgt der sprachlichen Struktur: &#039;&#039;&#039;Subjekt-Objekt-Prädikat&#039;&#039;&#039; (z. B. &#039;&#039;Artikel in Warenkorb legen&#039;&#039;, &#039;&#039;Passwort zurücksetzen&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== 3. Beziehungen verknüpfen (Relations) ===&lt;br /&gt;
Akteure und Anwendungsfälle werden über Beziehungslinien verknüpft, um Interaktionskanäle aufzuzeigen. Das gesamte System wird optional durch einen rechteckigen &#039;&#039;&#039;Systemrahmen (System Boundary)&#039;&#039;&#039; umschlossen, welcher die Systemgrenze markiert: Akteure stehen außerhalb, Use Cases innerhalb des Rahmens.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;600&amp;quot; height=&amp;quot;220&amp;quot; viewBox=&amp;quot;0 0 600 220&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;rect x=&amp;quot;180&amp;quot; y=&amp;quot;20&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;180&amp;quot; rx=&amp;quot;5&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;190&amp;quot; y=&amp;quot;40&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Systemgrenze (z.B. Webshop)&amp;lt;/text&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(50, 60)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Kunde&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;110&amp;quot; y1=&amp;quot;120&amp;quot; x2=&amp;quot;240&amp;quot; y2=&amp;quot;120&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;175&amp;quot; y=&amp;quot;110&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; fill=&amp;quot;#555555&amp;quot; text-anchor=&amp;quot;middle&amp;quot;&amp;gt;Assoziation&amp;lt;/text&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(240, 80)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;140&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;120&amp;quot; ry=&amp;quot;35&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;140&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Artikel suchen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Detaillierte Typisierung von Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Assoziationen (Akteur ↔ Use Case) ===&lt;br /&gt;
Assoziationen bilden das Fundament der Kommunikation zwischen Akteur und System. Es handelt sich um eine binäre Beziehung (verbindet genau zwei Elemente).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ungerichtete Assoziation:&#039;&#039;&#039; Eine einfache, durchgehende Linie. Sie signalisiert einen bidirektionalen Informationsfluss. Der Akteur interagiert mit dem Use Case, lässt jedoch offen, wer die Interaktion gestartet hat.&lt;br /&gt;
* &#039;&#039;&#039;Gerichtete Assoziation:&#039;&#039;&#039; Eine Linie mit einer offenen Pfeilspitze. Der Pfeil zeigt auf den Initiator des Datenflusses bzw. der Aktion:&lt;br /&gt;
** Pfeil zeigt zum &#039;&#039;Use Case&#039;&#039;: Der Akteur initiiert den Anwendungsfall aktiv.&lt;br /&gt;
** Pfeil zeigt zum &#039;&#039;Akteur&#039;&#039;: Der Anwendungsfall stößt eine Aktion beim Akteur an (häufig bei sekundären, externen Systemen wie z. B. Benachrichtigungsdiensten).&lt;br /&gt;
&lt;br /&gt;
=== 2. Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs zeitgleich mit wie vielen Instanzen eines Anwendungsfalls interagieren können. Sie werden direkt an die Enden der Assoziationslinien geschrieben.&lt;br /&gt;
&lt;br /&gt;
==== Praxisbeispiel: Das Tischtennis-Rundlaufspiel ====&lt;br /&gt;
Um die Logik von Multiplizitäten zu verdeutlichen, betrachten wir das Regelwerk eines Tischtennis-Rundlaufs:&lt;br /&gt;
* An einem Rundlauf-Spiel müssen &#039;&#039;&#039;mindestens 3 Spielerinnen&#039;&#039;&#039; teilnehmen, nach oben hin gibt es keine Grenze (&amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede einzelne Spielerin nimmt jedoch zu einem Zeitpunkt an &#039;&#039;&#039;exakt 1&#039;&#039;&#039; Rundlauf-Spiel teil (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Ein Spiel kann völlig ohne oder mit unbegrenzt vielen Schiedsrichterinnen stattfinden (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Eine Schiedsrichterin kann maximal &#039;&#039;&#039;an höchstens 1&#039;&#039;&#039; Spiel gleichzeitig als Offizielle zugewiesen sein (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;750&amp;quot; height=&amp;quot;280&amp;quot; viewBox=&amp;quot;0 0 750 280&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(265, 100)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;100&amp;quot; ry=&amp;quot;35&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Am Rundlauf-Spiel&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;60&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;teilnehmen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(40, 50)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Spielerin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;100&amp;quot; y1=&amp;quot;130&amp;quot; x2=&amp;quot;265&amp;quot; y2=&amp;quot;135&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;115&amp;quot; y=&amp;quot;120&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#b30000&amp;quot;&amp;gt;1&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;240&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#b30000&amp;quot;&amp;gt;3..*&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(640, 50)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Schiedsrichterin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;465&amp;quot; y1=&amp;quot;135&amp;quot; x2=&amp;quot;640&amp;quot; y2=&amp;quot;130&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;480&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#b30000&amp;quot;&amp;gt;0..*&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;615&amp;quot; y=&amp;quot;120&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#b30000&amp;quot;&amp;gt;0..1&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis für die Praxis:&#039;&#039; Da Multiplizitäten Use-Case-Diagramme schnell visuell überladen und für fachliche Auftraggeber oft sekundär sind, werden sie in dieser Diagrammart selten notiert. Ihre fundamentale Bedeutung entfalten sie im [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== 3. Include-Beziehungen (Abhängigkeiten) ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt;-Beziehung beschreibt eine zwingende Abhängigkeit (Einschluss). Wenn ein Basis-Anwendungsfall ausgeführt wird, &#039;&#039;&#039;muss&#039;&#039;&#039; der inkludierte Anwendungsfall zwingend ebenfalls ausgeführt werden. Sie dient dem Aufbrechen komplexer Use Cases und der Wiederverwendung von Funktionalitäten.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfeilrichtung:&#039;&#039;&#039; Der gestrichelte Pfeil startet beim &#039;&#039;Basis-Use-Case&#039;&#039; und zeigt &#039;&#039;&#039;auf den inkludierten&#039;&#039;&#039; Use Case.&lt;br /&gt;
* &#039;&#039;&#039;Stereotyp:&#039;&#039;&#039; Die Beziehungslinie muss zwingend mit dem Schlüsselwort &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;650&amp;quot; height=&amp;quot;140&amp;quot; viewBox=&amp;quot;0 0 650 140&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(10, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;100&amp;quot; ry=&amp;quot;35&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Bestellung aufgeben&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;210&amp;quot; y1=&amp;quot;70&amp;quot; x2=&amp;quot;420&amp;quot; y2=&amp;quot;70&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;430,70 415,63 415,77&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;320&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;«include»&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(430, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;100&amp;quot; ry=&amp;quot;35&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Identität prüfen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Extend-Beziehungen (Erweiterungen) ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt;-Beziehung modelliert ein &#039;&#039;&#039;optionales&#039;&#039;&#039; Verhalten. Der erweiternde Use Case wird nur unter präzise definierten Rahmenbedingungen ausgeführt.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfeilrichtung:&#039;&#039;&#039; Der gestrichelte Pfeil verhält sich umgekehrt zur Include-Beziehung: Er startet beim &#039;&#039;erweiternden (optionalen) Use Case&#039;&#039; und zeigt &#039;&#039;&#039;auf den Basis-Use-Case&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Stereotyp:&#039;&#039;&#039; Kennzeichnung erfolgt über das Schlüsselwort &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Erweiterungspunkte (Extension Points):&#039;&#039;&#039; Im Basis-Use-Case wird unter einer horizontalen Trennlinie via &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt; definiert, an welcher Stelle die Erweiterung eingreift.&lt;br /&gt;
* &#039;&#039;&#039;Bedingung (Condition):&#039;&#039;&#039; Ein umschließendes Notizfeld (als Notizzettel dargestellt) definiert die logische Bedingung. Es wird mit einer fein gestrichelten Linie an die Extend-Beziehung geheftet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;700&amp;quot; height=&amp;quot;300&amp;quot; viewBox=&amp;quot;0 0 700 300&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(20, 100)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;120&amp;quot; cy=&amp;quot;50&amp;quot; rx=&amp;quot;110&amp;quot; ry=&amp;quot;45&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;120&amp;quot; y=&amp;quot;40&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Konto einrichten&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;52&amp;quot; x2=&amp;quot;210&amp;quot; y2=&amp;quot;52&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;120&amp;quot; y=&amp;quot;68&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-style=&amp;quot;italic&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;extension points:&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;120&amp;quot; y=&amp;quot;82&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Premium-Option&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;440&amp;quot; y1=&amp;quot;150&amp;quot; x2=&amp;quot;255&amp;quot; y2=&amp;quot;150&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;245,150 260,143 260,157&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;350&amp;quot; y=&amp;quot;135&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;«extend»&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(450, 100)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;50&amp;quot; rx=&amp;quot;100&amp;quot; ry=&amp;quot;45&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;48&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Premium-Features&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;64&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;auswählen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(250, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;0,0 170,0 190,20 190,60 0,60&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;170,0 170,20 190,20&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;20&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Condition: {Nutzer wählt&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;35&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Premium-Abonnement}&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;50&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;Extension Point: Premium-Option&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;345&amp;quot; y1=&amp;quot;70&amp;quot; x2=&amp;quot;345&amp;quot; y2=&amp;quot;150&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; stroke-dasharray=&amp;quot;3,3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. Generalisierung (Vererbung / Spezialisierung) ===&lt;br /&gt;
Eine Generalisierungsbeziehung spiegelt das klassische Konzept der Vererbung (OOP) wider. Sie kann sowohl zwischen zwei Akteuren als auch zwischen zwei Anwendungsfällen existieren. Das spezialisierte Element erbt alle Eigenschaften, Attribute und Verhaltensweisen des allgemeinen Elements und konkretisiert diese.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Darstellung:&#039;&#039;&#039; Eine durchgehende Linie mit einer &#039;&#039;&#039;großen, leeren und geschlossenen Pfeilspitze&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Pfeilrichtung:&#039;&#039;&#039; Der Pfeil zeigt immer &#039;&#039;&#039;vom spezifischen (Unterklasse) zum allgemeinen (Oberklasse)&#039;&#039;&#039; Element.&lt;br /&gt;
&lt;br /&gt;
==== Praxisbeispiel: Nutzerhierarchie ====&lt;br /&gt;
Ein &#039;&#039;Fahrer&#039;&#039; ist eine explizite Spezialisierung des allgemeinen &#039;&#039;Anwenders&#039;&#039;. Der Fahrer besitzt implizit jede Eigenschaft des Standard-Anwenders (wie Stammdaten: Vorname, Nachname, Username) und erbt dessen Fähigkeit, den Use Case &#039;&#039;Login durchführen&#039;&#039; aufzurufen, ohne dass dies redundant gezeichnet werden muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;400&amp;quot; height=&amp;quot;320&amp;quot; viewBox=&amp;quot;0 0 400 320&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(40, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwender&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(200, 45)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;80&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;70&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;80&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Login durchführen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;100&amp;quot; y1=&amp;quot;80&amp;quot; x2=&amp;quot;200&amp;quot; y2=&amp;quot;80&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;70&amp;quot; y1=&amp;quot;195&amp;quot; x2=&amp;quot;70&amp;quot; y2=&amp;quot;165&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;70,150 60,165 80,165&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;85&amp;quot; y=&amp;quot;185&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-style=&amp;quot;italic&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;Generalisierung&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(40, 180)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Fahrer&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassende Gegenüberstellung für die Klausur / Praxis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #aaa;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
! Beziehungstyp !! Notation im Diagramm !! Semantik (Bedeutung) !! Typischer Anwendungsfall&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Assoziation&#039;&#039;&#039; || Durchgehende Linie || Kommunikationspfad || Verknüpft primäre Akteure mit Kernfunktionen.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Include&#039;&#039;&#039; || Gestrichelte Linie + Pfeil zum Ziel + &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; || Zwingende Ausführung (100% Pflicht) || Auslagerung von wiederkehrenden Funktionen wie Login oder Validierung.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Extend&#039;&#039;&#039; || Gestrichelte Linie + Pfeil zur Basis + &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt; || Optionale Ausführung (0-100% je nach Bedingung) || Modellierung von Ausnahmefällen, Fehlermeldungen oder optionalen Zusatzfunktionen.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Generalisierung&#039;&#039;&#039; || Linie + geschlossene, leere Pfeilspitze || &amp;quot;Ist-ein&amp;quot;-Beziehung (Vererbung) || Abbildung von Benutzer-Rollenstrukturen (Rechtehierarchien).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Grenzkostenminimum&amp;diff=2860</id>
		<title>Grenzkostenminimum</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Grenzkostenminimum&amp;diff=2860"/>
		<updated>2026-05-21T08:51:22Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die [[Extremwert|Extremstelle]] zum Grenzkostenminimum gibt an, für welche Produktionsmenge der Kostenzuwachs minimal ist. Dieser Kostenzuwachs ist das Grenzkostenminimum.&lt;br /&gt;
&lt;br /&gt;
==Definition==&lt;br /&gt;
Es sei &amp;lt;math&amp;gt;K:\mathbb{D}_{ök} \rightarrow \mathbb{W}_K&amp;lt;/math&amp;gt; eine [[Kostenfunktion]], &amp;lt;math&amp;gt;K&#039;&amp;lt;/math&amp;gt; die dazugehörige [[Grenzkostenfunktion]] und &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; die [[Extremwert|Extremstelle]] zum Tiefpunkt von &amp;lt;math&amp;gt;K&#039;&amp;lt;/math&amp;gt;, dann nennen wir &amp;lt;math&amp;gt;K&#039;(x_0)&amp;lt;/math&amp;gt; &#039;&#039;&#039;Grenzkostenminimum&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zH8wOu7ienk?si=Vv8doT6rvfVEAUw-&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zusammenhang zwischen Grenzkostenminimum und [[Wendepunkt]]==&lt;br /&gt;
Ist &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; die [[Extremwert|Extremstelle]] zum Grenzkostenminimum &amp;lt;math&amp;gt;K&#039;(x_0)&amp;lt;/math&amp;gt; für eine Kostenfunktion &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;, dann ist &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; eine [[Wendepunkt|Wendestelle]] von &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==Beispiele==&lt;br /&gt;
===Grenzkostenminimum berechnen===&lt;br /&gt;
Wir betrachten die Kostenfunktion &amp;lt;math&amp;gt;K(x)=3x^3-45x^2+300x+192&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; in ME und &amp;lt;math&amp;gt;K(x)&amp;lt;/math&amp;gt; in GE. Es gilt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;(x)=9x^2-90x+300&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;&#039;(x)=18x-90&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;&#039;&#039;(x)=18&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Notwendige Bedingung:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;&#039;(x)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;18x-90=0~|~+90&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;18x=90~|~:18&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x=5&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Hinreichende Bedingung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;&#039;&#039;(5)=18 &amp;gt; 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;&amp;lt;/math&amp;gt; hat bei &amp;lt;math&amp;gt;x=5&amp;lt;/math&amp;gt; ein Minimum.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Funktionswert berechnen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;(5)=9 \cdot 5^2-90 \cdot 5+300=75&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Grenzkostenminimum beträgt 75 &amp;lt;math&amp;gt;\frac{GE}{ME}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===[[Wendepunkt]] der Kostenfunktion mit Hilfe des Grenzkostenminimums ermitteln===&lt;br /&gt;
Bei der Berechnung des Wendepunkts &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; von sind die Schritte 1 und 2 identisch zur oberen Rechnung. Der Funktionswert zum [[Wendepunkt]] ist jedoch &amp;lt;math&amp;gt;K(5)=3 \cdot 5^3-45 \cdot 5^2+300 \cdot 5+192=942&amp;lt;/math&amp;gt;. Der Wendepunkt von &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; ist also &amp;lt;math&amp;gt;W(5|942)&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; hat wegen Schritt 2 eine Rechts-Linkskrümmung bei &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Differentialrechnung]]&lt;br /&gt;
[[Kategorie:Gewinnanalyse]]&lt;br /&gt;
[[Kategorie:FHR_WuV_Mathe]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2859</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2859"/>
		<updated>2026-05-21T08:46:04Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,018 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis noch im Annahmebereich. Die Wahrscheinlichkeit, 3 oder mehr fehlerhafte Teile zu finden, ist mit knapp 7,8 % größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Eine Münze wird &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich.&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,077 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;. Damit fällt das Ergebnis in den Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es extrem ungewöhnlich (Wahrscheinlichkeit von ca. 4 %), höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich. &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,184 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe sind 2 Lampen ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 2) \approx 0,411 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis im Annahmebereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es mit einer Wahrscheinlichkeit von ca. 41,1 % überhaupt nicht ungewöhnlich, höchstens 2 ausgefalle Lampen zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2858</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2858"/>
		<updated>2026-05-21T08:40:30Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,018 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis noch im Annahmebereich. Die Wahrscheinlichkeit, 3 oder mehr fehlerhafte Teile zu finden, ist mit knapp 7,8 % größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Eine Münze wird &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich.&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,077 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;. Damit fällt das Ergebnis in den Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es extrem ungewöhnlich (Wahrscheinlichkeit von ca. 4 %), höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich. &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,184 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 0&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe ist keine Lampe ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;. Damit fällt das Ergebnis in den Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wäre es eher ungewöhnlich (Wahrscheinlichkeit von ca. 4,2 %), dass keine einzige Lampe ausfällt. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2857</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2857"/>
		<updated>2026-05-21T08:38:38Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Münzwurf-Experiment (Linksseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,018 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis noch im Annahmebereich. Die Wahrscheinlichkeit, 3 oder mehr fehlerhafte Teile zu finden, ist mit knapp 7,8 % größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Eine Münze wird &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich.&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,077 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;. Damit fällt das Ergebnis in den Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es extrem ungewöhnlich (Wahrscheinlichkeit von ca. 4 %), höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Signifikanzniveau: &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung des kritischen Wertes:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,150 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritischer Wert: &amp;lt;math&amp;gt;x_{\text{krit}} = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 0&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe ist keine Lampe ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 0) = 0,042 &amp;lt; 0,05&amp;lt;/math&amp;gt;. Damit ist das Ergebnis im Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wäre es eher ungewöhnlich, dass keine einzige Lampe ausfällt. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2856</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2856"/>
		<updated>2026-05-21T08:36:39Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,018 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis noch im Annahmebereich. Die Wahrscheinlichkeit, 3 oder mehr fehlerhafte Teile zu finden, ist mit knapp 7,8 % größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Es wird eine Münze &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Signifikanzniveau: &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung des kritischen Wertes:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,081 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritischer Wert: &amp;lt;math&amp;gt;x_{\text{krit}} = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) = 0,040 &amp;lt; 0,05&amp;lt;/math&amp;gt;. Damit ist das Ergebnis im Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wäre es ungewöhnlich, höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Signifikanzniveau: &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung des kritischen Wertes:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,150 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritischer Wert: &amp;lt;math&amp;gt;x_{\text{krit}} = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 0&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe ist keine Lampe ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 0) = 0,042 &amp;lt; 0,05&amp;lt;/math&amp;gt;. Damit ist das Ergebnis im Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wäre es eher ungewöhnlich, dass keine einzige Lampe ausfällt. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2855</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2855"/>
		<updated>2026-05-21T08:34:48Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Signifikanzniveau: &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung des kritischen Wertes:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 0,047 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 2) = 1 - P(X \le 1) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritischer Wert: &amp;lt;math&amp;gt;x_{\text{krit}} = 2&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{3;4,\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) = 0,047 &amp;lt; 0,05&amp;lt;/math&amp;gt;. Damit ist das Ergebnis im Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wäre es eher ungewöhnlich, 3 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Es wird eine Münze &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Signifikanzniveau: &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung des kritischen Wertes:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,081 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritischer Wert: &amp;lt;math&amp;gt;x_{\text{krit}} = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) = 0,040 &amp;lt; 0,05&amp;lt;/math&amp;gt;. Damit ist das Ergebnis im Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wäre es ungewöhnlich, höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Signifikanzniveau: &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung des kritischen Wertes:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,150 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritischer Wert: &amp;lt;math&amp;gt;x_{\text{krit}} = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 0&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe ist keine Lampe ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 0) = 0,042 &amp;lt; 0,05&amp;lt;/math&amp;gt;. Damit ist das Ergebnis im Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wäre es eher ungewöhnlich, dass keine einzige Lampe ausfällt. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2854</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2854"/>
		<updated>2026-05-21T08:30:43Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist der kritische Wert (beachte: &amp;lt;math&amp;gt;P(X &amp;gt; 3)&amp;lt;/math&amp;gt; ist identisch mit &amp;lt;math&amp;gt;P(X \ge 4)&amp;lt;/math&amp;gt;).  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 4) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritischer Wert: &amp;lt;math&amp;gt;x_{\text{krit}} = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Signifikanzniveau: &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung des kritischen Wertes:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 0,047 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 2) = 1 - P(X \le 1) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritischer Wert: &amp;lt;math&amp;gt;x_{\text{krit}} = 2&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{3;4,\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) = 0,047 &amp;lt; 0,05&amp;lt;/math&amp;gt;. Damit ist das Ergebnis im Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wäre es eher ungewöhnlich, 3 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Es wird eine Münze &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Signifikanzniveau: &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung des kritischen Wertes:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,081 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritischer Wert: &amp;lt;math&amp;gt;x_{\text{krit}} = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) = 0,040 &amp;lt; 0,05&amp;lt;/math&amp;gt;. Damit ist das Ergebnis im Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wäre es ungewöhnlich, höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Signifikanzniveau: &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung des kritischen Wertes:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,150 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritischer Wert: &amp;lt;math&amp;gt;x_{\text{krit}} = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 0&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe ist keine Lampe ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 0) = 0,042 &amp;lt; 0,05&amp;lt;/math&amp;gt;. Damit ist das Ergebnis im Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wäre es eher ungewöhnlich, dass keine einzige Lampe ausfällt. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2853</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2853"/>
		<updated>2026-05-20T12:54:11Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: Die Seite wurde neu angelegt: „== Einführung == Die &amp;#039;&amp;#039;&amp;#039;Unified Modeling Language&amp;#039;&amp;#039;&amp;#039; (Vereinheitlichte Modellierungssprache), kurz UML, ist eine standardisierte grafische Modellierungssprache zur Beschreibung von Anforderungen und Softwarearchitekturen. Das &amp;#039;&amp;#039;&amp;#039;Anwendungsfalldiagramm&amp;#039;&amp;#039;&amp;#039; (häufig auch &amp;#039;&amp;#039;Use-Case-Diagramm&amp;#039;&amp;#039; genannt) ist ein elementares Verhaltensdiagramm der UML.  Ziel des Anwendungsfalldiagramms ist es, in der Analysephase die Anforderungen des Auftraggebers aus fachlich…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz UML, ist eine standardisierte grafische Modellierungssprache zur Beschreibung von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (häufig auch &#039;&#039;Use-Case-Diagramm&#039;&#039; genannt) ist ein elementares Verhaltensdiagramm der UML.&lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase die Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um zwischen potenziellen Anwendern, Auftraggebern und Auftragnehmern zu vermitteln. Als strukturierte Anforderungsbeschreibung können Anwendungsfalldiagramme direkt in das Lastenheft mit aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Das Diagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Potentielle Benutzer oder externe Systeme, die mit der Software interagieren.&lt;br /&gt;
* &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Aufgaben, die für den Anwender ein Ergebnis von messbarem Wert erzeugen und bei deren Lösung das System hilft.&lt;br /&gt;
* &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Verbindungen zwischen Akteuren und Anwendungsfällen oder zwischen Anwendungsfällen untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis:&#039;&#039; Der detaillierte, prozessuale Ablauf von Anwendungsfällen wird in der UML typischerweise nicht hier, sondern in einem intern verlinkten [[Aktivitätendiagramm]] abgebildet.&lt;br /&gt;
&lt;br /&gt;
== Notation und Aufbau ==&lt;br /&gt;
Der systematische Aufbau eines Anwendungsfalldiagramms folgt in der Regel diesen drei Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Zuerst wird geklärt, welche unterschiedlichen Akteure das zu erstellende System nutzen werden. Akteure werden grafisch als „Strichmännchen“ dargestellt. Dies können Personen (Kunden, Mitarbeiter, Administratoren) oder angrenzende Software-Systeme sein. Jeder Akteur muss einen aussagekräftigen, selbsterklärenden Namen erhalten (allgemeine Bezeichnungen wie „User“ sind zu vermeiden, da sie für jede Software gelten).&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Im zweiten Schritt wird festgelegt, welche Aufgaben die Software erfüllen soll. Anwendungsfälle werden als Ellipsen dargestellt und enthalten eine kurze, inhaltliche Beschreibung. Die Formulierung sollte knapp, aber verständlich sein und bevorzugt im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; formuliert werden.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen herstellen:&#039;&#039;&#039; Erst im letzten Schritt werden Akteure und Anwendungsfälle durch Linien miteinander verbunden, um die konkrete Interaktion zu modellieren.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen (Relationen) ==&lt;br /&gt;
Beziehungen bilden die Interaktionen und Abhängigkeiten innerhalb des Systems ab. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Beziehungstyp&lt;br /&gt;
! Notation&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Ungerichtete Assoziation&#039;&#039;&#039;&lt;br /&gt;
| Durchgehende Linie&lt;br /&gt;
| Verbindet Akteure mit Anwendungsfällen. Sie drückt aus, dass der User die Aktion ausführen kann und mit dem System interagiert. Ein Anwendungsfall darf mit mehreren Akteuren verbunden sein und umgekehrt. Eine binäre Assoziation verbindet immer genau zwei Elemente. Dies ist die offenste Form der Darstellung.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Gerichtete Assoziation&#039;&#039;&#039;&lt;br /&gt;
| Durchgehende Linie mit Pfeil&lt;br /&gt;
| Gibt die Initiierungsrichtung an. Ein Pfeil zum Anwendungsfall bedeutet, dass nur der Akteur die Aktion initiieren kann. Ein Pfeil zum Akteur besagt, dass das System die Aktion anstößt. Können beide Seiten initiieren, wird auf Pfeile komplett verzichtet.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Include-Beziehung&#039;&#039;&#039;&amp;lt;br/&amp;gt;(dt. &#039;&#039;beinhalten&#039;&#039;)&lt;br /&gt;
| Gestrichelte Linie mit Pfeil zum inkludierten Anwendungsfall und Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Gibt an, dass der Basis-Anwendungsfall das Verhalten des inkludierten Anwendungsfalls zwingend mitbenutzt und immer ausführt.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Extend-Beziehung&#039;&#039;&#039;&amp;lt;br/&amp;gt;(dt. &#039;&#039;erweitern&#039;&#039;)&lt;br /&gt;
| Gestrichelte Linie mit Pfeil zum Basis-Anwendungsfall und Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Gibt an, dass ein Anwendungsfall optional ist und den Basis-Anwendungsfall nur unter bestimmten Bedingungen erweitert.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Generalisierung&#039;&#039;&#039;&amp;lt;br/&amp;gt;(Vererbung)&lt;br /&gt;
| Durchgehende Linie mit hohlem, geschlossenem Pfeil&lt;br /&gt;
| Zeigt an, dass ein spezialisierter Anwendungsfall (oder Akteur) alle Bestandteile des allgemeinen übernimmt und diese konkretisiert oder erweitert. Beispiel: Der Akteur &#039;&#039;Fahrer&#039;&#039; ist eine Spezialisierung des Akteurs &#039;&#039;Anwender&#039;&#039; und erbt dessen Attribute wie Vorname, Nachname und die Befähigung zum Login.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Detaillierte Betrachtung spezifischer Konzepte ===&lt;br /&gt;
&lt;br /&gt;
==== Multiplizitäten ====&lt;br /&gt;
Multiplizitäten geben an, wie viele Instanzen eines Akteurs mit wie vielen Anwendungsfällen in Beziehung stehen. Sie werden direkt an gerichteten oder ungerichteten Assoziationen notiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pädagogisches Beispiel (Tischtennis-Rundlauf):&#039;&#039;&#039;&lt;br /&gt;
* An einem Tischtennis-Rundlauf sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, die Obergrenze ist &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; (beliebig viele). Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;&lt;br /&gt;
* Jede Spielerin kann jedoch exakt an einem Rundlauf-Spiel teilnehmen. Ober- und Untergrenze sind exakt 1. Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
* An einem Spiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein. Notation: &amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;&lt;br /&gt;
* Jede Schiedsrichterin kann an höchstens einem Spiel beteiligt sein. Notation: &amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Anmerkung:&#039;&#039; Da diese feingranularen Informationen für die Adressaten des Use-Case-Diagramms häufig keine Rolle spielen, werden Multiplizitäten hier eher selten notiert. Eine weitaus wichtigere Rolle spielen sie beim [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
==== Erweiterungspunkte (Extension Points) und Bedingungen (Conditions) ====&lt;br /&gt;
Bei der optionalen &#039;&#039;&#039;Extend-Beziehung&#039;&#039;&#039; bestimmt der Basis-Anwendungsfall sogenannte Erweiterungspunkte (&#039;&#039;Extension Points&#039;&#039;). &lt;br /&gt;
* &#039;&#039;&#039;Extension Points:&#039;&#039;&#039; Sie geben den präzisen Ort innerhalb des Basis-Anwendungsfalls an, an dem Extensions hinzugefügt werden dürfen. Zur Darstellung wird innerhalb der Ellipse eine horizontale Linie gezogen. Darunter steht das Schlüsselwort &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt;, gefolgt vom Namen des Erweiterungspunktes.&lt;br /&gt;
* &#039;&#039;&#039;Bedingung (Condition):&#039;&#039;&#039; Optional kann eine Bedingung hinzugefügt werden, die beschreibt, unter welchen Voraussetzungen der Extend-Use-Case ausgeführt wird. Die Bedingung wird als Notizzettel-Symbol dargestellt, das das Schlüsselwort &amp;lt;code&amp;gt;Condition&amp;lt;/code&amp;gt; enthält. Darunter steht die Bedingung in geschweiften Klammern und der bezogene Erweiterungspunkt. Dieses Symbol ist über eine gestrichelte Linie mit der Extend-Anweisung verbunden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Selectionsort&amp;diff=2852</id>
		<title>Selectionsort</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Selectionsort&amp;diff=2852"/>
		<updated>2026-05-11T07:11:20Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Ein einfacher [[Sortieren|Sortieralgorithmus]] ist der Selection Sort (Sortieren durch Auswählen). Dieser Algorithmus sucht zunächst das kleinste Element in der Liste, merkt es sich und tauscht es mit dem Element am Anfang aus, sodass sich das kleinste Element an der ersten Stelle befindet. &lt;br /&gt;
&lt;br /&gt;
Anschließend wird das zweitkleinste Element im verbleibenden, noch unsortierten Teil der Liste gesucht und mit dem Element an der zweiten Stelle vertauscht, und so weiter. Auf diese Weise erhalten die Elemente auf der linken Seite der aktuellen Position schrittweise ihren festen Platz und werden nicht mehr verändert.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
[[Datei:Array Selectionsort.gif|mini]]&lt;br /&gt;
Es soll eine Liste mit dem Inhalt &amp;lt;code&amp;gt;[4, 3, 1, 5, 2]&amp;lt;/code&amp;gt; sortiert werden.&lt;br /&gt;
&lt;br /&gt;
Im ersten Durchlauf wird die komplette Liste durchsucht, um das kleinste Element auszuwählen (Select) und an den Beginn der Liste zu stellen. In diesem Beispiel ist das der Wert 1. Der ursprüngliche Wert der Startposition (hier die 4) wird mit dem Wert an der Position des kleinsten Elements (hier die 1 am Index 2) vertauscht.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Animation Selectionsort.gif|mini]]&lt;br /&gt;
Im zweiten Durchlauf beginnt die Suche nach dem kleinsten Element nun bei Index 1. An Index 0 befindet sich bereits das kleinste Element der gesamten Liste, daher ist dort keine Suche mehr erforderlich. Der restliche Teil der Liste wird durchsucht. Es wird die 2 als kleinstes Element ausgewählt und mit der neuen Startposition vertauscht.&lt;br /&gt;
&lt;br /&gt;
Die Suche wiederholt sich nach diesem Prinzip, bis alle Elemente sortiert sind. Der Suchbereich verkleinert sich dabei Schritt für Schritt um ein Element. Die folgende Animation visualisiert den Algorithmus.&lt;br /&gt;
&lt;br /&gt;
== Pseudocode ==&lt;br /&gt;
Der [[Algorithmus]] sieht im Pseudocode so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prozedur selectionSort(A ist Liste sortierbarer Elemente)&lt;br /&gt;
    n = Länge von A&lt;br /&gt;
    für einfuegeIndex von 0 bis n - 2 wiederhole&lt;br /&gt;
        minPosition = einfuegeIndex&lt;br /&gt;
        für idx von einfuegeIndex + 1 bis n - 1 wiederhole&lt;br /&gt;
            falls A[idx] &amp;lt; A[minPosition] dann&lt;br /&gt;
                minPosition = idx&lt;br /&gt;
            ende falls&lt;br /&gt;
        ende für&lt;br /&gt;
        falls minPosition ≠ einfuegeIndex dann&lt;br /&gt;
            vertausche A[minPosition] und A[einfuegeIndex]&lt;br /&gt;
        ende falls&lt;br /&gt;
    ende für&lt;br /&gt;
ende prozedur&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Java-Implementierung ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public ArrayList&amp;lt;Mitarbeiter&amp;gt; sortierenNachNachnamen() {&lt;br /&gt;
    ArrayList&amp;lt;Mitarbeiter&amp;gt; sortierteListe = new ArrayList&amp;lt;&amp;gt;(mitarbeiterListe);&lt;br /&gt;
    int stelle = 0;&lt;br /&gt;
&lt;br /&gt;
    while (stelle &amp;lt; sortierteListe.size() - 1) {&lt;br /&gt;
        int kleinstesElement = stelle;&lt;br /&gt;
&lt;br /&gt;
        for (int index = stelle + 1; index &amp;lt; sortierteListe.size(); index++) {&lt;br /&gt;
            if (sortierteListe.get(index).getNachname()&lt;br /&gt;
                    .compareTo(sortierteListe.get(kleinstesElement).getNachname()) &amp;lt; 0) {&lt;br /&gt;
                kleinstesElement = index;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (kleinstesElement != stelle) {&lt;br /&gt;
            Mitarbeiter puffer = sortierteListe.get(kleinstesElement);&lt;br /&gt;
            sortierteListe.set(kleinstesElement, sortierteListe.get(stelle));&lt;br /&gt;
            sortierteListe.set(stelle, puffer);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        stelle++;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return sortierteListe;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Komplexität ==&lt;br /&gt;
Mit Hilfe der [[Laufzeitanalyse]] betrachten wir nun die Zeitkomplexität des Algorithmus Selection Sort. &lt;br /&gt;
&lt;br /&gt;
Ein besonderes Merkmal dieses Algorithmus ist, dass seine Laufzeit **unabhängig** von der anfänglichen Sortierung der Elemente ist. Um eine Datenstruktur (z. B. ein [[Array]]) mit &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Einträgen zu sortieren, muss &amp;lt;math&amp;gt;n - 1&amp;lt;/math&amp;gt; Mal das Minimum durch Vergleichen bestimmt werden. &lt;br /&gt;
&lt;br /&gt;
Bei der ersten Bestimmung des Minimums sind &amp;lt;math&amp;gt;n - 1&amp;lt;/math&amp;gt; Vergleiche notwendig, bei der zweiten &amp;lt;math&amp;gt;n - 2&amp;lt;/math&amp;gt; Vergleiche, und so weiter bis zum letzten Durchlauf mit exakt 1 Vergleich. Mit der [[Arithmetische_Reihe|gaußschen Summenformel]] erhält man die Gesamtanzahl der immer notwendigen Vergleiche:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;(n - 1) + (n - 2) + \dots + 1 = \frac{n(n - 1)}{2} = \frac{1}{2}n^2 - \frac{1}{2}n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Best Case ===&lt;br /&gt;
Das Best-Case-Szenario tritt ein, wenn das Array bereits vollständig aufsteigend sortiert ist. &lt;br /&gt;
Auch wenn alle Elemente bereits am richtigen Platz stehen, &amp;quot;weiß&amp;quot; der Selection Sort dies nicht. Er muss trotzdem in jedem Durchlauf den kompletten unsortierten Rest der Liste überprüfen, um sicherzustellen, dass nicht doch ein noch kleineres Element existiert. Es finden zwar keine Vertauschungen (Swaps) statt, die Anzahl der Vergleiche bleibt jedoch bei &amp;lt;math&amp;gt;\frac{n(n - 1)}{2}&amp;lt;/math&amp;gt;. Da die Vergleiche asymptotisch dominieren, liegt die Zeitkomplexität im Best Case bei &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Average Case ===&lt;br /&gt;
Im durchschnittlichen Fall (Average Case) liegt eine zufällig durchmischte Liste vor. &lt;br /&gt;
Genau wie im Best Case muss der Selection Sort die gesamte arithmetische Reihe an Vergleichen durchführen, um das Minimum in jedem Schritt zu finden. Die Anzahl der durchgeführten Vertauschungen liegt im Schnitt zwischen 0 und &amp;lt;math&amp;gt;n - 1&amp;lt;/math&amp;gt;. Auch hier ändert dies nichts an der dominanten quadratischen Anzahl der Vergleiche. Die Zeitkomplexität im Average Case ist somit ebenfalls &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Worst Case ===&lt;br /&gt;
Das Worst-Case-Szenario liegt vor, wenn die Liste in umgekehrter (absteigender) Reihenfolge sortiert ist.&lt;br /&gt;
Der Algorithmus führt wieder exakt &amp;lt;math&amp;gt;\frac{n(n - 1)}{2}&amp;lt;/math&amp;gt; Vergleiche aus. In diesem Fall muss bei fast jedem Durchlauf (maximal &amp;lt;math&amp;gt;n - 1&amp;lt;/math&amp;gt; Mal) das kleinste Element mit dem aktuellen Start-Element vertauscht werden. Da die maximale Anzahl der Vertauschungen linear (&amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt;) wächst, die Anzahl der Vergleiche jedoch quadratisch, bestimmt der quadratische Term das Laufzeitverhalten. Die Komplexitätsklasse im Worst Case liegt demnach bei &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Quicksort&amp;diff=2851</id>
		<title>Quicksort</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Quicksort&amp;diff=2851"/>
		<updated>2026-05-11T07:11:10Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[[Datei:Rekursive Baumstruktur.jpg|mini|Rekursive Aufteilung beim Quicksort]]&lt;br /&gt;
Ein in der Praxis oft eingesetzter und sehr effizienter [[Sortieren|Sortieralgorithmus]] ist der &#039;&#039;&#039;Quicksort&#039;&#039;&#039; (englisch für „schnelles Sortieren“). Er funktioniert nach dem Prinzip &#039;&#039;&#039;„Teile und herrsche“&#039;&#039;&#039; (Divide and Conquer), welches in der Programmierung meist mithilfe von [[Rekursion]] realisiert wird. &lt;br /&gt;
&lt;br /&gt;
Die Grundidee ist einfach: Die zu sortierende Datenmenge wird in zwei kleinere Teillisten zerlegt (&amp;quot;Teile&amp;quot;) und diese werden anschließend separat sortiert (&amp;quot;Herrsche&amp;quot;). Diese Teillisten werden wiederum in noch kleinere Teillisten zerlegt, bis eine Liste nur noch aus einem einzigen Element besteht. Eine Liste mit nur einem Element ist naturgemäß immer sortiert – an diesem Punkt endet die [[Rekursion]] [http://openbook.galileocomputing.de/c_von_a_bis_z/022_c_algorithmen_003.htm (vgl. Galileo Computing)].&lt;br /&gt;
&lt;br /&gt;
=== Wie funktioniert die Zerlegung (Partitionierung)? ===&lt;br /&gt;
Die Zerlegung der Liste erfolgt anhand eines sogenannten &#039;&#039;&#039;Pivot-Elements&#039;&#039;&#039; (Dreh- und Angelpunkt). &lt;br /&gt;
# Ein beliebiges Element der Liste wird als Pivot ausgewählt.&lt;br /&gt;
# Alle anderen Elemente der Liste werden mit diesem Pivot verglichen.&lt;br /&gt;
# Die Liste wird in zwei Bereiche unterteilt:&lt;br /&gt;
#* &#039;&#039;&#039;Linke Teilliste:&#039;&#039;&#039; Alle Elemente, die kleiner (oder gleich) dem Pivot sind.&lt;br /&gt;
#* &#039;&#039;&#039;Rechte Teilliste:&#039;&#039;&#039; Alle Elemente, die größer als das Pivot sind.&lt;br /&gt;
&lt;br /&gt;
Nach diesem Schritt steht das Pivot-Element bereits an seiner endgültigen, korrekten Position in der Liste. Die Elemente in der linken und rechten Teilliste sind zwar untereinander noch unsortiert, aber es ist garantiert, dass alle Elemente links vom Pivot kleiner sind als alle Elemente rechts davon.&lt;br /&gt;
&lt;br /&gt;
Anschließend ruft sich der Quicksort-Algorithmus selbst auf (Rekursion), um die linke und die rechte Teilliste nach exakt demselben Muster weiter zu sortieren. Ein großer Vorteil dieses Verfahrens: Die Teillisten sind immer Abschnitte der ursprünglichen Liste. Es wird also (abgesehen vom Speicher für die Rekursionsaufrufe) kein zusätzlicher Speicherplatz für neue Listen benötigt (In-Place-Sortierung).&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Als Beispiel betrachten wir eine unsortierte Liste mit Zahlen. Der Einfachheit halber wählen wir in diesem Beispiel immer das &#039;&#039;&#039;erste Element&#039;&#039;&#039; als Pivot-Element. Zu Beginn ist die Zahl 7 also unser Pivot.&lt;br /&gt;
&lt;br /&gt;
7 &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10 8&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;11&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;9&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;3 1 5 2&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zahlen, die kleiner als das Pivot-Element 7 sind, wurden blau markiert. Die Zahlen, die größer als 7 sind, wurden rot markiert. Nach dem ersten Partitionierungsschritt hat QuickSort die Liste folgendermaßen umgeordnet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;3 2 5 6 1 4&amp;lt;/span&amp;gt; &#039;&#039;&#039;7&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;9 11 8 10 12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen alle Zahlen, die kleiner sind als 7, links von ihr. Alle Zahlen, die größer sind, stehen rechts. Die Reihenfolge der Zahlen innerhalb der blauen und roten Teillisten ist hier noch willkürlich und hängt von der genauen Programmierung ab. Entscheidend ist: &#039;&#039;&#039;Die 7 hat nun ihre endgültige, korrekte Position gefunden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Nächstes wird die linke (blaue) Teilliste per QuickSort sortiert. Als neues Pivot wählen wir wieder die erste Zahl des Bereichs, die 3. Die Zahlen, die kleiner sind als 3, werden wieder blau markiert, die größeren rot. Die bereits einsortierte 7 und die rechte Teilliste ignorieren wir für den Moment (grau hinterlegt):&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5 6&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:gray&amp;quot;&amp;gt;7 9 11 8 10 12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Algorithmus sortiert die Elemente relativ zur 3 um:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;1 2&amp;lt;/span&amp;gt; &#039;&#039;&#039;3&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6 5 4&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:gray&amp;quot;&amp;gt;7 9 11 8 10 12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Prozess wird fortgesetzt (erst die 1 und 2, dann die 6, 5 und 4), bis der gesamte linke Teil des Arrays vollständig sortiert ist. Das Ergebnis sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1 2 3 4 5 6&#039;&#039; &#039;&#039;&#039;7&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:gray&amp;quot;&amp;gt;9 11 8 10 12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend wird die Teilliste rechts von der 7 nach demselben Prinzip sortiert. Wieder wird ein Pivot gewählt (hier die 9), und die kleineren und größeren Zahlen werden auf die jeweils richtige Seite gebracht, bis das gesamte Array sortiert ist.&lt;br /&gt;
&lt;br /&gt;
== Pseudocode ==&lt;br /&gt;
Der folgende Pseudocode illustriert die Arbeitsweise des [[Algorithmus]]. Bei jedem Aufruf von &amp;lt;code&amp;gt;quicksort(...)&amp;lt;/code&amp;gt; gibt &amp;lt;code&amp;gt;links&amp;lt;/code&amp;gt; den Index des ersten Elements in der Teilliste an und &amp;lt;code&amp;gt;rechts&amp;lt;/code&amp;gt; den des letzten. Beim ersten Aufruf (oberste Rekursionsebene) ist &amp;lt;code&amp;gt;links = 0&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;rechts = n-1&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
funktion quicksort(links, rechts) &lt;br /&gt;
    falls links &amp;lt; rechts dann &lt;br /&gt;
        // teile() ordnet das Array um und liefert die finale Position des Pivots&lt;br /&gt;
        teiler := teile(links, rechts) &lt;br /&gt;
        &lt;br /&gt;
        // Rekursiver Aufruf für die linke Teilliste&lt;br /&gt;
        quicksort(links, teiler - 1) &lt;br /&gt;
        &lt;br /&gt;
        // Rekursiver Aufruf für die rechte Teilliste&lt;br /&gt;
        quicksort(teiler + 1, rechts) &lt;br /&gt;
    ende&lt;br /&gt;
ende&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wahl des Pivot-Elements ==&lt;br /&gt;
Die Effizienz von Quicksort steht und fällt mit der Wahl des Pivot-Elements. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Schlechteste Wahl:&#039;&#039;&#039; Das Pivot-Element ist zufällig immer das kleinste oder größte Element der Teilliste. Dann wird die Liste extrem ungleichmäßig geteilt (eine Liste mit 0 Elementen, eine mit &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; Elementen).&lt;br /&gt;
* &#039;&#039;&#039;Beste Wahl:&#039;&#039;&#039; Das Pivot-Element ist genau der [[Median]] (der Wert, der exakt in der Mitte der sortierten Liste stehen würde). Die Liste wird in zwei exakt gleich große Hälften geteilt. Da der Median in unsortierten Daten aber aufwendig zu suchen ist, behilft man sich mit Tricks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warum das erste Element oft eine schlechte Wahl ist:&#039;&#039;&#039;&lt;br /&gt;
Wenn man immer stur das erste Element als Pivot wählt (wie in unserem Beispiel) und die Eingabeliste ist bereits (oder fast) fertig sortiert, trifft automatisch immer der oben beschriebene schlechteste Fall ein. Der Algorithmus wird dadurch extrem langsam.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösungsansätze für die Praxis:&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Randomisierung:&#039;&#039;&#039; Man wählt ein zufälliges Element aus dem Intervall als Pivot.&lt;br /&gt;
# &#039;&#039;&#039;Median-of-Three:&#039;&#039;&#039; Man betrachtet das erste, das mittlere und das letzte Element der Teilliste und wählt von diesen dreien den mittleren Wert als Pivot. Dies schützt sehr gut vor bereits vorsortierten Listen.&lt;br /&gt;
&lt;br /&gt;
== Java Implementierung ==&lt;br /&gt;
Bisher wurde die allgemeine Funktionsweise beschrieben. Am besten lassen sich komplexe [[Algorithmus|Algorithmen]] nachvollziehen, wenn man sie anhand einer Implementierung mit Hilfe eines [[Debugger|Debuggers]] analysiert. In der folgenden [[Java]]-Implementierung wird ein [[Array]] aus Ganzzahlen (&amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;) sortiert. &lt;br /&gt;
&lt;br /&gt;
Zur Abwechslung wird in dieser Implementierung immer das &#039;&#039;&#039;letzte&#039;&#039;&#039; Element des aktuellen Bereichs (&amp;lt;code&amp;gt;array[rechts]&amp;lt;/code&amp;gt;) als Pivot gewählt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void quickSort(int array[], int links, int rechts) {&lt;br /&gt;
      if (links &amp;lt; rechts) {&lt;br /&gt;
         // Teile das Array und finde die Position des Pivot-Elements&lt;br /&gt;
         int i = teile(array, links, rechts);&lt;br /&gt;
         &lt;br /&gt;
         // Sortiere den linken Teil&lt;br /&gt;
         quickSort(array, links, i - 1);&lt;br /&gt;
         // Sortiere den rechten Teil&lt;br /&gt;
         quickSort(array, i + 1, rechts);&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public int teile(int array[], int links, int rechts) {&lt;br /&gt;
      int pivot, i, j, help;&lt;br /&gt;
      pivot = array[rechts]; // Wir wählen das rechte Randelement als Pivot               &lt;br /&gt;
      i = links;&lt;br /&gt;
      j = rechts - 1;&lt;br /&gt;
      &lt;br /&gt;
      // Von links und rechts zur Mitte laufen, bis sich i und j kreuzen&lt;br /&gt;
      while (i &amp;lt;= j) {&lt;br /&gt;
         // Suche von links ein Element, das größer als das Pivot ist&lt;br /&gt;
         if (array[i] &amp;gt; pivot) {     &lt;br /&gt;
            // Tausche array[i] mit array[j], um es in den rechten Bereich zu bringen&lt;br /&gt;
            help = array[i]; &lt;br /&gt;
            array[i] = array[j]; &lt;br /&gt;
            array[j] = help;                             &lt;br /&gt;
            j--; // j einen Schritt weiter nach links schieben&lt;br /&gt;
         } else {&lt;br /&gt;
            i++; // i war kleiner/gleich Pivot, ist also korrekt positioniert -&amp;gt; weiter nach rechts&lt;br /&gt;
         }          &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Das Pivot-Element an seine endgültige Position (i) tauschen&lt;br /&gt;
      help = array[i];&lt;br /&gt;
      array[i] = array[rechts];&lt;br /&gt;
      array[rechts] = help;&lt;br /&gt;
      &lt;br /&gt;
      // Rückgabe der finalen Position des Pivot-Elements&lt;br /&gt;
      return i;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung: Indikatorvariablen und die Harmonische Reihe ==&lt;br /&gt;
Bei komplexeren Algorithmen wie [[Quicksort]] reicht einfaches Zählen der Vergleiche oft nicht mehr aus. Hier arbeiten wir in der Laufzeitanalyse mit einem stochastischen Werkzeug: &#039;&#039;&#039;Indikatorvariablen&#039;&#039;&#039; und der &#039;&#039;&#039;Harmonischen Reihe&#039;&#039;&#039;. Um das Prinzip zu verinnerlichen, analysieren wir vorab einen simplen Code zur Maximumsuche:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public int findMax(int[] A) {&lt;br /&gt;
    int max = A[0];&lt;br /&gt;
    for (int i = 1; i &amp;lt; A.length; i++) {&lt;br /&gt;
        if (A[i] &amp;gt; max) {&lt;br /&gt;
            max = A[i]; // Update-Operation&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return max;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Vergleiche in der &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-Bedingung werden immer exakt &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; Mal ausgeführt. Aber wie oft wird die Variable &amp;lt;code&amp;gt;max&amp;lt;/code&amp;gt; im Durchschnitt tatsächlich überschrieben (Update-Operation)?&lt;br /&gt;
&lt;br /&gt;
Wir stellen uns vor, das Array enthält völlig zufällig gemischte Zahlen.&lt;br /&gt;
* &#039;&#039;&#039;Intuitiver Ansatz:&#039;&#039;&#039; &lt;br /&gt;
Das 1. Element ist automatisch das bisherige Maximum (Wahrscheinlichkeit: 1). &lt;br /&gt;
Damit das 2. Element ein neues Maximum ist, muss es größer als das erste sein. Die Chance dafür ist bei zufälliger Verteilung exakt 50% (&amp;lt;math&amp;gt;\frac{1}{2}&amp;lt;/math&amp;gt;). &lt;br /&gt;
Damit das 3. Element ein neues Maximum ist, muss es das Größte der ersten drei Elemente sein. Die Chance dafür ist &amp;lt;math&amp;gt;\frac{1}{3}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mathematischer Ansatz (Indikatorvariablen):&#039;&#039;&#039;&lt;br /&gt;
Wir definieren einen „Schalter“ (die Indikatorvariable) &amp;lt;math&amp;gt;X_i&amp;lt;/math&amp;gt;. Er ist &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;, wenn ein neues Maximum an Stelle &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; gefunden wird, sonst &amp;lt;math&amp;gt;0&amp;lt;/math&amp;gt;. Die Wahrscheinlichkeit dafür ist &amp;lt;math&amp;gt;P(X_i = 1) = \frac{1}{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Um die durchschnittliche Gesamtzahl der Updates zu finden, addieren wir einfach diese Wahrscheinlichkeiten auf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E[X] = \sum_{i=1}^{n} \frac{1}{i} = 1 + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \dots + \frac{1}{n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese spezielle Summe nennt man in der Mathematik die &#039;&#039;&#039;Harmonische Reihe&#039;&#039;&#039; (&amp;lt;math&amp;gt;H_n&amp;lt;/math&amp;gt;). Sie wächst extrem langsam. Für große Zahlen &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; entspricht sie in etwa dem &#039;&#039;&#039;natürlichen Logarithmus&#039;&#039;&#039; (&amp;lt;math&amp;gt;\ln(n)&amp;lt;/math&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Erkenntnis für Quicksort:&#039;&#039;&#039; Obwohl das Array &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Elemente hat, wird die Update-Operation im Durchschnitt nur logarithmisch oft (&amp;lt;math&amp;gt;\mathcal{O}(\log n)&amp;lt;/math&amp;gt;) ausgeführt. Genau dieses stochastische Prinzip (das Aufsummieren von Einzelwahrscheinlichkeiten, die zu einem Logarithmus führen) ist der Schlüssel, um im nächsten Abschnitt zu beweisen, dass Quicksort im Average-Case bei &amp;lt;math&amp;gt;\mathcal{O}(n \log n)&amp;lt;/math&amp;gt; liegt.&lt;br /&gt;
&lt;br /&gt;
== Laufzeitanalyse ==&lt;br /&gt;
&lt;br /&gt;
=== Best-Case (Bester Fall) ===&lt;br /&gt;
[[Datei:Verzweigungsbaum Quicksort symetrisch.png|mini|Best-Case: Symmetrischer Baum]]&lt;br /&gt;
Der beste Fall liegt vor, wenn das Pivot-Element die Liste in jedem Rekursionsschritt exakt in der Mitte teilt. Die entstehenden Teillisten sind dann immer gleich groß.&lt;br /&gt;
[[Datei:SubArrays symetrisch Quicksort.png|mini|Halbierung der Arraygrößen]]&lt;br /&gt;
&lt;br /&gt;
Wird die Anzahl der zu sortierenden Elemente &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; verdoppelt, kommt durch die fortlaufende Halbierung lediglich &#039;&#039;&#039;eine einzige neue Rekursionsebene&#039;&#039;&#039; (ein Baum-Level) hinzu. Dieses Wachstumsverhalten (Wie oft kann ich &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; durch 2 teilen, bis 1 übrig bleibt?) wird mathematisch durch den Logarithmus zur Basis 2 ausgedrückt: &amp;lt;math&amp;gt;\log_2(n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Zu sortierende Elemente &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
| style=&amp;quot;color:green&amp;quot; | 4&lt;br /&gt;
| style=&amp;quot;color:green&amp;quot; | 8&lt;br /&gt;
| style=&amp;quot;color:green&amp;quot; | 16&lt;br /&gt;
| style=&amp;quot;color:green&amp;quot; | 32&lt;br /&gt;
|-&lt;br /&gt;
! Als Zweierpotenz&lt;br /&gt;
| &amp;lt;math&amp;gt;\color{green}{2^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
| &amp;lt;math&amp;gt;\color{green}{2^3}&amp;lt;/math&amp;gt;&lt;br /&gt;
| &amp;lt;math&amp;gt;\color{green}{2^4}&amp;lt;/math&amp;gt;&lt;br /&gt;
| &amp;lt;math&amp;gt;\color{green}{2^5}&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Anzahl Rekursionsebenen &amp;lt;math&amp;gt;\log_2(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| style=&amp;quot;color:red&amp;quot; | 2&lt;br /&gt;
| style=&amp;quot;color:red&amp;quot; | 3&lt;br /&gt;
| style=&amp;quot;color:red&amp;quot; | 4&lt;br /&gt;
| style=&amp;quot;color:red&amp;quot; | 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wir haben also insgesamt &amp;lt;math&amp;gt;\log_2(n)&amp;lt;/math&amp;gt; Ebenen. Nun müssen wir noch den Aufwand pro Ebene bestimmen: Obwohl die einzelnen Teillisten nach unten hin immer kürzer werden, verdoppelt sich gleichzeitig ihre Anzahl. Auf &#039;&#039;&#039;jeder einzelnen Ebene&#039;&#039;&#039; müssen daher in der Summe über alle Teillisten hinweg wieder (nahezu) &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Elemente betrachtet und mit den jeweiligen Pivots verglichen werden.&lt;br /&gt;
&lt;br /&gt;
Wir multiplizieren also die Arbeit pro Ebene (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Vergleiche) mit der Anzahl der Ebenen (&amp;lt;math&amp;gt;\log_2(n)&amp;lt;/math&amp;gt;).&lt;br /&gt;
&#039;&#039;&#039;Fazit Best-Case:&#039;&#039;&#039; Die Laufzeit beträgt &amp;lt;math&amp;gt;\mathcal{O}(n \log n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Average-Case (Durchschnittlicher Fall) ===&lt;br /&gt;
In der Praxis haben wir fast nie den perfekten Best-Case, aber zum Glück auch extrem selten den absoluten Worst-Case. Meistens teilt das Pivot die Liste in ungleiche, aber moderate Verhältnisse (z. B. 30:70 oder 60:40). Auch bei solchen ungleichen Teilungen wächst die Tiefe des Baumes weiterhin nur logarithmisch.&lt;br /&gt;
&lt;br /&gt;
Um den Average-Case mathematisch exakt zu beweisen, greifen wir auf Stochastik und unser Vorwissen zur Harmonischen Reihe zurück. Wir fragen uns: &#039;&#039;Wie hoch ist die Wahrscheinlichkeit, dass zwei beliebige Elemente (nennen wir sie &amp;lt;math&amp;gt;z_i&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;z_j&amp;lt;/math&amp;gt;, wobei &amp;lt;math&amp;gt;z_i &amp;lt; z_j&amp;lt;/math&amp;gt;) im Laufe des gesamten Algorithmus direkt miteinander verglichen werden?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Zwei Elemente werden genau dann miteinander verglichen, wenn eines der beiden als Pivot-Element ausgewählt wird, &#039;&#039;&#039;bevor&#039;&#039;&#039; irgendein anderes Element, dessen Wert zwischen &amp;lt;math&amp;gt;z_i&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;z_j&amp;lt;/math&amp;gt; liegt, als Pivot gewählt wird.&lt;br /&gt;
* Zwischen &amp;lt;math&amp;gt;z_i&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;z_j&amp;lt;/math&amp;gt; (inklusive der beiden Randelemente) liegen exakt &amp;lt;math&amp;gt;k = j - i + 1&amp;lt;/math&amp;gt; Elemente. &lt;br /&gt;
* Gehen wir von einer zufälligen Pivot-Wahl aus, hat jedes dieser &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; Elemente die gleiche Chance, zuerst als Pivot gezogen zu werden. Damit &amp;lt;math&amp;gt;z_i&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;z_j&amp;lt;/math&amp;gt; verglichen werden, muss exakt &amp;lt;math&amp;gt;z_i&amp;lt;/math&amp;gt; oder &amp;lt;math&amp;gt;z_j&amp;lt;/math&amp;gt; der &amp;quot;Gewinner&amp;quot; dieser Ziehung sein. Da es &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt; günstige Fälle bei &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; möglichen Fällen gibt, beträgt die Wahrscheinlichkeit exakt &amp;lt;math&amp;gt;\frac{2}{k}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Summieren wir diese Wahrscheinlichkeiten (den sogenannten Erwartungswert) für alle möglichen Elementpaare im gesamten Array auf, erhalten wir folgende Doppel-Summe:&lt;br /&gt;
&amp;lt;math&amp;gt;E(X) = \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} \frac{2}{j - i + 1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ersetzt man den Abstand &amp;lt;math&amp;gt;(j - i + 1)&amp;lt;/math&amp;gt; formal durch die Laufvariable &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, löst sich die innere Summe auf zu:&lt;br /&gt;
&amp;lt;math&amp;gt;\sum_{k=2}^{n} \frac{2}{k} = 2 \cdot \left( \frac{1}{2} + \frac{1}{3} + \dots + \frac{1}{n} \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Klammer erkennen wir exakt die &#039;&#039;&#039;Harmonische Reihe&#039;&#039;&#039; wieder! Aus der Mathematik wissen wir, dass die Harmonische Reihe für große &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; gegen den natürlichen Logarithmus &amp;lt;math&amp;gt;\ln(n)&amp;lt;/math&amp;gt; konvergiert. Die innere Summe ergibt also maximal ungefähr &amp;lt;math&amp;gt;2 \cdot \ln(n)&amp;lt;/math&amp;gt;. Da die äußere Summe (die Variable &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;) insgesamt &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;-mal durchlaufen wird, multiplizieren wir diesen Wert mit &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; und erhalten insgesamt rund &amp;lt;math&amp;gt;2n \cdot \ln(n)&amp;lt;/math&amp;gt; zu erwartende Vergleiche. &lt;br /&gt;
&lt;br /&gt;
Da konstante Vorfaktoren (wie die &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;) und die Basis des Logarithmus in der asymptotischen Notation ignoriert werden, ist der Beweis erbracht: &lt;br /&gt;
&#039;&#039;&#039;Fazit Average-Case:&#039;&#039;&#039; Auch bei zufälliger Verteilung konvergiert Quicksort dank des logarithmischen Wachstums sicher gegen die Komplexitätsklasse &amp;lt;math&amp;gt;\mathcal{O}(n \log n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Worst-Case (Schlechtester Fall) ===&lt;br /&gt;
[[Datei:Baum N-Ebenen.png|mini|Worst-Case: Entarteter Baum]]&lt;br /&gt;
Angenommen, wir haben extremes Pech und die Partitionierung ist maximal unausgeglichen. Das gewählte Pivot ist immer das absolut kleinste oder größte Element der aktuellen Teilliste. Dann enthält eine der Partitionen 0 Elemente und die andere Partition &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; Elemente. Der Baum &amp;quot;entartet&amp;quot; zu einer linearen Kette. &lt;br /&gt;
&#039;&#039;Hinweis für die Praxis: Wird bei einer naiven Implementierung immer stur das letzte Element als Pivot gewählt, tritt dieser Worst-Case ironischerweise genau dann auf, wenn die Liste bereits aufsteigend oder absteigend sortiert ist!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Aufwand für das Vergleichen (Partitionieren) auf der ersten Ebene mit &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Elementen ist proportional zu &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Nennen wir diesen Aufwand &amp;lt;math&amp;gt;c \cdot n&amp;lt;/math&amp;gt; (wobei &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; eine Konstante für die Dauer eines einzelnen Vergleichs ist).&lt;br /&gt;
Auf der nächsten Ebene müssen wir &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; Elemente vergleichen, der Aufwand ist also &amp;lt;math&amp;gt;c \cdot (n-1)&amp;lt;/math&amp;gt;. Danach &amp;lt;math&amp;gt;c \cdot (n-2)&amp;lt;/math&amp;gt; und so weiter.&lt;br /&gt;
&lt;br /&gt;
Wenn wir die Partitionierungszeiten für alle Ebenen aufsummieren, erhalten wir folgende Reihe:&lt;br /&gt;
&amp;lt;math&amp;gt;c \cdot n + c \cdot (n - 1) + c \cdot (n - 2) + \dots + c \cdot 2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir klammern &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; aus und erkennen die bekannte [[Arithmetische_Reihe|Gaußsche Summenformel]]:&lt;br /&gt;
&amp;lt;math&amp;gt;c \cdot (n + (n-1) + (n-2) + \dots + 2) \approx c \cdot \frac{n(n+1)}{2} = \frac{c}{2}n^2 + \frac{c}{2}n&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Da in der asymptotischen Laufzeitanalyse konstante Faktoren (&amp;lt;math&amp;gt;\frac{c}{2}&amp;lt;/math&amp;gt;) und niederwertige Terme (wie &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) ignoriert werden, bestimmt allein der quadratische Term das Wachstumsverhalten. &lt;br /&gt;
&#039;&#039;&#039;Fazit Worst-Case:&#039;&#039;&#039; Quicksort hat im schlechtesten Fall eine Zeitkomplexität von &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Insertionsort&amp;diff=2850</id>
		<title>Insertionsort</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Insertionsort&amp;diff=2850"/>
		<updated>2026-05-11T07:10:39Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Der [[Algorithmus]] dieses [[Sortieren|Sortierverfahrens]] ist relativ simpel. Das Prinzip von Insertion Sort ist folgendes: Die einzelnen Elemente werden von vorne nach hinten durchlaufen. Von der aktuellen Position aus wird jedes Element von rechts nach links verschoben – und zwar so lange, bis das einzufügende Element größer oder gleich dem Element ist, das an der aktuell betrachteten Position steht.&lt;br /&gt;
&lt;br /&gt;
Der Platz für das Element, das verschoben wird, ist währenddessen frei. Diese Lücke wird anschließend mit dem entsprechenden Wert an der richtigen Stelle gefüllt.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
[[Datei:Animation Insertio-Sort.gif|mini]]&lt;br /&gt;
Die folgende Tabelle zeigt die Sortierschritte zum Sortieren der Folge 5 7 0 3 4 2 6 1. Auf der linken Seite (grün dargestellt) befindet sich jeweils der bereits sortierte Teil der Folge. Die blauen Ziffern repräsentieren den unsortierten Teil der Zahlenfolge. Ganz rechts steht in Klammern die Anzahl der Positionen, um die das eingefügte Element nach links verschoben wurde. Das aktuell eingefügte Element ist fett markiert.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; font-family:monospace;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&#039;&#039; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (0)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&#039;&#039;&#039; || &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (0)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (4)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || (6)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudocode ==&lt;br /&gt;
Der [[Algorithmus]] sieht im Pseudocode so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prozedur insertionSort(A ist Liste sortierbarer Elemente)&lt;br /&gt;
    n = Länge von A&lt;br /&gt;
    für i von 1 bis n - 1 wiederhole&lt;br /&gt;
        einzusortierenderWert = A[i]&lt;br /&gt;
        j = i - 1&lt;br /&gt;
        solange j ≥ 0 und A[j] &amp;gt; einzusortierenderWert wiederhole&lt;br /&gt;
            A[j + 1] = A[j]&lt;br /&gt;
            j = j - 1&lt;br /&gt;
        ende solange&lt;br /&gt;
        A[j + 1] = einzusortierenderWert&lt;br /&gt;
    ende für&lt;br /&gt;
ende prozedur&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Komplexität ==&lt;br /&gt;
&lt;br /&gt;
=== Best Case ===&lt;br /&gt;
Die optimale Eingabe ist ein bereits sortiertes [[Array]]. In diesem Fall wird pro Iteration lediglich ein Vergleich durchgeführt, und die innere Schleife wird nie betreten. Die Gesamtanzahl der Vergleiche ist somit proportional zur Anzahl der Elemente &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Insertion Sort besitzt im Best Case daher eine lineare Laufzeit von &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Average Case ===&lt;br /&gt;
Das Average-Case-Szenario geht von einer zufälligen Verteilung der Werte in der Liste aus.&lt;br /&gt;
&lt;br /&gt;
Im Durchschnitt ist das aktuell betrachtete Element kleiner als die Hälfte der bereits sortierten Elemente. Die innere Schleife muss das Element also im Mittel nur bis in die Mitte des bisher sortierten Teilbereichs verschieben. Die Anzahl der Vergleiche und Verschiebungen halbiert sich im Vergleich zum Worst Case dadurch in etwa.&lt;br /&gt;
&lt;br /&gt;
Da in der asymptotischen Landau-Notation konstante Faktoren (wie diese Halbierung) ignoriert werden, dominiert weiterhin die höchste Potenz das Wachstum. Die Zeitkomplexität liegt im Average Case demnach bei &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Worst Case ===&lt;br /&gt;
Eine Liste in umgekehrter (absteigender) Reihenfolge stellt das Worst-Case-Szenario für Insertion Sort dar, beispielsweise:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;[11, 7, 5, 3, 2, 0]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir betrachten nur die Vergleichsoperationen, die mit der Variablen &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; gezählt werden. Die Anzahl der zu sortierenden Elemente beträgt &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Beim ersten äußeren Schleifendurchlauf ist &amp;lt;math&amp;gt;c = 1&amp;lt;/math&amp;gt;, da nur ein Vergleich durchgeführt wird. Beim zweiten Durchlauf sind es 2 Vergleiche, beim dritten 3 usw., bis zum letzten Durchlauf mit &amp;lt;math&amp;gt;n - 1&amp;lt;/math&amp;gt; Vergleichen.&lt;br /&gt;
&lt;br /&gt;
Die Gesamtanzahl der Vergleiche ergibt sich zu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;1 + 2 + 3 + \dots + (n - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist eine [[Arithmetische_Reihe|arithmetische Reihe]]. Mit der gaußschen Summenformel erhält man:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{n(n-1)}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für große &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dominiert der quadratische Term, sodass Insertion Sort im Worst Case in der Komplexitätsklasse &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt; liegt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Quicksort&amp;diff=2849</id>
		<title>Quicksort</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Quicksort&amp;diff=2849"/>
		<updated>2026-05-05T07:28:30Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Laufzeitanalyse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[[Datei:Rekursive Baumstruktur.jpg|mini|Rekursive Aufteilung beim Quicksort]]&lt;br /&gt;
Ein in der Praxis oft eingesetzter und sehr effizienter [[Sortieren|Sortieralgorithmus]] ist der &#039;&#039;&#039;Quicksort&#039;&#039;&#039; (englisch für „schnelles Sortieren“). Er funktioniert nach dem Prinzip &#039;&#039;&#039;„Teile und herrsche“&#039;&#039;&#039; (Divide and Conquer), welches in der Programmierung meist mithilfe von [[Rekursion]] realisiert wird. &lt;br /&gt;
&lt;br /&gt;
Die Grundidee ist einfach: Die zu sortierende Datenmenge wird in zwei kleinere Teillisten zerlegt (&amp;quot;Teile&amp;quot;) und diese werden anschließend separat sortiert (&amp;quot;Herrsche&amp;quot;). Diese Teillisten werden wiederum in noch kleinere Teillisten zerlegt, bis eine Liste nur noch aus einem einzigen Element besteht. Eine Liste mit nur einem Element ist naturgemäß immer sortiert – an diesem Punkt endet die [[Rekursion]] [http://openbook.galileocomputing.de/c_von_a_bis_z/022_c_algorithmen_003.htm (vgl. Galileo Computing)].&lt;br /&gt;
&lt;br /&gt;
=== Wie funktioniert die Zerlegung (Partitionierung)? ===&lt;br /&gt;
Die Zerlegung der Liste erfolgt anhand eines sogenannten &#039;&#039;&#039;Pivot-Elements&#039;&#039;&#039; (Dreh- und Angelpunkt). &lt;br /&gt;
# Ein beliebiges Element der Liste wird als Pivot ausgewählt.&lt;br /&gt;
# Alle anderen Elemente der Liste werden mit diesem Pivot verglichen.&lt;br /&gt;
# Die Liste wird in zwei Bereiche unterteilt:&lt;br /&gt;
#* &#039;&#039;&#039;Linke Teilliste:&#039;&#039;&#039; Alle Elemente, die kleiner (oder gleich) dem Pivot sind.&lt;br /&gt;
#* &#039;&#039;&#039;Rechte Teilliste:&#039;&#039;&#039; Alle Elemente, die größer als das Pivot sind.&lt;br /&gt;
&lt;br /&gt;
Nach diesem Schritt steht das Pivot-Element bereits an seiner endgültigen, korrekten Position in der Liste. Die Elemente in der linken und rechten Teilliste sind zwar untereinander noch unsortiert, aber es ist garantiert, dass alle Elemente links vom Pivot kleiner sind als alle Elemente rechts davon.&lt;br /&gt;
&lt;br /&gt;
Anschließend ruft sich der Quicksort-Algorithmus selbst auf (Rekursion), um die linke und die rechte Teilliste nach exakt demselben Muster weiter zu sortieren. Ein großer Vorteil dieses Verfahrens: Die Teillisten sind immer Abschnitte der ursprünglichen Liste. Es wird also (abgesehen vom Speicher für die Rekursionsaufrufe) kein zusätzlicher Speicherplatz für neue Listen benötigt (In-Place-Sortierung).&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Als Beispiel betrachten wir eine unsortierte Liste mit Zahlen. Der Einfachheit halber wählen wir in diesem Beispiel immer das &#039;&#039;&#039;erste Element&#039;&#039;&#039; als Pivot-Element. Zu Beginn ist die Zahl 7 also unser Pivot.&lt;br /&gt;
&lt;br /&gt;
7 &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;10 8&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;11&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;9&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;3 1 5 2&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zahlen, die kleiner als das Pivot-Element 7 sind, wurden blau markiert. Die Zahlen, die größer als 7 sind, wurden rot markiert. Nach dem ersten Partitionierungsschritt hat QuickSort die Liste folgendermaßen umgeordnet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;3 2 5 6 1 4&amp;lt;/span&amp;gt; &#039;&#039;&#039;7&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;9 11 8 10 12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen alle Zahlen, die kleiner sind als 7, links von ihr. Alle Zahlen, die größer sind, stehen rechts. Die Reihenfolge der Zahlen innerhalb der blauen und roten Teillisten ist hier noch willkürlich und hängt von der genauen Programmierung ab. Entscheidend ist: &#039;&#039;&#039;Die 7 hat nun ihre endgültige, korrekte Position gefunden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Nächstes wird die linke (blaue) Teilliste per QuickSort sortiert. Als neues Pivot wählen wir wieder die erste Zahl des Bereichs, die 3. Die Zahlen, die kleiner sind als 3, werden wieder blau markiert, die größeren rot. Die bereits einsortierte 7 und die rechte Teilliste ignorieren wir für den Moment (grau hinterlegt):&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;5 6&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:gray&amp;quot;&amp;gt;7 9 11 8 10 12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Algorithmus sortiert die Elemente relativ zur 3 um:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;1 2&amp;lt;/span&amp;gt; &#039;&#039;&#039;3&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;6 5 4&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:gray&amp;quot;&amp;gt;7 9 11 8 10 12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Prozess wird fortgesetzt (erst die 1 und 2, dann die 6, 5 und 4), bis der gesamte linke Teil des Arrays vollständig sortiert ist. Das Ergebnis sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1 2 3 4 5 6&#039;&#039; &#039;&#039;&#039;7&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:gray&amp;quot;&amp;gt;9 11 8 10 12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend wird die Teilliste rechts von der 7 nach demselben Prinzip sortiert. Wieder wird ein Pivot gewählt (hier die 9), und die kleineren und größeren Zahlen werden auf die jeweils richtige Seite gebracht, bis das gesamte Array sortiert ist.&lt;br /&gt;
&lt;br /&gt;
== Pseudocode ==&lt;br /&gt;
Der folgende Pseudocode illustriert die Arbeitsweise des [[Algorithmus]]. Bei jedem Aufruf von &amp;lt;code&amp;gt;quicksort(...)&amp;lt;/code&amp;gt; gibt &amp;lt;code&amp;gt;links&amp;lt;/code&amp;gt; den Index des ersten Elements in der Teilliste an und &amp;lt;code&amp;gt;rechts&amp;lt;/code&amp;gt; den des letzten. Beim ersten Aufruf (oberste Rekursionsebene) ist &amp;lt;code&amp;gt;links = 0&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;rechts = n-1&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
funktion quicksort(links, rechts) &lt;br /&gt;
    falls links &amp;lt; rechts dann &lt;br /&gt;
        // teile() ordnet das Array um und liefert die finale Position des Pivots&lt;br /&gt;
        teiler := teile(links, rechts) &lt;br /&gt;
        &lt;br /&gt;
        // Rekursiver Aufruf für die linke Teilliste&lt;br /&gt;
        quicksort(links, teiler - 1) &lt;br /&gt;
        &lt;br /&gt;
        // Rekursiver Aufruf für die rechte Teilliste&lt;br /&gt;
        quicksort(teiler + 1, rechts) &lt;br /&gt;
    ende&lt;br /&gt;
ende&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wahl des Pivot-Elements ==&lt;br /&gt;
Die Effizienz von Quicksort steht und fällt mit der Wahl des Pivot-Elements. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Schlechteste Wahl:&#039;&#039;&#039; Das Pivot-Element ist zufällig immer das kleinste oder größte Element der Teilliste. Dann wird die Liste extrem ungleichmäßig geteilt (eine Liste mit 0 Elementen, eine mit &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; Elementen).&lt;br /&gt;
* &#039;&#039;&#039;Beste Wahl:&#039;&#039;&#039; Das Pivot-Element ist genau der [[Median]] (der Wert, der exakt in der Mitte der sortierten Liste stehen würde). Die Liste wird in zwei exakt gleich große Hälften geteilt. Da der Median in unsortierten Daten aber aufwendig zu suchen ist, behilft man sich mit Tricks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warum das erste Element oft eine schlechte Wahl ist:&#039;&#039;&#039;&lt;br /&gt;
Wenn man immer stur das erste Element als Pivot wählt (wie in unserem Beispiel) und die Eingabeliste ist bereits (oder fast) fertig sortiert, trifft automatisch immer der oben beschriebene schlechteste Fall ein. Der Algorithmus wird dadurch extrem langsam.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösungsansätze für die Praxis:&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Randomisierung:&#039;&#039;&#039; Man wählt ein zufälliges Element aus dem Intervall als Pivot.&lt;br /&gt;
# &#039;&#039;&#039;Median-of-Three:&#039;&#039;&#039; Man betrachtet das erste, das mittlere und das letzte Element der Teilliste und wählt von diesen dreien den mittleren Wert als Pivot. Dies schützt sehr gut vor bereits vorsortierten Listen.&lt;br /&gt;
&lt;br /&gt;
== Java Implementierung ==&lt;br /&gt;
Bisher wurde die allgemeine Funktionsweise beschrieben. Am besten lassen sich komplexe [[Algorithmus|Algorithmen]] nachvollziehen, wenn man sie anhand einer Implementierung mit Hilfe eines [[Debugger|Debuggers]] analysiert. In der folgenden [[Java]]-Implementierung wird ein [[Array]] aus Ganzzahlen (&amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;) sortiert. &lt;br /&gt;
&lt;br /&gt;
Zur Abwechslung wird in dieser Implementierung immer das &#039;&#039;&#039;letzte&#039;&#039;&#039; Element des aktuellen Bereichs (&amp;lt;code&amp;gt;array[rechts]&amp;lt;/code&amp;gt;) als Pivot gewählt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void quickSort(int array[], int links, int rechts) {&lt;br /&gt;
      if (links &amp;lt; rechts) {&lt;br /&gt;
         // Teile das Array und finde die Position des Pivot-Elements&lt;br /&gt;
         int i = teile(array, links, rechts);&lt;br /&gt;
         &lt;br /&gt;
         // Sortiere den linken Teil&lt;br /&gt;
         quickSort(array, links, i - 1);&lt;br /&gt;
         // Sortiere den rechten Teil&lt;br /&gt;
         quickSort(array, i + 1, rechts);&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public int teile(int array[], int links, int rechts) {&lt;br /&gt;
      int pivot, i, j, help;&lt;br /&gt;
      pivot = array[rechts]; // Wir wählen das rechte Randelement als Pivot               &lt;br /&gt;
      i = links;&lt;br /&gt;
      j = rechts - 1;&lt;br /&gt;
      &lt;br /&gt;
      // Von links und rechts zur Mitte laufen, bis sich i und j kreuzen&lt;br /&gt;
      while (i &amp;lt;= j) {&lt;br /&gt;
         // Suche von links ein Element, das größer als das Pivot ist&lt;br /&gt;
         if (array[i] &amp;gt; pivot) {     &lt;br /&gt;
            // Tausche array[i] mit array[j], um es in den rechten Bereich zu bringen&lt;br /&gt;
            help = array[i]; &lt;br /&gt;
            array[i] = array[j]; &lt;br /&gt;
            array[j] = help;                             &lt;br /&gt;
            j--; // j einen Schritt weiter nach links schieben&lt;br /&gt;
         } else {&lt;br /&gt;
            i++; // i war kleiner/gleich Pivot, ist also korrekt positioniert -&amp;gt; weiter nach rechts&lt;br /&gt;
         }          &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Das Pivot-Element an seine endgültige Position (i) tauschen&lt;br /&gt;
      help = array[i];&lt;br /&gt;
      array[i] = array[rechts];&lt;br /&gt;
      array[rechts] = help;&lt;br /&gt;
      &lt;br /&gt;
      // Rückgabe der finalen Position des Pivot-Elements&lt;br /&gt;
      return i;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung: Indikatorvariablen und die Harmonische Reihe ==&lt;br /&gt;
Bei komplexeren Algorithmen wie [[Quicksort]] reicht einfaches Zählen der Vergleiche oft nicht mehr aus. Hier arbeiten wir in der Laufzeitanalyse mit einem stochastischen Werkzeug: &#039;&#039;&#039;Indikatorvariablen&#039;&#039;&#039; und der &#039;&#039;&#039;Harmonischen Reihe&#039;&#039;&#039;. Um das Prinzip zu verinnerlichen, analysieren wir vorab einen simplen Code zur Maximumsuche:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public int findMax(int[] A) {&lt;br /&gt;
    int max = A[0];&lt;br /&gt;
    for (int i = 1; i &amp;lt; A.length; i++) {&lt;br /&gt;
        if (A[i] &amp;gt; max) {&lt;br /&gt;
            max = A[i]; // Update-Operation&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return max;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Vergleiche in der &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;-Bedingung werden immer exakt &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; Mal ausgeführt. Aber wie oft wird die Variable &amp;lt;code&amp;gt;max&amp;lt;/code&amp;gt; im Durchschnitt tatsächlich überschrieben (Update-Operation)?&lt;br /&gt;
&lt;br /&gt;
Wir stellen uns vor, das Array enthält völlig zufällig gemischte Zahlen.&lt;br /&gt;
* &#039;&#039;&#039;Intuitiver Ansatz:&#039;&#039;&#039; &lt;br /&gt;
Das 1. Element ist automatisch das bisherige Maximum (Wahrscheinlichkeit: 1). &lt;br /&gt;
Damit das 2. Element ein neues Maximum ist, muss es größer als das erste sein. Die Chance dafür ist bei zufälliger Verteilung exakt 50% (&amp;lt;math&amp;gt;\frac{1}{2}&amp;lt;/math&amp;gt;). &lt;br /&gt;
Damit das 3. Element ein neues Maximum ist, muss es das Größte der ersten drei Elemente sein. Die Chance dafür ist &amp;lt;math&amp;gt;\frac{1}{3}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mathematischer Ansatz (Indikatorvariablen):&#039;&#039;&#039;&lt;br /&gt;
Wir definieren einen „Schalter“ (die Indikatorvariable) &amp;lt;math&amp;gt;X_i&amp;lt;/math&amp;gt;. Er ist &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;, wenn ein neues Maximum an Stelle &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; gefunden wird, sonst &amp;lt;math&amp;gt;0&amp;lt;/math&amp;gt;. Die Wahrscheinlichkeit dafür ist &amp;lt;math&amp;gt;P(X_i = 1) = \frac{1}{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Um die durchschnittliche Gesamtzahl der Updates zu finden, addieren wir einfach diese Wahrscheinlichkeiten auf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E[X] = \sum_{i=1}^{n} \frac{1}{i} = 1 + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \dots + \frac{1}{n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese spezielle Summe nennt man in der Mathematik die &#039;&#039;&#039;Harmonische Reihe&#039;&#039;&#039; (&amp;lt;math&amp;gt;H_n&amp;lt;/math&amp;gt;). Sie wächst extrem langsam. Für große Zahlen &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; entspricht sie in etwa dem &#039;&#039;&#039;natürlichen Logarithmus&#039;&#039;&#039; (&amp;lt;math&amp;gt;\ln(n)&amp;lt;/math&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Erkenntnis für Quicksort:&#039;&#039;&#039; Obwohl das Array &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Elemente hat, wird die Update-Operation im Durchschnitt nur logarithmisch oft (&amp;lt;math&amp;gt;\mathcal{O}(\log n)&amp;lt;/math&amp;gt;) ausgeführt. Genau dieses stochastische Prinzip (das Aufsummieren von Einzelwahrscheinlichkeiten, die zu einem Logarithmus führen) ist der Schlüssel, um im nächsten Abschnitt zu beweisen, dass Quicksort im Average-Case bei &amp;lt;math&amp;gt;\mathcal{O}(n \log n)&amp;lt;/math&amp;gt; liegt.&lt;br /&gt;
&lt;br /&gt;
== Laufzeitanalyse ==&lt;br /&gt;
&lt;br /&gt;
=== Best-Case (Bester Fall) ===&lt;br /&gt;
[[Datei:Verzweigungsbaum Quicksort symetrisch.png|mini|Best-Case: Symmetrischer Baum]]&lt;br /&gt;
Der beste Fall liegt vor, wenn das Pivot-Element die Liste in jedem Rekursionsschritt exakt in der Mitte teilt. Die entstehenden Teillisten sind dann immer gleich groß.&lt;br /&gt;
[[Datei:SubArrays symetrisch Quicksort.png|mini|Halbierung der Arraygrößen]]&lt;br /&gt;
&lt;br /&gt;
Wird die Anzahl der zu sortierenden Elemente &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; verdoppelt, kommt durch die fortlaufende Halbierung lediglich &#039;&#039;&#039;eine einzige neue Rekursionsebene&#039;&#039;&#039; (ein Baum-Level) hinzu. Dieses Wachstumsverhalten (Wie oft kann ich &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; durch 2 teilen, bis 1 übrig bleibt?) wird mathematisch durch den Logarithmus zur Basis 2 ausgedrückt: &amp;lt;math&amp;gt;\log_2(n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Zu sortierende Elemente &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
| style=&amp;quot;color:green&amp;quot; | 4&lt;br /&gt;
| style=&amp;quot;color:green&amp;quot; | 8&lt;br /&gt;
| style=&amp;quot;color:green&amp;quot; | 16&lt;br /&gt;
| style=&amp;quot;color:green&amp;quot; | 32&lt;br /&gt;
|-&lt;br /&gt;
! Als Zweierpotenz&lt;br /&gt;
| &amp;lt;math&amp;gt;\color{green}{2^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
| &amp;lt;math&amp;gt;\color{green}{2^3}&amp;lt;/math&amp;gt;&lt;br /&gt;
| &amp;lt;math&amp;gt;\color{green}{2^4}&amp;lt;/math&amp;gt;&lt;br /&gt;
| &amp;lt;math&amp;gt;\color{green}{2^5}&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Anzahl Rekursionsebenen &amp;lt;math&amp;gt;\log_2(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| style=&amp;quot;color:red&amp;quot; | 2&lt;br /&gt;
| style=&amp;quot;color:red&amp;quot; | 3&lt;br /&gt;
| style=&amp;quot;color:red&amp;quot; | 4&lt;br /&gt;
| style=&amp;quot;color:red&amp;quot; | 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wir haben also insgesamt &amp;lt;math&amp;gt;\log_2(n)&amp;lt;/math&amp;gt; Ebenen. Nun müssen wir noch den Aufwand pro Ebene bestimmen: Obwohl die einzelnen Teillisten nach unten hin immer kürzer werden, verdoppelt sich gleichzeitig ihre Anzahl. Auf &#039;&#039;&#039;jeder einzelnen Ebene&#039;&#039;&#039; müssen daher in der Summe über alle Teillisten hinweg wieder (nahezu) &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Elemente betrachtet und mit den jeweiligen Pivots verglichen werden.&lt;br /&gt;
&lt;br /&gt;
Wir multiplizieren also die Arbeit pro Ebene (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Vergleiche) mit der Anzahl der Ebenen (&amp;lt;math&amp;gt;\log_2(n)&amp;lt;/math&amp;gt;).&lt;br /&gt;
&#039;&#039;&#039;Fazit Best-Case:&#039;&#039;&#039; Die Laufzeit beträgt &amp;lt;math&amp;gt;\mathcal{O}(n \log n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Average-Case (Durchschnittlicher Fall) ===&lt;br /&gt;
In der Praxis haben wir fast nie den perfekten Best-Case, aber zum Glück auch extrem selten den absoluten Worst-Case. Meistens teilt das Pivot die Liste in ungleiche, aber moderate Verhältnisse (z. B. 30:70 oder 60:40). Auch bei solchen ungleichen Teilungen wächst die Tiefe des Baumes weiterhin nur logarithmisch.&lt;br /&gt;
&lt;br /&gt;
Um den Average-Case mathematisch exakt zu beweisen, greifen wir auf Stochastik und unser Vorwissen zur Harmonischen Reihe zurück. Wir fragen uns: &#039;&#039;Wie hoch ist die Wahrscheinlichkeit, dass zwei beliebige Elemente (nennen wir sie &amp;lt;math&amp;gt;z_i&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;z_j&amp;lt;/math&amp;gt;, wobei &amp;lt;math&amp;gt;z_i &amp;lt; z_j&amp;lt;/math&amp;gt;) im Laufe des gesamten Algorithmus direkt miteinander verglichen werden?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Zwei Elemente werden genau dann miteinander verglichen, wenn eines der beiden als Pivot-Element ausgewählt wird, &#039;&#039;&#039;bevor&#039;&#039;&#039; irgendein anderes Element, dessen Wert zwischen &amp;lt;math&amp;gt;z_i&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;z_j&amp;lt;/math&amp;gt; liegt, als Pivot gewählt wird.&lt;br /&gt;
* Zwischen &amp;lt;math&amp;gt;z_i&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;z_j&amp;lt;/math&amp;gt; (inklusive der beiden Randelemente) liegen exakt &amp;lt;math&amp;gt;k = j - i + 1&amp;lt;/math&amp;gt; Elemente. &lt;br /&gt;
* Gehen wir von einer zufälligen Pivot-Wahl aus, hat jedes dieser &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; Elemente die gleiche Chance, zuerst als Pivot gezogen zu werden. Damit &amp;lt;math&amp;gt;z_i&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;z_j&amp;lt;/math&amp;gt; verglichen werden, muss exakt &amp;lt;math&amp;gt;z_i&amp;lt;/math&amp;gt; oder &amp;lt;math&amp;gt;z_j&amp;lt;/math&amp;gt; der &amp;quot;Gewinner&amp;quot; dieser Ziehung sein. Da es &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt; günstige Fälle bei &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; möglichen Fällen gibt, beträgt die Wahrscheinlichkeit exakt &amp;lt;math&amp;gt;\frac{2}{k}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Summieren wir diese Wahrscheinlichkeiten (den sogenannten Erwartungswert) für alle möglichen Elementpaare im gesamten Array auf, erhalten wir folgende Doppel-Summe:&lt;br /&gt;
&amp;lt;math&amp;gt;E(X) = \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} \frac{2}{j - i + 1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ersetzt man den Abstand &amp;lt;math&amp;gt;(j - i + 1)&amp;lt;/math&amp;gt; formal durch die Laufvariable &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, löst sich die innere Summe auf zu:&lt;br /&gt;
&amp;lt;math&amp;gt;\sum_{k=2}^{n} \frac{2}{k} = 2 \cdot \left( \frac{1}{2} + \frac{1}{3} + \dots + \frac{1}{n} \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Klammer erkennen wir exakt die &#039;&#039;&#039;Harmonische Reihe&#039;&#039;&#039; wieder! Aus der Mathematik wissen wir, dass die Harmonische Reihe für große &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; gegen den natürlichen Logarithmus &amp;lt;math&amp;gt;\ln(n)&amp;lt;/math&amp;gt; konvergiert. Die innere Summe ergibt also maximal ungefähr &amp;lt;math&amp;gt;2 \cdot \ln(n)&amp;lt;/math&amp;gt;. Da die äußere Summe (die Variable &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;) insgesamt &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;-mal durchlaufen wird, multiplizieren wir diesen Wert mit &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; und erhalten insgesamt rund &amp;lt;math&amp;gt;2n \cdot \ln(n)&amp;lt;/math&amp;gt; zu erwartende Vergleiche. &lt;br /&gt;
&lt;br /&gt;
Da konstante Vorfaktoren (wie die &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;) und die Basis des Logarithmus in der asymptotischen Notation ignoriert werden, ist der Beweis erbracht: &lt;br /&gt;
&#039;&#039;&#039;Fazit Average-Case:&#039;&#039;&#039; Auch bei zufälliger Verteilung konvergiert Quicksort dank des logarithmischen Wachstums sicher gegen die Komplexitätsklasse &amp;lt;math&amp;gt;\mathcal{O}(n \log n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Worst-Case (Schlechtester Fall) ===&lt;br /&gt;
[[Datei:Baum N-Ebenen.png|mini|Worst-Case: Entarteter Baum]]&lt;br /&gt;
Angenommen, wir haben extremes Pech und die Partitionierung ist maximal unausgeglichen. Das gewählte Pivot ist immer das absolut kleinste oder größte Element der aktuellen Teilliste. Dann enthält eine der Partitionen 0 Elemente und die andere Partition &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; Elemente. Der Baum &amp;quot;entartet&amp;quot; zu einer linearen Kette. &lt;br /&gt;
&#039;&#039;Hinweis für die Praxis: Wird bei einer naiven Implementierung immer stur das letzte Element als Pivot gewählt, tritt dieser Worst-Case ironischerweise genau dann auf, wenn die Liste bereits aufsteigend oder absteigend sortiert ist!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Aufwand für das Vergleichen (Partitionieren) auf der ersten Ebene mit &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Elementen ist proportional zu &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Nennen wir diesen Aufwand &amp;lt;math&amp;gt;c \cdot n&amp;lt;/math&amp;gt; (wobei &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; eine Konstante für die Dauer eines einzelnen Vergleichs ist).&lt;br /&gt;
Auf der nächsten Ebene müssen wir &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; Elemente vergleichen, der Aufwand ist also &amp;lt;math&amp;gt;c \cdot (n-1)&amp;lt;/math&amp;gt;. Danach &amp;lt;math&amp;gt;c \cdot (n-2)&amp;lt;/math&amp;gt; und so weiter.&lt;br /&gt;
&lt;br /&gt;
Wenn wir die Partitionierungszeiten für alle Ebenen aufsummieren, erhalten wir folgende Reihe:&lt;br /&gt;
&amp;lt;math&amp;gt;c \cdot n + c \cdot (n - 1) + c \cdot (n - 2) + \dots + c \cdot 2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir klammern &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; aus und erkennen die bekannte [[Arithmetische-reihe|Gaußsche Summenformel]]:&lt;br /&gt;
&amp;lt;math&amp;gt;c \cdot (n + (n-1) + (n-2) + \dots + 2) \approx c \cdot \frac{n(n+1)}{2} = \frac{c}{2}n^2 + \frac{c}{2}n&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Da in der asymptotischen Laufzeitanalyse konstante Faktoren (&amp;lt;math&amp;gt;\frac{c}{2}&amp;lt;/math&amp;gt;) und niederwertige Terme (wie &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) ignoriert werden, bestimmt allein der quadratische Term das Wachstumsverhalten. &lt;br /&gt;
&#039;&#039;&#039;Fazit Worst-Case:&#039;&#039;&#039; Quicksort hat im schlechtesten Fall eine Zeitkomplexität von &amp;lt;math&amp;gt;\mathcal{O}(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Angebotsvergleich&amp;diff=2848</id>
		<title>Angebotsvergleich</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Angebotsvergleich&amp;diff=2848"/>
		<updated>2026-04-30T08:12:41Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Angebotsvergleich wird durchgeführt, um das bestmögliche Angebot für ein Produkt oder eine Dienstleistung zu bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Äquivalenzprinzip der Mathematik==&lt;br /&gt;
Unterschiedliche Geldbeträge dürfen nur verglichen, addiert oder subtrahiert werden, wenn diese auf den gleichen Zeitpunkt auf- oder abgezinst wurden.&lt;br /&gt;
In der Regel beziehen wir Geldbeträge auf den jetzigen Zeitpunkt (&amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt;) und nennen den jeweiligen Geldbetrag &#039;&#039;&#039;Barwert&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Definition==&lt;br /&gt;
Bei einem &#039;&#039;&#039;Angebotsvergleich&#039;&#039;&#039; liegen mehrere Angebote für ein Produkt oder eine Dienstleistung mit unterschiedlichen Zahlungsbedingungen vor. Die Zahlungsforderungen in einem Angebot werden auf den Zeitpunkt &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; abgezinst und anschließend miteinander addiert. Den resultierenden Wert nennen wir &#039;&#039;&#039;Barwert&#039;&#039;&#039; des Angebots. Abschließend werden die Barwerte miteinander verglichen, um das beste Angebot zu ermitteln. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/mPwGFaFQ5LU?si=rTdru8wzdgwR8gFU&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Beispiele==&lt;br /&gt;
Wir betrachten im Folgenden zwei Beispiele für einen Angebotsvergleich.&lt;br /&gt;
&lt;br /&gt;
===Angebotsvergleich mit Barwerten durchführen===&lt;br /&gt;
Wir haben uns ein Fahrrad gekauft. Der Zinssatz beträgt 4 % pro Jahr. Es besteht die Möglichkeit, in einem Jahr 450 € oder in zwei Jahren 480 € zu zahlen.&lt;br /&gt;
&lt;br /&gt;
Wir verwenden die [[Zinseszinsrechnung#Zinseszinsformel|Zinseszinsformel]] und berechnen jeweils das [[Zinseszinsrechnung|Anfangskapital]]:&lt;br /&gt;
&lt;br /&gt;
#Möglichkeit mit &amp;lt;math&amp;gt;q=1,04,~n=1 \text{ und } K(1)=450&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;K(n)=K(0)\cdot q^n&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;450=K(0)\cdot 1,04^1~|~:1,04&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;\frac{450}{{1,04}}=K(0)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;432,69\approx K(0)&amp;lt;/math&amp;gt;&lt;br /&gt;
#Möglichkeit mit &amp;lt;math&amp;gt;q=1,04,~n=2 \text{ und } K(2)=480&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;K(n)=K(0)\cdot q^n&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;480=K(0)\cdot 1,04^2~|~:1,04^2&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;\frac{480}{{1,04^2}}=K(0)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;443,79\approx K(0)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir wählen Möglichkeit 1, weil das Anfangskapital mit ca. 432,69 € geringer ist als das Anfangskapital von 443,79 € bei Möglichkeit 2.&lt;br /&gt;
&lt;br /&gt;
===Angebotsvergleich ohne Barwerte durchführen===&lt;br /&gt;
Wir haben uns ein Fahrrad gekauft. Der Zinssatz beträgt 4 % pro Jahr. Es besteht die Möglichkeit, in einem Jahr 450 € oder in zwei Jahren 480 € zu zahlen.&lt;br /&gt;
&lt;br /&gt;
Alternativ zur vorherigen Rechnung können wir die Zahlungen aufzinsen und anschließend vergleichen:&lt;br /&gt;
&lt;br /&gt;
#Möglichkeit mit &amp;lt;math&amp;gt;q=1,04,~n=1 \text{ und } K(1)=450&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;K\left(2\right)=450\cdot1,04=468&amp;lt;/math&amp;gt;&lt;br /&gt;
#Möglichkeit mit &amp;lt;math&amp;gt;q=1,04,~n=2 \text{ und } K(2)=480&amp;lt;/math&amp;gt;:&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;K\left(2\right)=480&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gemäß dem Äquivalenzprinzip ist Möglichkeit 1 wieder besser.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Finanzmathematik]]&lt;br /&gt;
[[Kategorie:FHR_WuV_Mathe]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Insertion-sort&amp;diff=2847</id>
		<title>Insertion-sort</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Insertion-sort&amp;diff=2847"/>
		<updated>2026-04-28T08:52:09Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: Flbkwikiadmin verschob die Seite Insertion-sort nach Insertionsort&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Insertionsort]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Insertionsort&amp;diff=2846</id>
		<title>Insertionsort</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Insertionsort&amp;diff=2846"/>
		<updated>2026-04-28T08:52:09Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: Flbkwikiadmin verschob die Seite Insertion-sort nach Insertionsort&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Der [[Algorithmus]] dieses [[Sortieren|Sortierverfahrens]] ist relativ simpel. Das Prinzip von Insertion Sort ist folgendes: Die einzelnen Elemente werden von vorne nach hinten durchlaufen. Von der aktuellen Position aus wird jedes Element von rechts nach links verschoben – und zwar so lange, bis das einzufügende Element größer oder gleich dem Element ist, das an der aktuell betrachteten Position steht.&lt;br /&gt;
&lt;br /&gt;
Der Platz für das Element, das verschoben wird, ist währenddessen frei. Diese Lücke wird anschließend mit dem entsprechenden Wert an der richtigen Stelle gefüllt.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
[[Datei:Animation Insertio-Sort.gif|mini]]&lt;br /&gt;
Die folgende Tabelle zeigt die Sortierschritte zum Sortieren der Folge 5 7 0 3 4 2 6 1. Auf der linken Seite (grün dargestellt) befindet sich jeweils der bereits sortierte Teil der Folge. Die blauen Ziffern repräsentieren den unsortierten Teil der Zahlenfolge. Ganz rechts steht in Klammern die Anzahl der Positionen, um die das eingefügte Element nach links verschoben wurde. Das aktuell eingefügte Element ist fett markiert.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; font-family:monospace;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&#039;&#039; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (0)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&#039;&#039;&#039; || &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (0)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (4)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; || (1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt; || &#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; || &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt; || (6)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudocode ==&lt;br /&gt;
Der [[Algorithmus]] sieht im Pseudocode so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prozedur insertionSort(A ist Liste sortierbarer Elemente)&lt;br /&gt;
    n = Länge von A&lt;br /&gt;
    für i von 1 bis n - 1 wiederhole&lt;br /&gt;
        einzusortierenderWert = A[i]&lt;br /&gt;
        j = i - 1&lt;br /&gt;
        solange j ≥ 0 und A[j] &amp;gt; einzusortierenderWert wiederhole&lt;br /&gt;
            A[j + 1] = A[j]&lt;br /&gt;
            j = j - 1&lt;br /&gt;
        ende solange&lt;br /&gt;
        A[j + 1] = einzusortierenderWert&lt;br /&gt;
    ende für&lt;br /&gt;
ende prozedur&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Komplexität ==&lt;br /&gt;
&lt;br /&gt;
=== Best Case ===&lt;br /&gt;
Die optimale Eingabe ist ein bereits sortiertes [[Array]]. In diesem Fall wird pro Iteration lediglich ein Vergleich durchgeführt, und die innere Schleife wird nie betreten. Die Gesamtanzahl der Vergleiche ist somit proportional zur Anzahl der Elemente &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Insertion Sort besitzt im Best Case daher eine lineare Laufzeit von &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Average Case ===&lt;br /&gt;
Das Average-Case-Szenario geht von einer zufälligen Verteilung der Werte in der Liste aus.&lt;br /&gt;
&lt;br /&gt;
Im Durchschnitt ist das aktuell betrachtete Element kleiner als die Hälfte der bereits sortierten Elemente. Die innere Schleife muss das Element also im Mittel nur bis in die Mitte des bisher sortierten Teilbereichs verschieben. Die Anzahl der Vergleiche und Verschiebungen halbiert sich im Vergleich zum Worst Case dadurch in etwa.&lt;br /&gt;
&lt;br /&gt;
Da in der asymptotischen Landau-Notation konstante Faktoren (wie diese Halbierung) ignoriert werden, dominiert weiterhin die höchste Potenz das Wachstum. Die Zeitkomplexität liegt im Average Case demnach bei &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Worst Case ===&lt;br /&gt;
Eine Liste in umgekehrter (absteigender) Reihenfolge stellt das Worst-Case-Szenario für Insertion Sort dar, beispielsweise:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;[11, 7, 5, 3, 2, 0]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir betrachten nur die Vergleichsoperationen, die mit der Variablen &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; gezählt werden. Die Anzahl der zu sortierenden Elemente beträgt &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Beim ersten äußeren Schleifendurchlauf ist &amp;lt;math&amp;gt;c = 1&amp;lt;/math&amp;gt;, da nur ein Vergleich durchgeführt wird. Beim zweiten Durchlauf sind es 2 Vergleiche, beim dritten 3 usw., bis zum letzten Durchlauf mit &amp;lt;math&amp;gt;n - 1&amp;lt;/math&amp;gt; Vergleichen.&lt;br /&gt;
&lt;br /&gt;
Die Gesamtanzahl der Vergleiche ergibt sich zu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;1 + 2 + 3 + \dots + (n - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist eine [[Arithmetische-reihe|arithmetische Reihe]]. Mit der gaußschen Summenformel erhält man:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{n(n-1)}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für große &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dominiert der quadratische Term, sodass Insertion Sort im Worst Case in der Komplexitätsklasse &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt; liegt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
</feed>