在计算两个任意正则表达式是否有任何重叠的解决方案(假设它是可能的).
例如,这两个正则表达式可以通过强力显示没有交叉点,因为这两个解决方案集是可计算的,因为它是有限的.
^1(11){0,1000}$ ? ^(11){0,1000}$ = {}
{1,111, ..., ..111} ? {11,1111, ..., ...11} = {}
{} = {}
Run Code Online (Sandbox Code Playgroud)
但用{0,1000}通过*删除一个蛮力解决方案的可能性,所以一个更聪明的算法必须创建.
^1(11)*$ ? ^(11)*$ = {}
{1,^1(11)*$} ? {^(11)*$} = {}
{1,^1(11)*$} ? {11,^11(11)*$} = {}
{1,111,^111(11)*$} ? {11,^(11)*$} = {}
.....
Run Code Online (Sandbox Code Playgroud)
在另一个类似的问题中,一个答案是计算交集正则表达式.这可能吗?如果是这样,怎么会写一个算法来做这样的事情?
我认为这个问题可能是暂停问题的结果.
编辑:
我已经使用已接受的解决方案为示例问题创建了DFA.可以很容易地看到如何在状态图上使用BFS或DFS M_3来确定是否可以达到最终状态M_3.

我正在研究最大公因数和最小公共多项任务,我必须列出常见因素.Intersection()不起作用,因为它会删除重复项.Contains()将无法工作,因为如果它在第二个列表中看到int,则返回第一个列表中的所有匹配的int.有没有办法做一个不明显的交叉路口?
编辑:抱歉没有提供示例,这就是我的意思:
如果我有套:
{1, 2, 2, 2, 3, 3, 4, 5}
{1, 1, 2, 2, 3, 3, 3, 4, 4}
Run Code Online (Sandbox Code Playgroud)
我想要输出
{1, 2, 2, 3, 3, 4}
Run Code Online (Sandbox Code Playgroud) 有人可以解释为什么负面大小的Rectangles与他们的方式相交吗?
var r = new Rectangle(0, 0, 3, 3);
var r0 = new Rectangle(0, 0, -1, -1);
var r1 = new Rectangle(1, 1, -1, -1);
var r2 = new Rectangle(2, 2, -1, -1);
var r3 = new Rectangle(3, 3, -1, -1);
System.Console.WriteLine(r.IntersectsWith(r0)); // False
System.Console.WriteLine(r.IntersectsWith(r1)); // False
System.Console.WriteLine(r.IntersectsWith(r2)); // True
System.Console.WriteLine(r.IntersectsWith(r3)); // False
Run Code Online (Sandbox Code Playgroud)
我会思考r1并且r2应该总是相交r,即使他们没有.r3如果你考虑它们的负面大小,应该相交.如果不考虑负尺寸,r0则应相交.
为什么它的工作方式如此,以及在使用Rectangle结构时我应该注意哪些其他注意事项?
我有一组点,每个点都有一个"影响"或基本上是半径的区域.我希望能够将所有点的这些影响圈中的每一个绘制为简单的圆形线.
它们会重叠,但我希望画出形状的外部.我知道这可能需要我在他们相交的地方锻炼,并以某种方式形成一个完整的形状来绘制.问题是某些点可能甚至没有触及其他点!所以我也需要能够解决这个问题.
我试图说明我的意思:

请注意,我希望简单地画出黑线,没有填充.这是因为我希望透过背景图像和其他几何图形.
我会在openGL中这样做,所以这个圆圈可能是用GL_LINES或其他一些形成曲线的顶点制作的,但我真的不知道如何计算出这个边界.
如果有人有任何建议或者可以指出我将如何解决这个问题,我将不胜感激!
这可能更像是一个数学问题,我不是在寻找代码,而是实际上如何去研究这些形状.我只是想不出怎么做!
*****编辑:我提出的解决方案,希望可以帮助别人!
所以我使用了建议的想法,并且基本上决定了使用模板缓冲区绘制的最佳方法.这现在意味着我循环我的点3次,但我需要仔细分类它们,无论如何只能找到可见的.
所以代码明智我现在有这个:
private void stencilCircleAroundStars()
{
//Lets try and draw something here using stencil
glColorMask(false, false, false, false); //Disable colour mask
glEnable(GL_STENCIL_TEST); // Enable Stencil Buffer For "marking" the outer circle
glDisable(GL_DEPTH_TEST);// Disable Depth Testing
for (Object value : stars.values())
{
Star star = (Star)value;
glStencilFunc(GL_ALWAYS, 1, 1); // Always Passes, 1 Bit Plane, 1 As Mask
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); // We Set The Stencil Buffer To 1 Where We Draw Any …Run Code Online (Sandbox Code Playgroud) 我不知道从哪里开始.显然CGRectIntersectsRect在这种情况下不起作用,你会明白为什么.
我有一个UIView的子类,里面有一个UIImageView,放在UIView的确切中心:

然后我旋转自定义UIView以维持内部UIImageView的框架,同时仍然能够执行CGAffineRotation.结果框架看起来像这样:

我需要阻止用户使这些UIImageViews相交,但我不知道如何检查两个UIImageViews之间的交集,因为它们的框架不仅不适用于父UIView,而且它们在不影响其框架的情况下旋转.
我尝试的唯一结果是不成功的.
有任何想法吗?
NB
我试图检测3个圆的交叉区域,以便以不同于非交叉区域的方式处理它.
此处的交叉区域不可见.到目前为止我能做的是通过降低不透明度来显示它,得到这样的东西:
我正在寻找一种智能的方法来检测这三个圆圈的交叉区域.
编辑
如果可以提供帮助,这是我的d3.js代码:
// Code circle
svg.append("circle")
.attr("class","services_nodes")
.attr("cx",7*width/16)
.attr("cy",height/2)
.attr("r",height/4)
.attr('fill', "blue")
// Label code
svg.append("text")
.attr("class","label_services")
.attr("x", 7*width/16 - 21*width/265)
.attr("y",35*height/64)
.text("Code");
// Consulting
svg.append("circle")
.attr("class","services_nodes")
.attr("cx",9*width/16)
.attr("cy",height/2)
.attr('fill', "red")
.attr('r', height/4)
// Label Consulting
svg.append("text")
.attr("class","label_services")
.attr("x", 9*width/16)
.attr("y",35*height/64)
.text("Consulting");
// Support
svg.append("circle")
.attr("class","services_nodes")
.attr("cx",7*width/16 + height/8)
.attr("cy",height/2 - Math.sqrt(3)*height/8) // y +/- Math.sqrt(3)*r/2
.attr('fill', "green")
.attr('r',height/4)
// Label Support
svg.append("text")
.attr("class","label_services")
.attr("x", 7*width/16 + 3*height/64)
.attr("y",height/2 …Run Code Online (Sandbox Code Playgroud) 我一直认为加入SQL是两个表之间的某种联系.
例如,
select e.name, d.name from employees e, departments d
where employees.deptID = departments.deptID
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它链接两个表,以向每个员工显示部门名称而不是部门ID.有点像"联动"或"联盟"侧面".
但是,在了解了内连接与外连接之后,它表明连接(内连接)实际上是一个交集.
例如,当一个表具有ID 1,2,7,8时,而另一个表仅具有ID 7和8,我们获得交集的方式是:
select * from t1, t2 where t1.ID = t2.ID
Run Code Online (Sandbox Code Playgroud)
获得"7和8"的两个记录.所以它实际上是一个交集.
所以我们有2个表的"交集".将其与2个表上的"Union"操作进行比较.Join可以被认为是"交叉点"吗?但是它的"连接"或"侧向联合"方面呢?
我的目标是找出数组a和b的交集值并将它们存储到一个新的数组c中,因此打印输出将为:3,10,4,8.如何将给定值分配给第3个数组c?
public static void main(String[] args) {
int a[] = {3, 10, 4, 2, 8};
int[] b = {10, 4, 12, 3, 23, 1, 8};
int[] c;
int i=0;
for(int f=0;f<a.length;f++){
for(int k=0;k<b.length;k++){
if(a[f]==b[k]){
//here should be a line that stores equal values of 2 arrays(a,b) into array c
}
}
}
for (int x=0; x<c.length; x++){
System.out.println(c[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud) 使用图表可以更轻松.CaRMetal,攻击!

我有两个2D线段,P和Q.我想找到点Px上P,和Qx上Q,以便dist(Px,Qx)最小化.到现在为止还挺好; 这是一项非常简单的任务.
皱纹现在来了.我想约束Px并且包含它们Qx的行PxQx必须与第三个线段相交C.(可以自由地假设没有原始线段相交,BTW.)
Px且Qx已经恰好满足C交叉条件.C不甚至含有的凸包P和Q.这些是需要检查的微不足道的案例.PxQx必须包含Ca或Cb.这似乎没有干净地减少到线性方程组.PxQx不仅包含端点C,还包含端点P或者Q也包含端点.这些看起来很简单.我担心的是(3)中的情况,因为我没有看到如何在不调用令人不快的高次多项式的情况下获得一个好的封闭形式.当然,我可以在整个过程中投入一个迭代约束优化器,但我希望最大限度地提高性能,并且在近简并情况下的高精度可能很重要.
math geometry intersection mathematical-optimization computational-geometry