У меня есть эти данные для сохранения в переменной для моего базового моделирования нейронной сети.
- Node (NodeId, State)
- Отношение (SourceNodeId, TargetNodeId, Weight, State)
Состояние - это уровень активации, который является единственным значением, которое изменяется во время симуляции. Это число без знака.
Я хочу легко получить все входящие и все исходящие отношения для текущего узла. Под легкостью я подразумеваю очень хорошую производительность. (У меня около 1000000 узлов с каждыми 50 отношениями в среднем.)
Основная часть моей программы выглядит следующим образом (псевдокод).
foreach(Node in Nodes)
{
Inputs[] = all incomeing relationships;
Node.State = sum of all Inputs[] elements;
Outputs[] = all outgoing relationships;
normalize all Outputs[] elements temporarly; // so that the sum of their weights is 1
foreach(Output in Outputs[])
{
Output.State = Node.State * Output.Weight;
}
}
Надеюсь, вы понимаете, что я хочу сделать. Если нет, я постараюсь объяснить лучше.
Какой тип объекта лучше всего иметь быстрый доступ к узлам по их SourceNodeId и по их TargetNodeId?
PS: программирование на C # с использованием Visual Studio.