我有两组n个节点.现在我想将一组中的每个节点与另一组中的另一个节点连接起来.结果图应该没有交叉点.
我知道几种扫描线算法(Bentley-Ottmann-Algorithm来检查交叉点发生的位置,但除了蛮力方法之外,我找不到解决这些交叉点的算法.
一组中的每个节点可以连接到另一组中的任何其他节点.
任何解决这个问题的(一种有效的)算法的指针?无需实施.
编辑1:
以下是该问题的一种解决方案n=7:
黑点是一组节点,红点是一组.每个黑色节点必须连接到一个红色节点,以便连接它们的线不交叉.
EDIT2:
为了进一步说明:所有节点的位置都是固定的,结果图将有n个边.我也没有任何证据证明存在解决方案,但我无法创建一个没有解决方案的例子.我确信在那里有一个证据可以创建这样一个平面图.此外,只需要一种解决方案,而不是所有可能的解决方案.
algorithm intersection graph-theory line-segment planar-graph
忍受我一会儿.
我有一个方法应该添加或减去固定值,具体取决于给定的输入.
我知道我的最大值是1.0f,最小值是0.0f.固定值是0.1f.
现在,如果输入值是1.0f方法,则应该减去该值0f.如果输入值是0f方法应该添加,0.1f直到值为1.0f.
因此,对于一个工作方法0f来1f将是:
void Foo(float input) {
float step = .1f;
for (float i=0f; i<=1f; i += step) {
input = i;
}
}
Run Code Online (Sandbox Code Playgroud)
显然我可以使用if语句检查输入值,但是有另一种方法可以在一个方法中实现吗?我觉得我在这里错过了一个非常基本的算术运算.
这是我的电子表格的样子:
2 个电子表格:Foo和Bar.
Foo只有一个细胞,A1.
Bar有n行和2列。
现在我想要一个公式,以便如果相邻列包含给定字符串,A1它可以对电子表格第二列中的所有值求和。Bar
例如,如果我的Bar电子表格如下所示:
-----------------
Machine A | 500 |
Mach B | 321 |
Door | 34 |
Machines C | 2 |
-----------------
Run Code Online (Sandbox Code Playgroud)
A1现在应该对第一列单元格包含单词Machine,Mach或 的行的所有值求和Machines,因此 中的值A1将为 823。
我想它是IF, SEARCH/的某种组合FIND,但我的主要问题是如果找到 a 字符串,则解决相邻值单元格的问题。