问题标签 [symmetry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
214 浏览

c - ptr = free(ptr), NULL 安全吗?

我正在编写这样的代码:

为了对称,这很好。但是我以前从未见过其他人使用这个成语,所以我想知道这是否真的是不可移植/不安全的,尽管维基百科引用了这个:

在 C 和 C++ 编程语言中,逗号运算符(由记号 , 表示)是一个二元运算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。


编辑:混淆了顺序。现在它编译gcc没有任何警告。

0 投票
2 回答
1528 浏览

python - N-Queens 对称性破坏 Google OR 工具

Google or-tools 的示例之一是 n-queens 问题的求解器。 在底部,它说可以通过向约束求解器添加对称破坏约束来改进实现。

环顾互联网,我发现了 n-queens 问题的对称破坏约束,但我一生都无法弄清楚如何将这些约束转换为实现它们的 python 代码。


编辑:这是一个糟糕的问题,让我们更新......

我尝试了什么?

这是上面第一个链接的设置:

我知道我可以成功实现简单的约束。如果我想确保解决方案在第一行的第一列中始终有一个皇后,我可以这样实现:

queens[0]变量表示第一列中的皇后位置,并且仅当第一列在第一行中有皇后时才满足此约束。然而,这当然不是我想要做的,因为解决方案可能不包含任何角落单元格。

n-queens 问题的对称破缺约束如下所示。它们是直接从第二段中的链接中提取的。

n-皇后对称破缺约束

我了解这些约束是如何工作的。这个想法是,您可以将此函数应用于 n-queens 板上的每个单元格,以便将状态转换为等效状态。这些状态之一将是该状态的规范表示。这被用作通过消除重复评估来修剪未来处理的方法。

如果我只是以事后的方式实现这一点,我会完全按照我上面描述的那样做,使用每个可能的对称破坏函数转换状态,计算某种状态散列(例如,每列中选定行的字符串)并为每个建议的解决方案选择最低的一个。跳过我们以前见过的未来处理。

我的问题是我不知道如何将这些转换转换为 google or-tools 约束编程求解器的约束。

让我们看一下d1(r[i] = j) => r[j] = i关于主对角线的最简单的反射。我所知道的是,需要将转换应用于所有单元格,然后与当前状态进行比较,以防止一个单元格被扩展。我对 python 的了解不够,无法理解哪种表达式适用于转换,我只是不知道如何创建将转换与此特定求解器的当前状态进行比较的约束。

0 投票
3 回答
811 浏览

python - itertools 删除等效元素

我在 python 中使用 itertools生成所有关于一些对称组的向量。

基本上所有只是 x,y,z 轴和符号的排列。我只是不确定确保等效向量不重复的最佳方法是什么

  1. 0 = -0 因此的符号排列[1, 2, 0]应该是[[1, 2, 0], [1, -2, 0], [-1, 2, 0], [-1, -2, 0]]
  2. itertools.permutations( 'AAB' )应该产生[('A', 'B', 'A'), ('B', 'A', 'A'), ('A', 'A', 'B')]即不通过交换等价物来复制每个元素A

我目前的解决方案:

删除dumplicate 我通过一个setlike传递它lst = list(set(lst))。但是我不喜欢创建很多稍后被过滤掉的垃圾。它也任意改变元素的顺序。也可以仅以需要转换的可散列元素(例如元组,但不是列表或 numpy 数组)的形式创建它。

此函数通过检查零来执行符号置换,但它可能非常低效:

它正在工作,但我在想也许有一些预制的东西......更高效,简单和pythonic

0 投票
1 回答
2492 浏览

python - Python 交换运算符覆盖

嗨,我想知道是否有办法在 Python 中进行对称运算符覆盖。例如,假设我有一堂课:

然后我可以这样做:

但如果我尝试:

我得到一个错误。有没有办法覆盖运算符add以便 1 + a 起作用?

0 投票
3 回答
158 浏览

c++ - 如何有效地检测 4 个整数变量中的对称性?

我想在 4 个整数变量i,j,kl. 对称性是:

  1. 所有四个数字都相等:XXXX,
  2. 三个数相等:XXXY,XXYX,XYXX,YXXX
  3. 两对相等的数字:XXYY,XYXY,XYYX,...
  4. 一对相等的数和两个不同的数:XXYZ,XYXZ,XYZX,...
  5. 所有的数字都是不同的。

所有变量都在某个非连续范围内运行。我使用嵌套的 if else 语句。第一个 if 检查所有变量的不等式。如果没有,那么我有案例 1。下一个 if 检查是否有任何相等的对。如果不是,那么情况 5。下一个 if 检查三个相等的数字。如果为真,则为情况 2。否则,最后一个 if 检查两对相等的数字。如果为真,则为情况 3,否则为情况 4。

有没有更好的方法来做到这一点?我的意思是更好的性能,因为我必须做这个测试数百万次。

0 投票
1 回答
109 浏览

python - 如何在这个循环中利用置换对称性?

我有一个f(a,b,c,d)具有以下置换对称性的标量函数

f(a,b,c,d) = f(c,d,a,b) = -f(b,a,d,c) = -f(d,c,b,a)

我正在使用它来完全填充 4D 数组。以下代码(使用 python/NumPy)有效:

但显然我想利用对称性来减少这部分代码的执行时间。我试过了:

这将执行时间减少了一半。但是对于我尝试的最后一个对称性:

哪个有效,但不会让我接近另一个两倍加速的因素。我不认为这是正确的原因,但不明白为什么。

我怎样才能在这里更好地利用这种特殊的置换对称性?

0 投票
1 回答
84 浏览

process - 过程环中的链路不对称

我目前正在研究 elixir 中无处不在的进程环。环是链接的,但采用以下方式:

我注意到这里的链接不对称 - 应该#PID<0.120.0>有映射"links" => [#PID<0.121.0>,#PID<0.122.0>]而不仅仅是"links" => [#PID<0.121.0>]

代码如下:

0 投票
2 回答
52 浏览

html - HTML 注释缺少对称性

在 HTML 中,我们通常会做类似的注释:

为什么评论不对称,如下所示:

我正在寻找历史的答案。

0 投票
1 回答
725 浏览

python - 如何在 MATLAB/Python 中创建对称点图案的图像?

目标:

  • 制作对称和非对称点阵图案的图像。
  • 具有垂直镜像对称的对称图像(左侧和右侧镜像)
  • 由对称图像制成的不对称图像(左右洗牌)

我想做很多这样的东西,但是在提出框架时遇到了麻烦。目前正在尝试使用 MATLAB 或 Python 生成图像,但欢迎使用替代解决方案。

0 投票
2 回答
83 浏览

matlab - 创建图像的对称性

是否有可能获得二值图像的双边对称性?

我搜索的结果类型示例:

在此处输入图像描述