首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优雅而高效的穿越边缘和解析交叉口的方法

优雅而高效的穿越边缘和解析交叉口的方法
EN

Stack Overflow用户
提问于 2015-12-23 17:32:16
回答 1查看 426关注 0票数 1

我有一个数组,它表示这样一个图的邻接矩阵。

代码语言:javascript
复制
connections:Array = [0,0,1,1,
                     0,0,1,1,
                     0,0,0,1,
                     0,0,0,0];

图的每个节点都有一个分配给它的2D点,它表示它在平面上的位置。我试图编写一个函数,它遍历所有的边,如果这两个边中有任何一个相交,则返回false。这是我的密码

代码语言:javascript
复制
function test():boolean
{
    for (i = 0; i < nodes.length ; i++)
    {
        for (j = i ; j < nodes.length ; j ++)
        {
            if (connections[i * nodes.length + j] == 1)
            {
                //we found an edge
                //This is the place where i am stuck I, can't figure out how
                //to take pairs of edges to test them for intersections
            }
        }
    }
}

你可以用任何语言甚至伪代码给出答案。

注意:我不需要任何代码的交叉算法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-23 18:10:11

在遍历邻接矩阵的同时,建立一个以边缘为中心的数据结构.最简单的选择是简单的边列表。然后可以迭代所有以前访问过的边,这将给出O(V^2 + E^2)的复杂性,其中V是顶点数,E是边数。

如果您有潜在的大图,您可能希望使用更高效的数据结构,例如在运行中构建的BSP树。这将使您的复杂性降低到O(V^2 +E日志E)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34440899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档