给定输入生成真值表?

2024-03-02

是否有一种智能算法可以获取多个概率并在多维数组或容器内生成相应的真值表

Ex :

n = 3
N : [0 0 0
     0 0 1
     0 1 0 
     ...
     1 1 1] 

我可以使用 for 循环和 If 来完成此操作,但我知道我的方法会很慢且耗时。因此,我想问是否有一种高级功能可以让我尽可能高效地做到这一点?


如果我们允许用全零填充表格来开始,那么应该可以准确地执行2^n - 1填充以设置我们想要的 1 位。这可能不会比编写手动循环更快,但它完全没有配置文件。

编辑: 线路std::vector<std::vector<int> > output(n, std::vector<int>(1 << n));声明一个向量的向量。外层向量的长度为 n,内层向量的长度为2^n(n 个输入的真值结果数)但我通过使用左移进行幂计算,以便编译器可以插入一个常量而不是调用,例如pow。在这种情况下n=3我们最终得到一个 3x8 向量。我以这种方式组织它(而不是通常的 8x3,以行作为第一个索引),因为我们将在输出数据中利用基于列的模式。使用vector这种方式的构造函数还确保向量向量的每个元素都初始化为 0。因此,我们只需要担心将我们想要的值设置为 1,而无需理会其余的值。

第二组嵌套for循环只是用于在完成后打印结果数据,没有什么特别的。

第一组 for 循环实现了真正的算法。我们在这里利用输出数据中基于列的模式。对于给定的真值表,最左边的列将有两部分:前半部分全为 0,后半部分全为 1。由于我们预先填充了零,因此将应用从中间向下开始的一半列高的单次填充我们需要的所有 1。第二列将包含行 1/4th 0、1/4th 1、1/4th 0、1/4th 1。因此,两次填充将应用我们需要的所有 1。我们重复此操作,直到到达最右边的列,在这种情况下,每隔一行都是 0 或 1。

我们开始说“我需要一次填充一半的行”(unsigned num_to_fill = 1U << (n - 1);)。然后我们遍历每一列。第一列从要填充的位置开始,并用 1 填充那么多行。然后我们增加行并将填充大小减少一半(现在我们一次填充 1/4 行,但然后我们跳过空白行并第二次填充)下一列。

例如:

#include <iostream>
#include <vector>

int main()
{
    const unsigned n = 3;
    std::vector<std::vector<int> > output(n, std::vector<int>(1 << n));

    unsigned num_to_fill = 1U << (n - 1);
    for(unsigned col = 0; col < n; ++col, num_to_fill >>= 1U)
    {
        for(unsigned row = num_to_fill; row < (1U << n); row += (num_to_fill * 2))
        {
            std::fill_n(&output[col][row], num_to_fill, 1);
        }
    }

    // These loops just print out the results, nothing more.
    for(unsigned x = 0; x < (1 << n); ++x)
    {
        for(unsigned y = 0; y < n; ++y)
        {
            std::cout << output[y][x] << " ";
        }
        std::cout << std::endl;
    }

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

给定输入生成真值表? 的相关文章

随机推荐

  • 后藤此时却出乎意料——批处理

    我正在尝试制作一个基于批处理文本的游戏 但刚开始写就遇到了以前从未遇到过的问题 menu the game menu opens when the game starts cls echo This game is still being
  • ActiveSupport 中 mattr_accessor 和 cattr_accessor 之间的区别?

    我无法通过查看源代码来弄清楚两者之间的区别cattr and mattr 分别在类和模块中提供的方法 我读过这个问题 Rails 模块中的 mattr accessor 是什么 https stackoverflow com questio
  • 动态选择 WTForms Flask SelectField

    我正在尝试使用 FlaskForms 将 userID 变量传递给 WTForms 首先 我将展示工作正常的代码 然后展示我需要修改的内容 我不知道如何修改的部分 我正在添加与某个组关联的新名称 FlaskForm模型 class AddN
  • 用于解析单个键的正则表达式:Javascript 中的 JSON 值

    我想看看是否可以查找个人keys出于一个JSONJavascript 中的字符串并返回它Value with Regex 有点像建造一个JSON搜索工具 想象一下以下 JSON Name Humpty Age 18 Siblings Dra
  • 如何从c中的字符串数组中访问单个字符?

    只是想了解如何寻址字符串数组中的单个字符 另外 这当然会让我总体上理解指向指针下标的指针 如果我有char a我想到达第二个字符串的第三个字符 这有效吗 a 1 2 看来应该 几乎 但不完全是 正确答案是 a 1 2 因为您需要首先取消对实
  • Netbeans 7 调色板为空?如何恢复呢?

    我在 Kubuntu 12 04 上使用 Netbeans 7 我这样启动 Netbeans netbeans cp a usr share java xercesImpl jar Netbeans 和 Kubuntu 12 04 已知问题
  • 有没有办法使用正则表达式来匹配引号之外的文本模式?

    正如标题中所述 有没有一种方法可以使用正则表达式来匹配出现在引号之外的文本的文本模式 理想情况下 考虑到以下示例 我希望能够匹配引号之外的逗号 而不是引号内的逗号 这是一些文本 后面是 文本 用引号引起来 or 这是一些文本 后面是 文本
  • 内核级别的 Docker 命名空间

    如何区分 docker 容器的 pid 1 17 等与主机的 1 17 等 pid 以及当我们在 docker 容器内创建新进程时发生的所有内核更改是什么 如何在宿主机中看到docker内部的进程 如何区分docker容器的pid 1 17
  • 使用 quosure 作为 by 参数连接数据集

    我正在尝试编写一个自定义函数 该函数将使用 quosures 作为 left join 函数的 by c 部分中的参数来连接两个数据集 这是我当前对该函数的尝试 在 by c left index right index 部分失败 left
  • 如何使用 javascript 替换字符串中所有出现的变量?

    我正在尝试使用 javascript 替换字符串中所有出现的变量 这不起作用 var id 1 var re new RegExp id g var newHtml oldHtml replace re 2 这仅替换第一次出现的 id va
  • 按随机顺序对数组列表进行排序

    我正在编写一个纸牌游戏 我有一个ArrayList持卡 Object 在哪里 他们每个人都有自己的 id 由于我想让这个游戏支持多人模式 我必须以某种方式在两个玩家之间发送 接收游戏进度 现在 如果我在一侧洗牌 我必须在另一侧做同样的事情
  • 使用 Nginx 设置 Laravel

    我正在尝试设置Laravel http laravel com 可使用的 PHP 框架Nginx http wiki nginx org Main 这是我的目录结构 project application laravel public in
  • 获取 Azure AD B2C 策略的 SAML 元数据时出错 - AADB2C90022

    在 Azure AD B2C 中设置自定义策略以连接到 ADFS 身份提供程序 这需要一个 SAML 元数据端点 如下面链接的文档中所指定 https learn microsoft com en us azure active direc
  • 为什么 XHTML 中的


    不同?

    这是 HTML 页面的完整源代码 one br two br three br four 谁能解释为什么当我在 IE8 或 chrome 中查看页面时 三 和 四 之间会出现额外的空行 我认为标准应该让所有浏览器看起来都一样 据我所知 这个
  • 自动将 CSV 文件导入 SQL Server [重复]

    这个问题在这里已经有答案了 我正在尝试将许多不同的 csv 文件导入 SQL Server 2008R2 数据库 文件中的数据以逗号分隔 我对文件格式没有发言权 有些列是文本 并用双引号分隔 就像在 Excel 中一样 这些列包含的文本可能
  • 在View的背景中画一个半圆

    我正在尝试创建一个背景为半圆的 TextView 我使用 ShapeDrawable 创建一个椭圆形 我尝试使用 ScaleDrawable 将椭圆形的垂直尺寸加倍并剪辑它来创建半圆 但是 ScaleDrawable 没有任何效果 为什么不
  • 我可以使用新的 ZeroClipboard 从剪贴板获取数据吗?

    我在项目中使用这个新版本的 ZeroClipboard https github com jonrohan ZeroClipboard https github com jonrohan ZeroClipboard 创建按钮来从 HTML
  • python中的加权非负最小二乘线性回归[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道有一个加权 OLS 求解器 http statsmodels sourceforge net d
  • 是否可以自定义 Visual Studio 2017 SSRS rptproj MSBuild 文件?

    我的公司对自定义 MSBuild 目标文件库进行了大量投资 我们用它来构建完整的产品 我们在源代码管理中拥有的每个项目文件都会导入至少一个自定义目标文件 这些文件最终都会导入一个包含大量通用目标和属性的核心目标文件 最近 我们在我们的解决方
  • 给定输入生成真值表?

    是否有一种智能算法可以获取多个概率并在多维数组或容器内生成相应的真值表 Ex n 3 N 0 0 0 0 0 1 0 1 0 1 1 1 我可以使用 for 循环和 If 来完成此操作 但我知道我的方法会很慢且耗时 因此 我想问是否有一种高