具体问题在这里。假设您有一个图形,其中每个顶点指定它们必须与另一个顶点有多少连接,并且以下规则/属性适用:
1-图表可能不完整(不需要每个顶点都与其他顶点建立连接)
2-两个顶点仅之间可以有两个连接,如果它们的方向相反(例如:A点为B,B指向A)。
3-假设它们位于 2D平面上,则不会有连接交叉(甚至没有切线)。
4- Theres 没兴趣用于最短路径,只需尊重属性并了解解决方案是否唯一。
5-没有可能的解决方案
编辑:好的家伙很抱歉没有具体。我将在这里澄清我的观点:我想要做的是给出一些顶点,知道图形是否已连接(如果所有点至少与图形有连接)。给出的顶点是不可能形成它的图形所以我想知道是否有解决方案,如果解决方案是唯一的或不是(或者最坏的情况),如果没有可能的解决方案。我认为这澄清了第4点和第5点。图形是无向的,连接不能弯曲,只有直线。节点(顶点)是固定的,我们有它们的位置或W / E输入。我想知道最好的方法并且我一直在研究,这是一个连接问题,尽管可能某些特定的alg可能更有效地完成这项任务。这就是全部,抱歉迟到的回复
EDIT2 :如果我们认为每个顶点位于平面矩阵的行和列上并且它们只能与相同列上的其他顶点连接,那么问题会有所不同或行?所以它只是90/180/270/360直连接。这会大大缩短可能性吗?
答案 0 :(得分:0)
我将假设问题是:给定每个顶点的程度,计算出一个通过所有约束条件的图形。
我认为你可以把它减少到一个非常大的整数编程问题 - 线性约束,但是变量需要是整数(实际上是0或1),这使得问题比普通的线性编程困难得多。 / p>
让未知数为Xij形式,如果从节点i到节点j有一条边,则Xij为1,否则为0。然后,根据需求,对连接数的要求相当于某些K的形式SUM_ {all i} Xij = K的要求。图形为平面的要求降低了图形不包含两个已知图形作为子图形的要求 - https://en.wikipedia.org/wiki/Graph_minor。然后,每个可能的子图产生约束,例如X01 + X02 + ......< 5 - 将会有大量的这些约束 - 如此之大,以至于对于大量节点而言,简单地产生所有约束可能过于昂贵而不实用,更不用说解决它们了。约束的数量至少是节点数量的第6个幂。然而,这是多项式的,因此理论上可以写下要解决的MIP - 所以这可能比没有算法好。
答案 1 :(得分:0)
假设您要求我们:
找出是否有可能生成一个或多个有向平面图,这样每个顶点都有一个给定的出度(每个顶点不一定是相同的出度)。
我们还假设你想要连接图形。
如果有n
个顶点且顶点的度数为d_1 ... d_n
,那么对于顶点i
,可能有C(n-1,d_i) = (n-1)!/((d_i)!*(n-1-d_i)!)
个来自该顶点的外边缘组合。在所有顶点上获取所有这些组合的乘积将给出可能图形数量的上限。
天真的方法是: