algorithm - 搜索部分对称的算法
问题描述
我试图以百分比计算具体矩阵的对称程度。
计算对称性的“传统”方法是我有一个大小为 N×N 的任意方阵 M 作为输入,并且如果 M[i,j] = M[j,i ] 对于所有 j≠i,否则为假。
如何适当处理计算百分比?所以不只是说对称或不对称?也许计算时间 j≠i 并将其除以 (i,j) 的总量?
所以如果我有以下矩阵:
1 1 1 1 1 1
A = 2 2 2 B = 2 2 2
1 1 2 3 4 5
那么我需要知道A比B“更对称”,即使两者都不是对称的。
解决方案
您应该首先定义每个单元的对称距离度量。如果对称单元相同,则该值应为零,否则应为零。
例如:
s(i,j):= (m(i,j)==m(j,i) ? 0:1) // returns 0/1 if the symmetric cell is/isn't the same
或者
s(i,j):= |m(i,j)-m(j,i)| // returns the absolute difference between the two cells
然后将所有单元格的距离相加:
int SymmetricDistance(matrix){
for (int i=0; i<matrix.Width; i++)
for (int j=i; j<matrix.Width; j++) // check if th matrix is square first
dist = dist + s(i,j);
return dist;
}
现在你可以说矩阵 A 比矩阵 B “更对称”
SymmetricDistance(A) < SymmetricDistance(B)
推荐阅读
- javascript - 如何在 React 单个项目上集成两个 Web 模板主题?
- wordpress - Woocommerce - 如何在结帐时使电子邮件字段可选
- functional-programming - 用于检查 Connect 4 board 获胜者的功能模式
- python - 防止将回车符“\r”转换为“\n”
- sql - 如何将 XML 转换为 SQL 表变量
- python - Django 通道套接字未连接到消费者
- bash - 回显包含美元的字符串变量的内容
- r - 绘制柱形图时如何避免重复分类变量?
- c# - 使用 WarpAffine() 将 Emgu.CV.Image 向右移动
- python - Pyomo:创建抽象模型和 AMPL 数据