我正在构建一个无向人工神经网络。没有明显的输入或输出节点,所有连接都是无向的。
为了使网络正常工作,我正在设计系统,将每个节点的动作阈值和加权关系视为其与“焦点”节点(一个临时输出节点)距离的函数。
换句话说,我将任意选择一个或一组节点作为数据的终点和输出。此节点可以随时更改。信息通过图的流动将像磁铁一样被吸引到所选节点,因为在统计上,靠近终点节点的节点更有可能激活并将信息沿该路径发送。
我希望这可以创建一个非常动态和真实的ANN模式,并具有非常准确的学习模式。
现在我遇到的问题是如何有效地确定每个节点到终点节点的距离。根据我所读到的,如果我使用Neo4j,平均计算两点之间的最短路径大约需要250毫秒。将这样的计算纳入算法中速度太慢了,因为这意味着必须为当前“激活”节点的每个相邻节点重复计算最短路径。
有什么想法吗?
回答:
…这意味着必须为当前“激活”节点的每个相邻节点重复计算最短路径。
Dijkstra最短路径算法将找到从一个节点到网络中每个其他节点的最短路径——因此,您可以通过一次运行该算法,在O(N^2)时间内找到到指定终点节点的所有最短路径。
Floyd-Warshall算法在O(N^3)时间内计算网络中每对节点的最短路径,并需要O(N^2)的存储空间。如果您的网络不改变,并且您可以承担前期的计算成本,这可能是一个不错的选择。