有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java需要一个矩阵搜索算法

我是C++和java的业余程序员。 我有一个用于某个项目的二维布尔数组(16行16列)。 此数组的内容正在定期更新。有些正在更改,其他元素保持不变。到目前为止,我只是扫描数组的每个元素,以便知道哪些元素更新了它们的值。 有没有一个算法或一个有效的方法让我做到这一点?我将使用的语言是C++。p>

共 (2) 个答案

  1. # 1 楼答案

    有一个功能强大的库armadillo。犰狳是一种高质量的线性代数库(矩阵数学),用于C++语言,旨在实现速度和易用性之间的良好平衡。p>

    根矩阵类是Mat<type>,请参见armadillo上支持的类型

    Mat<unsigned char>应消耗与布尔值矩阵相同的内存量


    #include <iostream>
    
    using  arma::Mat;
    
    int main()
    {
      Mat<unsigned char> mat; // create your matrix
      mat.set_size(16,16); //Set your matrix size
    
      //Index starts from 0
      for (auto i=0; i< 16; i++){ 
         for(auto j=0; j<16; j++){
              mat(i,j) //search through your elements
         }
       }
      return 0;
    }
    
  2. # 2 楼答案

    这个简单的答案是,没有有效的算法来扫描矩阵。通过使用更紧凑的结构,例如位字段和缓存友好的布局,可以稍微提高性能,但老实说,这并不能解决根本问题

    问题来自这样一个事实:您需要查看矩阵中的每个值,以找到变化

    接下来要做什么取决于错误更改的计算强度。如果这是一个低影响的变化,只是蛮力它,因为256位真的不是那么多。但是,如果一个变化触发了一个巨大的计算开销的算法,那么您需要在其周围加入一些簿记逻辑。最简单的方法是在编写更改时记录一个更改队列,然后在每次勾选时查看需要执行的操作