Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
informatik:algorithmisch:python:binaerbaeume [2024/07/20 14:18] – [Grundbegriffe] technik | informatik:algorithmisch:python:binaerbaeume [2024/07/21 07:33] (aktuell) – [Kanten und Gewicht] technik | ||
---|---|---|---|
Zeile 22: | Zeile 22: | ||
wurzel.rechts = blattrechts | wurzel.rechts = blattrechts | ||
</ | </ | ||
+ | |||
+ | Normalerweise trägt ein Knoten nicht nur Information darüber, welche anderen Knoten mit ihm verbunden sind, sondern speichert zusätzlich Daten. Das werden wir weiter unten bei den Gewichten von Kanten noch in einer Anwendung sehen. | ||
+ | |||
+ | ==== Spezialfall Binärbäume ==== | ||
Ein Binärbaum besitzt immer zwei Blattknoten an einem übergeordneten Knoten. Bei einem vollständigen Binärbaum sind zum alle Ebenen komplett ausgefüllt: | Ein Binärbaum besitzt immer zwei Blattknoten an einem übergeordneten Knoten. Bei einem vollständigen Binärbaum sind zum alle Ebenen komplett ausgefüllt: | ||
Zeile 29: | Zeile 33: | ||
{{ : | {{ : | ||
- | + | ==== Kanten und Gewicht ==== | |
+ | Eine Kante kann ein Gewicht bekommen, das z.B. angibt, wie wahrscheinlich es ist, dass Daten, die in einem Baum gespeichert sind, aufeinander folgen. | ||
+ | {{ : | ||
+ | Auf diese Weise könnte in einem Sprachmodell hinterlegt sein, wie wahrscheinlich es ist, welches Wort auf den Satzanfang " | ||
+ | |||
+ | <file python treedataweighted.py> | ||
+ | class Node: | ||
+ | def __init__(self, | ||
+ | self.left = None | ||
+ | self.right = None | ||
+ | self.leftweight = 0 | ||
+ | self.rightweight = 0 | ||
+ | self.data = data | ||
+ | |||
+ | # Liste für die Knoten des Baumes anlegen | ||
+ | nodes[] | ||
+ | |||
+ | # Knoten anlegen | ||
+ | nodes[0] = Node(" | ||
+ | nodes[1] = Node(" | ||
+ | nodes[2] = Node(" | ||
+ | # Knoten verbinden | ||
+ | nodes[0].left = nodes[1] | ||
+ | nodes[0].right = nodes[2] | ||
+ | # Gewichte der Kanten setzen | ||
+ | nodes[0].leftweight = 8 | ||
+ | nodes[0].rightweight = 5 | ||
+ | </ | ||
==== Ein kleines Sprachmodell ==== | ==== Ein kleines Sprachmodell ==== | ||
Hier sehr ihr ein Beispiel für ein " | Hier sehr ihr ein Beispiel für ein " |