从一组中找到多个最大不同的二元向量

2024-01-04

考虑集合,S,所有长度的二进制向量n其中每个恰好包含m那些;所以有n-m每个向量中的零。
我的目标是构建一个数字,k,向量来自S使得这些向量彼此尽可能不同。

举个简单的例子,n=4, m=2 and k=2,那么可能的解是:[1,1,0,0]和[0,0,1,1]。

这似乎是编码理论文献中的一个开放问题(?)。

有什么方法(即算法)可以找到次优但良好的解决方案吗?
在这种情况下,汉明距离是正确的性能衡量标准吗?

一些想法:
In 这张纸 http://emis.impa.br/EMIS/journals/EJC/Volume_13/PDF/v13i1a2.pdf,作者提出了几种算法来查找向量子集,使得成对汉明距离 >= 某个值,d.
我已经实现了随机方法如下:取一组SS,它由任意向量初始化S。然后,我考虑剩余的向量 在S。对于每个向量,我检查该向量是否至少有一个距离d对于每个向量SS。如果是这样,则将其添加到SS.
通过取最大可能的d,如果大小为SS是 >=k,然后我考虑SS作为最佳解决方案,我选择的任何子集k向量来自SS。 使用这种方法,我认为结果SS将取决于初始向量的身份SS;是。有多种解决方案(?)。
但如果尺寸SS是 k ?
从论文中提出的算法来看,我只了解了随机算法。我对二进制词典搜索(第 2.3 节)感兴趣,但我不知道如何实现它(?)。


也许你会发现这张纸 http://btw2017.informatik.uni-stuttgart.de/slidesandpapers/F8-11-13/paper_web.pdf有用(我写的)。它包含有效创建位串排列的算法。

例如,inc()算法:

long  inc(long h_in , long m0 , long m1) {
    long  h_out = h_in | (~m1); //pre -mask
    h_out ++;
    // increment
    h_out = (h_out & m1) | m0; //post -mask
    return  h_out;
}

它需要一个输入h_in并返回下一个更高的值,该值至少比h_in并“匹配”边界m0 and m1。 “匹配”意味着:结果有一个1无论在哪里m0 has a 1,结果有一个0无论在哪里m1 has a 0。不是那个h_in必须是关于以下方面的有效值mo and m1!另外,请注意m0必须按位小于m1, 意思就是m0不能有一个1处于一个位置m1 has a 0.

这可用于生成与给定输入字符串具有最小编辑距离的排列:

假设你有0110,你首先将其否定1001(编辑距离=k)。 设置“m0=1001”和“m1=1001”。使用它只会导致“1001”本身。

现在获取具有编辑距离的所有值k-1,您可以执行以下操作,只需翻转其中一位m0 or m1, then inc()将返回所有位串的有序序列,其差异为k or k-1.

我知道,还不是很有趣,但是你可以修改k位,以及inc()将始终返回具有最大允许编辑差异的所有排列关于m0 and m1.

现在,为了得到all排列,您将不得不使用所有可能的组合重新运行算法m0 and m1.

示例:获取所有可能的排列0110与编辑距离2,您必须使用以下排列来运行 inc()m0=0110 and m1=0110(为了获得排列,必须有一个位位置expanded, 意思是m0被设定为0 and m1被设定为1:

  • 位 0 和 1expanded: m0=0010 and m1=1110
  • 位 0 和 2expanded: m0=0100 and m1=1110
  • 位 0 和 3expanded: m0=0110 and m1=1111
  • 位 1 和位 2expanded: m0=0000 and m1=0110
  • 位 1 和位 3expanded: m0=0010 and m1=0111
  • 位 2 和位 3expanded: m0=0100 and m1=0111

作为起始值h_0我建议简单地使用m0。迭代可以中止一次inc()回报m1.

Summary上述算法生成O(x) all x至少有差异的二元向量y来自给定向量的位(可配置)v.

使用你的定义n=number of bits in a vector v, 环境y=n生成 1 个与输入向量完全相反的向量v. For y=n-1,它会生成n+1向量:n除一位以外所有位均不同的向量和所有位均不同的 1 个向量。等等不同的值y.

**编辑:在上面的文本中添加了摘要并用“NEGATE”替换了错误的“XOR”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从一组中找到多个最大不同的二元向量 的相关文章

  • 查找一个二维矩阵是否是另一个二维矩阵的子集

    最近我参加了一个黑客马拉松 我了解到一个问题 试图在 2d 矩阵中找到网格形式的模式 模式可以是 U H 和 T 并由 3 3 矩阵表示 假设我想展示 H 和 U 1 0 1 1 0 1 1 1 1 gt H 1 0 1 gt U 1 0
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 添加到列表时有没有办法避免循环?

    我想知道这样的代码 List
  • 如何构建一棵与或树?

    我需要一个支持 与 和 或 的树结构 例如 给定一个正则表达式 如ab c d e 我想把它变成一棵树 所以 一开始我们有两个 或 分支 它可以向下ab or c d e 如果你低头ab分支 你得到两个节点 a and b or a其次是b
  • SQL 中的链表

    在 MySQL 数据库中存储链接列表的最佳方法是什么 这样插入就很简单 即 您不必每次都重新索引一堆内容 并且可以轻松地按顺序拉出列表 使用 Adrian 的解决方案 但不是增加 1 而是增加 10 甚至 100 然后可以按照要插入的内容之
  • 某些数据结构是否比其他数据结构更适合函数式编程?

    In 现实世界哈斯克尔 http book realworldhaskell org 有一个标题为 没有数组或哈希表的生活 的部分 其中作者建议在函数式编程中首选列表和树 而在命令式程序中可能会使用数组或哈希表 这是有道理的 因为在创建新列
  • 在Python中寻找坐标系中某些点之间的最短路径

    我编写了一个代码 可以在坐标系中的特定宽度和长度范围内生成所需数量的点 它计算并列出我使用欧几里德方法生成的这些点的距离矩阵 我的代码在这里 import pandas as pd from scipy spatial import dis
  • java中的Anagram算法

    我想做字谜算法但是 这段代码不起作用 我的错在哪里 例如 des 和 sed 是字谜 但输出不是字谜 同时我必须使用字符串方法 不是数组 public static boolean isAnagram String s1 String s2
  • 如何计算一组字符串的最短唯一前缀?

    这是一个非常常见的算法命令行解析 给定一组预定义的长选项名称 计算唯一标识这些选项之一的最短前缀 例如 对于以下选项 help hostname portnumber name polymorphic 这将是输出 he ho por n p
  • 使用 TextBox 或 RichTextBox 显示图像文件中的原始数据?

    我的程序读取 DDS 图像文件并将其存储为字节数组 我希望能够以文本框形式向用户显示原始数据 因此首先使用以下代码将字节数组转换为字符串 string data System Text Encoding ASCII GetString by
  • 查找数组中的重叠数据

    我们正在编写一个 C 应用程序 它将有助于删除不必要的数据重复器 只有在以下情况下才可以移除中继器 all它接收到的数据被其他中继器接收 我们第一步需要做的事情解释如下 例如 我有 int 数组的集合 A 1 2 3 4 5 b 2 4 6
  • python数据结构(类似设置)在添加重复项时抛出异常

    我正在寻找一种在添加重复元素时会引发异常的数据结构 我发现的最接近的是collections Counter gt gt gt from collections import Counter as counter gt gt gt c co
  • 为什么使用 no-op 来填补 paxos 事件之间的空白是合法的?

    我正在学习Paxos算法 http research microsoft com en us um people lamport pubs paxos simple pdf http research microsoft com en us
  • n的渐近增长选择下限(n/2)

    如何找到 n select Floor n 2 的渐近增长 我试过 使用扩展并得到它等于 n n 1 floor n 2 1 n floor n 2 知道我该如何从那里去吗 感谢任何帮助 更喜欢提示而不是答案 我同意上面的答案 但想提供更多
  • 读取4个点的坐标。他们做一个正方形吗?

    我计算点之间的距离 如果距离相等 则点构成一个正方形 否则不 仅当我按以下顺序读取坐标 A x y B x y C x y D x y 或相反时 我的代码才有效 但是如果我这样读 例如 A x y B x y D x y C x y 它将不
  • 查找数组中 2 个缺失数字的最快方法

    这个问题的存在只是出于纯粹的好奇心 不是作业 找到在数组 1 n 中找到两个缺失数字的最快方法 因此 在相关帖子中 查找数字数组中缺失数字的最快方法 https stackoverflow com questions 2113795 qui
  • CSR 矩阵 - 矩阵乘法

    我有两个方阵A and B 我必须转换B to CSR Format并确定产品C A B csr C 我在网上找到了很多关于CSR 矩阵 向量乘法 http www mathcs emory edu cheung Courses 561 S
  • 大小为 n 的数组,其中一个元素 n/2 次

    给定一个由 n 个整数组成的数组 其中一个元素出现超过 n 2 次 我们需要在线性时间和恒定的额外空间中找到该元素 YAAQ 又一个数组问题 我有一种偷偷的怀疑 这类似于 在 C 中 We don t need an array publi
  • 广度优先搜索:检查访问状态的时机

    在有向图的广度优先搜索中 可能循环 当一个节点出队时 其所有尚未访问的子节点都会入队 并且该过程将继续 直到队列为空 有一次 我以相反的方式实现它 将节点的所有子节点排队 并在节点出队时检查访问状态 如果正在出队的节点之前已被访问过 则该节
  • RNG 技术的可移植性和可重复性

    我可以使用两种方法之一来创建一个伪随机数序列 该序列具有两个重要特征 1 它可以在不同的机器上重现 2 该序列永远不会重复范围内的数字 直到所有数字都被发出 我的问题是 这两种方法在可移植性 操作系统 Python 版本等 方面是否存在潜在

随机推荐