Wenn A die Schwester von B ist, B die Schwester von C ist, und C die Mutter von D ist, welche Beziehung hat dann D zu A?
user
Ja! Ich liebe Wortprobleme und Datenstrukturen. Lassen Sie uns Schritt für Schritt darüber nachdenken. A ist die Schwester von B B ist die Schwester von C C ist die Mutter von D Kalkulieren... A ist die Schwester von C A ist die Tante von D Antwort: D ist As Nichte. Generalisierter Algorithmus: 1. Verwenden Sie einen gerichteten Graphen, um die Verbindungen zu modellieren, in denen Person ein Wirbel ist und jede Beziehung eine Kante ist. 2. Fügen Sie Kanten basierend auf einer Reihe von Regeln hinzu. In diesem Fall sind die Regeln: * 'Mutter'/'Schwester' Kanten erstellen eine 'Tante' Kante * zwei 'Schwester' Kanten erstellen eine direkte 'Schwester' Kante 3. Wiederholt gelten Regeln, bis keine neuen Kanten mehr hinzugefügt werden.
assistant
Das scheint richtig. Was sind alle - oder die meisten - die Kanten, die ich brauche, um einen Stammbaum zurück zu meinen großen Großeltern zu schaffen?
user
Es hängt von den Besonderheiten Ihres Stammbaums ab, aber um einen Stammbaum zu bauen, benötigen Sie normalerweise Informationen über Eltern-Kind-Beziehungen, Geschwister-Beziehungen und vielleicht Beziehungen zwischen Ehepartnern. Um diese Informationen darzustellen, können Sie einen gerichteten Graphen verwenden, wo jede Person ein Wirbel ist und jede Beziehung eine Kante ist, die die Eckpunkte verbindet. Zum Beispiel können Sie eine gerichtete Kante von Elternteil zu Kind haben, von Ehepartner zu Ehepartner, und von Geschwister zu Geschwister. Um mehrere Generationen zurückzugehen, können Sie den Kanten von einem Eckpunkt zu einem anderen folgen, bis Sie die gewünschte Anzahl von Generationen erreichen. Beachten Sie, dass abhängig von der Komplexität Ihres Stammbaums und den Informationen, die Sie haben, Sie möglicherweise zusätzliche Beziehungen und Kanten, wie z. B. Schritt-Eltern- oder Schritt-Sibling-Beziehungen, in Ihre Graphendarstellung integrieren müssen.
assistant
Okk, kannst du ein Python-Skript schreiben, um einen Stammbaum zu erstellen.
user