添加虚拟点建图降低复杂度

需求

存在一个大小为\(n\)的点集\(V_1\) 和 大小为\(m\)的点集\(V_2\)\(V_1\)中的每个点都需要向\(V_2\)中的每个点连一条边

\(n * m\)条边


\(n\)\(m\)数值较大或者需要建图多次时,一定概率会超内存或者遍历时超时

\(n + m\)条边

对于不同起点,相同终点,两条路径可以看为存在交点的,交点到终点的路径可以等效为一条,如果可以实现路径复用,既能够有效减少边数
因此一种解决方案为,在\(V_1\)\(V_2\)之间添加一个虚拟点,\(V_1\)中的节点首先向虚拟点连边,再由虚拟点向\(V_2\)中的各个点连边

相关题目

拓扑排序-车站分级

posted @ 2021-10-03 17:58  0x7F  阅读(53)  评论(0编辑  收藏  举报