Ich habe Eltern und Kind Mappings in Freizeitaktivitä- Datenbank wie unten,Eltern-Child-Mapping im Speicher ablegen. Um all erreichbar Kind für einen Elternteil Liste effizient
relationship_id | parent_id | child_id
1 | 100009 | 600009
2 | 100009 | 600010
3 | 600010 | 100008
zur Performance-Optimierung, ich mag all diese Zuordnungen im Speicher zu halten. Hier hat ein Kind mehr als einen Elternteil und ein Elternteil hat mehr als 2 Kinder. Ich denke, ich sollte "Graph" Datenstruktur verwenden.
Das Einlagern in den Speicher ist eine einmalige Aktivität. Meine Sorge ist, dass wenn ich alle Kinder (nicht nur die unmittelbaren Kinder) auflisten möchte, sollten sie sie so schnell wie möglich zurückgeben. Hinzufügung und Löschung geschieht selten. Welche Datenstruktur und welchen Algorithmus sollte ich verwenden?
versucht MultiHashMap, um O(1)
Suchzeit zu erreichen, aber es hat mehr Redundanz.
Das was genau ich tat. Aber ich muss alle erreichbaren Kinder für einen Elternteil bekommen. In diesem Entwurf muss ich durch jeden Knotenpunkt von Kindern und Kindern reisen, um die Reichweite zu finden. Gibt es eine Möglichkeit, alle erreichbaren Knoten in weniger Traversal zu finden. – krishna
@ krishna Ich bin mir nicht sicher, ob es viel besser sein kann. Sie könnten ein Flag auf jedem Knoten haben, um anzuzeigen, dass Sie es besucht haben, so dass Sie keine Knoten wiederholen. Dieses Flag kann effizient für mehrere Aufrufe (um Nachkommen zu erhalten) als Ganzzahl implementiert werden, beginnend bei 0 und inkrementierend bei jedem Aufruf, und dann nur Knoten besuchen, wenn sein Wert! = Dieser Wert und dann jeden besuchten Knoten auf diesen Wert setzt. – Dukeling