通过两个键快速访问的元素范围
本文关键字:访问 范围 元素 两个 | 更新日期: 2023-09-27 18:27:21
我有这些信息要保存在一个变量中,用于我的基本神经网络模拟
- 节点(NodeId,State)
- 关系(SourceNodeId、TargetNodeId、权重、状态)
状态是激活级别,它是模拟过程中唯一变化的值。它是一个无符号浮点。
我想轻松获取当前节点的所有传入和传出关系。我所说的轻松是指非常出色的表现。(我有大约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;
}
}
我希望你能理解我想做什么。如果不能,我会尽力解释得更好。
哪种类型的Object最好通过其SourceNodeId和通过其TargetNodeId快速访问节点
PS:使用Visual Studio在C#中编程。
我认为带有节点的列表+两个同步词典会很快。
List<Node> allNodes;
Dictionary<Node,List<Node>> sourceTarget;
Dictionary<Node,List<Node>> targetSource;
我建议您将它们封装到单个对象中双向字典:
class TwoWayDictionary<T1,T2>
{
private Dictionary<T1,List<T2>> sourceTarget;
private Dictionary<T2,List<T1>> targetSource;
// Here shold be public methods and accessors ...
}